function AddDNSEntry() { $computername = $_GET["computername"]; $DnsZoneName = $_GET["DnsZoneName"]; $ComputerIP = $_GET["ComputerIP"]; $pdns = new pdns($DnsZoneName); if (!$pdns->EditIPName($computername, $ComputerIP, "A", null)) { echo $pdns->last_error; } }
function update_computer($ip, $mac, $name) { $sock = new sockets(); $ComputersAllowDHCPLeases = $sock->GET_INFO("ComputersAllowDHCPLeases"); if ($ComputersAllowDHCPLeases == null) { $ComputersAllowDHCPLeases = 1; } if ($ComputersAllowDHCPLeases == 0) { localsyslog("`ComputersAllowDHCPLeases` Aborting updating the LDAP database"); return; } $mac = trim($mac); $name = trim(strtolower($name)); $ip = trim($ip); if ($ip == null) { return; } if ($mac == null) { return; } if ($name == null) { return; } $mac = strtolower(str_replace("-", ":", $mac)); $ipClass = new IP(); if ($ipClass->isIPAddress($name)) { localsyslog("`{$name}` is a TCP IP address, aborting updating the LDAP database"); return; } $ip = nmblookup($name, $ip); $dhcp = new dhcpd(); $GLOBALS["domain"] = $dhcp->ddns_domainname; $comp = new computers(); $uid = $comp->ComputerIDFromMAC($mac); if (strpos($name, ".") > 0) { $NAMETR = explode(".", $name); $name = $NAMETR[0]; unset($NAMETR[0]); $GLOBALS["domain"] = @implode(".", $NAMETR); } if ($ipClass->isIPAddress($uid)) { $comp = new computers($uid); localsyslog("Removing computer ({$uid}) {$mac}"); $comp->DeleteComputer(); $uid = null; $uid = $comp->ComputerIDFromMAC($mac); } localsyslog("{$mac} -> uid:`{$uid}`"); if ($uid == null) { $add = true; $uid = "{$name}\$"; $comp = new computers(); $comp->ComputerRealName = $name; $comp->ComputerMacAddress = $mac; $comp->ComputerIP = $ip; $comp->DnsZoneName = $GLOBALS["domain"]; $comp->uid = $uid; $ComputerRealName = $name; localsyslog("Create new computer {$name[$ip]} ({$uid}) {$mac} in domain {$comp->DnsZoneName}"); $comp->Add(); } else { $comp = new computers($uid); if (strpos($comp->ComputerRealName, ".") > 0) { $NAMETR = explode(".", $name); $comp->ComputerRealName = $NAMETR[0]; } if ($comp->ComputerRealName == null) { $comp->ComputerRealName = $name; } if ($ipClass->isIPAddress($comp->ComputerRealName)) { $comp->ComputerRealName = $name; } $comp->ComputerIP = $ip; $comp->DnsZoneName = $GLOBALS["domain"]; localsyslog("Update computer {$comp->ComputerRealName}[{$ip}] ({$uid}) {$mac} in domain {$comp->DnsZoneName}"); $comp->Edit(); } $dns = new pdns($GLOBALS["domain"]); $dns->EditIPName(strtolower($name), $ip, 'A', $mac); }
function DNS_ENTRY($value) { $EXEC_NICE = EXEC_NICE(); if (is_file("/usr/bin/nohup")) { $nohup = "/usr/bin/nohup "; } $reload_datas = $nohup . $EXEC_NICE . LOCATE_PHP5_BIN() . " " . dirname(__FILE__) . "/exec.artica.meta.users.php --export-all-dns >/dev/null 2>&1 &"; include_once dirname(__FILE__) . "/ressources/class.pdns.inc"; $array = unserialize(base64_decode($value)); if (!is_array($array)) { send_email_events("Failed to add/modify DNS entry (not an array)", null, "CLOUD"); shell_exec($reload_datas); return true; } $sock = new sockets(); $MAC = $array["MAC"]; $computername = $array["hostname"]; $DnsZoneName = $array["DOMAIN"]; $ComputerIP = $array["IP"]; $tbl = explode(".", $computername); $computername = $tbl[0]; if ($DnsZoneName == null) { unset($tbl[0]); $DnsZoneName = @implode(".", $tbl); } writelogs("Adding New dns entry {$computername} ({$ComputerIP}) mac:{$MAC} in \"{$DnsZoneName}\" domain", __FUNCTION__, __FILE__, __LINE__); $pdns = new pdns($DnsZoneName); if (!$pdns->EditIPName($computername, $ComputerIP, "A", $MAC)) { send_email_events("Failed to add/modify DNS entry {$computername} {$pdns->last_error}", null, "CLOUD"); shell_exec($reload_datas); return true; } else { send_email_events("Success to add/modify DNS entry {$computername} ({$ComputerIP})", null, "CLOUD"); return true; } }
function ImportDatas($datas) { $import = unserialize(base64_decode($datas)); $hash = $import["COMPUTERS"]; for ($i = 0; $i < $hash["count"]; $i++) { $comp = new computers(); $uidorg = $hash[$i]["uid"][0]; $dnszonename = $hash[$i]["dnszonename"][0]; $dnstype = $hash[$i]["dnstype"][0]; $computermachinetype = $hash[$i]["computermachinetype"][0]; $computerip = $hash[$i]["computerip"][0]; $computermacaddress = $hash[$i]["computermacaddress"][0]; $ComputerRealName = $hash[$i][strtolower("ComputerRealName")][0]; if ($ComputerRealName == null) { $ComputerRealName = str_replace('$', '', $uidorg); } writelogs("Importing computer: {$uid} {$computerip} {$computermacaddress}", __FUNCTION__, __FILE__, __LINE__); $uid = $comp->ComputerIDFromMAC($computermacaddress); if ($uid == null) { $uid = $uidorg; $comp = new computers(); $comp->ComputerRealName = $ComputerRealName; $comp->ComputerMacAddress = $computermacaddress; $comp->ComputerIP = $computerip; $comp->DnsZoneName = $dnszonename; $comp->ComputerMachineType = $computermachinetype; $comp->uid = $uid; $comp->Add(); } else { $comp = new computers($uid); $comp->ComputerIP = $computerip; $comp->DnsZoneName = $dnszonename; $comp->ComputerMachineType = $computermachinetype; $comp->Edit(); } $dns = new pdns($dnszonename); $dns->EditIPName(strtolower($ComputerRealName), $computerip, $dnstype, $computermacaddress); } }
function SAVE_FREEWEB_MAIN() { $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"]; $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]; } $EnableFreeWeb = $sock->GET_INFO("EnableFreeWeb"); if (!is_numeric($EnableFreeWeb)) { $EnableFreeWeb = 0; } if ($EnableFreeWeb == 0) { $sock->SET_INFO("EnableFreeWeb", 1); $sock->SET_INFO("EnableApacheSystem", 1); $sock->getFrameWork("freeweb.php?changeinit-off=yes"); $sock->getFrameWork("cmd.php?restart-artica-status=yes"); $sock->getFrameWork("cmd.php?freeweb-restart=yes"); } if (!is_numeric($vg_size)) { $vg_size = 5000; } $useSSL = $_POST["useSSL"]; if ($_POST["domainname"] == null) { $TDOM = explode(".", $_POST["domainname"]); unset($TDOM[0]); $_POST["domainname"] = @implode(".", $TDOM); } if (!isset($_POST["WebCopyID"])) { $_POST["WebCopyID"] = 0; } $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"]; } if (isset($_POST["www_dir"])) { $www_dir_field = "www_dir='{$_POST["www_dir"]}',"; } $sql = "UPDATE freeweb SET \n\t\t\tuid='{$uid}',\n\t\t\tgpid='{$_POST["gpid"]}',\n\t\t\tlvm_vg='{$_POST["lvm_vg"]}',\n\t\t\tlvm_size='{$_POST["vg_size"]}',\n\t\t\tUseLoopDisk='{$_POST["UseLoopDisk"]}',\n\t\t\tLoopMounts='{$_POST["LoopMounts"]}',\n\t\t\tUseReverseProxy='{$_POST["UseReverseProxy"]}',\n\t\t\tProxyPass='******',\n\t\t\tuseSSL='{$useSSL}',\n\t\t\tServerPort='{$ServerPort}',\n\t\t\t{$www_dir_field}\n\t\t\tou='{$ou}',\n\t\t\tForwarder='{$_POST["Forwarder"]}',\n\t\t\tForwardTo='{$_POST["ForwardTo"]}',\n\t\t\tServerIP='{$ServerIP}',\n\t\t\tWebCopyID='{$_POST["WebCopyID"]}',\n\t\t\tsslcertificate='{$_POST["sslcertificate"]}'\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 = strip_bad_characters($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 ($_POST["force-groupware"] != null) { $groupware_field = ",groupware"; $groupware_value = ",'{$_POST["force-groupware"]}'"; } if (!is_numeric($_POST["WebCopyID"])) { $WebCopyID_field = ",WebCopyID"; $WebCopyID_value = ",'{$_POST["WebCopyID"]}'"; } $sslcertificate = $_POST["sslcertificate"]; $sock->getFrameWork("freeweb.php?force-resolv=yes"); $sql = "INSERT INTO freeweb (useSSL,servername,\n\t\tuid,gpid,lvm_vg,lvm_size,UseLoopDisk,LoopMounts,ou,domainname,www_dir,ServerPort,UseReverseProxy,\n\t\tProxyPass,Forwarder,ForwardTo,ForceInstanceZarafaID,ServerIP,sslcertificate{$groupware_field}{$WebCopyID_field})\n\t\tVALUES('{$useSSL}','{$servername}','{$uid}','{$_POST["gpid"]}','{$_POST["lvm_vg"]}','{$_POST["vg_size"]}','{$_POST["UseLoopDisk"]}','{$_POST["LoopMounts"]}','{$ou}',\n\t\t'{$_POST["domainname"]}','{$FreewebsStorageDirectory}','{$ServerPort}','{$_POST["UseReverseProxy"]}','{$_POST["ProxyPass"]}',\n\t\t'{$_POST["Forwarder"]}','{$_POST["ForwardTo"]}','{$_POST["ForceInstanceZarafaID"]}','{$ServerIP}','{$sslcertificate}'{$groupware_value}{$WebCopyID_value}\n\t\t)"; } writelogs("{$sql}", __FUNCTION__, __FILE__, __LINE__); $q = new mysql(); $q->BuildTables(); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo "Function " . __FUNCTION__ . "\nLine:" . __LINE__ . "\nFile:" . __FILE__ . "\n" . $q->mysql_error; return; } if ($_POST["www_dir"] != null) { $sql = "UPDATE freeweb SET `www_dir`='{$_POST["www_dir"]}' WHERE servername='{$servername}'"; $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo "Function " . __FUNCTION__ . "\nLine:" . __LINE__ . "\nFile:" . __FILE__ . "\n" . $q->mysql_error; return; } } $sock = new sockets(); 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"); $sock->getFrameWork("freeweb.php?rebuild-vhost=yes&servername={$servername}"); }
function update_computer($ip, $mac, $name) { $sock = new sockets(); $ComputersAllowDHCPLeases = $sock->GET_INFO("ComputersAllowDHCPLeases"); if ($ComputersAllowDHCPLeases == null) { $ComputersAllowDHCPLeases = 1; } if ($ComputersAllowDHCPLeases == 0) { writelogs("ComputersAllowDHCPLeases is disabled, aborting...", "update_computer", __FILE__, __LINE__); die; } $mac = trim($mac); $name = trim(strtolower($name)); $ip = trim($ip); if ($ip == null) { return; } if ($mac == null) { return; } if ($name == null) { return; } $ip = nmblookup($name, $ip); $unix = new unix(); $unix->add_EtcHosts($name, $ip); $dhcp = new dhcpd(); $GLOBALS["domain"] = $dhcp->ddns_domainname; $comp = new computers(); $uid = $comp->ComputerIDFromMAC($mac); if ($uid == null) { $add = true; $uid = "{$name}\$"; $comp = new computers(); $comp->ComputerRealName = $name; $comp->ComputerMacAddress = $mac; $comp->ComputerIP = $ip; $comp->DnsZoneName = $GLOBALS["domain"]; $comp->uid = $uid; $ComputerRealName = $HOST; $comp->Add(); } else { $comp = new computers($uid); if ($comp->ComputerRealName == null) { $ComputerRealName = $name; } if (preg_match("#[0-9]+\\.[0-9]+\\.#", $comp->ComputerRealName)) { $comp->ComputerRealName = $name; } $comp->ComputerIP = $ip; $comp->DnsZoneName = $GLOBALS["domain"]; $comp->Edit(); } $dns = new pdns($GLOBALS["domain"]); $dns->EditIPName(strtolower($name), $ip, 'A', $mac); }
function add_web_service() { $ou = $_GET["ou"]; $ServerWWWType = $_GET['ServerWWWType']; $servername = $_GET["servername"]; $domain = $_GET["domain"]; $IP = $_GET["IP"]; $tpl = new templates(); $noneed_mysql = false; $noneed_appliPass = false; if ($_GET["host"] == null) { if ($servername == null) { echo $tpl->_ENGINE_parse_body("{server_name}=null"); exit; } if ($IP == null) { echo $tpl->_ENGINE_parse_body("{address}=null"); exit; } if ($domain == null) { echo $tpl->_ENGINE_parse_body("{domain}=null"); exit; } if ($ServerWWWType == null) { echo $tpl->_ENGINE_parse_body("{service_type}=null"); exit; } } $noneed_mysql = false; if ($ou == null) { echo $tpl->_ENGINE_parse_body("{organization}=null"); exit; } $vhosts = new vhosts($_GET["ou"]); $vvhosts = new vhosts(); $noneeduser = $vvhosts->noneeduser; $noneeduser_mysql = $vvhosts->noneeduser_mysql; if ($noneeduser[$ServerWWWType]) { $noneed_appliPass = true; } if ($noneeduser_mysql[$ServerWWWType]) { $noneed_mysql = true; } if (!$noneed_mysql) { if ($_GET["WWWMysqlUser"] == null) { echo $tpl->_ENGINE_parse_body("\"{$ServerWWWType}\":\n{WWWMysqlUser}=null\n{$noneed_mysql}\nL." . __LINE__); exit; } if ($_GET["WWWMysqlPassword"] == null) { echo $tpl->_ENGINE_parse_body("{$ServerWWWType}:{WWWMysqlPassword}=null"); exit; } } if (!$noneeduser["{$ServerWWWType}"]) { if ($_GET["WWWAppliUser"] == null) { echo $tpl->_ENGINE_parse_body("{$ServerWWWType}:\n{WWWAppliUser}=null\n{$vhosts->noneeduser["{$ServerWWWType}"]}"); exit; } } if (!$noneed_appliPass) { if ($_GET["WWWAppliPassword"] == null) { echo $tpl->_ENGINE_parse_body("{WWWAppliPassword}=null"); exit; } } if ($_GET["host"] == null) { $hostname = $servername . "." . $domain; $pdns = new pdns($domain); $pdns->EditIPName($servername, $IP, "A", null); } else { $hostname = $_GET["host"]; } $hostname = str_replace(" ", "_", $hostname); $database = str_replace("-", "_", $database); $database = str_replace(".", "_", $database); $vhosts->ou = $ou; $vhosts->BuildRoot(); $vhosts->WWWAppliPassword = $_GET["WWWAppliPassword"]; $vhosts->WWWAppliUser = $_GET["WWWAppliUser"]; $vhosts->WWWMysqlUser = $_GET["WWWMysqlUser"]; $vhosts->WWWMysqlPassword = $_GET["WWWMysqlPassword"]; $vhosts->WWWSSLMode = $_GET["WWWSSLMode"]; if (isset($_GET["WWWEnableAddressBook"])) { $vhosts->WWWEnableAddressBook = $_GET["WWWEnableAddressBook"]; } writelogs("WWWMultiSMTPSender={$_GET["WWWMultiSMTPSender"]}", __FUNCTION__, __FILE__, __LINE__); $vhosts->WWWMultiSMTPSender = $_GET["WWWMultiSMTPSender"]; $vhosts->Addhost($hostname, $ServerWWWType); $sock = new sockets(); writelogs("Scheduling =>cmd.php?install-web-services=yes", __FUNCTION__, __FILE__, __LINE__); $sock->getFrameWork("cmd.php?install-web-services=yes"); }
function update_computer($ip, $mac, $name) { $mac = trim($mac); $name = trim(strtolower($name)); $ip = trim($ip); if ($ip == null) { return; } if ($mac == null) { return; } if ($name == null) { return; } $ip = nmblookup($name, $ip); $unix = new unix(); $unix->add_EtcHosts($name, $ip); $dhcp = new dhcpd(); $GLOBALS["domain"] = $dhcp->ddns_domainname; $comp = new computers(); $uid = $comp->ComputerIDFromMAC($mac); if ($uid == null) { $add = true; $uid = "{$name}\$"; $comp = new computers(); $comp->ComputerRealName = $name; $comp->ComputerMacAddress = $mac; $comp->ComputerIP = $ip; $comp->DnsZoneName = $GLOBALS["domain"]; $comp->uid = $uid; $ComputerRealName = $HOST; $comp->Add(); } else { $comp = new computers($uid); if ($comp->ComputerRealName == null) { $ComputerRealName = $name; } if (preg_match("#[0-9]+\\.[0-9]+\\.#", $comp->ComputerRealName)) { $comp->ComputerRealName = $name; } $comp->ComputerIP = $ip; $comp->DnsZoneName = $GLOBALS["domain"]; $comp->Edit(); } $dns = new pdns($GLOBALS["domain"]); $dns->EditIPName(strtolower($name), $ip, 'A', $mac); }
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 DNS_LINKER() { include_once "ressources/class.pdns.inc"; $ME = $_SERVER["SERVER_ADDR"]; $content_dir = dirname(__FILE__) . "/ressources/conf/upload"; writelogs("DNS_LINKER:: Request from " . $_SERVER["REMOTE_ADDR"] . " tmp_file={$tmp_file}", __FILE__, __FUNCTION__, __LINE__); writelogs("DNS_LINKER:: ->LDAP()", __FILE__, __FUNCTION__, __LINE__); $ldap = new clladp(); if (preg_match("#^(.+?):(.+)#", $_POST["CREDS"], $re)) { $SuperAdmin = $re[1]; $SuperAdminPass = $re[2]; } if ($SuperAdmin != $ldap->ldap_admin) { writelogs("DNS_LINKER:: Invalid credential...", __FILE__, __FUNCTION__, __LINE__); header_status(500); echo "Invalid credential...\n"; die("Invalid credential..."); } if (md5($ldap->ldap_password) != $SuperAdminPass) { writelogs("DNS_LINKER:: Invalid credential...", __FILE__, __FUNCTION__, __LINE__); header_status(500); echo "Invalid credential...\n"; die("Invalid credential..."); } $TFILE = tempnam($content_dir, "dns-linker-"); @file_put_contents($TFILE, base64_decode($_POST["DNS_LINKER"])); writelogs("DNS_LINKER:: zuncompress() {$TFILE}", __FILE__, __FUNCTION__, __LINE__); zuncompress($TFILE, "{$TFILE}.txt"); @unlink($TFILE); $filesize = @filesize("{$TFILE}.txt"); echo "{$TFILE}.txt -> {$filesize} bytes\n"; $curlparms = unserialize(base64_decode(@file_get_contents("{$TFILE}.txt"))); writelogs("DNS_LINKER:: Loading() {$TFILE}.txt -> ( " . count($curlparms) . " items )", __FILE__, __FUNCTION__, __LINE__); @unlink("{$TFILE}.txt"); if (!is_array($curlparms)) { writelogs("DNS_LINKER:: Loading() curlparms no such array", __FILE__, __FUNCTION__, __LINE__); header_status(500); die; } $zdate = time(); $sql = "SELECT name,domain_id FROM records WHERE `content`='{$curlparms["listen_addr"]}'"; $hostname = $curlparms["hostname"]; $q = new mysql(); $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "powerdns")); if ($ligne["name"] == null) { $tr = explode(".", $hostname); $netbiosname = $tr[0]; $dnsname = str_replace("{$netbiosname}.", "", $hostname); $dns = new pdns($dnsname); $dns->EditIPName($netbiosname, $curlparms["listen_addr"], "A"); $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "powerdns")); } if ($ligne["name"] == null) { writelogs("DNS_LINKER:: Error, unable to get name", __FILE__, __FUNCTION__, __LINE__); header_status(500); die; } $domain_id = $ligne["domain_id"]; $hostname_sql = $ligne["name"]; while (list($name, $val) = each($curlparms["FREEWEBS_SRV"])) { if ($name == $hostname_sql) { continue; } $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT name FROM records WHERE `name`='{$name}' AND `type`='CNAME'", "powerdns")); writelogs("DNS_LINKER::{$hostname_sql}:: {$name} QUERY = `{$ligne["name"]}`", __FILE__, __FUNCTION__, __LINE__); if ($ligne["name"] != null) { continue; } writelogs("DNS_LINKER:: {$name} ADD {$curlparms["listen_addr"]}", __FILE__, __FUNCTION__, __LINE__); $q->QUERY_SQL("INSERT INTO records (`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`)\n\t\t\tVALUES({$domain_id},'{$name}','CNAME','{$hostname_sql}','86400','0','{$zdate}')", "powerdns"); header_status(500); if (!$q->ok) { echo $q->mysql_error . "\n"; } } header_status(200); die; }
function pdns_save() { if (!preg_match("#(.+?)\\.(.+)\$#", $_GET["www"], $re)) { echo "Unable to find the domain name"; exit; } $pdns = new pdns($re[2]); $pdns->EditIPName($re[1], $_GET["pdns_ip"], "A"); echo "{$re[2]} [{$re[1]}] => {$_GET["pdns_ip"]}"; }
function item_save() { $id = $_POST["id"]; $_POST["explainthis"] = url_decode_special_tool($_POST["explainthis"]); if (!isset($_POST["DnsZoneName"])) { if ($id == 0) { echo "DnsZoneName not set\n"; return; } $q = new mysql(); $sql = "SELECT domain_id FROM records WHERE id={$id}"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "powerdns")); $domain_id = $ligne["domain_id"]; $sql = "SELECT name FROM domains WHERE id={$id}"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "powerdns")); $_POST["DnsZoneName"] = $ligne["name"]; } $pdns = new pdns($_POST["DnsZoneName"]); $pdns->ttl = $_POST["TTL"]; $pdns->prio = $_POST["prio"]; $pdns->EditIPName($_POST["computername"], $_POST["ComputerIP"], "A", $id, $_POST["explainthis"]); }
function replic_artica_servers_perform($host, $username, $password) { $unix = new unix(); $curl = new ccurl("https://{$host}/exec.gluster.php"); $curl->parms["PDNS_REPLIC"] = base64_encode(serialize(array("username" => $username, "password" => md5($password)))); if (!$curl->get()) { system_admin_events("Error while fetching {$host} with {$curl->error}", __FUNCTION__, __FILE__, __LINE__, "pdns"); return; } if (preg_match("#<ERROR>(.*?)</ERROR>#is", $curl->data, $re)) { system_admin_events("Connection error while fetching {$host} {$re[1]}", __FUNCTION__, __FILE__, __LINE__, "pdns"); } if (!preg_match("#<REPLIC>(.*?)</REPLIC>#is", $curl->data, $re)) { system_admin_events("Protocol error while fetching {$host}", __FUNCTION__, __FILE__, __LINE__, "pdns"); return; } $datas = unserialize(base64_decode($re[1])); system_admin_events("Received " . count($datas) . " from {$host}", __FUNCTION__, __FILE__, __LINE__, "pdns"); $sql = "DELETE FROM records WHERE articasrv='{$host}'"; $q = new mysql(); $q->QUERY_SQL($sql, "powerdns"); if (!$q->ok) { system_admin_events($q->mysql_error . " For Host {$host}", __FUNCTION__, __FILE__, __LINE__, "pdns"); return; } $t = time(); $pdns = new pdns(); $pdns->articasrv = $host; while (list($ip, $hostname) = each($datas)) { if (strpos($hostname, ".") > 0) { $tr = explode(".", $hostname); $hostname = strtolower($tr[0]); unset($tr[0]); $pdns->domainname = strtolower(@implode(".", $tr)); } $pdns->EditIPName($hostname, $ip, "A"); } $took = $unix->distanceOfTimeInWords($t, time(), true); system_admin_events("Success update " . count($datas) . " records from {$host} took:{$took}", __FUNCTION__, __FILE__, __LINE__, "pdns"); }
function AddDNSEntry() { $computername = $_GET["computername"]; $DnsZoneName = $_GET["DnsZoneName"]; $pse = strpos($computername, "."); writelogs("computername={$computername} in DNS {$DnsZoneName} pos:{$pse}", __FUNCTION__, __FILE__, __LINE__); if ($pse > 0) { $t = explode(".", $computername); $computername = $t[0]; unset($t[0]); $DnsZoneName = @implode('.', $t); writelogs("SPLITED: computername={$computername} in DNS {$DnsZoneName}", __FUNCTION__, __FILE__, __LINE__); } $ComputerIP = $_GET["ComputerIP"]; $pdns = new pdns($DnsZoneName); if (!$pdns->EditIPName($computername, $ComputerIP, "A", null)) { echo $pdns->last_error; return; } $sock = new sockets(); $sock->getFrameWork("cmd.php?artica-meta-export-dns=yes"); restart_dnsmasq(); }
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 import($fileenc, $domain) { $domain = trim($domain); if (preg_match("#--#", $domain)) { $domain = null; } $q = new mysql(); $q->BuildTables(); $filename = base64_decode($fileenc); if (!is_file($filename)) { echo "{$filename}, no such file...\n"; return; } echo "{$filename}, Open file\n"; $f = file($filename); $F = 0; $S = 0; while (list($index, $line) = each($f)) { $line = trim($line); $line = str_replace("\r", "", $line); $line = str_replace("\n", "", $line); $line = str_replace("\r\n", "", $line); if ($line == null) { continue; } if (substr($line, 0, 1) == "#") { continue; } $posDieze = strpos($line, "#"); if ($posDieze > 0) { if ($posDieze < 5) { continue; } } $Obs = substr($line, $posDieze, strlen($line)); $line = str_replace($Obs, "", $line); $Obs = trim(utf8_encode($Obs)); if (strlen($Obs) > 2) { $Obs = trim(str_replace("#", "", $Obs)); } if (!preg_match("#^([0-9\\.]+)\\s+(.+?)\$#", $line, $re)) { continue; } $IP = trim($re[1]); $domainname = $domain; $hostname = trim(strtolower($re[2])); if (strpos($hostname, " ") > 0) { $tze = explode(" ", $hostname); while (list($a, $b) = each($tze)) { if (trim($b) == null) { continue; } $tzf[] = $b; } if (strlen($tzf[0]) > 2) { $hostname = $tzf[0]; } } $netbiosname = $hostname; if (strpos($hostname, ".") > 0) { $tb = explode(".", $hostname); $netbiosname = $tb[0]; unset($tb[0]); $domainname = trim(@implode(".", $tb)); } $host = $netbiosname . "." . $domainname; $pdns = new pdns($domainname); if (!$pdns->EditIPName($netbiosname, $IP, "A", null, $Obs)) { echo "Item [{$re[1]}] - `{$host}` ({$Obs}) failed\n"; $F++; } else { echo "Item [{$re[1]}] - `{$host}` ({$Obs}) Success\n"; $S++; } } echo "Success: {$S} item(s), Failed: {$F} item(s)\n"; }