static function initThisList($parent, $class) { global $gbl, $sgbl, $login, $ghtml; $driverapp = $gbl->getSyncClass($parent->__masterserver, $parent->__readserver, 'package'); $list = rl_exec_get($parent->__masterserver, $parent->__readserver, array("package__{$driverapp}", "getPackages"), null); return $list; }
static function initThisList($parent, $class) { $fpathp = $parent->fullpath; if (!$parent->is_dir()) { return null; } $duflag = $parent->duflag; $list = rl_exec_get($parent->__masterserver, $parent->__readserver, array("coreFfile", "get_full_stat"), array($parent->__username_o, $fpathp, $duflag)); foreach ((array) $list as $stat) { $file = basename($stat['name']); if ($file === "") { continue; } if ($file === ".") { continue; } $fpath = $fpathp . "/" . $file; $file = $parent->nname . "/" . $file; if (!isset($parent->ffile_l)) { $parent->ffile_l = null; } $parent->ffile_l[$file] = new Ffile($parent->__masterserver, $parent->__readserver, $parent->root, $file, $parent->__username_o); $parent->ffile_l[$file]->setFromArray($stat); $parent->ffile_l[$file]->__parent_o = $parent->getParentO(); $parent->ffile_l[$file]->setFileType(); } $__tv = null; return $__tv; }
function updateform($subaction, $param) { /* $sq = new Sqlite($this->__masterserver, 'aspnet'); $rs = $sq->getRowsWhere("parent_clname = 'pserver_s_vv_p_{$this->syncserver}'"); foreach($rs as $r) { $res[] = $r['version']; }*/ $domain = $this->getParentO(); $resout = rl_exec_get(null, $domain->syncserver, array('aspnet', 'getAspnetVersion'), null); $res = explode("*", $resout); //$res = array("1.1","1.4"); //$res = array($res); foreach ($res as $r) { $r = trim($r); if (!$r) { continue; } if (strtolower($r) === 'machineaccounts') { continue; } $rr[] = $r; } $vlist['version'] = array('s', $rr); //$vlist['encoding'] = null; return $vlist; }
static function save_current_hitlist($server) { $list = lxguardhitdisplay::createHitList($server); foreach ($list as $r) { $hl[$r['ipaddress']] = $r['failcount']; } rl_exec_get(null, $server, "lxguard_save_hitlist", array($hl)); }
function getExtraP($class, $list) { $res = rl_exec_get(null, $this->nname, array("dirlocation__linux", "getSizeForAll"), array(get_namelist_from_objectlist($list))); foreach ($res as $k => $v) { $list[$k]->diskfree = $v; } return $list; }
function updateLxupdateInfo() { if_demo_throw_exception(); if (isUpdating()) { throw new lxException("program_is_already_updating"); } else { rl_exec_get($this->__masterserver, 'localhost', array('lxupdate', 'execUpdate'), null); throw new lxException("update_scheduled"); } }
function updateMultiVpsCreate($param) { global $gbl, $sgbl, $login, $ghtml; if (!check_password($param['vps_admin_password_f'], $this->password)) { throw new lxException("wrong_password", 'vps_admin_password_f'); } $res = rl_exec_get(null, 'localhost', 'createMultipLeVps', array($param)); $url = $ghtml->getFullUrl('a=list&c=vps'); $gbl->__this_redirect = $url . "&frm_smessage=vps_creation_in_background"; return $param; }
static function initThisList($parent, $class) { global $gbl, $sgbl, $login, $ghtml; $vpsid = null; if ($parent->is__table('vps')) { $vpsid = $parent->vpsid; } $driverapp = $gbl->getSyncClass($parent->__masterserver, $parent->syncserver, 'diskusage'); $result = rl_exec_get($parent->__masterserver, $parent->syncserver, array("diskusage__{$driverapp}", "getDiskUsage"), null); return $result; }
static function continueFormFinish($parent, $class, $param, $continueaction) { global $gbl, $sgbl, $login, $ghtml; $driverapp = $gbl->getSyncClass('localhost', $param['listpriv_s_vpspserver_sing'], 'vps'); $ostlist = rl_exec_get(null, $param['listpriv_s_vpspserver_sing'], array("vps__{$driverapp}", "getOsTemplatelist")); $ostlist = lx_merge_good(array('--defer-osimage--' => '--defer-osimage--'), $ostlist); $vlist['ostemplate'] = array('A', $ostlist); $ret['variable'] = $vlist; $ret['action'] = 'add'; $ret['param'] = $param; return $ret; }
function updateform($subaction, $param) { global $gbl, $sgbl, $login, $ghtml; switch ($subaction) { case "shell_access": $driverapp = $gbl->getSyncClass($this->__masterserver, $this->syncserver, 'uuser'); $res = rl_exec_get($this->__masterserver, $this->syncserver, array("uuser__{$driverapp}", "getShellList"), null); $vlist['nname'] = array('M', null); $vlist['shell'] = array('s', $res); return $vlist; } return parent::updateform($subaction, $param); }
function update_all_slave() { $db = new Sqlite(null, "pserver"); $list = $db->getTable(array("nname")); foreach ($list as $l) { if ($l['nname'] === 'localhost') { continue; } try { print "Upgrading Slave {$l['nname']}...\n"; rl_exec_get(null, $l['nname'], 'remotetestfunc', null); } catch (exception $e) { print $e->getMessage(); print "\n"; } } }
static function initThisList($parent, $class) { $slave = $parent->nname; if ($parent->is__table('client')) { $slave = $parent->websyncserver; } if ($parent->is__table('vps')) { $slave = $parent->syncserver; } $res = rl_exec_get(null, $slave, array('sshauthorizedkey__sync', 'getAuthorizedKey'), array($parent->username)); foreach ($res as &$r) { $r['nname'] = "{$slave}___{$r['nname']}"; $r['syncserver'] = $slave; $r['parent_clname'] = $parent->getClName(); } return $res; }
static function initThisList($parent, $class) { global $gbl, $sgbl, $login, $ghtml; $_sysname = "linux"; $host = $_SERVER['REMOTE_ADDR']; if (!$host || $sgbl->isDebug()) { $host = "google.com"; } if ($parent->isClass('client')) { $server = $parent->websyncserver; } else { $server = $parent->syncserver; } $cmd = "traceroute -q 1 -n {$host} "; $_result = rl_exec_get(null, "localhost", array("traceroute", "exec_traceroute"), array($cmd)); if (!is_array($_result)) { throw new lxexception("traceroute_failed", '', ""); } if (count($_result) == 0) { throw new lxexception("traceroute_failed", '', ""); } $object = new Traceroute(null, null, '__name__'); return $object->Net_Traceroute_Result($_result, $_sysname); }
function setup_ssh_channel($source, $destination, $actualname) { $cont = rl_exec_get(null, $source, "get_scpid", array()); $cont = rl_exec_get(null, $destination, "setup_scpid", array($cont)); $cont = rl_exec_get(null, $source, "setup_knownhosts", array("{$actualname}, {$cont}")); }
function doSimpleRestore($bfile, $param) { global $gbl, $sgbl, $login, $ghtml; $progname = $sgbl->__var_program_name; $cprogname = ucfirst($progname); if ($this->isLocalhost('syncserver')) { $rem = lxbackup::getMetaData($bfile); } else { $rem = rl_exec_get($this->__masterserver, $this->syncserver, array("lxbackup", "getMetaData"), array($bfile)); } $ob = $rem->bobject; dprint($ob->getClName()); dprint($this->getClName()); if ($ob->getClName() !== $this->getClName()) { throw new lxException('objectclassname_doesnt_match', ''); } if ($gbl->__var_list_flag) { print "Contents of the backfile: Owner: {$ob->nname}.....\n"; } else { print "Restoring backup for {$ob->nname}.....\n"; } $ob->checkForConsistency(null, $param['_accountselect'], true); // Restore the currenct client's quota. The person who is doing the restoring souldn't able to escape his new quota. if ($this->isLogin()) { $ob->priv = $this->priv; if (isset($this->listpriv)) { $ob->listpriv = $this->listpriv; } } $ob->__var_bc_filename = $bfile; if (!$gbl->__var_list_flag) { $ob->was(); $ob->simpleRestoreMeUpThere(); } }
function updatePhpInfo($param) { global $gbl, $sgbl, $login, $ghtml; $ar['ip_address'] = $gbl->c_session->ip_address; $ar['session'] = $gbl->c_session->tsessionid; rl_exec_get(null, $this->syncserver, array("web", "createSession"), array($ar)); $servar = base64_encode(serialize($ar)); $gbl->__this_window_url = "http://{$this->nname}/__kloxo/phpinfo.php?session={$servar}"; return null; }
<?php include_once "htmllib/lib/include.php"; initProgram('admin'); $list = $login->getList('pserver'); foreach ($list as $l) { print "Checking {$l->nname}.."; flush(); try { $ret = rl_exec_get(null, $l->nname, "findOperatingSystem"); } catch (Exception $e) { print "{$l->nname} gave error {$e->getMessage()}\n"; continue; } print "Success... Got Information : "; print "{$ret['version']}\n"; }
function getTotalUsage($class, $list) { global $gbl, $sgbl, $login, $ghtml; $var = null; foreach ($list as $k => $d) { $needlist = null; foreach ($d as $dp) { $nlist = null; $nlist = $dp->getQuotaNeedVar(); $needlist[$dp->getClName()] = $nlist; } //$userlist = get_namelist_from_objectlist($d, 'nname', 'username'); $driver = $gbl->getSyncClass(null, $k, $class); try { $tvar = rl_exec_get(null, $k, array($class, 'findTotalUsage'), array($driver, $needlist)); if ($class === 'client') { dprintr("{$k}: \n"); dprintr($tvar); } } catch (Exception $e) { print "Could not get Remote Disk Usage {$k}\n"; } $var = lx_array_merge(array($var, $tvar)); } return $var; }
function updateSetProgramSSL($param) { $contentscer = $this->text_crt_content; $contentskey = $this->text_key_content; $contentsca = trim($this->text_ca_content); if (!$contentscer || !$contentskey) { throw new lxException("certificate_key_file_empty", ''); } sslcert::checkAndThrow($contentscer, $contentskey, null); $contentpem = "{$contentscer}\n{$contentskey}"; rl_exec_get(null, $param['slave_id'], array("sslcert", "setProgramSsl"), array($contentpem, $contentsca)); }
function findtraffic($weblist, $mmaillist, $globaldomlist, $oldtime, $newtime) { global $gbl, $login, $ghtml; $web_usage = null; $gen = $login->getObject('general')->generalmisc_b; $webstatsprog = $gen->webstatisticsprogram; if (!$webstatsprog) { $webstatsprog = "awstats"; } foreach ($weblist as $k => $dlist) { $list = null; foreach ($dlist as $d) { $rt = new Remote(); $rt->iisid = $d->getObject('web')->iisid; $rt->nname = $d->nname; $rt->customer_name = $d->getRealClientParentO()->getPathFromName('nname'); $rt->priv = new Priv(null, null, $d->nname); $rt->priv->awstats_flag = $d->priv->awstats_flag; $rt->stats_username = $d->getObject('web')->stats_username; $rt->stats_password = $d->getObject('web')->stats_password; $rt->remove_processed_stats = $d->getObject('web')->remove_processed_stats; $list[$d->nname] = $rt; } $driverapp = $gbl->getSyncClass(null, $k, 'web'); $web_usaget = rl_exec_get(null, $k, array("webtraffic", 'findTotaltrafficwebUsage'), array($driverapp, $webstatsprog, $list, $oldtime, $newtime)); $web_usage = lx_array_merge(array($web_usage, $web_usaget)); } foreach ($mmaillist as $k => $m) { $mlist = get_namelist_from_objectlist($m); $driverapp = $gbl->getSyncClass(null, $k, 'mmail'); $mailusaget = rl_exec_get(null, $k, array("mailtraffic", 'findTotalmailQuota'), array($driverapp, $mlist, $oldtime, $newtime)); $mailusage = lx_array_merge(array($mailusaget, $mailusage)); } try { foreach ($weblist as $k => $w) { $wlist = get_namelist_from_objectlist($w); $driverapp = $gbl->getSyncClass(null, $k, 'ftpuser'); $ftpusaget = rl_exec_get(null, $k, array("ftpusertraffic__{$driverapp}", 'findTotalQuota'), array($wlist, $oldtime, $newtime)); $ftpusage = lx_array_merge(array($ftpusaget, $ftpusage)); } } catch (exception $e) { print $e->getMessage() . "\n"; } //dprintr($web_usage); //dprintr($mailusage); //dprintr($ftpusage); $res = ""; foreach ($globaldomlist as $d) { $res['nname'] = "{$d->nname}:{$oldtime}:{$newtime}"; $domt = new Domaintraffic(null, null, $res['nname']); $res['ddate'] = time(); $res['timestamp'] = strftime("%c", $newtime); $res['oldtimestamp'] = strftime("%c", $oldtime); $res['comment'] = null; $res['parent_list'] = null; $res['parent_clname'] = $d->getClName(); $res['webtraffic_usage'] = $web_usage[$d->nname]; $res['mailtraffic_usage'] = $mailusage[$d->nname]; $res['ftptraffic_usage'] = $ftpusage[$d->nname]; $res['traffic_usage'] = $res['ftptraffic_usage'] + $res['webtraffic_usage'] + $res['mailtraffic_usage']; // print_r($res); $domt->create($res); $domt->was(); } }
static function getDataFromServer($syncserver) { $list = rl_exec_get(null, $syncserver, "lxguard_main", array(true)); if ($list) { foreach ($list as $k => $v) { foreach ($v as $kk => $vv) { $l['nname'] = "{$k}___{$kk}"; $l['ddate'] = $kk; $l['ipaddress'] = $k; $l['access'] = $vv['access']; $l['user'] = $vv['user']; $l['service'] = $vv['service']; $l['syncserver'] = $syncserver; $obj = new lxguardhit(null, null, $l['nname']); $obj->get(); if ($obj->dbaction === 'add') { $obj->create($l); $obj->write(); } } } } }
function get() { global $gbl, $sgbl, $login, $ghtml; static $st; if (isset($this->download_f) && $this->download_f) { $numlines = 'download'; } else { if ($this->getParentO()->is__table('llog')) { $numlines = 20; } else { $numlines = null; } } if ($st > 0) { print "Called more than once\n"; } $st++; $this->duflag = $gbl->getSessionV('ffile_duflag'); $gbl->setSessionV('ffile_duflag', false); $this->numlines = $numlines; $stat = rl_exec_get($this->__masterserver, $this->__readserver, array("coreFfile", "getLxStat"), array($this->__username_o, $this->root, $this->getFullPath(), $numlines, $this->duflag)); //dprintr($stat); if (!isset($this->readonly)) { $this->readonly = 'off'; } $this->setFromArray($stat); if (!$this->isOn('readonly')) { $this->__flag_showheader = true; } $this->setFileType(); }
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 updatemailQueueDelete($param) { $this->updateAccountSel($param, "mailqueuedelete"); rl_exec_get(null, $this->syncserver, array("mailqueue__qmail", 'QueueDelete'), array($this->mailqueuedelete_list)); return null; }
static function initThisList($parent, $class) { $res = rl_exec_get(null, $parent->syncserver, array("clientmail", "readtotallog"), array()); return $res; }
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 fixDatabaseServers() { $db = new Sqlite($this->__masterserver, "pserver"); $list = $db->getTable(array('nname')); foreach ($list as $l) { if ($this->isDeleted() && $l['nname'] === $this->nname) { continue; } $nlist[] = $l['nname']; } if ($this->dbaction === 'add') { $nlist[] = $this->nname; } sort($nlist); rl_exec_get($this->__masterserver, null, array('pserver', 'localfixDatabaseServers'), array($nlist)); }
function updateLiveMigrate($param) { global $gbl, $sgbl, $login, $ghtml; if ($this->checkIfLockedForAction('livemigrate')) { throw new lxException("livemigrate_is_already_happening", "syncserver", $param['syncserver']); } $this->checkNotSame($param, array("syncserver")); $this->olddeleteflag = 'doing'; $this->setUpdateSubaction(); $this->write(); rl_exec_get($this->__masterserver, 'localhost', array($this->get__table(), "exec_livemigrate"), array($this->get__table(), $this->nname, $param)); // Needs this because the nname can change when the syncserver is changed. Nname never changes when you switch server. Need to make sure of that. /* if (isset($this->__real_nname)) { $url = $ghtml->getFullUrl("goback=1&a=show&l[class]={$this->get__table()}&l[nname]=$this->nname"); dprint($this->nname); $ghtml->print_redirect("$url&frm_smessage=switch_done"); } else { */ $ghtml->print_redirect_back_success("switch_done", null); exit; }
static function initThisList($parent, $class) { global $gbl, $sgbl, $login, $ghtml; $driverapp = $gbl->getSyncClass($parent->__masterserver, $parent->__readserver, 'process'); $res = rl_exec_get($parent->__masterserver, $parent->__readserver, array("process__{$driverapp}", "readProcessList"), null); return $res; }
static function initThisList($parent, $class) { global $gbl, $sgbl, $login, $ghtml; $sql = new Sqlite($parent->__masterserver, "service"); $driverapp = $gbl->getSyncClass($parent->__masterserver, $parent->__readserver, 'service'); if (!$driverapp) { return; } $list = $sql->getRowsWhere("parent_clname = '{$parent->getClname()}'"); foreach ($list as $l) { $nlist[$l['servicename']] = $l; } $res = rl_exec_get($parent->__masterserver, $parent->__readserver, array("service__{$driverapp}", 'getServiceDetails'), array($nlist)); return $res; }