function create_groupwares() { include_once dirname(__FILE__) . "/ressources/class.freeweb.inc"; $ldap = new clladp(); $tpl = new templates(); $sock = new sockets(); $page = CurrentPageName(); $q = new mysql(); $EnableVirtualDomainsInMailBoxes = $sock->GET_INFO("EnableVirtualDomainsInMailBoxes"); $sql = "SELECT * FROM register_orgs WHERE `zmd5`='{$_GET["key"]}'"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "artica_backup")); $ou = $ligne["ou"]; if ($ligne["ou"] == null) { echo $tpl->_ENGINE_parse_body("{please_register_first}"); return; } $domain = $ligne["domain"]; $user = $ligne["username"]; $uid = $user; if ($EnableVirtualDomainsInMailBoxes == 1) { $uid = "{$user}@{$domain}"; } $password = $ligne["password"]; $freeweb = new freeweb(); $freeweb->servername = "admin.{$domain}"; $freeweb->ou = $ou; $freeweb->uid = $uid; $freeweb->groupware = "ARTICA_MINIADM"; if ($freeweb->CreateSite()) { $html = "\n\t\t<table style='width:100%'>\n\t\t<tr>\n\t\t\t<td width=1%><img src='img/42-green.png'></td>\n\t\t\t<td valign='top' style='font-size:16px'>{website}: admin.{$domain} {ARTICA_MINIADM} {success}</td>\n\t\t</tr>\n\t\t</table>\n\t\t"; } else { $html = "\n\t\t<table style='width:100%'>\n\t\t<tr>\n\t\t\t<td width=1%><img src='img/42-red.png'></td>\n\t\t\t<td valign='top' style='font-size:16px'>{website}: admin.{$domain} {ARTICA_MINIADM} {failed}</td>\n\t\t</tr>\n\t\t</table>\n\t\t"; } $users = new usersMenus(); if ($users->ZARAFA_INSTALLED) { $freeweb = new freeweb(); $freeweb->servername = "webmail.{$domain}"; $freeweb->ou = $ou; $freeweb->uid = $uid; $freeweb->groupware = "ZARAFA"; if ($freeweb->CreateSite()) { $html = $html . "\n\t\t<table style='width:100%'>\n\t\t<tr>\n\t\t\t<td width=1%><img src='img/42-green.png'></td>\n\t\t\t<td valign='top' style='font-size:16px'>{webmail}: webmail.{$domain} {APP_ZARAFA} {success}</td>\n\t\t</tr>\n\t\t</table>\n\t\t"; } else { $html = $html . "\n\t\t<table style='width:100%'>\n\t\t<tr>\n\t\t\t<td width=1%><img src='img/42-red.png'></td>\n\t\t\t<td valign='top' style='font-size:16px'>{website}: webmail.{$domain} {APP_ZARAFA} {failed}</td>\n\t\t</tr>\n\t\t</table>\n\t\t"; } } $html = $html . "\n\t<script>\n\tLoadAjax('conclusion','{$page}?create-conclusion=yes&key={$_GET["key"]}');\n\t</script>"; echo $tpl->_ENGINE_parse_body($html); }
function duplicate_wordpress($servername) { $unix = new unix(); $q = new mysql(); $free = new freeweb($servername); $WORKING_DIRECTORY = $free->www_dir; if ($free->groupware_duplicate == null) { build_progress("{$servername}: {duplicate} {$servername} no duplicate set...", 42); sleep(2); return false; } $free2 = new freeweb($free->groupware_duplicate); if ($free2->mysql_database == null) { echo "Fatal: {$free->groupware_duplicate} did not have any such DB set, try to find it..\n"; $free2->mysql_database = $free2->CreateDatabaseName(); echo "Fatal: {$free->groupware_duplicate} = {$free2->mysql_database}\n"; } if (!$q->DATABASE_EXISTS($free2->mysql_database, true)) { build_progress("{$servername}: {duplicate} {$free->groupware_duplicate} did not have any database...", 42); sleep(2); return false; } $srcdir = $free2->www_dir; $Mysqlpassword = null; $cp = $unix->find_program("cp"); $rm = $unix->find_program("rm"); if (@is_link($WORKING_DIRECTORY)) { $WORKING_DIRECTORY = @readlink($WORKING_DIRECTORY); } if (is_dir($WORKING_DIRECTORY)) { build_progress("{$servername}: {removing} {$WORKING_DIRECTORY}...", 42); sleep(2); shell_exec("{$rm} -rf {$WORKING_DIRECTORY}/*"); } @mkdir($WORKING_DIRECTORY, 0755, true); build_progress("{$servername}: {installing} {from} {$srcdir}...", 42); shell_exec("{$cp} -rf {$srcdir}/* {$WORKING_DIRECTORY}/"); $wordpressDB = $free->mysql_database; if ($wordpressDB == null) { $wordpressDB = $free->CreateDatabaseName(); } if ($q->DATABASE_EXISTS($wordpressDB)) { build_progress("{$servername}: {remove_database} {$wordpressDB}...", 42); sleep(2); if (!$q->DELETE_DATABASE($wordpressDB)) { build_progress("{$servername}: {remove_database} {$wordpressDB} {failed}...", 42); return false; } if (!$q->CREATE_DATABASE($wordpressDB, true)) { build_progress("{$servername}: {create_database} {$wordpressDB} {failed}...", 42); return false; } } if (!$q->DATABASE_EXISTS($wordpressDB)) { if (!$q->CREATE_DATABASE($wordpressDB, true)) { build_progress("{$servername}: {create_database} {$wordpressDB} {failed}...", 42); return false; } } build_progress("{$servername}: {backup_database} {from} {$free2->mysql_database}...", 42); $mysqldump = $unix->find_program("mysqldump"); $q = new mysql(); if ($q->mysql_password != null) { $Mysqlpassword = "******" . $unix->shellEscapeChars($q->mysql_password); } $t = time(); $TMP_FILE = $unix->FILE_TEMP(); $cmdline = trim("{$mysqldump} --add-drop-table --single-transaction --force --insert-ignore -S /var/run/mysqld/mysqld.sock -u {$q->mysql_admin}{$Mysqlpassword} {$free2->mysql_database} >{$TMP_FILE} 2>&1"); if ($GLOBALS["VERBOSE"]) { echo "{$cmdline}\n"; } $results = array(); exec($cmdline, $results); while (list($num, $ligne) = each($results)) { echo "{$ligne}\n"; if (preg_match("#ERROR\\s+([0-9]+)#", $ligne)) { build_progress("{$servername}: {restore_database} {to} {$wordpressDB} {failed}..", 42); sleep(3); return false; } } build_progress("{$servername}: {restore_database} {to} {$wordpressDB}..", 42); $mysqlbin = $unix->find_program("mysql"); $cmd = "{$mysqlbin} --batch --force -S /var/run/mysqld/mysqld.sock -u {$q->mysql_admin}{$Mysqlpassword} --database={$wordpressDB} <{$TMP_FILE} 2>&1"; if ($GLOBALS["VERBOSE"]) { echo "{$cmd}\n"; } exec($cmd, $results); while (list($num, $ligne) = each($results)) { echo "{$ligne}\n"; if (preg_match("#ERROR\\s+([0-9]+)#", $ligne)) { build_progress("{$servername}: {restore_database} {to} {$wordpressDB} {failed}..", 42); sleep(3); return false; } } build_progress("{$servername}: {restore_database} {to} {$wordpressDB}..{done}", 42); @unlink($TMP_FILE); if (!scan($WORKING_DIRECTORY)) { build_progress("{$servername}: {install} {failed}", 42); sleep(3); return false; } $proto = "http"; if ($free->useSSL == 1) { $proto = "https"; } $sql = "UPDATE `wp_options` SET `option_value`='{$proto}://{$servername}' WHERE `option_name`='siteurl'"; $q->QUERY_SQL($sql, $wordpressDB); if (!$q->ok) { echo $q->mysql_error; build_progress("{$servername}: {install} {failed}", 42); sleep(3); return false; } $sql = "UPDATE `wp_options` SET `option_value`='{$proto}://{$servername}' WHERE `option_name`='home'"; $q->QUERY_SQL($sql, $wordpressDB); if (!$q->ok) { echo $q->mysql_error; build_progress("{$servername}: {install} {failed}", 42); sleep(3); return false; } $free->groupware_duplicate = null; $free->CreateSite(true); return true; }
function add_wordpress() { $servername = trim(strtolower($_POST["servername"])); $domainname = trim(strtolower($_POST["domainname"])); if ($servername == null) { if ($domainname != null) { $domainname = $servername; $domainname = null; } } if ($domainname != null) { if ($servername != null) { $servername = "{$servername}.{$domainname}"; } else { $servername = $domainname; } } $servername = str_replace('..', '.', $servername); $servername = str_replace('/', '.', $servername); $servername = str_replace('\\', '.', $servername); $servername = str_replace(' ', '.', $servername); $servername = str_replace('$', '.', $servername); $servername = str_replace('#', '.', $servername); $servername = str_replace('%', '.', $servername); $servername = str_replace('*', '.', $servername); $servername = str_replace('..', '.', $servername); $_POST["administrator"] = url_decode_special_tool($_POST["administrator"]); $_POST["password"] = url_decode_special_tool($_POST["password"]); $_POST["directory"] = url_decode_special_tool($_POST["directory"]); if (substr($servername, strlen($servername) - 1, 1) == '.') { $servername = substr($servername, 0, strlen($servername) - 1); } if (substr($servername, 0, 1) == '.') { $servername = substr($servername, 1, strlen($servername)); } $free = new freeweb(); $free->servername = $servername; $free->groupware = "WORDPRESS"; $free->groupware_admin = $_POST["administrator"]; $free->groupware_password = $_POST["password"]; $free->groupware_duplicate = $_POST["duplicate-from"]; $free->www_dir = $_POST["directory"]; if (!$free->CreateSite(true)) { echo $free->error; } }
function execute_autconfig() { $sock = new sockets(); build_progress("Execute....", 5); build_progress("Loading settings....", 5); $SquidAutoconfWizard = unserialize($sock->GET_INFO("SquidAutoconfWizard")); $DOMAIN = $SquidAutoconfWizard["DOMAIN"]; $LOCALNET = $SquidAutoconfWizard["LOCALNET"]; $PROXY = $SquidAutoconfWizard["PROXY"]; $PORT = $SquidAutoconfWizard["PORT"]; echo "DOMAIN.........: {$DOMAIN}\n"; echo "LOCALNET.......: {$LOCALNET}\n"; echo "PROXY..........: {$PROXY}:{$PORT}\n"; if ($DOMAIN == null) { build_progress("Missing domain....", 110); return; } if ($LOCALNET == null) { build_progress("Missing LOCALNET....", 110); return; } if ($PROXY == null) { build_progress("Missing PROXY....", 110); return; } if (!is_numeric($PORT)) { build_progress("Missing PROXY PORT....", 110); return; } build_progress("Creating wpad.{$DOMAIN}....", 10); $webserver = "wpad.{$DOMAIN}"; $sock->SET_INFO("EnableFreeWeb", 1); build_progress("Creating wpad.{$DOMAIN} (loading class)", 11); $free = new freeweb($webserver); $free->servername = $webserver; $free->groupware = "WPADDYN"; $free->Params["ServerAlias"]["wpad"] = true; $free->CreateSite(); build_progress("Building wpad.{$DOMAIN} and alias wpad", 15); build_progress("Creating wpad.{$DOMAIN} (saving configuration)", 12); build_progress("Creating wpad.{$DOMAIN} (reloading configuration)", 13); rebuild_vhost($webserver); build_progress("Creating wpad.{$DOMAIN} (reloading configuration {done})", 14); build_progress("Building first rule...", 15); $rulnename = mysql_escape_string2("Wizard - all to {$PROXY}:{$PORT}"); $sql = "INSERT IGNORE INTO `wpad_rules` (`rulename`,`enabled`,`zorder`,`dntlhstname`) VALUES ('{$rulnename}',1,0,1)"; $q = new mysql_squid_builder(); if (!$q->FIELD_EXISTS("wpad_rules", "zorder")) { $q->QUERY_SQL("ALTER TABLE `wpad_rules` ADD `zorder` smallint( 2 ) DEFAULT '0',ADD INDEX (`zorder`)"); } if (!$q->FIELD_EXISTS("wpad_sources_link", "zorder")) { $q->QUERY_SQL("ALTER TABLE `wpad_sources_link` ADD `zorder` smallint( 2 ) DEFAULT '0',ADD INDEX (`zorder`)"); } if (!$q->FIELD_EXISTS("wpad_rules", "dntlhstname")) { $q->QUERY_SQL("ALTER TABLE `wpad_rules` ADD `dntlhstname` smallint( 1 ) DEFAULT '0'"); } if (!$q->FIELD_EXISTS("wpad_destination_rules", "rulename")) { $q->QUERY_SQL("ALTER TABLE `wpad_destination_rules` ADD `rulename` VARCHAR(255) NOT NULL, ADD INDEX (`rulename`)"); build_progress("Building first rule...MySQL error", 110); if (!$q->ok) { echo $q->mysql_error . "\n"; } return; } $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("Building first rule...MySQL error", 110); return; } $MAIN_RULE_ID = intval($q->last_id); if ($MAIN_RULE_ID == 0) { build_progress("Building first rule...MAIN_RULE_ID = 0!", 110); return; } $zmd5 = md5("{$MAIN_RULE_ID}{$PROXY}{$PORT}"); build_progress("Add destination {$PROXY}:{$PORT}", 20); $q->QUERY_SQL("INSERT IGNORE INTO wpad_destination (zmd5,aclid,proxyserver,proxyport,zorder)\n\t\t\tVALUES ('{$zmd5}','{$MAIN_RULE_ID}','{$PROXY}','{$PORT}',0)"); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("Add destination {$PROXY}:{$PORT} MySQL error", 110); return; } build_progress("Creating Proxy object `Everyone`", 25); $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT ID FROM webfilters_sqgroups WHERE `GroupType`='all'")); $SourceGroupID = intval($ligne["ID"]); if ($SourceGroupID == 0) { $sql = "INSERT IGNORE INTO webfilters_sqgroups (GroupName,GroupType,enabled,`acltpl`,`params`) VALUES ('Everyone','all','1','','');"; $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("Creating Proxy object `Everyone` MySQL error", 110); return; } $SourceGroupID = intval($q->last_id); } if ($SourceGroupID == 0) { build_progress("Creating Proxy object `Everyone` SourceGroupID = 0!", 110); return; } build_progress("Creating Proxy object `WPAD - Local networks`", 25); $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT ID FROM webfilters_sqgroups WHERE `GroupName`='WPAD - Local networks'")); $NetWorkGroupID = intval($ligne["ID"]); if ($NetWorkGroupID == 0) { $sql = "INSERT IGNORE INTO webfilters_sqgroups (GroupName,GroupType,enabled,`acltpl`,`params`) \n\t\t\t\tVALUES ('WPAD - Local networks','src','1','','');"; $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("Creating Proxy object `WPAD - Local networks` MySQL error", 110); return; } $NetWorkGroupID = intval($q->last_id); } if ($NetWorkGroupID == 0) { build_progress("Creating Proxy object `WPAD - Local networks` NetWorkGroupID = 0!", 110); return; } $IP = new IP(); $LOCALNET_ARRAY = array(); if (strpos($LOCALNET, ",") > 0) { $LOCALNET_ARRAY_TEMP = explode(",", $LOCALNET); while (list($none, $line) = each($LOCALNET_ARRAY_TEMP)) { $line = trim($line); if (!$IP->isIPAddressOrRange($line)) { continue; } $LOCALNET_ARRAY[] = "('{$line}','{$NetWorkGroupID}','1','')"; } } else { if ($IP->isIPAddressOrRange(trim($LOCALNET))) { $LOCALNET_ARRAY[] = "('{$LOCALNET}','{$NetWorkGroupID}','1','')"; } } build_progress("Filling Proxy object `WPAD - Local networks`", 30); $q->QUERY_SQL("DELETE FROM webfilters_sqitems WHERE gpid={$NetWorkGroupID}"); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("Filling Proxy object `WPAD - Local networks` MySQL error", 110); return; } $sql = "INSERT INTO webfilters_sqitems (pattern,gpid,enabled,other)\n\tVALUES " . @implode(",", $LOCALNET_ARRAY); $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("Filling Proxy object `WPAD - Local networks` MySQL error", 110); return; } build_progress("Linking Everyone - {$SourceGroupID} - to rule {$MAIN_RULE_ID}", 30); $zmd5 = md5("{$MAIN_RULE_ID}{$SourceGroupID}"); $q->QUERY_SQL("INSERT INTO wpad_sources_link (zmd5,aclid,negation,gpid,zorder) VALUES ('{$zmd5}','{$MAIN_RULE_ID}','0','{$SourceGroupID}',1)"); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("MySQL error", 110); return; } $zmd5 = md5("{$MAIN_RULE_ID}{$NetWorkGroupID}"); build_progress("Linking WPAD - Local networks - {$NetWorkGroupID} - to rule {$MAIN_RULE_ID}", 50); $q->QUERY_SQL("INSERT INTO wpad_white_link (zmd5,aclid,negation,gpid,zorder) VALUES ('{$zmd5}','{$MAIN_RULE_ID}','0','{$NetWorkGroupID}',1)"); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("MySQL error", 110); return; } build_progress("{success}", 100); }
function create_articaweb($websitename) { if ($websitename == null) { return; } $sock = new sockets(); $sock->SET_INFO("EnableFreeWeb", 1); restart_artica_status(); restart_apache_src(); include_once dirname(__FILE__) . "/ressources/class.freeweb.inc"; $free = new freeweb($websitename); $free->servername = $websitename; $free->groupware = "ARTICA_ADM"; $free->CreateSite(); rebuild_vhost($websitename); }
function splash_create() { $f = new freeweb($_POST["splash-create"]); $f->servername = $_POST["splash-create"]; $f->groupware = "CHILLI"; $f->CreateSite(); }
function ExportSingleWebsite($servername) { $GLOBALS["PROGRESS_FILE"] = "/usr/share/artica-postfix/ressources/logs/wordpress.export.{$servername}.progress"; $unix = new unix(); $DBADD = false; $mysqldump = $unix->find_program("mysqldump"); $q = new mysql(); $free = new freeweb($servername); $gzip = $unix->find_program("gzip"); $tar = $unix->find_program("tar"); $rm = $unix->find_program("rm"); $database = $free->mysql_database; if ($database == null) { $database = $free->CreateDatabaseName(); $DBADD = true; } build_progress("{$servername}: Backup database {$database}", 20); if (!$q->DATABASE_EXISTS($database)) { build_progress("Backup {$servername}: database {$database} Failed ( No such database )", 110); return false; } if ($DBADD) { $free->mysql_database = $database; $free->CreateSite(true); $free = new freeweb($servername); } $TMP_PATH = $unix->TEMP_DIR(); $BaseWorkDir = "{$TMP_PATH}/{$servername}"; @mkdir("{$BaseWorkDir}", 0755, true); $q = new mysql(); $ligneDump = @mysql_fetch_array($q->QUERY_SQL("SELECT * from freeweb WHERE servername='{$servername}'", "artica_backup")); while (list($index, $data) = each($ligneDump)) { if (is_numeric($index)) { continue; } echo "Dumping {$index} = {$data}\n"; $TODUMP[$index] = $data; } if (count($TODUMP) == 0) { build_progress("Dumping parameters failed", 110); return; } @file_put_contents("{$BaseWorkDir}/config.serialize", base64_encode(serialize($TODUMP))); $TODUMP = unserialize(base64_decode(@file_get_contents("{$BaseWorkDir}/config.serialize"))); if (count($TODUMP) == 0) { build_progress("Dumping parameters failed", 110); return; } build_progress("Dumping parameters {$BaseWorkDir}/config.serialize success", 22); $nice = $unix->EXEC_NICE(); $q = new mysql(); if ($q->mysql_password != null) { $password = "******" . $unix->shellEscapeChars($q->mysql_password); } $t = time(); $prefix = trim("{$nice} {$mysqldump} --add-drop-table --single-transaction --force --insert-ignore -S /var/run/mysqld/mysqld.sock -u {$q->mysql_admin}{$password} {$database}"); $cmdline = "{$prefix} | {$gzip} > {$BaseWorkDir}/database.gz"; shell_exec($cmdline); $took = $unix->distanceOfTimeInWords($t, time()); $size = FormatBytes(@filesize("{$BaseWorkDir}/database.gz") / 1024); build_progress("Backup database {$database} {$size}", 25); $WORKDIR = $free->www_dir; build_progress("Backup directory {$WORKDIR}", 25); echo "Backup directory {$WORKDIR}"; if (!is_dir($WORKDIR)) { build_progress("Backup directory {$WORKDIR} Failed ( No such directory )", 110); return false; } chdir($WORKDIR); system("{$nice} {$tar} cfz {$BaseWorkDir}/wordpress.tar.gz *"); $took = $unix->distanceOfTimeInWords($t, time()); $size = FormatBytes(@filesize("{$BaseWorkDir}/wordpress.tar.gz") / 1024); build_progress("Backup directory {$WORKDIR} {$size}", 50); sleep(4); build_progress("Creating container...", 50); chdir($BaseWorkDir); @mkdir("/home/artica/wordress-exported", 0755, true); if (is_file("/home/artica/wordress-exported/{$servername}.tar.gz")) { @unlink("/home/artica/wordress-exported/{$servername}.tar.gz"); } system("{$nice} {$tar} cvfz /home/artica/wordress-exported/{$servername}.tar.gz *"); sleep(4); build_progress("Cleaning...", 95); chdir("/root"); shell_exec("{$rm} -rf {$BaseWorkDir}"); build_progress("Creating container done...", 100); }
function freeweb_create() { $f = new freeweb($_POST["freeweb-create"]); $f->servername = $_POST["freeweb-create"]; $f->groupware = "SARG"; $f->CreateSite(); }