


# hzcms install ${HUBNAME}
#
#.   Create legacy configuration file
#. 	/etc/hubzero.conf   (root.root, 0644)
#.   [default]
#.   site=${HUBNAME}
#.
#.  [example]
#.   DocumentRoot=/var/www/${HUBNAME}
#.
#.   Create new configuration file
#.   /etc/hubzero-cms/${HUBNAME}.conf (root.root, 0644)
#.   [global]
#.   name=${HUBNAME}
#.
#.	[apache-config]
#.   document_root=/var/www/${HUBNAME}
#.   force_canon=false
#.   enable_webdav=false
#.   enable_filexfer=false
#.   enable_subversion=false
#.   enable_trac=false
#.
#.   should verify existence and create if needed /var/log/hubzero-cms root.www-data 0770
#.   should verify existence and create if needed /var/log/hubzero-cms/daily root.www-data 0770
#.   should verify existence and create if needed /var/log/hubzero-cms/imported root.www-data 0770
#.   should verify existence and create if needed /var/log/hubzero-cms/archive root.www-data 0770
#.
#.   should verify existence and create if needed /var/log/apache2 root.adm 0750
#.   should verify existence and create if needed /var/log/apache2/daily root.adm 0750
#.   should verify existence and create if needed /var/log/apache2/imported root.adm 0750
#.   should verify existence and create if needed /var/log/apache2/archive root.adm 0750
#.
#.   m4 -DHUBNAME=${HUBNAME} /usr/share/hubzero-cms/conf/logrotate-cmsdebug.m4 > /etc/logrotate.d/${HUBNAME}-cmsdebug
#.   m4 -DHUBNAME=${HUBNAME} /usr/share/hubzero-cms/conf/logrotate-cmsauth.m4 > /etc/logrotate.d/${HUBNAME}-cmsauth
#.   m4 -DHUBNAME=${HUBNAME} /usr/share/hubzero-cms/conf/logrotate-hub-access.m4 > /etc/logrotate.d/${HUBNAME}-access
#.   m4 -DHUBNAME=${HUBNAME} /usr/share/hubzero-cms/conf/logrotate-hub-error.m4 > /etc/logrotate.d/${HUBNAME}-error
#.   resulting files should all be owned by root.root, mode 0644
#.   a2enmod rewrite
#.   a2enmod ssl
#.
#.   should verify existence and create if needed /etc/apache2/sites-m4 root.root 0755
#.   cp /usr/share/hubzero-cms/conf/hub.m4 > /etc/apache2/sites-m4/${HUBNAME}.m4
#.   cp /usr/share/hubzero-cms/conf/hub-ssl.m4 > /etc/apache2/sites-m4/${HUBNAME}-ssl.m4
#.   both should be owned by root.root, mode 0644
#.
#.   m4 -DHUBNAME=myhub -D<other config variables> /etc/apache2/sites-m4/hub.m4 > /etc/apache2/sites/available/hub
#.   m4 -DHUBNAME=myhub -D<other config variables> /etc/apache2/sites-m4/hub-ssl.m4 > /etc/apache2/sites/available/hub-ssl
#.   both should be owned by root.root, mode 0644
#.   config variables should be built from settings in /etc/hubzero-cms/${HUBNAME}.conf
#.   force_canon: -DUSE_CANONICAL_HOSTNAME
#.   enable_webdav: -DUSE_WEBDAV
#.   enable_trac: -DUSE_TRAC
#.   enable_filexfer: -DUSE_FILEXFER
#.   enable_subversion: -DUSE_SUBVERSION
#.   enable_trac: -DUSE_TRAC
#.
#. 	copy /usr/share/hubzero-cms/cms to /var/www/${HUBNAME}
#.
#. 	set installation key in configuration.php and display it with some instruction to user, setup is completed with web gui
#.
#.   /etc/init.d/apache2 restart
#
#   make entries in /etc/sudoers for www-data to run apache2 restart and the contribtool scripts (which we should move to /usr/bin)
#. 	create mysql database ${HUBNAME} and ${HUBNAME}-metrics
#.
#.	create mysql user ${HUBNAME} with access to above databases
#.
# 	--- we can skip the gui installation if we
#   	install the database schema
#     	install basic data
#     	optionally install sample data
#     	create admin user
#		(create groups www-data(33), users(100)
#
#
# hzcms uninstall ${HUBNAME}
#
# 	Update legacy configuration file /etc/hubzero.conf
#		delete section ${HUBNAME}
#		set default.site to name of first section left (if any). If no sections left delete file.
#    
#   Delete new configuration file /etc/hubzero-cms/${HUBNAME}.conf
#   delete /etc/logrotate.d/${HUBNAME}-cmsauth
#   delete /etc/logrotate.d/${HUBNAME}-cmsdebug
#   delete /etc/logrotate.d/${HUBNAME}-access
#   delete /etc/logrotate.d/${HUBNAME}-error
#   delete /etc/apache2/sites-m4/${HUBNAME}
#   delete /etc/apache2/sites-available/${HUBNAME}
#   delete /etc/apache2/sites-enabled/${HUBNAME}
#   delete /etc/apache2/sites-m4/${HUBNAME}-ssl
#   delete /etc/apache2/sites-available/${HUBNAME}-ssl
#   delete /etc/apache2/sites-enabled/${HUBNAME}-ssl
#   print notice to user to manually delete /var/www/${HUBNAME}
#   print notice to user to manually delete /var/log/hubzero-cms/${HUBNAME}-cmsdebug.log
#   print notice to user to manually delete /var/log/hubzero-cms/${HUBNAME}-cmsauth.log
#   print notice to user to manually delete /var/log/apache2/${HUBNAME}-access.log
#   print notice to user to manually delete /var/log/apache2/${HUBNAME}-error.log
#   print notice to user to delete mysql database ${HUBNAME} and ${HUBNAME}-metrics
#   remove mysql user ${HUBNAME} entries
#
# hzcms reconfigure ${HUBNAME}
#
#     recompute m4 based configuration files based on current hub configuration
#
#. hzcms config ${HUBNAME} option
#.
#.     retrieve configuration value for hub
#.
#. hzcms config ${HUBNAME} option=value
#.
#.     set configuration value for hub
#.
#.     hzcms config hub documentroot=/mydocumentroot
#.
# hzcms rename ${HUBNAME} ${NEWHUBNAME}
#
#     TBD
#
# hzcms -h ${HUBNAME} dumpdb
#
#     TBD
#     mysqldump of database with options to do data, metrics, user-data, 
#         template-data (menus,modules,etc), specific custom table(s)
#     will replace the dumb dumpdb script I have littered all over
#     needs some good semantics for copying dump files from dev/sandboxes to live site
#
# hzcms -h ${HUBNAME} restoredb
#
#     TBD
#
# hzcms -h ${HUBNAME} syncldap
# 
#     TBD
#
#
# Other ideas:
#
# Also define remote hubs in /etc/hubzero-cms
# and allow moving data between defined hubs
#
# Manage git based document roots














##############
here is some of the configuration script from the old hubzero-cms-setup package, the only thing this package does is configure the
hub (database plus configurration file). plus some notes about the scripts it references. hzcms install should ensure this all gets 
done.

##############


. /usr/share/debconf/confmodule

conffile=/etc/hubzero.conf
secretsfile=/etc/hubzero.secrets

find_param_value() {
  response=""
  if [ -e $1 ]; then
    found=`grep -e "^$2=" < $1`
    if [ found = "" ]; then
      return 1;
    else
      response=${found/$2=/}
      return 0;
    fi
  else
    return 1;
  fi
}

setup_hubzero_cms() {
  local hubname hubhost email hubdbpw adminpw newpw outfile

  if ! find_param_value $conffile "HubName"; then
    echo "ERROR - HubName not found"
    return 1;
  fi
  hubname=$response
  if ! find_param_value $conffile "HubHost"; then
    echo "ERROR - HubHost not found"
    return 1;
  fi
  hubhost=$response
  if ! find_param_value $conffile "EmailAddress"; then
    echo "ERROR - EmailAddress not found"
    return 1;
  fi
  email=$response
  if ! find_param_value $secretsfile "HUBDB"; then
    echo "ERROR - HUBDB password not found"
    return 1;
  fi
  hubdbpw=$response
  if ! find_param_value $secretsfile "JOOMLA-ADMIN"; then
    echo "ERROR - JOOMLA-ADMIN password not found"
    return 1;
  fi
  adminpw=$response
  
  outfile="/www/$hubname/configuration.php"

  sed < "/usr/share/hubzero-cms-setup/configuration.php.tmpl" > $outfile \
    -e 's|@__-SITENAME-__@|'$hubname'|g' \
    -e 's|@__-SITEEMAIL-__@|'$email'|g' \
    -e 's|@__-DBPASSWORD-__@|'$hubdbpw'|g' \
    -e 's|@__-SITESECRET-__@|lskafadfjlasdjfasdfaswer|g'

configuration.php.tmpl:
=======================

<?php
class JConfig {
/* Site Settings */
var $offline = '0';
var $offline_message = 'This site is down for maintenance.<br /> Please check back again soon.';
var $sitename = '@__-SITENAME-__@';
var $editor = 'tinymce';
var $list_limit = '20';
var $legacy = '0';
/* Debug Settings */
var $debug = '0';
var $debug_lang = '0';
/* Database Settings */
var $dbtype = 'mysql';
var $host = 'localhost';
var $user = '@__-SITENAME-__@';
var $password = '@__-DBPASSWORD-__@';
var $db = '@__-SITENAME-__@';
var $dbprefix = 'jos_';
/* Server Settings */
var $live_site = '';
var $secret = '@__-SITESECRET-__@';
var $gzip = '0';
var $error_reporting = '-1';
var $helpurl = 'http://help.joomla.org';
var $xmlrpc_server = '0';
var $ftp_host = '127.0.0.1';
var $ftp_port = '21';
var $ftp_user = '';
var $ftp_pass = '';
var $ftp_root = '';
var $ftp_enable = '0';
var $force_ssl = '0';
/* Locale Settings */
var $offset = '0';
var $offset_user = '0';
/* Mail Settings */
var $mailer = 'mail';
var $mailfrom = '@__-SITEEMAIL-__@';
var $fromname = '@__-SITENAME-__@';
var $sendmail = '/usr/sbin/sendmail';
var $smtpauth = '0';
var $smtpsecure = 'none';
var $smtpport = '25';
var $smtpuser = '';
var $smtppass = '';
var $smtphost = 'localhost';
/* Cache Settings */
var $caching = '0';
var $cachetime = '15';
var $cache_handler = 'file';
/* Meta Settings */
var $MetaDesc = 'Joomla! - the dynamic portal engine and content management system';
var $MetaKeys = 'joomla, Joomla';
var $MetaTitle = '1';
var $MetaAuthor = '1';
/* SEO Settings */
var $sef           = '1'; // HUBZERO DEFAULT
var $sef_rewrite   = '1'; // HUBZERO DEFAULT
var $sef_suffix    = '0';
/* Feed Settings */
var $feed_limit   = 10;
var $feed_email   = 'author';
var $log_path = '/www/@__-SITENAME-__@/logs';
var $tmp_path = '/www/@__-SITENAME-__@/tmp';
/* Session Setting */
var $lifetime = '15';
var $session_handler = 'database';
/* LDAP Settings */
var $ldap_primary = 'ldap://localhost';
var $ldap_secondary = '';
var $ldap_basedn = 'dc=localhost';
var $ldap_searchdn = '';
var $ldap_searchpw = '';
var $ldap_managerdn = 'cn=admin';
var $ldap_managerpw = '';
var $ldap_tls = '';
}


  chown www-data.www-data $outfile
  chmod 0664 $outfile
  
  # update the database
  # use the default hub db if it exists
  if [ -e /usr/share/hubzero-cms-setup/default-hub-db.sql ]; then
    /usr/bin/mysql -u $hubname --password="$hubdbpw" $hubname < /usr/share/hubzero-cms-setup/default-hub-db.sql
  else
    # get the installation db, convert its prefixes and load it
    instdir=/usr/share/hubzero-cms-joomla-installation/cms/installation/sql/mysql
    sed < $instdir/hubzero.sql > /root/hubzero.sql -e 's|#__|jos_|g'
    sed < $instdir/hz_sample_data.sql > /root/hz_sample_data.sql -e 's|#__|jos_|g'
    /usr/bin/mysql -u $hubname --password="$hubdbpw" $hubname < /root/hubzero.sql
    /usr/bin/mysql -u $hubname --password="$hubdbpw" $hubname < /root/hz_sample_data.sql
    #rm -rf /root/hubzero.sql
    #rm -rf /root/hz_sample_data.sql
    
    
    # install the joomla user database entries
    sed < /usr/share/hubzero-cms-setup/admin_user.sql > /root/admin_user.sql -e 's|#__|jos_|g'
    /usr/bin/mysql -u $hubname --password="$hubdbpw" $hubname < /root/admin_user.sql

admin_user.sql:
===============    
INSERT INTO `#__core_acl_aro` (`id`, `section_value`, `value`, `order_value`, `name`, `hidden`) VALUES (10,'users','62',0,'Administrator',0);
INSERT INTO `#__core_acl_groups_aro_map` (`group_id`, `section_value`, `aro_id`) VALUES (25,'',10);
INSERT INTO `#__users` (`id`, `name`, `username`, `email`, `password`, `usertype`, `block`, `sendEmail`, `gid`, `registerDate`, `lastvisitDate`, `activation`, `params`) VALUES (62,'Administrator','admin','root@localhost','NOPASSWORD','Super Administrator',0,1,25,NOW(),'0000-00-00 00:00:00','','');
INSERT INTO `#__xprofiles` (`uidNumber`, `name`, `username`, `email`, `registerDate`, `gidNumber`, `homeDirectory`, `loginShell`, `ftpShell`, `userPassword`, `gid`, `orgtype`, `organization`, `countryresident`, `countryorigin`, `gender`, `url`, `reason`, `mailPreferenceOption`, `usageAgreement`, `jobsAllowed`, `modifiedDate`, `emailConfirmed`, `regIP`, `regHost`, `nativeTribe`, `phone`, `proxyPassword`, `proxyUidNumber`, `givenName`, `middleName`, `surname`, `picture`, `vip`, `public`, `params`, `note`, `shadowExpire`) VALUES (62,'Administrator','admin','root@localhost',NOW(),'3000','/home/admin','','','NOPASSWORD','public','','','','','','','',0,0,3,'0000-00-00 00:00:00',1,'','','','','','','Administrator','','','',0,0,'','',NULL);
    
    
    
    
    
    #rm -rf /root/admin_user.sql
    sed < /usr/share/hubzero-cms-setup/hubrepo_user.sql > /root/hubrepo_user.sql -e 's|#__|jos_|g'
    /usr/bin/mysql -u $hubname --password="$hubdbpw" $hubname < /root/hubrepo_user.sql
    #rm -rf /root/hubrepo_user.sql
    sed < /usr/share/hubzero-cms-setup/groups.sql > /root/groups.sql -e 's|#__|jos_|g'
    /usr/bin/mysql -u $hubname --password="$hubdbpw" $hubname < /root/groups.sql
    #rm -rf /root/groups.sql
  fi

hubrepo_user.sql:
=================
INSERT INTO `#__core_acl_aro` (`id`, `section_value`, `value`, `order_value`, `name`, `hidden`) VALUES (11,'users','998',0,'hubrepo',0);
INSERT INTO `#__core_acl_groups_aro_map` (`group_id`, `section_value`, `aro_id`) VALUES (18,'',11);
INSERT INTO `#__users` (`id`, `name`, `username`, `email`, `password`, `usertype`, `block`, `sendEmail`, `gid`, `registerDate`, `lastvisitDate`, `activation`, `params`) VALUES (998,'hubrepo','hubrepo','hubrepo@localhost','NOPASSWORD','Registered',0,0,18,NOW(),'0000-00-00 00:00:00','','');
INSERT INTO `#__xprofiles` (`uidNumber`, `name`, `username`, `email`, `registerDate`, `gidNumber`, `homeDirectory`, `loginShell`, `ftpShell`, `userPassword`, `gid`, `orgtype`, `organization`, `countryresident`, `countryorigin`, `gender`, `url`, `reason`, `mailPreferenceOption`, `usageAgreement`, `jobsAllowed`, `modifiedDate`, `emailConfirmed`, `regIP`, `regHost`, `nativeTribe`, `phone`, `proxyPassword`, `proxyUidNumber`, `givenName`, `middleName`, `surname`, `picture`, `vip`, `public`, `params`, `note`, `shadowExpire`) VALUES (998,'hubrepo','hubrepo','hubrepo@localhost',NOW(),'3000','/home/hubrepo','','','NOPASSWORD','public','','','','','','','',0,0,3,'0000-00-00 00:00:00',1,'','','','','','','hubrepo','','','',0,0,'','',NULL);


groups.sql:
===========
INSERT INTO `#__xgroups` VALUES (999,'apps','apps',1,0,4,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL),(33,'www-data','www-data',1,0,4,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL),(900,'network','Network access resource group',0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL),(901,'submit','Submit access resource group',0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL),(902,'mw-login','MW Login access resource group',0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL),(903,'hub-login','HUB Login access resource group',0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL),(997,'public','public',0,0,4,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `#__xgroups_members` VALUES (999,998),(999,62);

  # still need to remove the installation directory
  rm -rf /www/$hubname/installation

  # get the tools parameters from the database
  toolparamsfile=`mktemp -q /root/toolparams-XXXXXX`
  mysql -u $hubname --password="$hubdbpw" $hubname < /usr/share/hubzero-cms-setup/get_tools_params.sql > $toolparamsfile.results
  sh /usr/share/hubzero-cms-setup/clean_params.sh $toolparamsfile.results $toolparamsfile.tmp
  # do replacement from the conf file
  sed < $toolparamsfile.tmp > $toolparamsfile.sql \
    -e 's|^mwDBUsername=[^>]*$|mwDBUsername='$hubname'|' \
    -e 's|^mwDBPassword=[^>]*$|mwDBPassword='$hubdbpw'|' \
    -e 's|^mwDBDatabase=[^>]*$|mwDBDatabase='$hubname'|'
  
  # get the contribtool parameters from the database
  contribparamsfile=`mktemp -q /root/contribparams-XXXXXX`
  mysql -u $hubname --password="$hubdbpw" $hubname < /usr/share/hubzero-cms-setup/get_contrib_params.sql > $contribparamsfile.results
  sh /usr/share/hubzero-cms-setup/clean_params.sh $contribparamsfile.results $contribparamsfile.tmp
  # do replacement from the conf file
  sed < $contribparamsfile.tmp > $contribparamsfile.sql \
    -e 's|^developer_url=https://[^>]*$|developer_url=https://'$hubhost'|' \
    -e 's|^developer_email=[^>]*$|developer_email='$email'|' \
    -e 's|^sourcecodePath=[^>]*$|sourcecodePath=/www/'$hubname'/site/protected/source|'

# get_tools_params
==================
SELECT params FROM jos_components where name='Tools';

# get_contrib_params.sql:
=========================
SELECT params FROM jos_components where name='Contribtool';


# clean_params.sh:
==================
tfile=`mktemp -q /root/cp.XXXXXX`

sed < $1 > $tfile \
 -e 's|\\n|\n|g' \
 -e 's|^params||'

sed '/^$/d' $tfile > $2
rm -f $tfile

exit 0

  # do updates to database now - still have password
  sed < /usr/share/hubzero-cms-setup/make_joomla_password.php.tmpl > /root/make_joomla_password.php \
    -e 's|@__-PASSWORD-__@|'$adminpw'|'
  newpw=`php /root/make_joomla_password.php`
  
  # make_joomla_password.php:
  ===========================
  generates a properly crypted password
  
  dbupdate=`mktemp -q /root/db-update.XXXXXX`
  echo "UPDATE jos_users SET email='$email' WHERE username='admin';" > $dbupdate
  echo "UPDATE jos_xprofiles SET email='$email' WHERE username='admin';" >> $dbupdate
  echo "UPDATE jos_xprofiles SET homeDirectory='/home/$hubname/admin' WHERE username='admin';" >> $dbupdate
  echo "UPDATE jos_users SET password='$newpw' WHERE username='admin';" >> $dbupdate
  echo "UPDATE jos_xprofiles SET userPassword='$newpw' WHERE username='admin';" >> $dbupdate
  # need to setup the tools params fields
  echo -n "UPDATE jos_components SET params='" >> $dbupdate
  cat $toolparamsfile.sql >> $dbupdate
  echo "' WHERE name='Tools';" >> $dbupdate
  # need to setup the contribtool params fields
  echo -n "UPDATE jos_components SET params='" >> $dbupdate
  cat $contribparamsfile.sql >> $dbupdate
  echo "' WHERE name='Contribtool';" >> $dbupdate
  
  # now do the update
  mysql -u $hubname --password="$hubdbpw" $hubname < $dbupdate
  # cleanup created files
  #rm $dbupdate - save for now
  rm /root/make_joomla_password.php
  rm $toolparamsfile
  rm $toolparamsfile.results
  rm $toolparamsfile.tmp
  rm $toolparamsfile.sql
  rm $contribparamsfile
  rm $contribparamsfile.results
  rm $contribparamsfile.tmp
  rm $contribparamsfile.sql
}


