function showRawPrint($subaction = null) { global $gbl, $sgbl, $login, $ghtml; $parent = $this->getParentO(); $v = lfile_get_contents("htmllib/filecore/sshterm-applet.htm"); if ($parent->is__table('pserver')) { $v = str_replace("%username%", "root", $v); $ip = getFQDNforServer($parent->nname); $sshport = db_get_value("sshconfig", $parent->nname, "ssh_port"); if (!$sshport) { $sshport = "22"; } $v = str_replace("%host%", $ip, $v); $v = str_replace("%port%", $sshport, $v); $v = str_replace("%connectimmediately%", "true", $v); } else { if ($parent->is__table('client')) { if ($parent->isDisabled('shell') || !$parent->shell) { $ghtml->print_information("pre", "updateform", "sshclient", "disabled"); exit; } $sshport = db_get_value("sshconfig", $parent->websyncserver, "ssh_port"); if (!$sshport) { $sshport = "22"; } $ghtml->print_information("pre", "updateform", "sshclient", "warning"); $ip = getFQDNforServer("localhost"); $v = str_replace("%username%", $parent->username, $v); $v = str_replace("%host%", $ip, $v); $v = str_replace("%port%", $sshport, $v); $v = str_replace("%connectimmediately%", "true", $v); } else { $v = str_replace("%username%", "root", $v); $ip = $parent->getOneIP(); $sshport = db_get_value("sshconfig", $parent->syncserver, "ssh_port"); if (!$ip) { throw new lxException("need_to_add_at_least_one_ip_to_the_vps_for_logging_in"); } if (!$sshport) { $sshport = "22"; } $v = str_replace("%host%", $ip, $v); $v = str_replace("%port%", $sshport, $v); $v = str_replace("%connectimmediately%", "true", $v); } } print $v; }
function getMysqlDbAdmin(&$alist) { if (!$this->isLocalhost('mysqldbsyncserver')) { $fqdn = getFQDNforServer($this->mysqldbsyncserver); //$dbadminUrl = "http://$fqdn:7778/thirdparty/phpMyAdmin/"; if (http_is_self_ssl()) { $dbadminUrl = "https://{$fqdn}:7777/thirdparty/phpMyAdmin/"; } else { $dbadminUrl = "http://{$fqdn}:7778/thirdparty/phpMyAdmin/"; } } else { $dbadminUrl = "/thirdparty/phpMyAdmin/"; } try { $dbad = $this->getPrimaryDb(); if (!$dbad) { return; } $user = $dbad->nname; $pass = $dbad->dbpassword; if (if_demo()) { //$pass = "******"; } $alist[] = create_simpleObject(array('url' => "{$dbadminUrl}?pma_username={$user}&pma_password={$pass}", 'purl' => "c=mysqldb&a=updateform&sa=phpmyadmin", 'target' => "target='_blank'")); } catch (Exception $e) { } }
function replace_keywords($text, $object) { global $gbl, $sgbl, $login, $ghtml; $text = str_replace("%name%", "{$object->nname}\n", $text); $text = str_replace("%clientname%", $object->getParentName() . "\n", $text); $text = str_replace("%password%", $object->realpass, $text); if ($sgbl->isKloxo()) { $text = str_replace("%default_domain%", $object->default_domain, $text); } if (csa($text, "%ipaddress%")) { $db = new Sqlite($this->__masterserver, 'ipaddress'); $iplist = $db->getRowsWhere("syncserver = 'localhost'"); $text = str_replace("%ipaddress%", getFQDNforServer('localhost'), $text); } if (csa($text, "%masterserver%")) { $db = new Sqlite($this->__masterserver, 'ipaddress'); $iplist = $db->getRowsWhere("syncserver = 'localhost'"); $text = str_replace("%masterserver%", getFQDNforServer('localhost'), $text); } $string = null; foreach ($this->priv as $k => $v) { if ($this->isQuotaVariable($k)) { $var = get_v_descr($this, $k); $var = get_form_variable_name($var); $string .= "{$var}: {$v}\n"; } } $text = str_replace("%quota%", $string, $text); $tlist = explode("\n", $text); $inside = false; $match = false; foreach ($tlist as $tl) { $tl = trim($tl); if (csb($tl, "<%class:")) { $inside = true; $classname = strfrom($tl, "<%class:"); $classname = strtil($classname, "%>"); if ($classname === $this->get__table()) { $match = true; } continue; } if ($inside) { if (csb($tl, "<%/class%>")) { if ($match) { $total[] = $object->fillWelcomeMessage(implode("\n", $textinside)); } $inside = false; $textinside = null; } else { $textinside[] = $tl; } continue; } $total[] = $tl; } return implode("\n", $total); }
function updateDomainPserver($param) { $list = $this->getList('domaina'); $this->__old_websyncserver = $this->websyncserver; $this->__old_mmailsyncserver = $this->mmailsyncserver; $this->websyncserver = $param['websyncserver']; $this->mmailsyncserver = $param['mmailsyncserver']; $name = $this->getPathFromName(); $this->setClientSyncServer(); $this->setUpdateSubaction('createuser'); $this->syncEntireObject(); if ($this->__old_websyncserver !== $this->websyncserver) { $filepass = rl_exec_get(null, $this->__old_websyncserver, "cp_fileserv", array("__path_customer_root/{$name}")); rl_exec_get(null, $this->websyncserver, array("client__sync", "getFromRemote"), array($this->username, getFQDNforServer($this->__old_websyncserver), $filepass, "__path_customer_root", $name)); rl_exec_get(null, $this->__old_websyncserver, "lxfile_rm_rec_content", array("__path_customer_root/{$name}")); } $cronlist = $this->getList('cron'); foreach ($cronlist as $cron) { $nparam['syncserver'] = $param['websyncserver']; if ($cron->syncserver === $nparam['syncserver']) { continue; } $cron->doupdateSwitchserver($nparam); } $ftplist = $this->getList('ftpuser'); foreach ($ftplist as $ftp) { $nparam['syncserver'] = $param['websyncserver']; if ($ftp->syncserver === $nparam['syncserver']) { continue; } $ftp->doupdateSwitchserver($nparam); } foreach ($list as $l) { $web = $l->getObject('web'); $nparam['syncserver'] = $param['websyncserver']; if ($web->syncserver === $nparam['syncserver']) { continue; } $web->doupdateSwitchserver($nparam); } foreach ($list as $l) { $mmail = $l->getObject('mmail'); $nparam['syncserver'] = $param['mmailsyncserver']; if ($mmail->syncserver === $nparam['syncserver']) { continue; } $mmail->doupdateSwitchserver($nparam); } $mysqldblist = $this->getList('mysqldb'); $nparam['syncserver'] = $param['mysqldbsyncserver']; foreach ($mysqldblist as $mysqldb) { if ($mysqldb->syncserver === $nparam['syncserver']) { continue; } $mysqldb->doupdateSwitchserver($nparam); } foreach ($list as $l) { $mysqldblist = $l->getList('mysqldb'); $nparam['syncserver'] = $param['mysqldbsyncserver']; foreach ((array) $mysqldblist as $mysqldb) { if ($mysqldb->syncserver === $nparam['syncserver']) { continue; } $mysqldb->doupdateSwitchserver($nparam); } } $param['dnssyncserver_list'] = Client::fixListVariable($param['dnssyncserver_list']); foreach ($list as $l) { $dns = $l->getObject('dns'); if ($param['newdnstemplate'] !== '--leave--') { $dnstemplatename = $param['newdnstemplate']; $dnstemplate = new Dnstemplate(null, null, $dnstemplatename); $dnstemplate->get(); $dns->copyObjectWithSave($dnstemplate); } $dns->syncserver = implode(",", $param['dnssyncserver_list']); $l->dnspserver = $dns->syncserver; $l->setUpdateSubaction(); $l->write(); $dns->setUpdateSubaction('syncadd'); $dns->was(); } return $param; }
function lx_mail($from, $to, $subject, $message, $extra = null) { global $gbl, $sgbl, $login, $ghtml; if (!$from) { $progname = $sgbl->__var_program_name; $server = getFQDNforServer('localhost'); $from = "{$progname}@{$server}"; } $header = "From: {$from}"; if ($extra) { $header .= "\n{$extra}"; } log_log("mail_send", "Sending Mail to {$to} {$subject} from {$from}"); mail($to, $subject, $message, $header); }
function getMysqlDbAdmin(&$alist) { if (!$this->isLocalhost('nname')) { $fqdn = getFQDNforServer($this->nname); //$dbadminUrl = "http://$fqdn:7778/thirdparty/phpMyAdmin/"; if (http_is_self_ssl()) { $dbadminUrl = "https://{$fqdn}:7777/thirdparty/phpMyAdmin/"; } else { $dbadminUrl = "http://{$fqdn}:7778/thirdparty/phpMyAdmin/"; } } else { $dbadminUrl = "/thirdparty/phpMyAdmin/"; } //$pass = urlencode($pass); $server = $_SERVER['SERVER_NAME']; if (csa($server, ":")) { list($server, $port) = explode(":", $server); } try { $dbad = $this->getFromList('dbadmin', "mysql___{$this->syncserver}"); $user = $dbad->dbadmin_name; $pass = $dbad->dbpassword; if (if_demo()) { $pass = "******"; } $alist[] = create_simpleObject(array('url' => "{$dbadminUrl}?pma_username={$user}&pma_password={$pass}", 'purl' => "c=mysqldb&a=updateform&sa=phpmyadmin", 'target' => "target='_blank'")); } catch (Exception $e) { } }
function switchserver_main() { global $argc, $argv; global $gbl, $sgbl, $login, $ghtml; //sleep(60); initProgram("admin"); if ($argc === 1) { print "Usage: {$argv['0']} --class= --name= --v-syncserver= \n"; exit; } try { $opt = parse_opt($argv); $param = get_variable($opt); dprintr($param); $class = $opt['class']; $name = $opt['name']; if (lx_core_lock("{$class}-{$name}.livemigrate")) { exit; } $object = new $class(null, 'localhost', $name); $object->get(); if ($object->dbaction === 'add') { throw new lxException("no_object", '', ''); exit; } if (!$object->syncserver) { print "No_synserver...\n"; throw new lxException("no_syncserver", '', ''); exit; } if ($param['syncserver'] === $object->syncserver) { print "No Change...\n"; throw new lxException("no_change", '', ''); exit; } $driverapp_old = $gbl->getSyncClass('localhost', $object->syncserver, $object->getClass()); $driverapp_new = $gbl->getSyncClass('localhost', $param['syncserver'], $object->getClass()); $oldserver = $object->syncserver; $newserver = $param['syncserver']; if ($driverapp_new !== $driverapp_old) { throw new lxException("the_drivers_are_different_in_two_servers", '', ''); } $actualserver = getFQDNforServer($newserver); setup_ssh_channel($oldserver, $newserver, $actualserver); $ssh_port = db_get_value("sshconfig", $newserver, "ssh_port"); if (!$ssh_port) { $ssh_port = "22"; } $res = rl_exec_get(null, $oldserver, "exec_vzmigrate", array($object->vpsid, $actualserver, $ssh_port)); list($ret, $error) = $res; if ($ret !== 0) { throw new lxException("vzmigrate_failed_due_to:{$error}", '', ''); } $object->olddeleteflag = 'done'; $object->syncserver = $newserver; $object->username = null; $object->makeSureTheUserExists(); $object->setUpdateSubaction(); $object->write(); } catch (exception $e) { print $e->getMessage(); /// hcak ahck... Chnage only the olddelete variable which is the mutex used for locking in the process of switch. The problem is we want to totally bail out if the switchserver fails. The corect way would be save after reverting the syncserve to the old value, but that's a bit risky. So we just use a hack to change only the olddeleteflag; Not a real hack.. This is the better way. $message = "{$e->getMessage()}"; $message = str_replace("'", "", $message); write_to_object($object, $message, $param['syncserver']); $fullmesage = "Switch of {$object->getClass()}:{$object->nname} to {$param['syncserver']} failed due to {$e->getMessage()}"; log_switch($fullmesage); mail($login->contactemail, "Switch Failed:", "{$fullmesage}\n"); print "\n"; exit; } mail($login->contactemail, "Switch Succeeded", "Switch Succeeded {$object->getClass()}:{$object->nname} to {$param['syncserver']}\n"); }
function getDbAdminUrl() { if (!$this->isLocalhost()) { $fqdn = getFQDNforServer($this->syncserver); if (http_is_self_ssl()) { return "https://{$fqdn}:7777/thirdparty/phpMyAdmin/"; } else { return "http://{$fqdn}:7778/thirdparty/phpMyAdmin/"; } } else { return "/thirdparty/phpMyAdmin/"; } }
function updatePaste($param) { global $gbl, $sgbl, $login, $ghtml; $list = $gbl->getSessionV("frm_clip_list"); $this->pasteaction = $gbl->getSessionV("frm_clip_action"); $this->pasteserver = $gbl->getSessionV("frm_clip_server"); $this->pasteroot = $gbl->getSessionV("frm_clip_root"); if ($this->pasteserver !== $this->syncserver) { $filepass = rl_exec_get(null, $this->pasteserver, "cp_fileserv_list", array($this->pasteroot, $list)); } $this->pasteserver_realip = getFQDNforServer($this->pasteserver); $fflist = $this->getList("ffile"); foreach ($list as $l) { $baselist[] = basename($l); } $error_exist = NULL; foreach ((array) $fflist as $ff) { if (array_search_bool($ff->base, $baselist)) { $error_exist .= "{$ff->base}, "; $list = array_remove($list, $ff->nname); } } if ($error_exist) { $error_exist = preg_replace("/, \$/", "", $error_exist); $error_exist .= "&frm_emessage=file_exists"; $error_exist .= "&frm_m_emessage_data={$error_exist}"; $gbl->__this_redirect = $this->getCurDirUrl(); $gbl->__this_redirect .= $error_exist; } $this->paste_list = $list; $this->filepass = $filepass; $this->setUpdateSubaction('paste'); return null; }
static function getObjectsTosend($parent, $param, $action) { global $gbl, $sgbl, $login, $ghtml; $pclass = $parent->getParentClass('made_by'); $pname = $parent->getParentName('made_by'); $obj = new $pclass($parent->__masterserver, null, $pname); $obj->get(); $extra = null; if (isset($param['from_ad'])) { $from = $param['from_ad']; } else { if (isset($param['pobject'])) { $from = $param['pobject']->contactemail; } else { if ($obj->contactemail) { $from = "{$obj->nname} <{$obj->contactemail}>"; } else { $from = "helpdesk"; } } } $subject = $parent->subject; if ($parent->isOn('escalate')) { $extra .= "X-escalate: Escalated\n"; } if ($sgbl->isLxlabsClient()) { $ip = "lxlabs.com"; if ($obj->isClient() && !$obj->isAdmin()) { $obj->findTotalBalance(null); $sq = new Sqlite(null, "ticket"); $tlist = $sq->getRowsWhere("made_by = 'client-{$obj->nname}' AND category LIKE '%TechnicalSupport%'"); $nticket = count($tlist); $to = $obj->find_actual_billing("2009.05"); $extra .= "X-lxheader: {$to->total} P: {$obj->total_paid} B: {$obj->total_balance} T: {$nticket}\n"; } } else { $ip = getFQDNforServer('localhost'); } $pass = $parent->realpass; $ticktid = $parent->nname; $category = $parent->category; $extram = base64_encode(serialize(array('ticket_c' => $obj->getClName()))); $urllink = "Click here to login to the Ticket: http://{$ip}:{$sgbl->__var_prog_port}/htmllib/phplib/?frm_clientname={$ticktid}&frm_class=ticket&frm_password={$pass}"; $otherclass = $parent->getParentClass('sent_to'); $othername = $parent->getParentName('sent_to'); if (!$otherclass) { return; } $otherobj = new $otherclass($parent->__masterserver, null, $othername); $otherobj->get(); $extras = base64_encode(serialize(array('ticket_c' => $otherobj->getClName()))); if ($action === 'ticketadd') { $actxt = "has been opened"; $extra .= "Message-ID: {$parent->mail_messageid}\n"; } else { $actxt = "state has been changed from '{$parent->state}' to '{$param['state']}'"; $extra .= "In-Reply-To: {$parent->mail_messageid}\n"; } $message = "{$param['text_reason']}\n"; ticketHistory::ticketSendNotification($from, $parent->nname, $category, $obj, $action, $actxt, $param['made_by'], $subject, $message, $extra); $message = $param['text_reason']; ticketHistory::ticketSendNotification($from, $parent->nname, $category, $otherobj, $action, $actxt, $param['made_by'], $subject, $message, $extra); }
function getVncLogin() { if ($this->isLocalhost()) { $server = 'localhost'; } else { $server = $this->syncserver; } return array($this->vncdisplay, getFQDNforServer($server)); }
static function getObjectsTosend($parent, $param, $action) { global $gbl, $sgbl, $login, $ghtml; $pclass = $parent->getParentClass('made_by'); $pname = $parent->getParentName('made_by'); $obj = new $pclass($parent->__masterserver, null, $pname); $obj->get(); $extra = null; if (isset($param['from_ad'])) { $from = $param['from_ad']; } else { if (isset($param['pobject'])) { $from = $param['pobject']->contactemail; } else { if ($obj->contactemail) { $from = "{$obj->nname} <{$obj->contactemail}>"; } else { $from = "helpdesk"; } } } $subject = $parent->subject; if ($parent->isOn('escalate')) { $extra .= "X-escalate: Escalated\n"; } $ip = getFQDNforServer('localhost'); $pass = $parent->realpass; $ticktid = $parent->nname; $category = $parent->category; $extram = base64_encode(serialize(array('ticket_c' => $obj->getClName()))); $urllink = "Click here to login to the Ticket: http://{$ip}:{$sgbl->__var_prog_port}/htmllib/phplib/?frm_clientname={$ticktid}&frm_class=ticket&frm_password={$pass}"; $otherclass = $parent->getParentClass('sent_to'); $othername = $parent->getParentName('sent_to'); if (!$otherclass) { return; } $otherobj = new $otherclass($parent->__masterserver, null, $othername); $otherobj->get(); $extras = base64_encode(serialize(array('ticket_c' => $otherobj->getClName()))); if ($action === 'ticketadd') { $actxt = "has been opened"; $extra .= "Message-ID: {$parent->mail_messageid}\n"; } else { $actxt = "state has been changed from '{$parent->state}' to '{$param['state']}'"; $extra .= "In-Reply-To: {$parent->mail_messageid}\n"; } $message = "{$param['text_reason']}\n"; ticketHistory::ticketSendNotification($from, $parent->nname, $category, $obj, $action, $actxt, $param['made_by'], $subject, $message, $extra); $message = $param['text_reason']; ticketHistory::ticketSendNotification($from, $parent->nname, $category, $otherobj, $action, $actxt, $param['made_by'], $subject, $message, $extra); }