Example #1
0
 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;
 }
Example #2
0
 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) {
     }
 }
Example #3
0
 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);
 }
Example #4
0
 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;
 }
Example #5
0
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);
}
Example #6
0
 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) {
     }
 }
Example #7
0
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");
}
Example #8
0
 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/";
     }
 }
Example #9
0
 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;
 }
Example #10
0
 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);
 }
Example #11
0
 function getVncLogin()
 {
     if ($this->isLocalhost()) {
         $server = 'localhost';
     } else {
         $server = $this->syncserver;
     }
     return array($this->vncdisplay, getFQDNforServer($server));
 }
Example #12
0
 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);
 }