function lxins_main() { global $argv, $downloadserver; $opt = parse_opt($argv); $dir_name = dirname(__FILE__); $installtype = $opt['install-type']; $installversion = isset($opt['version']) ? $opt['version'] : null; $dbroot = "root"; $dbpass = ""; $osversion = find_os_version(); $arch = `arch`; $arch = trim($arch); //--- Create temporary flags for install system("mkdir -p /var/cache/kloxo/"); system("echo 1 > /var/cache/kloxo/kloxo-install-firsttime.flg"); if (!char_search_beg($osversion, "centos") && !char_search_beg($osversion, "rhel")) { print "Kloxo is only supported on CentOS 5 and RHEL 5\n"; exit; } if (file_exists("/usr/local/lxlabs/kloxo")) { //--- Ask Reinstall if (get_yes_no("Kloxo seems already installed do you wish to continue?") == 'n') { print "Installation Aborted.\n"; exit; } } else { //--- Ask License if (get_yes_no("Kloxo is using AGPL-V3.0 License, do you agree with the terms?") == 'n') { print "You did not agree to the AGPL-V3.0 license terms.\n"; print "Installation aborted.\n\n"; exit; } else { print "Installing Kloxo = YES\n\n"; } } //--- Ask for InstallApp print "InstallApp: PHP Applications like PHPBB, WordPress, Joomla etc\n"; print "When you choose Yes, be aware of downloading about 350Mb of data!\n"; if (get_yes_no("Do you want to install the InstallAPP sotfware?") == 'n') { print "Installing InstallApp = NO\n"; print "You can install it later with /script/installapp-update\n\n"; $installappinst = false; //--- Temporary flag so InstallApp won't be installed system("echo 1 > /var/cache/kloxo/kloxo-install-disableinstallapp.flg"); } else { print "Installing InstallApp = YES\n\n"; $installappinst = true; } print "Adding System users and groups (nouser, nogroup and lxlabs, lxlabs)\n"; system("groupadd nogroup"); system("useradd nouser -g nogroup -s '/sbin/nologin'"); system("groupadd lxlabs"); system("useradd lxlabs -g lxlabs -s '/sbin/nologin'"); print "Installing LxCenter yum repository for updates\n"; install_yum_repo($osversion); $packages = array("sendmail", "sendmail-cf", "sendmail-doc", "sendmail-devel", "exim", "vsftpd", "postfix", "vpopmail", "qmail", "lxphp", "lxzend", "pure-ftpd", "imap"); $list = implode(" ", $packages); print "Removing packages {$list}...\n"; foreach ($packages as $package) { exec("rpm -e --nodeps {$package} > /dev/null 2>&1"); } $packages = array("php-mbstring", "php-mysql", "which", "gcc-c++", "php-imap", "php-pear", "php-devel", "lxlighttpd", "httpd", "mod_ssl", "zip", "unzip", "lxphp", "lxzend", "mysql", "mysql-server", "curl", "autoconf", "automake", "libtool", "bogofilter", "gcc", "cpp", "openssl", "pure-ftpd", "yum-protectbase"); $list = implode(" ", $packages); while (true) { print "Installing packages {$list}...\n"; system("PATH=\$PATH:/usr/sbin yum -y install {$list}", $return_value); if (file_exists("/usr/local/lxlabs/ext/php/php")) { break; } else { print "YUM Gave Error... Trying Again...\n"; if (get_yes_no("Try again?") == 'n') { print "- EXIT: Fix the problem and install Kloxo again.\n"; exit; } } } print "Prepare installation directory\n"; system("mkdir -p /usr/local/lxlabs/kloxo"); if ($installversion) { if (substr($installversion, 0, 4) == '6.0.') { print "\n*** Need additional files installing {$installversion} (less then 6.1.0)***\n"; print " Run 'sh /script/kloxo-installer.sh' (without argument)\n\n"; exit; } chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); @unlink("/usr/local/lxlabs/kloxo/kloxo-current.zip"); print "Downloading Kloxo {$installversion} release\n"; system("wget {$downloadserver}download/kloxo/production/kloxo/kloxo-{$installversion}.zip"); system("mv -f ./kloxo-{$installversion}.zip ./kloxo-current.zip"); } else { if (file_exists("../kloxo-current.zip")) { //--- Install from local file if exists @unlink("/usr/local/lxlabs/kloxo/kloxo-current.zip"); print "Local copying Kloxo release\n"; system("mkdir -p /var/cache/kloxo"); system("cp -rf ../kloxo-current.zip /usr/local/lxlabs/kloxo"); //--- The first step - Remove packages system("rm -f /var/cache/kloxo/kloxo-thirdparty*.zip"); system("rm -f /var/cache/kloxo/lxawstats*.tar.gz"); system("rm -f /var/cache/kloxo/lxwebmail*.tar.gz"); system("rm -f /var/cache/kloxo/kloxophpsixfour*.tar.gz"); system("rm -f /var/cache/kloxo/kloxophp*.tar.gz"); system("rm -f /var/cache/kloxo/*-version"); //--- The second step - copy from packer script if exist system("cp -rf ../kloxo-thirdparty*.zip /var/cache/kloxo"); system("cp -rf ../lxawstats*.tar.gz /var/cache/kloxo"); system("cp -rf ../lxwebmail*.tar.gz /var/cache/kloxo"); system("cp -rf ../kloxo-thirdparty-version /var/cache/kloxo"); system("cp -rf ../lxawstats-version /var/cache/kloxo"); system("cp -rf ../lxwebmail-version /var/cache/kloxo"); if (file_exists("/usr/lib64")) { if (!is_link("/usr/lib/kloxophp")) { system("rm -rf /usr/lib/kloxophp"); } system("cp -rf ../kloxophpsixfour*.tar.gz /var/cache/kloxo"); system("cp -rf ../kloxophpsixfour-version /var/cache/kloxo"); system("mkdir -p /usr/lib64/kloxophp"); system("ln -s /usr/lib64/kloxophp /usr/lib/kloxophp"); system("mkdir -p /usr/lib64/php"); system("ln -s /usr/lib64/php /usr/lib/php"); system("mkdir -p /usr/lib64/httpd"); system("ln -s /usr/lib64/httpd /usr/lib/httpd"); system("mkdir -p /usr/lib64/lighttpd"); system("ln -s /usr/lib64/lighttpd /usr/lib/lighttpd"); } else { //--- Needs version checks in the future system("rename ../kloxophpsixfour ../_kloxophpsixfour ../kloxophpsixfour*"); system("cp -rf ../kloxophp*.tar.gz /var/cache/kloxo"); system("rename ../_kloxophpsixfour ../kloxophpsixfour ../_kloxophpsixfour*"); system("cp -rf ../kloxophp-version /var/cache/kloxo"); } chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); } else { chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); @unlink("/usr/local/lxlabs/kloxo/kloxo-current.zip"); print "Downloading latest Kloxo release\n"; system("wget {$downloadserver}download/kloxo/production/kloxo/kloxo-current.zip"); } } print "\n\nInstalling Kloxo.....\n\n"; system("unzip -oq kloxo-current.zip", $return); if ($return) { print "Unzipping the core Failed.. Most likely it is corrupted. Report it at http://forum.lxcenter.org/\n"; exit; } unlink("kloxo-current.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("service mysqld start"); if ($installtype !== 'slave') { check_default_mysql($dbroot, $dbpass); } $mypass = password_gen(); print "Prepare defaults and configurations...\n"; install_main(); file_put_contents("/etc/sysconfig/spamassassin", "SPAMDOPTIONS=\" -v -d -p 783 -u lxpopuser\""); print "\nCreating Vpopmail database...\n"; system("sh {$dir_name}/kloxo-linux/vpop.sh {$dbroot} \"{$dbpass}\" lxpopuser {$mypass}"); system("chmod -R 755 /var/log/httpd/"); system("chmod -R 755 /var/log/httpd/fpcgisock >/dev/null 2>&1"); system("mkdir -p /var/log/kloxo/"); system("mkdir -p /var/log/news"); system("ln -sf /var/qmail/bin/sendmail /usr/sbin/sendmail"); system("ln -sf /var/qmail/bin/sendmail /usr/lib/sendmail"); system("echo `hostname` > /var/qmail/control/me"); system("service qmail restart >/dev/null 2>&1 &"); system("service courier-imap restart >/dev/null 2>&1 &"); print "Prepare /home/kloxo/httpd...\n"; system("mkdir -p /home/kloxo/httpd"); chdir("/home/kloxo/httpd"); @unlink("skeleton-disable.zip"); system("chown -R lxlabs:lxlabs /home/kloxo/httpd"); system("/etc/init.d/kloxo restart >/dev/null 2>&1 &"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("/usr/local/lxlabs/ext/php/php /usr/local/lxlabs/kloxo/bin/install/create.php --install-type={$installtype} --db-rootuser={$dbroot} --db-rootpassword={$dbpass}"); if ($installappinst) { print "Install InstallApp...\n"; system("/script/installapp-update"); // First run (gets installappdata) system("/script/installapp-update"); // Second run (gets applications) } //--- Remove all temporary flags because the end of install print "\nRemove Kloxo install flags...\n"; system("rm -rf /var/cache/kloxo/*-version"); system("rm -rf /var/cache/kloxo/kloxo-install-*.flg"); //--- Prevent mysql socket problem (especially on 64bit system) if (!file_exists("/var/lib/mysql/mysql.sock")) { print "Create mysql.sock...\n"; system("/etc/init.d/mysqld stop"); system("mksock /var/lib/mysql/mysql.sock"); system("/etc/init.d/mysqld start"); } //--- Prevent for Mysql not start after reboot for fresh kloxo slave install print "Setting Mysql for always running after reboot and restart now...\n"; system("chkconfig mysqld on"); system("service mysqld restart"); //--- Fix for old thirdparty version if (!file_exists("/usr/local/lxlabs/kloxo/httpdocs/thirdparty")) { system("cp -rf /var/cache/kloxo/kloxo-thirdparty*.zip /usr/local/lxlabs/kloxo"); system("cd /usr/local/lxlabs/kloxo; unzip -oq kloxo-thirdparty*.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/kloxo/httpdocs/thirdparty"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/kloxo/httpdocs/htmllib"); system("rm -f /usr/local/lxlabs/kloxo/kloxo-thirdparty*.zip"); } //--- Set ownership for Kloxo httpdocs dir system("chown -R lxlabs:lxlabs /usr/local/lxlabs/kloxo/httpdocs"); print "\nCongratulations. Kloxo has been installed succesfully on your server as {$installtype}\n\n"; if ($installtype === 'master') { print "You can connect to the server at:\n"; print "\thttps://<ip-address>:7777 - secure ssl connection, or\n"; print "\thttp://<ip-address>:7778 - normal one.\n\n"; print "The login and password are 'admin' 'admin'. After Logging in, you will have to\n"; print "change your password to something more secure\n\n"; print "We hope you will find managing your hosting with Kloxo\n"; print "refreshingly pleasurable, and also we wish you all the success\n"; print "on your hosting venture\n\n"; print "Thanks for choosing Kloxo to manage your hosting, and allowing us to be of\n"; print "service\n"; } else { print "You should open the port 7779 on this server, since this is used for\n"; print "the communication between master and slave\n\n"; print "To access this slave, to go admin->servers->add server,\n"; print "give the ip/machine name of this server. The password is 'admin'.\n\n"; print "The slave will appear in the list of slaves, and you can access it\n"; print "just like you access localhost\n\n"; } print "\n"; print "---------------------------------------------\n"; }
function passsay($id, $unique) { echo "{$id}=" . password_gen($id, $unique, false) . "<br>\n"; }
function lxins_main() { global $argv, $downloadserver; $opt = parse_opt($argv); $dir_name = dirname(__FILE__); $installtype = $opt['install-type']; $dbroot = isset($opt['db-rootuser']) ? $opt['db-rootuser'] : "******"; $dbpass = isset($opt['db-rootpassword']) ? $opt['db-rootpassword'] : ""; $osversion = find_os_version(); $arch = `arch`; $arch = trim($arch); if (!char_search_beg($osversion, "centos") && !char_search_beg($osversion, "rhel")) { print "Kloxo is only supported on CentOS 5 and RHEL 5\n"; exit; } if (file_exists("/usr/local/lxlabs/kloxo")) { // Ask Reinstall if (get_yes_no("Kloxo seems already installed do you wish to continue?") == 'n') { print "Installation Aborted.\n"; exit; } } else { // Ask License if (get_yes_no("Kloxo is using AGPL-V3.0 License, do you agree with the terms?") == 'n') { print "You did not agree to the AGPL-V3.0 license terms.\n"; print "Installation aborted.\n\n"; exit; } else { print "Installing Kloxo = YES\n\n"; } } // Ask for InstallApp print "InstallApp: PHP Applications like PHPBB, WordPress, Joomla etc\n"; print "When you choose Yes, be aware of downloading about 350Mb of data!\n"; if (get_yes_no("Do you want to install the InstallAPP sotfware?") == 'n') { print "Installing InstallApp = NO\n"; print "You can install it later with /script/installapp-update\n\n"; $installappinst = false; } else { print "Installing InstallApp = YES\n\n"; $installappinst = true; } print "Adding System users and groups (nouser, nogroup and lxlabs, lxlabs)\n"; system("groupadd nogroup"); system("useradd nouser -g nogroup -s '/sbin/nologin'"); system("groupadd lxlabs"); system("useradd lxlabs -g lxlabs -s '/sbin/nologin'"); print "Installing LxCenter yum repository for updates\n"; install_yum_repo($osversion); $packages = array("sendmail", "sendmail-cf", "sendmail-doc", "sendmail-devel", "exim", "vsftpd", "postfix", "vpopmail", "qmail", "lxphp", "lxzend", "pure-ftpd", "imap"); $list = implode(" ", $packages); print "Removing packages {$list}...\n"; foreach ($packages as $package) { exec("rpm -e --nodeps {$package} > /dev/null 2>&1"); } $packages = array("php-mbstring", "php-mysql", "which", "gcc-c++", "php-imap", "php-pear", "php-devel", "lxlighttpd", "httpd", "mod_ssl", "zip", "unzip", "lxphp", "lxzend", "mysql", "mysql-server", "curl", "autoconf", "automake", "libtool", "bogofilter", "gcc", "cpp", "openssl", "pure-ftpd", "yum-protectbase"); $list = implode(" ", $packages); while (true) { print "Installing packages {$list}...\n"; system("PATH=\$PATH:/usr/sbin yum -y install {$list}", $return_value); if (file_exists("/usr/local/lxlabs/ext/php/php")) { break; } else { print "Yum Gave Error... Trying Again...\n"; } } print "Prepare installation directory\n"; system("mkdir -p /usr/local/lxlabs/kloxo"); chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); @unlink("kloxo-current.zip"); print "Downloading latest Kloxo release\n"; system("wget " . $downloadserver . "download/kloxo/production/kloxo/kloxo-current.zip"); print "\n\nInstalling Kloxo.....\n\n"; system("unzip -oq kloxo-current.zip", $return); if ($return) { print "Unzipping the core Failed.. Most likely it is corrupted. Report it at http://forum.lxcenter.org/\n"; exit; } unlink("kloxo-current.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("service mysqld start"); if ($installtype !== 'slave') { check_default_mysql($dbroot, $dbpass); } $mypass = password_gen(); print "Prepare defaults and configurations...\n"; system("/usr/local/lxlabs/ext/php/php {$dir_name}/installall.php"); our_file_put_contents("/etc/sysconfig/spamassassin", "SPAMDOPTIONS=\" -v -d -p 783 -u lxpopuser\""); print "Creating Vpopmail database...\n"; system("sh {$dir_name}/vpop.sh {$dbroot} \"{$dbpass}\" lxpopuser {$mypass}"); system("chmod -R 755 /var/log/httpd/"); system("chmod -R 755 /var/log/httpd/fpcgisock >/dev/null 2>&1"); system("mkdir -p /var/log/kloxo/"); system("mkdir -p /var/log/news"); system("ln -sf /var/qmail/bin/sendmail /usr/sbin/sendmail"); system("ln -sf /var/qmail/bin/sendmail /usr/lib/sendmail"); system("echo `hostname` > /var/qmail/control/me"); system("service qmail restart >/dev/null 2>&1 &"); system("service courier-imap restart >/dev/null 2>&1 &"); $dbfile = "/home/kloxo/httpd/webmail/horde/scripts/sql/create.mysql.sql"; if (file_exists($dbfile)) { if ($dbpass == "") { system("mysql -u {$dbroot} <{$dbfile}"); } else { system("mysql -u {$dbroot} -p{$dbpass} <{$dbfile}"); } } system("mkdir -p /home/kloxo/httpd"); chdir("/home/kloxo/httpd"); @unlink("skeleton-disable.zip"); system("chown -R lxlabs:lxlabs /home/kloxo/httpd"); system("/etc/init.d/kloxo restart >/dev/null 2>&1 &"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("/usr/local/lxlabs/ext/php/php /usr/local/lxlabs/kloxo/bin/install/create.php --install-type={$installtype} --db-rootuser={$dbroot} --db-rootpassword={$dbpass}"); system("/usr/local/lxlabs/ext/php/php /usr/local/lxlabs/kloxo/bin/misc/secure-webmail-mysql.phps"); system("/bin/rm /usr/local/lxlabs/kloxo/bin/misc/secure-webmail-mysql.phps"); system("/script/centos5-postpostupgrade"); if ($installappinst) { system("/script/installapp-update"); // First run (gets installappdata) system("/script/installapp-update"); // Second run (gets applications) } print "Congratulations. Kloxo has been installed succesfully on your server as {$installtype} \n"; if ($installtype === 'master') { print "You can connect to the server at https://<ip-address>:7777 or http://<ip-address>:7778\n"; print "Please note that first is secure ssl connection, while the second is normal one.\n"; print "The login and password are 'admin' 'admin'. After Logging in, you will have to change your password to something more secure\n"; print "We hope you will find managing your hosting with Kloxo refreshingly pleasurable, and also we wish you all the success on your hosting venture\n"; print "Thanks for choosing Kloxo to manage your hosting, and allowing us to be of service\n"; } else { print "You should open the port 7779 on this server, since this is used for the communication between master and slave\n"; print "To access this slave, to go admin->servers->add server, give the ip/machine name of this server. The password is 'admin'. The slave will appear in the list of slaves, and you can access it just like you access localhost\n\n"; } }