function save() { $databasename = $_GET["databasename"]; $databasename = format_mysql_table($databasename); $ou = base64_decode($_GET["ou"]); $q = new mysql(); $tpl = new templates(); //CheckTableEmailingContacts while (list($key, $line) = each($_GET)) { if (preg_match("#DB_ADD_[0-9]+#", $key)) { $tables[] = "emailing_{$line}"; } } if (count($tables) == 0) { echo $tpl->javascript_parse_text("{NODB_SELECTED}"); return; } $q->CheckTableEmailingContacts("emailing_{$databasename}", $tables); if (!$q->ok) { echo $q->mysql_error; return; } $sql = "INSERT INTO emailing_db_paths (databasename,progress,finish,ou,zDate,merged)\n\tVALUES('{$databasename}','100','1','{$ou}',NOW(),'1');"; $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error; return; } }
function save() { $ou = base64_decode($_GET["ou"]); if ($_GET["database"] == null) { $_GET["database"] = basename($_GET["filepath"]); } $_GET["database"] = format_mysql_table($_GET["database"]); $sql = "INSERT INTO emailing_db_paths (filepath,databasename,ou,zDate) VALUES('{$_GET["filepath"]}','{$_GET["database"]}','{$ou}',NOW());"; $q = new mysql(); $q->check_emailing_tables(); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error; return; } $sock = new sockets(); $sock->getFrameWork("cmd.php?emailing-import-contacts=yes"); }
function popup_add_contact_save() { $db = $_GET["database"]; $ID = $_GET["ID"]; $_GET["ou"] = base64_decode($_GET["ou"]); if (trim($_GET["db_add"]) != null) { $db = $_GET["db_add"]; } $db = format_mysql_table($db); $email = $_GET["email"]; if (preg_match("#.+?@(.+)#", $email, $re)) { $domain = $re[1]; } $sql_add = "INSERT INTO emailing_{$db} (gender,firstname,lastname,email,domain,phone,city,cp,postaladdress)\n\tVALUES('{$_GET["gender"]}','{$_GET["firstname"]}','{$_GET["lastname"]}','{$_GET["email"]}','{$domain}',\n\t'{$_GET["phone"]}','{$_GET["city"]}','{$_GET["cp"]}','{$_GET["postaladdress"]}');\n\t"; $sql_edit = "UPDATE emailing_{$db} SET \n\tgender='{$_GET["gender"]}',\n\tlastname='{$_GET["lastname"]}',\n\temail='{$_GET["email"]}',\n\tdomain='{$domain}',\n\tphone='{$_GET["phone"]}',\n\tcity='{$_GET["city"]}',\n\tcp='{$_GET["cp"]}',\n\tpostaladdress='{$_GET["postaladdress"]}'\n\tWHERE ID={$ID}\n\t"; if ($ID > 0) { $sql = $sql_edit; } else { $sql = $sql_add; } $q = new mysql(); writelogs("Checking emailing_{$db}", __FUNCTION__, __FILE__, __LINE__); if (!$q->TABLE_EXISTS("emailing_{$db}", "artica_backup")) { writelogs("Create emailing_{$db}", __FUNCTION__, __FILE__, __LINE__); $q->CheckTableEmailingContacts("emailing_{$db}"); $sql_table = "INSERT INTO emailing_db_paths(databasename,ou,zDate,finish,progress)\n\t\tVALUES ('{$db}','{$_GET["ou"]}',NOW(),1,100);\n\t\t"; $z = new mysql(); $z->QUERY_SQL($sql_table, "artica_backup"); writelogs("{$z->mysql_error}", __FUNCTION__, __FILE__, __LINE__); if (!$z->ok) { echo "\n{$z->mysql_error}\n{$sql_table}\n\n"; } } $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo "\n{$q->mysql_error}\n{$sql}\n\n"; } }
function SAVE_FREEWEB_MYSQL() { $servername = trim(strtolower($_POST["servername"])); if (substr($servername, 0, 1) == '.') { echo $servername . " FAILED\n"; return; } $users = new usersMenus(); $sock = new sockets(); $FreewebsStorageDirectory = $sock->GET_INFO("FreewebsStorageDirectory"); if (!$users->AsWebMaster) { return "FALSE"; } $uid = $_POST["uid"]; $mysql_database = format_mysql_table($_POST["mysql_database"]); $mysql_password = $_POST["mysql_password"]; $mysql_username = $_POST["mysql_username"]; $lvm_vg = $_POST["lvm_vg"]; $vg_size = $_POST["vg_size"]; $ServerIP = $_POST["ServerIP"]; $ServerPort = 0; if (preg_match("#(.+?):([0-9]+)#", $ServerIP, $re)) { $ServerIP = $re[1]; $ServerPort = $re[2]; } if (!is_numeric($vg_size)) { $vg_size = 5000; } $ftpuser = $_POST["ftpuser"]; $ftppassword = $_POST["ftppassword"]; $useSSL = $_POST["useSSL"]; if (!$users->PUREFTP_INSTALLED) { $_POST["useFTP"] = 0; $ftpuser = null; $ftppassword = null; } if ($_POST["useFTP"] == 1) { if ($ftpuser == null) { $_POST["useFTP"] = 0; $ftpuser = null; $ftppassword = null; } } $sql = "SELECT servername FROM freeweb WHERE servername='{$_POST["servername"]}'"; $q = new mysql(); $ligne = @mysql_fetch_array($q->QUERY_SQL($sql, 'artica_backup')); if ($ligne["servername"] != null) { if ($uid != null) { $u = new user($uid); $ou = $u->ou; } if (!$users->AsSystemAdministrator) { $ou = $_SESSION["ou"]; } $sql = "UPDATE freeweb SET \n\t\t\tmysql_password='******',\n\t\t\tmysql_username='******',\n\t\t\tmysql_database='{$mysql_database}',\n\t\t\tmysql_instance_id='{$_POST["mysql_instance_id"]}',\n\t\t\tftpuser='******',\n\t\t\tftppassword='******',\n\t\t\tuseMysql='{$_POST["useMysql"]}',\n\t\t\tuseFTP='{$_POST["useFTP"]}'\n\t\t\tWHERE servername='{$servername}'\n\t\t"; } writelogs("{$sql}", __FUNCTION__, __FILE__, __LINE__); $q = new mysql(); $q->BuildTables(); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { if (preg_match("#Unknown column#i", $q->mysql_error)) { $q->BuildTables(); $q->QUERY_SQL($sql, "artica_backup"); } } if (!$q->ok) { echo $q->mysql_error; return; } $sock = new sockets(); if ($_POST["useFTP"] == 1) { if ($users->PUREFTP_INSTALLED) { if (trim($ftpuser) != null) { if (trim($ftppassword) != null) { $pure = new pureftpd_user(); if (!$pure->CreateUser($ftpuser, $ftppassword, $servername)) { echo "FTP: Failed\n"; return; } $sock->getFrameWork("services.php?reload-pure-ftpd=yes"); } } } } if ($_POST["useMysql"] == 1) { if (!$q->DATABASE_EXISTS($mysql_database)) { $q->CREATE_DATABASE("{$mysql_database}"); } if (!$q->PRIVILEGES($mysql_username, $mysql_password, $mysql_database)) { echo "GRANT {$mysql_database} FAILED FOR {$mysql_username}\n{$q->mysql_error}"; } } if (isset($_POST["ADD_DNS_ENTRY"])) { $dnsDOM = explode(".", $_POST["servername"]); $netbiosname = $dnsDOM[0]; unset($dnsDOM[0]); $domainname = implode(".", $dnsDOM); include_once dirname(__FILE__) . "/ressources/class.pdns.inc"; $pdns = new pdns($domainname); $pdns->EditIPName($netbiosname, $_POST["ADD_DNS_ENTRY"], "A"); } if ($ligne["servername"] == null) { if ($_POST["force-groupware"] != null) { $sql = "INSERT INTO drupal_queue_orders(`ORDER`,`servername`) VALUES('INSTALL_GROUPWARE','{$servername}')"; $q = new mysql(); $q->QUERY_SQL($sql, "artica_backup"); $sock->getFrameWork("freeweb.php?rebuild-vhost=yes&servername={$servername}"); } } $sock->getFrameWork("services.php?freeweb-start=yes"); sleep(2); $sock->getFrameWork("cmd.php?freeweb-restart=yes"); }
function parse_db($id) { $unix = new unix(); $pidfile = "/etc/artica-postfix/" . basename(__FILE__) . ".{$id}.pid"; $pid = trim(@file_get_contents($pidfile)); if ($unix->process_exists($pid)) { $pid = getmypid(); echo "[{$pid}]:: Process {$pid} already running...\n"; die; } $pid = getmypid(); file_put_contents($pidfile, $pid); $sql = "SELECT * FROM emailing_db_paths WHERE ID={$id}"; $q = new mysql(); $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "artica_backup")); $unzipbin = $unix->find_program("unzip"); if ($unzipbin == null) { echo "[{$pid}]:: unzip tool no such file or directory...\n"; update_status($id, "110", 1, "unzip tool no such file or directory"); die; } $zip_path = $ligne["filepath"]; if (!is_file($zip_path)) { echo "[{$pid}]:: {$zip_path} no such file or directory\n"; update_status($id, "110", 1, "zip db no such file or directory"); die; } $tmp_path = "/tmp/emailing-import/{$id}"; writeevent("using {$tmp_path}", $id); @mkdir($tmp_path, 666, true); writeevent("Uncompress {$zip_path}", $id); echo "{$unzipbin} -o {$zip_path} -d {$tmp_path}\n"; shell_exec("{$unzipbin} -o {$zip_path} -d {$tmp_path}"); $files = $unix->DirFiles($tmp_path); if (!is_array($files)) { update_status($id, "110", 1, "{$zip_path} corrupted or no files stored"); die; } while (list($filename, $file_name) = each($files)) { writeevent("parsing {$file_name}", $pid); $max = $unix->COUNT_LINES_OF_FILE("{$tmp_path}/{$file_name}"); writeevent("parsing {$file_name} {$max} entries", $pid); $handle = @fopen("{$tmp_path}/{$file_name}", "r"); $ligne["databasename"] = format_mysql_table($ligne["databasename"]); $q = new mysql(); $q->CheckTableEmailingContacts("emailing_{$ligne["databasename"]}"); $sql = "INSERT INTO emailing_{$ligne["databasename"]} (`gender`,`firstname`, `lastname`,`email`,`phone`,`city`,`cp`,`postaladdress`,`domain`) VALUES"; if ($handle) { while (!feof($handle)) { $tw = $tw + 1; $count = $count + 1; unset($re); $buffer = fgets($handle, 4096); if (trim($buffer) == null) { continue; } $buffer = str_replace('"', "", $buffer); $buffer = str_replace(';', ",", $buffer); $lines = explode(",", addslashes($buffer)); if (!is_array($lines)) { if (preg_match("#.+?@.+#", $buffer)) { for ($i = 0; $i < 8; $i++) { $lines[$i] = ""; } $lines[3] = trim($buffer); } } if (count($lines) < 2) { if (preg_match("#.+?@.+#", $buffer)) { for ($i = 0; $i < 8; $i++) { $lines[$i] = ""; } $lines[3] = trim($buffer); } } $lines[3] = str_replace(";", ".", $lines[3]); $lines[3] = str_replace("?", ".", $lines[3]); $lines[3] = str_replace("@.", "@", $lines[3]); $lines[3] = str_replace('^', '@', $lines[3]); $lines[3] = str_replace(',', '.', $lines[3]); if (trim($lines[3]) == null) { writeevent("failed 3:[{$buffer}] [" . __LINE__ . "]", $pid); $GLOBALS["FAILED_CONTACTS"] = $GLOBALS["FAILED_CONTACTS"] + 1; unset($lines); continue; } if (!preg_match("#(.+?)@(.+?)\\.(.+)#", $lines[3], $re)) { writeevent("failed 3:{$lines[3]} bad email address [" . __LINE__ . "]", $pid); $GLOBALS["FAILED_CONTACTS"] = $GLOBALS["FAILED_CONTACTS"] + 1; unset($lines); continue; } $domain = $re[2]; if (substr($domain, strlen($domain) - 1, 1) == '.') { $domain = substr($domain, 0, strlen($domain) - 1); } if (preg_match("#^\\..+#", $domain)) { writeevent("failed 3:{$lines[3]} bad domain {$domain} [" . __LINE__ . "]", $pid); $GLOBALS["FAILED_CONTACTS"] = $GLOBALS["FAILED_CONTACTS"] + 1; unset($lines); continue; } if ($GLOBALS["EMAILS"][$lines[3]]) { writeevent("failed 3:{$lines[3]} already exists [" . __LINE__ . "]", $pid); $GLOBALS["FAILED_CONTACTS"] = $GLOBALS["FAILED_CONTACTS"] + 1; continue; } if (isBlockedMail($lines[3])) { writeevent("failed 3:{$lines[3]} is blacklisted [" . __LINE__ . "]", $pid); $GLOBALS["FAILED_CONTACTS"] = $GLOBALS["FAILED_CONTACTS"] + 1; continue; } $sqla[] = "('{$lines[0]}',\n\t\t\t\t'{$lines[1]}',\n\t\t\t\t'{$lines[2]}',\n\t\t\t\t'{$lines[3]}',\n\t\t\t\t'{$lines[4]}',\n\t\t\t\t'{$lines[5]}',\n\t\t\t\t'{$lines[6]}',\n\t\t\t\t'{$lines[7]}','{$domain}')"; $GLOBALS["SUCCESS_CONTACTS"] = $GLOBALS["SUCCESS_CONTACTS"] + 1; $GLOBALS["EMAILS"][$lines[3]] = true; if (count($GLOBALS["EMAILS"]) > 10000) { $GLOBALS["EMAILS"] = array(); } unset($lines); if ($tw > 100) { $fullsql = $sql . "\n" . @implode(",", $sqla); $q = new mysql(); $q->QUERY_SQL($fullsql, "artica_backup"); if (!$q->ok) { writeevent($id, "{$q->mysql_error}\n{$fullsql}"); } unset($sqla); $purc = $count / $max; $purc = $purc * 100; $purc = round($purc, 0); update_status($id, $purc, 0); $tw = 0; } } fclose($handle); if (is_array($sqla)) { $fullsql = $sql . "\n" . @implode(",", $sqla); $q->QUERY_SQL($fullsql, "artica_backup"); if (!$q->ok) { writeevent($id, "{$q->mysql_error}\n{$fullsql}"); } } } } if ($GLOBALS["SUCCESS_CONTACTS"] > 0) { writeevent("Failed.:{$GLOBALS["FAILED_CONTACTS"]}", $id); writeevent("Success:{$GLOBALS["SUCCESS_CONTACTS"]}", $id); update_status($id, 100, 1, null); } else { update_status($id, 110, 0, null); } }
function Save() { $servername = trim(strtolower($_GET["servername"])); if (substr($servername, 0, 1) == '.') { echo $servername . " FAILED\n"; return; } $users = new usersMenus(); $sock = new sockets(); $tpl = new templates(); $FreewebsStorageDirectory = $sock->GET_INFO("FreewebsStorageDirectory"); if (!$users->AsWebMaster) { return "FALSE"; } $uid = $_GET["uid"]; $mysql_database = format_mysql_table($_GET["mysql_database"]); $mysql_password = $_GET["mysql_password"]; $mysql_username = $_GET["mysql_username"]; $lvm_vg = $_GET["lvm_vg"]; $vg_size = $_GET["vg_size"]; $ServerIP = $_GET["ServerIP"]; $ServerPort = 0; if (preg_match("#(.+?):([0-9]+)#", $ServerIP, $re)) { $ServerIP = $re[1]; $ServerPort = $re[2]; } if (!is_numeric($vg_size)) { $vg_size = 5000; } $ftpuser = $_GET["ftpuser"]; $ftppassword = $_GET["ftppassword"]; $useSSL = $_GET["useSSL"]; if (!$users->PUREFTP_INSTALLED) { $_GET["useFTP"] = 0; $ftpuser = null; $ftppassword = null; } $sql = "SELECT servername FROM freeweb WHERE servername='{$_GET["servername"]}'"; $q = new mysql(); $ligne = @mysql_fetch_array($q->QUERY_SQL($sql, 'artica_backup')); if ($ligne["servername"] != null) { if ($uid != null) { $u = new user($uid); $ou = $u->ou; } if (!$users->AsSystemAdministrator) { $ou = $_SESSION["ou"]; } $sql = "UPDATE freeweb SET \n\t\t\tmysql_password='******',\n\t\t\tmysql_username='******',\n\t\t\tmysql_database='{$mysql_database}',\n\t\t\tmysql_instance_id='{$_GET["mysql_instance_id"]}',\n\t\t\tftpuser='******',\n\t\t\tftppassword='******',\n\t\t\tuid='{$uid}',\n\t\t\tgpid='{$_GET["gpid"]}',\n\t\t\tuseMysql='{$_GET["useMysql"]}',\n\t\t\tuseFTP='{$_GET["useFTP"]}',\n\t\t\tlvm_vg='{$_GET["lvm_vg"]}',\n\t\t\tlvm_size='{$_GET["vg_size"]}',\n\t\t\tUseLoopDisk='{$_GET["UseLoopDisk"]}',\n\t\t\tLoopMounts='{$_GET["LoopMounts"]}',\n\t\t\twww_dir='{$_GET["www_dir"]}',\n\t\t\tUseReverseProxy='{$_GET["UseReverseProxy"]}',\n\t\t\tProxyPass='******',\n\t\t\tuseSSL='{$useSSL}',\n\t\t\tServerPort='{$ServerPort}',\n\t\t\tou='{$ou}',\n\t\t\tForwarder='{$_GET["Forwarder"]}',\n\t\t\tForwardTo='{$_GET["ForwardTo"]}',\n\t\t\tServerIP='{$ServerIP}'\n\t\t\tWHERE servername='{$servername}'\n\t\t"; } else { $ApacheServerName = $sock->GET_INFO("ApacheServerName"); if ($ApacheServerName == null) { $ApacheServerName = $users->fqdn; } if ($uid != null) { $u = new user($uid); $ou = $u->ou; } if ($ou != null) { if ($FreewebsStorageDirectory != null) { $www_dir = "{$FreewebsStorageDirectory}/{$servername}"; } } $sock = new sockets(); $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); 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)); } if ($servername == $ApacheServerName) { echo $tpl->javascript_parse_text("{virtual_hostname_cannot_same_main_hostname}", 1); return; } if ($_GET["force-groupware"] != null) { $groupware_field = ",groupware"; $groupware_value = ",'{$_GET["force-groupware"]}'"; } if ($_GET["www_dir"] != null) { $www_dir_field = ",www_dir"; $www_dir_value = ",'{$_GET["www_dir"]}'"; } $sock->getFrameWork("freeweb.php?force-resolv=yes"); $sql = "INSERT INTO freeweb (mysql_password,mysql_username,ftpuser,ftppassword,useSSL,servername,mysql_database,\n\t\tuid,gpid,useMysql,useFTP,lvm_vg,lvm_size,UseLoopDisk,LoopMounts,ou,domainname,www_dir,ServerPort,UseReverseProxy,\n\t\tProxyPass,Forwarder,ForwardTo,ForceInstanceZarafaID,mysql_instance_id,ServerIP{$groupware_field}{$www_dir_field})\n\t\tVALUES('{$mysql_password}','{$mysql_username}','{$ftpuser}','{$ftppassword}','{$useSSL}','{$servername}','{$mysql_database}',\n\t\t'{$uid}','{$_GET["gpid"]}','{$_GET["useMysql"]}',\n\t\t'{$_GET["useFTP"]}','{$_GET["lvm_vg"]}','{$_GET["vg_size"]}','{$_GET["UseLoopDisk"]}','{$_GET["LoopMounts"]}','{$ou}',\n\t\t'{$_GET["domainname"]}','{$FreewebsStorageDirectory}','{$ServerPort}','{$_GET["UseReverseProxy"]}','{$_GET["ProxyPass"]}',\n\t\t'{$_GET["Forwarder"]}','{$_GET["ForwardTo"]}','{$_GET["ForceInstanceZarafaID"]}','{$_GET["mysql_instance_id"]}','{$ServerIP}'{$groupware_value}{$www_dir_value}\n\t\t)"; } writelogs("{$sql}", __FUNCTION__, __FILE__, __LINE__); $q = new mysql(); $q->BuildTables(); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error; return; } $sock = new sockets(); $sock->getFrameWork("system.php?dns-linker=yes"); if ($_GET["useFTP"] == 1) { if ($users->PUREFTP_INSTALLED) { if (trim($ftpuser) != null) { if (trim($ftppassword) != null) { $pure = new pureftpd_user(); if (!$pure->CreateUser($ftpuser, $ftppassword, $servername)) { echo "FTP: Failed\n"; return; } $sock->getFrameWork("services.php?reload-pure-ftpd=yes"); } } } } if ($_GET["useMysql"] == 1) { if (!$q->DATABASE_EXISTS($mysql_database)) { $q->CREATE_DATABASE("{$mysql_database}"); } if (!$q->PRIVILEGES($mysql_username, $mysql_password, $mysql_database)) { echo "GRANT {$mysql_database} FAILED FOR {$mysql_username}\n{$q->mysql_error}"; } } if (isset($_GET["ADD_DNS_ENTRY"])) { $dnsDOM = explode(".", $_GET["servername"]); $netbiosname = $dnsDOM[0]; unset($dnsDOM[0]); $domainname = implode(".", $dnsDOM); include_once dirname(__FILE__) . "/ressources/class.pdns.inc"; $pdns = new pdns($domainname); $pdns->EditIPName($netbiosname, $_GET["ADD_DNS_ENTRY"], "A"); } if ($ligne["servername"] == null) { if ($_GET["force-groupware"] != null) { $sql = "INSERT INTO drupal_queue_orders(`ORDER`,`servername`) VALUES('INSTALL_GROUPWARE','{$servername}')"; $q = new mysql(); $q->QUERY_SQL($sql, "artica_backup"); $sock->getFrameWork("freeweb.php?rebuild-vhost=yes&servername={$servername}"); } } $sock->getFrameWork("services.php?freeweb-start=yes"); sleep(2); $sock->getFrameWork("cmd.php?freeweb-restart=yes"); }
function Save() { $servername = trim(strtolower($_GET["servername"])); if (substr($servername, 0, 1) == '.') { echo $servername . " FAILED\n"; return; } $users = new usersMenus(); $sock = new sockets(); $FreewebsStorageDirectory = $sock->GET_INFO("FreewebsStorageDirectory"); if (!$users->AsWebMaster) { return "FALSE"; } $uid = $_GET["uid"]; $mysql_database = format_mysql_table($_GET["mysql_database"]); $mysql_password = $_GET["mysql_password"]; $mysql_username = $_GET["mysql_username"]; $lvm_vg = $_GET["lvm_vg"]; $vg_size = $_GET["vg_size"]; $ServerPort = $_GET["ServerPort"]; if (!is_numeric($ServerPort)) { $ServerPort = 0; } if ($_GET["UseDefaultPort"] == 1) { $ServerPort = 0; } if (!is_numeric($vg_size)) { $vg_size = 5000; } $ftpuser = $_GET["ftpuser"]; $ftppassword = $_GET["ftppassword"]; $useSSL = $_GET["useSSL"]; if (!$users->PUREFTP_INSTALLED) { $_GET["useFTP"] = 0; $ftpuser = null; $ftppassword = null; } $sql = "SELECT servername FROM freeweb WHERE servername='{$_GET["servername"]}'"; $q = new mysql(); $ligne = @mysql_fetch_array($q->QUERY_SQL($sql, 'artica_backup')); if ($ligne["servername"] != null) { if ($uid != null) { $u = new user($uid); $ou = $u->ou; } if (!$users->AsSystemAdministrator) { $ou = $_SESSION["ou"]; } $sql = "UPDATE freeweb SET \n\t\t\tmysql_password='******',\n\t\t\tmysql_username='******',\n\t\t\tmysql_database='{$mysql_database}',\n\t\t\tftpuser='******',\n\t\t\tftppassword='******',\n\t\t\tuid='{$uid}',\n\t\t\tuseMysql='{$_GET["useMysql"]}',\n\t\t\tuseFTP='{$_GET["useFTP"]}',\n\t\t\tlvm_vg='{$_GET["lvm_vg"]}',\n\t\t\tlvm_size='{$_GET["vg_size"]}',\n\t\t\tUseLoopDisk='{$_GET["UseLoopDisk"]}',\n\t\t\tLoopMounts='{$_GET["LoopMounts"]}',\n\t\t\tUseReverseProxy='{$_GET["UseReverseProxy"]}',\n\t\t\tProxyPass='******',\n\t\t\tuseSSL='{$useSSL}',\n\t\t\tServerPort='{$ServerPort}',\n\t\t\tou='{$ou}',\n\t\t\tForwarder='{$_GET["Forwarder"]}',\n\t\t\tForwardTo='{$_GET["ForwardTo"]}'\n\t\t\t\n\t\t\tWHERE servername='{$servername}'\n\t\t"; } else { if ($uid != null) { $u = new user($uid); $ou = $u->ou; } if ($ou != null) { if ($FreewebsStorageDirectory != null) { $www_dir = "{$FreewebsStorageDirectory}/{$servername}"; } } $sock = new sockets(); $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); 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)); } $sock->getFrameWork("freeweb.php?force-resolv=yes"); $sql = "INSERT INTO freeweb (mysql_password,mysql_username,ftpuser,ftppassword,useSSL,servername,mysql_database,\n\t\tuid,useMysql,useFTP,lvm_vg,lvm_size,UseLoopDisk,LoopMounts,ou,domainname,www_dir,ServerPort,UseReverseProxy,ProxyPass,Forwarder,ForwardTo)\n\t\tVALUES('{$mysql_password}','{$mysql_username}','{$ftpuser}','{$ftppassword}','{$useSSL}','{$servername}','{$mysql_database}',\n\t\t'{$uid}','{$_GET["useMysql"]}',\n\t\t'{$_GET["useFTP"]}','{$_GET["lvm_vg"]}','{$_GET["vg_size"]}','{$_GET["UseLoopDisk"]}','{$_GET["LoopMounts"]}','{$ou}',\n\t\t'{$_GET["domainname"]}','{$FreewebsStorageDirectory}','{$ServerPort}','{$_GET["UseReverseProxy"]}','{$_GET["ProxyPass"]}',\n\t\t'{$_GET["Forwarder"]}','{$_GET["ForwardTo"]}'\n\t\t)"; } writelogs("{$sql}", __FUNCTION__, __FILE__, __LINE__); $q = new mysql(); $q->BuildTables(); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error; return; } $sock = new sockets(); if ($_GET["useFTP"] == 1) { if ($users->PUREFTP_INSTALLED) { if (trim($ftpuser) != null) { if (trim($ftppassword) != null) { $pure = new pureftpd_user(); if (!$pure->CreateUser($ftpuser, $ftppassword, $servername)) { echo "FTP: Failed\n"; return; } $sock->getFrameWork("services.php?reload-pure-ftpd=yes"); } } } } if ($_GET["useMysql"] == 1) { if (!$q->DATABASE_EXISTS($mysql_database)) { $q->CREATE_DATABASE("{$mysql_database}"); } if (!$q->PRIVILEGES($mysql_username, $mysql_password, $mysql_database)) { echo "GRANT {$mysql_database} FAILED FOR {$mysql_username}\n{$q->mysql_error}"; } } if (isset($_GET["ADD_DNS_ENTRY"])) { $dnsDOM = explode(".", $_GET["servername"]); $netbiosname = $dnsDOM[0]; unset($dnsDOM[0]); $domainname = implode(".", $dnsDOM); include_once dirname(__FILE__) . "/ressources/class.pdns.inc"; $pdns = new pdns($domainname); $pdns->EditIPName($netbiosname, $_GET["ADD_DNS_ENTRY"], "A"); } $sock->getFrameWork("cmd.php?freeweb-restart=yes"); }
function construct_queue($ID, $ou) { $q = new mysql(); $GLOBALS["campain_linker_id"] = $ID; $q->QUERY_SQL("UPDATE `emailing_campain_linker` SET `queue_builder_pourc`=0 `locked`=1 WHERE `ID`={$GLOBALS["campain_linker_id"]}", "artica_backup"); $sql = "SELECT * FROM emailing_campain_linker WHERE ID='{$ID}'"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "artica_backup")); $unix = new unix(); $email_relay_submit = $unix->find_program("emailrelay-submit"); $GLOBALS["SartON"] = time(); if ($email_relay_submit == null) { event(__FUNCTION__, __LINE__, "Unable to stat {$email_relay_submit}"); mass_mailing_finish(0); return; } $parameters = unserialize(base64_decode($ligne["parameters"])); $template_id = $ligne["template_id"]; $database_id = $ligne["database_id"]; $GLOBALS["template_id"] = $template_id; $GLOBALS["database_id"] = $database_id; $simulation = $parameters["simulation"]; $GLOBALS["start_date_task"] = date('Y-m-d H:i:s'); $simulation_recipipent = $parameters["recipient"]; $database_name = emailing_get_database_name($database_id); event(__FUNCTION__, __LINE__, "database name={$database_name}"); $database_name = format_mysql_table($database_name); $template_name = emailing_get_template_name($template_id); $template_parameters = emailing_get_template_parameters($template_id); event(__FUNCTION__, __LINE__, "Opening {$ID} {$ligne["name"]} campaign template {$template_name} N.{$template_id}, database {$database_name} N.{$database_id}"); event(__FUNCTION__, __LINE__, "simulation={$simulation} =>{$simulation_recipipent}"); @mkdir("/tmp/emailing/{$ID}", 0666, true); if (is_array($template_parameters["ATTACHS"])) { while (list($filename, $attch_ID) = each($template_parameters["ATTACHS"])) { event(__FUNCTION__, __LINE__, "saving /tmp/emailing/{$ID}/{$filename}"); emailing_save_attachment($attch_ID, "/tmp/emailing/{$ID}/{$filename}"); } reset($template_parameters["ATTACHS"]); } $advanced_options = unserialize(base64_decode($template_parameters["advopts"])); if ($advanced_options["From_name"] == null) { $advanced_options["From_name"] = $advanced_options["From"]; } if ($advanced_options["From"] == null) { event(__FUNCTION__, __LINE__, "From field is null, aborting"); mass_mailing_finish(0); return false; } $sql = "SELECT ID,smtpserver,parameters FROM emailing_mailers WHERE ou='{$ou}'"; $results = $q->QUERY_SQL($sql, "artica_backup"); while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { $datas = unserialize(base64_decode($ligne["parameters"])); $smtp_servs[] = $ligne["ID"]; } if (!is_array($smtp_servs)) { event(__FUNCTION__, __LINE__, "Unable to define SMTP servers"); mass_mailing_finish(0); return false; } $sql = "SELECT * FROM emailing_{$database_name}"; $results = $q->QUERY_SQL($sql, "artica_backup"); $t = 0; $max = mysql_num_rows($results); event(__FUNCTION__, __LINE__, "{$max} contacts in emailing_{$database_name} table"); $smtp_servs_count = 0; $smtp_servs_max = count($smtp_servs) - 1; $messages_number = 0; event(__FUNCTION__, __LINE__, $smtp_servs_max + 1 . " SMTP servers"); while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { $final_count = $final_count + 1; $contact_id = $ligne["ID"]; $gender = $ligne["gender"]; $firstname = $ligne["firstname"]; $lastname = $ligne["lastname"]; $email = $ligne["email"]; if (isBlockedMail($email)) { continue; } $phone = $ligne["phone"]; $city = $ligne["city"]; $cp = $ligne["cp"]; $postaladdress = $ligne["postaladdress"]; if ($simulation == 1) { $email = $simulation_recipipent; } $unikey = md5("{$template_id}{$database_id}{$contact_id}"); $htmldatas = $template_parameters["template_datas"]; $htmldatas = str_replace("%gender%", $gender, $htmldatas); $htmldatas = str_replace("%lastname%", $lastname, $htmldatas); $htmldatas = str_replace("%firstname%", $firstname, $htmldatas); $htmldatas = str_replace("%email%", $email, $htmldatas); $htmldatas = str_replace("%phone%", $phone, $htmldatas); $htmldatas = str_replace("%city%", $city, $htmldatas); $htmldatas = str_replace("%cp%", $cp, $htmldatas); $htmldatas = str_replace("%postaladdress%", $postaladdress, $htmldatas); $mailer = new PHPMailer(); $mailer->AddAddress($email, "{$firstname} {$lastname}"); $mailer->From = $advanced_options["From"]; $mailer->FromName = $advanced_options["From_name"]; $mailer->Subject = $template_parameters["subject"]; $mailer->Body = $htmldatas; $mailer->IsHTML(true); $mailer->Mailer = 'smtp'; if ($advanced_options["Reply-to"] != null) { $mailer->AddReplyTo($advanced_options["Reply-to"]); } if ($advanced_options["Disposition-Notification-To"] != null) { $mailer->AddCustomHeader("Disposition-Notification-To: {$advanced_options["Disposition-Notification-To"]}"); } if ($advanced_options["Return-Path"] != null) { $mailer->AddCustomHeader("Return-Path: {$advanced_options["Return-Path"]}"); } if ($advanced_options["X-Mailer"] != null) { $mailer->AddCustomHeader("X-Mailer: {$advanced_options["X-Mailer"]}"); } if (is_array($template_parameters["ATTACHS"])) { while (list($filename, $attch_ID) = each($template_parameters["ATTACHS"])) { $mailer->AddAttachment("/tmp/emailing/{$ID}/{$filename}", $filename); } reset($template_parameters["ATTACHS"]); } $queue_ID = "/var/spool/artica-emailing/queues/{$smtp_servs[$smtp_servs_count]}"; $smtp_servs_count = $smtp_servs_count + 1; if ($smtp_servs_count > $smtp_servs_max) { $smtp_servs_count = 0; } $maildata = $mailer->Send(true); // send mail into queue $mail_from = "{$advanced_options["From"]}"; $recipient = $email; $filetemp = $unix->FILE_TEMP() . "{$contact_id}.msg"; @file_put_contents($filetemp, $maildata); $GLOBALS["massmailing_size"] = $GLOBALS["massmailing_size"] + filesize($filetemp); $cmd = "{$email_relay_submit} --spool-dir={$queue_ID} --from={$mail_from} {$recipient} < {$filetemp}"; if ($GLOBALS["VERBOSE"]) { event(__FUNCTION__, __LINE__, "{$cmd}"); } shell_exec("{$email_relay_submit} --spool-dir={$queue_ID} --from={$mail_from} {$recipient} < {$filetemp}"); if ($GLOBALS["VERBOSE"]) { event(__FUNCTION__, __LINE__, @implode("\n", $results)); } @unlink($filetemp); $maildata = null; $mailer = nil; $GLOBALS["messages_number"] = $GLOBALS["messages_number"] + 1; $t = $t + 1; if ($t > 200) { $pourcentage = round($final_count / $max * 100, 0); echo "{$pourcentage}% {$final_count}/{$max}\n"; $q = new mysql(); event(__FUNCTION__, __LINE__, "{$pourcentage}%"); $q->QUERY_SQL("UPDATE emailing_campain_linker SET queue_builder_pourc={$pourcentage} WHERE ID={$ID}", "artica_backup"); $t = 0; } } mass_mailing_finish(1); }
function Save(){ $servername=trim(strtolower($_GET["servername"])); if(substr($servername, 0,1)=='.'){echo $servername. " FAILED\n";return;} $users=new usersMenus(); $sock=new sockets(); $FreewebsStorageDirectory=$sock->GET_INFO("FreewebsStorageDirectory"); if(!$users->AsWebMaster){return "FALSE";} $uid=$_GET["uid"]; $mysql_database=format_mysql_table($_GET["mysql_database"]); $mysql_password=$_GET["mysql_password"]; $mysql_username=$_GET["mysql_username"]; $lvm_vg=$_GET["lvm_vg"]; $vg_size=$_GET["vg_size"]; $ServerPort=$_GET["ServerPort"]; if(!is_numeric($ServerPort)){$ServerPort=0;} if($_GET["UseDefaultPort"]==1){$ServerPort=0;} if(!is_numeric($vg_size)){$vg_size=5000;} $ftpuser=$_GET["ftpuser"]; $ftppassword=$_GET["ftppassword"]; $useSSL=$_GET["useSSL"]; if(!$users->PUREFTP_INSTALLED){ $_GET["useFTP"]=0; $ftpuser=null; $ftppassword=null; } $sql="SELECT servername FROM freeweb WHERE servername='{$_GET["servername"]}'"; $q=new mysql(); $ligne=@mysql_fetch_array($q->QUERY_SQL($sql,'artica_backup')); if($ligne["servername"]<>null){ if($uid<>null){$u=new user($uid);$ou=$u->ou;} if(!$users->AsSystemAdministrator){$ou=$_SESSION["ou"];} $sql="UPDATE freeweb SET mysql_password='******', mysql_username='******', ftpuser='******', ftppassword='******', uid='$uid', useMysql='{$_GET["useMysql"]}', useFTP='{$_GET["useFTP"]}', lvm_vg='{$_GET["lvm_vg"]}', lvm_size='{$_GET["vg_size"]}', UseLoopDisk='{$_GET["UseLoopDisk"]}', LoopMounts='{$_GET["LoopMounts"]}', UseReverseProxy='{$_GET["UseReverseProxy"]}', ProxyPass='******', useSSL='$useSSL', ServerPort='$ServerPort', ou='$ou', Forwarder='{$_GET["Forwarder"]}', ForwardTo='{$_GET["ForwardTo"]}' WHERE servername='$servername' "; }else{ if($uid<>null){$u=new user($uid);$ou=$u->ou;} if($ou<>null){if($FreewebsStorageDirectory<>null){$www_dir="$FreewebsStorageDirectory/$servername";}} $sock=new sockets(); $sock->getFrameWork("freeweb.php?force-resolv=yes"); $sql="INSERT INTO freeweb (mysql_password,mysql_username,ftpuser,ftppassword,useSSL,servername,mysql_database, uid,useMysql,useFTP,lvm_vg,lvm_size,UseLoopDisk,LoopMounts,ou,domainname,www_dir,ServerPort,UseReverseProxy,ProxyPass,Forwarder,ForwardTo) VALUES('$mysql_password','$mysql_username','$ftpuser','$ftppassword','$useSSL','$servername','$mysql_database', '$uid','{$_GET["useMysql"]}', '{$_GET["useFTP"]}','{$_GET["lvm_vg"]}','{$_GET["vg_size"]}','{$_GET["UseLoopDisk"]}','{$_GET["LoopMounts"]}','$ou', '{$_GET["domainname"]}','$FreewebsStorageDirectory','$ServerPort','{$_GET["UseReverseProxy"]}','{$_GET["ProxyPass"]}', '{$_GET["Forwarder"]}','{$_GET["ForwardTo"]}' )"; } $q=new mysql(); $q->BuildTables(); $q->QUERY_SQL($sql,"artica_backup"); if(!$q->ok){echo $q->mysql_error;return;} $sock=new sockets(); if($_GET["useFTP"]==1){ if($users->PUREFTP_INSTALLED){ $pure=new pureftpd_user(); if(!$pure->CreateUser($ftpuser,$ftppassword,$servername)){ echo "FTP: Failed\n"; return; } } } if($_GET["useMysql"]==1){ if(!$q->DATABASE_EXISTS($mysql_database)){$q->CREATE_DATABASE("$mysql_database");} if(!$q->PRIVILEGES($mysql_username,$mysql_password,$mysql_database)){ echo "GRANT $mysql_database FAILED FOR $mysql_username\n$q->mysql_error"; } } $sock->getFrameWork("cmd.php?freeweb-restart=yes"); }