static function initThisList($parent, $class) { $parent->setUpdateSubaction('getBeancounter'); $res = rl_exec_set($parent->__masterserver, $parent->syncserver, $parent); $parent->dbaction = 'clean'; if ($res) { foreach ($res as &$__rt) { $__rt['syncserver'] = $parent->syncserver; $__rt['parent_clname'] = createParentName("vps", $parent->nname); } } dprint($res); return $res; }
static function initThisList($parent, $class) { global $gbl, $sgbl, $login, $ghtml; $res = rl_exec_in_driver($parent, 'listSubscribe', "readSubscribeList", array($parent->nname)); // Creat the extra varibles.. That are normally stgored in the db. if ($res) { foreach ($res as &$__rt) { $__rt['nname'] = "{$__rt['address']}___{$parent->getClName()}"; $__rt['syncserver'] = $parent->syncserver; $__rt['parent_clname'] = createParentName("mailinglist", $parent->nname); } } return $res; }
static function createWelcomeMessage() { global $gbl, $sgbl, $login, $ghtml; $name = ucfirst($sgbl->__var_program_name); $param['made_by'] = createParentName('pserver', $name); $param['text_sent_to_cmlist'] = "," . createParentName('client', 'admin') . ","; $param['ddate'] = time(); $param['subject'] = "Welcome to {$name}"; $param['text_description'] = "Welcome to {$name}"; $ticketconfig = $login->getObject('ticketconfig'); $param['nname'] = $ticketconfig->getAndIncrementTicket(); $param['unread_flag'] = 'on'; $smessage = new Smessage(null, null, $param['nname']); $smessage->create($param); $smessage->write(); }
function postAdd() { global $gbl, $sgbl, $login, $ghtml; $this->dbaction = 'add'; $this->findOsDetails(); if ($this->ostype === 'windows') { $this->username = '******'; } else { $this->username = "******"; } if ($sgbl->isHyperVm()) { $rlist = array('vps'); } else { if ($this->ostype === 'windows') { $rlist = array('web', 'mssqldb'); } else { $rlist = array('web', 'mmail', 'dns', 'mysqldb'); } } foreach ($rlist as $l) { $role = new psrole_a(null, null, $l); $this->psrole_a[$l] = $role; } $this->ddate = time(); $this->getandWriteModuleDriver(); //$this->fixDatabaseServers(); $this->getandWriteService(); $this->parent_clname = createParentName('client', 'admin'); if ($this->ostype !== 'windows') { $this->AddMysqlDbadmin(); } // There's a problem here. If the server is added for the second time, the ipaddress would be present, // and this would lead to a 'was' happening inside here, which would turn the dbaction to clean and // then the actual was wouldn't happen. $this->getandwriteipaddress(); }
static function initThisListRule($parent, $class) { if ($parent->isAdmin()) { return "__v_table"; } return array('parent_clname', '=', "'" . createParentName($parent->getClass(), $parent->nname) . "'"); }
public static function createVpsObject($servername, $input) { $name = "{$input['name']}.vm"; $vpsobject = new Vps(null, $servername, $name); $vpsobject->parent_clname = createParentName('client', 'admin'); $vpsobject->priv = new priv(null, null, $vpsobject->nname); $vpsobject->priv->__parent_o = $vpsobject; $vpsobject->used = new used(null, null, $vpsobject->nname); $vpsobject->used->__parent_o = $vpsobject; $vpsobject->vpsipaddress_a = array(); $vpsobject->vpsid = '-'; $vpsobject->password = crypt($name); $vpsobject->cpstatus = 'on'; $vpsobject->status = 'on'; $vpsobject->ttype = 'xen'; $vpsobject->iid = $name; $vpsobject->ddate = time(); if ($input['type'] === 'file') { $vpsobject->corerootdir = $input['location']; } else { $vpsobject->corerootdir = "lvm:{$input['location']}"; } $vpsobject->maindiskname = $input['maindiskname']; $vpsobject->swapdiskname = $input['swapdiskname']; if ($input['type'] === 'file') { $vpsobject->maindisk = "{$vpsobject->corerootdir}/{$vpsobject->maindiskname}"; $vpsobject->swapdisk = "{$vpsobject->corerootdir}/{$vpsobject->swapdiskname}"; } else { $vgname = $vpsobject->corerootdir; $vgname = fix_vgname($vgname); $vpsobject->maindisk = "/dev/{$vgname}/{$vpsobject->maindiskname}"; $vpsobject->swapdisk = "/dev/{$vgname}/{$vpsobject->swapdiskname}"; } if (isset($input['gateway'])) { $vpsobject->networkgateway = $input['gateway']; } if (isset($input['netmask'])) { $vpsobject->networknetmask = $input['netmask']; } $vpsobject->priv->realmem_usage = $input['memory']; $vpsobject->priv->disk_usage = lvm_disksize($vpsobject->maindisk); $vpsobject->priv->swap_usage = lvm_disksize($vpsobject->swapdisk); $vpsobject->priv->backup_flag = 'on'; $vpsobject->ostemplate = 'unknown'; if (isset($input['ipaddress'])) { self::importIpaddress($vpsobject, $input['ipaddress']); } return $vpsobject; }
function createExtraVariables() { global $gbl, $sgbl, $login, $ghtml; $this->fixphpIniFlag(); $gen = $login->getObject('general')->generalmisc_b; if (!$this->getParentO()->is__table('pserver')) { $ob = new phpini(null, 'localhost', createParentName('pserver', 'localhost')); $ob->get(); $ob->fixphpIniFlag(); $this->__var_docrootpath = $this->getParentO()->getFullDocRoot(); $list = $this->getInheritedList(); foreach ($list as $l) { $this->phpini_flag_b->{$l} = $ob->phpini_flag_b->{$l}; } $this->__var_web_user = $this->getParentO()->username; $this->__var_customer_name = $this->getParentO()->customer_name; $this->__var_disable_openbasedir = $this->getParentO()->webmisc_b->disable_openbasedir; } $this->__var_extrabasedir = $gen->extrabasedir; $driverapp = $gbl->getSyncClass(null, $this->syncserver, 'web'); $this->__var_webdriver = $driverapp; }
function fix_mysql_root_password($server) { global $gbl, $sgbl, $login, $ghtml; $pass = $login->password; $pass = fix_nname_to_be_variable($pass); $pass = substr($pass, 3, 11); $dbadmin = new Dbadmin(null, $server, "mysql___{$server}"); $dbadmin->get(); if ($dbadmin->dbaction === 'add') { $dbadmin->syncserver = $server; $dbadmin->ttype = 'mysql'; $dbadmin->dbtype = 'mysql'; $dbadmin->dbadmin_name = 'root'; $dbadmin->parent_clname = createParentName("pserver", $server); $dbadmin->write(); $dbadmin->get(); $dbadmin->dbaction = 'clean'; } if ($dbadmin->dbpassword) { dprint("Mysql Password is not null\n"); return; } $dbadmin->dbpassword = $pass; $dbadmin->setUpdateSubaction('update'); try { $dbadmin->was(); } catch (exception $e) { } }
static function createWelcomeTicket() { global $gbl, $sgbl, $login, $ghtml; $name = ucfirst($sgbl->__var_program_name); $parent['parent_clname'] = createParentName('client', 'admin'); $param['made_by'] = createParentName('pserver', $name); $param['sent_to'] = createParentName('client', 'admin'); $param['subject'] = "Welcome to {$name}"; //$param['priority'] = "low"; $param['category'] = "Welcome"; $param['descr_f'] = "Welcome to {$name}"; $param['ddate'] = time(); $param['date_modified'] = time(); $ticketconfig = $login->getObject('ticketconfig'); $param['nname'] = $ticketconfig->getAndIncrementTicket(); $ticketconfig->write(); $param['unread_flag'] = 'on'; $param['state'] = 'open'; $ticket = new Ticket(null, null, $param['nname']); $ticket->create($param); $ticket->postAdd(); $ticket->was(); }
function updateChangeOwner($param) { global $gbl, $sgbl, $login, $ghtml; $rparent['up'] = $this->getParentO()->getParentO(); if ($rparent['up']) { $rparent['top'] = $rparent['up']->getParentO(); } $rparent['down'] = $this->getParentO(); if ($rparent['down']->isLogin()) { $rparent['up'] = null; } $newparent = getFromAny($rparent, 'client', $param['parent_name_change']); /* if (!$this->checkIfEnoughParentQuotaAll($newparent)) { throw new lxexception('not_enough_quota_in_parent', 'quota'); } */ // Get the objectlist BEFORE you change the parent. $this->__old_parent_name = $this->parent_clname; $this->parent_clname = createParentName("client", $param['parent_name_change']); $this->__parent_o = $newparent; $this->setUpdateSubaction(); $this->changeOwnerSpecific(); $gbl->__this_redirect = $ghtml->getFullUrl('a=resource', null); $gbl->__this_function = array("lxclass", "exec_collectQuota"); $gbl->__this_functionargs = null; return null; }
static function getArrayFromString($t) { $array = explode("\n", $t); error_reporting(0); foreach ($array as $a) { $t = $a; $a = ltrim($t); list($a1, $a2, $a3, $a4) = explode(" ", $a); $b['parent_clname'] = createParentName("pserver", "localhost"); switch ($a1) { case 'iface': list($name, $id) = explode(':', $a2); if ($id === " " || is_null($id)) { $b['devname'] = $a2; } else { $b['devname'] = $name . "-" . $id; } $b['bootproto'] = $a4; break; case 'address': $b['ipaddr'] = $a2; break; case 'network': $b['network'] = $a2; break; case 'netmask': $b['netmask'] = $a2; break; case 'broadcast': $b['broadcast'] = $a2; break; case 'gateway': $b['gateway'] = $a2; break; } } return $b; }
static function process_paypal($list) { initProgram('admin'); $sq = new Sqlite(null, 'paymentdetail'); $r = paymentdetail__paypal::createPaymentDetail($list); if (self::checkIftransactionExists($r['transactionid'])) { log_log("paypal_billing", "Transactionid {$r['transactionid']} already exists\n"); return; } $i = 0; while (true) { $r['nname'] = implode("___", array($r['client'], $r['month'], $i)); if (!$sq->getRowsWhere("nname = '{$r['nname']}'")) { break; } $i++; } $r['parent_clname'] = createParentName('client', $r['client']); $cl = new Client(null, null, $r['client']); $cl->get(); if (!$cl->isOn('status')) { $cl->updateEnable(null); $cl->was(); } $payp = new paymentDetail(null, null, $r['nname']); $r['complete_detail'] = $list; $r['paymentgw'] = 'paypal'; $payp->create($r); $payp->write(); log_log("paypal_billing", "saved the payment detail {$p->nname}"); }
function do_desc_add($object, $class, $param) { global $gbl, $sgbl, $login, $ghtml; $quotaclass = exec_class_method($class, "getquotaclass", $class); $numvar = "{$quotaclass}_num"; $qobject = $object->getClientParentO(); dprint($qobject->getClname()); if ($qobject->isQuotaVariable($numvar)) { if (isQuotaGreaterThanOrEq($qobject->used->{$numvar}, $qobject->priv->{$numvar})) { throw new lxException("Quota Exceeded for {$class}", 'nname', $numvar); } } /* $list = $qobject->getQuotaVariableList(); foreach((array) $list as $l => $v) { if (csb($l, "{$class}_m_")) { $license = strtil(strfrom($l, "_n_"), "_num"); $licvar = strtil(strfrom($l, "_m_"), "_n_"); if (isset($param[$licvar]) && $param[$licvar] === $license) { if (isQuotaGreaterThanOrEq($qobject->used->$l, $qobject->priv->$l)) { throw new lxException("Quota Exceeded for $class $licvar.$license", 'nname', $numvar); } } } } */ // Setting it here itself so that the add can override if necessary. This is done in tickets, where the parent is always the admin. $param['parent_clname'] = $object->getClName(); // In the case of mailaccount, the real parent is mmail, while the object is added to client. if (isset($param['real_clparent_f'])) { $parent_class = exec_class_method($class, 'defaultParentClass', $object); $param['parent_clname'] = createParentName($parent_class, $param['real_clparent_f']); } $param = exec_class_method($class, 'Add', $object, $class, $param); // First loop to create a unique nname if applicable.... FOr the 'unique-nname-creation' to work in the second loop, the variables must be resolved before that... So this extra looping... foreach ($param as $k => $v) { if (csb($k, "__v_") || csb($k, "__m_")) { continue; } $object->resolve_class_differences($class, $k, $dclass, $dk); } foreach ($param as $k => $v) { if (csb($k, "__v_") || csb($k, "__m_")) { continue; } $object->resolve_class_heirarchy($class, $k, $dclass, $dk); $object->resolve_class_differences($class, $k, $ddclass, $ddk); $nnamevar = get_real_class_variable($ddclass, "__rewrite_nname_const"); if ($nnamevar) { $nnamelist = null; foreach ($nnamevar as $n) { $nnamelist[] = $param[$n]; } $nparam[$dclass]['nname'] = implode($sgbl->__var_nname_impstr, $nnamelist); } $nparam[$dclass][$dk] = $v; } // First Pass foreach ($nparam as $k => $v) { if (csa($k, "_s_")) { continue; } if ($k === 'priv') { $olist[$k] = new priv(null, null, $nparam[$class]['nname']); check_priv($object, $class, $olist[$k], $v); continue; } if ($k === 'used') { $olist[$k] = new Used(null, null, $nparam[$class]['nname']); $olist[$k]->create($v); continue; } if ($k === 'listpriv') { //$olist[$k] = new listpriv($object->__masterserver, null, $class . "_s_vv_p_" . $nparam[$class]['nname']); $olist[$k] = new listpriv($object->__masterserver, null, $class . "-" . $nparam[$class]['nname']); check_listpriv($object, $class, $olist[$k], $v); continue; } if (csa($k, "_b")) { $olist[$k] = new $k($object->__masterserver, null, $nparam[$class]['nname']); } else { $olist[$k] = new $k($object->__masterserver, null, $v['nname']); } $olist[$k]->inheritSyncServer($object); $olist[$k]->initThisDef(); $olist[$k]->create($v); // The createsyncclass needs the syncserver variable to be set. Which may not be available. So we have to run this again. if ($olist[$k]->hasDriverClass()) { $olist[$k]->createSyncClass(); } } // The main object has to inherit the masterserver here itself, so that its children will inherit it later when they are added through addobject. if (!cse($class, "_a") && exec_class_method($class, "isDatabase") && exists_in_db($object->__masterserver, $class, $olist[$class]->nname)) { // If the parent is getting added too, then that means we are in the client add page, and thus the variable is vps_name, domain_name rather than nname. if ($object->dbaction === 'add') { $vname = "{$class}_name"; } else { $vname = "nname"; } throw new lxException("{$olist[$class]->nname}+already+exists+in+{$class}.", $vname, $class); } //Second Pass... foreach ($nparam as $k => $v) { if (!csa($k, "_s_") && !csa($k, "-")) { continue; } $clist = explode("_s_", $k); $k = $clist[1]; $cl = $clist[0]; $nolist[$k] = new $k($object->__masterserver, null, $v['nname']); $nolist[$k]->inheritSyncServer($olist[$cl]); $nolist[$k]->initThisDef(); $nolist[$k]->create($v); // The createsyncclass needs the syncserver variable to be set. Which may not be available. So we have to run this again. if ($nolist[$k]->hasDriverClass()) { $nolist[$k]->createSyncClass(); } $olist[$cl]->addObject($k, $nolist[$k]); } foreach ($olist as $k => $v) { if (cse($k, "_b") || $k === 'used' || $k === 'priv' || $k === 'listpriv') { $olist[$class]->{$k} = $v; continue; } if ($k != $class) { $olist[$class]->addObject($k, $v); continue; } } if (isset($param['__v_priv'])) { $olist[$class]->priv = $param['__v_priv']; } if (isset($param['__v_listpriv'])) { $olist[$class]->listpriv = $param['__v_listpriv']; } //$olist[$class]->parent_clname = $object->getClName(); $rparent = $object; $olist[$class]->__parent_o = $rparent; $olist[$class]->postAdd(); $rparent->addToList($class, $olist[$class]); $olist[$class]->superPostAdd(); //dprintr($object); notify_admin("add", $object, $olist[$class]); do_actionlog($login, $olist[$class], "add", ""); //This shouldn't happen here. This should be done only after the synctosystem since, the sync can fail and the write may not happen at all. //$olist[$class]->changeUsedFromParentAll(); dprint($olist[$class]->getParentO()); }
function monitor_remote_main() { global $gbl, $sgbl, $login, $ghtml; ob_start(); // @var $login client $val = $ghtml->frm_rmt; initprogram('admin'); dprint($val); $rmt = unserialize(base64_decode($val)); $ipaddress = $_SERVER['REMOTE_ADDR']; $rem = new Remote(); $rem->exception = null; $rem->ddata = "hello"; /* if (!check_raw_password('client', $info->login, $info->password)) { $rem->exception = new lxexception('license_login_failed', 'login'); print_and_exit($rem); } */ $servername = $_SERVER['REMOTE_ADDR']; $sv = new MonitoringServerStatus(null, null, $servername); $sv->get(); $sv->setUpdateSubaction(); $sv->updatetime = time(); $sv->write(); if ($rmt->cmd === 'im_alive') { print_and_exit($rem); } if ($rmt->cmd === 'get_list') { $arlist = null; $login->loadAllObjects('monitorserver'); $mlist = $login->getList('monitorserver'); foreach ($mlist as $ml) { if (!$ml->isOn('status')) { continue; } $array['nname'] = $ml->nname; $array['servername'] = $ml->servername; $arlist[$ml->nname] = $array; $plist = $ml->getList('monitorport'); foreach ($plist as $p) { $parray['nname'] = $p->nname; $parray['portnumber'] = $p->portnumber; $arlist[$ml->nname]['monitorport_l'][] = $parray; } } $rem->ddata = $arlist; print_and_exit($rem); } if ($rmt->cmd === 'my_name') { $rem->ddata = $_SERVER['REMOTE_ADDR']; print_and_exit($rem); } if ($rmt->cmd !== 'set_list') { exit; } $slist = $rmt->ddata; foreach ($slist as $ll) { foreach ($ll as $l) { $nname = $servername . "___" . $l['portnname']; $test = new PortStatus(null, null, $nname); $test->get(); // hack hack.. Temproarly forcibly reseting error string. $test->errorstring = ""; if ($test->dbaction === 'add') { $test->create($l); } else { $test->create($l); $test->dbaction = 'update'; } $test->parent_clname = createParentName('monitorport', $l['portnname']); $test->servername = $servername; $test->updatetime = time(); $test->write(); port_send_email($test); } } do_send_email(); $val = base64_encode(serialize($rem)); print $val; flush(); exit; }