Пример #1
0
function createDnsTemplate()
{
    global $gbl, $sgbl, $login, $ghtml;
    if ($sgbl->dbg < 1) {
        return;
    }
    $ip = getOneIPForLocalhost('something');
    $dnstemp = new DnsTemplate(null, null, 'test');
    $dnstemp->nameserver_f = "ns.lxlabs.com";
    $dnstemp->webipaddress = $ip;
    $dnstemp->mmailipaddress = $ip;
    $dnstemp->parent_clname = $login->getClName();
    $dnstemp->shared = "on";
    $dnstemp->dbaction = 'add';
    $dnstemp->postAdd();
    $dnstemp->was();
    create_default_template($dnstemp);
}
Пример #2
0
function do_remote_exec($machine, $rmt, $cmdtype, $nname, $dbaction)
{
    global $gbl, $sgbl, $login, $ghtml;
    $remotechar = $sgbl->__var_remote_char;
    if ($login && $login->isSuperClient()) {
        $table = 'node';
        $class = 'admin';
    } else {
        $table = 'pserver';
        $class = 'slave';
    }
    if (!isLocalhost($machine)) {
        $var = $table . "_password";
        if (isset($gbl->{$var}) && $gbl->{$var}) {
            $password = $gbl->{$var};
        } else {
            $ssm = new Sqlite(null, $table);
            $res = $ssm->rawQuery("select realpass from {$table} where nname = '{$machine}'");
            if ($res) {
                $password = $res[0]['realpass'];
            } else {
                throw new lxException("machine_doesnt_exist_in_db", 'nname', $machine);
            }
        }
    } else {
        $password = getAdminDbPass();
        $machine = 'localhost';
    }
    $port = $sgbl->__var_prog_port;
    $rmt->version = $sgbl->__ver_major_minor_release;
    $rmt->machine = $machine;
    $rmt->remote_login = $class;
    $rmt->password = $password;
    $rmt->master_c = getOneIPForLocalhost($machine);
    $var = base64_encode(serialize($rmt));
    if (!isLocalhost($rmt->machine)) {
        $user = base64_encode('slave');
        $pass = base64_encode($rmt->password);
        $var = $remotechar . "\n" . $user . "\n" . $pass . "\n" . $var;
    }
    $totalout = send_to_some_server($machine, $var);
    $res = unserialize(base64_decode($totalout));
    if (!$res) {
        throw new lxException('could_not_connect_to_server', 'syncserver', $machine);
    }
    //dprint($res->message);
    if ($res->exception) {
        throw $res->exception;
    }
    //dprint($res->message);
    //print_time('server', "remote<b> $raddress</b>: $size KB", 2);
    // We have only return values. The output of the command is discarded. This leads to tremendous savings of bandwidth; makes the communication almost one way. If you want to get the output, you have to use the lxshell_output function and give your command as the argument. This function changes the output as a return value which is then returned back. The whole concept is about function execution, and returning the ret value of the function.
    $err = $res ? 3 : 2;
    dprint("<br>  <table border=2> <tr> <td > Remote: {$machine}, {$cmdtype}, {$nname}, {$dbaction}<br> ", $err);
    if (!$res) {
        dprint("<b> <font color=red>Got Error: </b> </font> {$res}", $err);
        //$ser = base64_decode($res);
        //dprint($ser);
    } else {
        dprint("Message: " . $res->message . "<br> ", $err);
    }
    dprint("</td> </tr> </table>  ", $err);
    if (!$res) {
        dprint("Warning");
    }
    if ($res->__this_warning) {
        $gbl->__this_warning = $res->__this_warning;
    }
    return $res;
}
Пример #3
0
 function restoreMeUpThere($oldserver, $backupfilepass)
 {
     $this->setUpdateSubaction('top_level_network_restore');
     $this->createExtraVariables();
     if (isLocalhost($oldserver) && !isLocalhost($this->getDataServer())) {
         $oldserver = getOneIPForLocalhost($this->getDataServer());
     }
     $this->__var_machine = $oldserver;
     $this->__var_backupfilepass = $backupfilepass;
     $res = rl_exec_set(null, $this->getDataServer(), $this);
 }
Пример #4
0
 function updateUpload_s($param)
 {
     global $gbl, $sgbl, $login, $ghtml;
     $this->up_temp_file_name = $_FILES['upload_file_f']['tmp_name'];
     $this->__var_upload_filepass = cp_fileserv($this->up_temp_file_name);
     $this->__var_upload_tmp_server = getOneIPForLocalhost($this->syncserver);
     $this->upload_file_name = $_FILES["upload_file_f"]["name"];
     if (!$this->upload_file_name) {
         throw new lxexception('no_file_in_upload', 'upload_name_f');
     }
     $this->upload_file_name = str_replace("'", "", $this->upload_file_name);
     $this->setUpdateSubaction('upload_s');
     $gbl->__this_redirect = $this->getCurDirUrl();
     $this->upload_overwrite_f = $param['upload_overwrite_f'];
     return null;
 }
Пример #5
0
 function postAdd()
 {
     global $gbl, $sgbl, $login, $ghtml;
     $gen = $login->getObject('general')->generalmisc_b;
     $parent = $this->getParentO();
     $domdefault = $parent->getObject('domaindefault');
     $web = $this->getObject("web");
     $mmail = $this->getObject('mmail');
     $dns = $this->getObject("dns");
     $web->remove_processed_stats = $domdefault->remove_processed_stats;
     $dname = $this->nname;
     //$dname = self::createUusername($dname);
     $web->ftpusername = substr($dname, 0, 31);
     $gen = $login->getObject('general')->generalmisc_b;
     $web->__var_extrabasedir = $gen->extrabasedir;
     $this->cpstatus = 'on';
     $this->ttype = 'virtual';
     $web->ttype = 'virtual';
     $mmail->ttype = 'virtual';
     if ($this->isClass('subdomain')) {
         $parentdomain = $parent->getFromList('domaina', $this->subdomain_parent);
     }
     if ($this->isOn("simple_add_f") || $this->isClass('subdomain')) {
         if ($this->isClass('subdomain')) {
             $cparent = $parentdomain;
         } else {
             $cparent = $parent;
         }
         $this->template_used = $cparent->template_used;
         $this->resourceplan_used = $cparent->resourceplan_used;
         $this->priv = clone $cparent->priv;
         $this->listpriv = clone $cparent->listpriv;
         $this->disable_per = $cparent->disable_per;
         $this->password = $cparent->password;
         $this->realpass = $cparent->realpass;
         $this->priv->phpfcgiprocess_num = 0;
         $web->priv->phpfcgiprocess_num = 0;
         $this->priv->phpfcgi_flag = 'off';
         $web->priv->phpfcgi_flag = 'off';
     } else {
         $this->realpass = $parent->realpass;
         $this->password = crypt($this->realpass);
         if ($this->isOn('use_resourceplan_f')) {
             $template = getFromAny(array($login, $parent), 'resourceplan', $this->resourceplan_f);
             if (!$template) {
                 throw new lxexception("the_resourceplan_doesnt_exist", 'resourceplan_f', $this->resourceplan_f);
             }
             $this->template_used = $this->resourceplan_f;
             $this->resourceplan_used = $this->resourceplan_f;
             $this->priv = clone $template->priv;
             $this->listpriv = clone $template->listpriv;
             $this->disable_per = $template->disable_per;
             if (!$this->dnstemplate_f) {
                 $list = domainBase::getDnsTemplateList($parent);
                 $this->dnstemplate_f = $list[0];
             }
         }
     }
     if (!$this->docroot) {
         $this->docroot = $this->nname;
     }
     $this->docroot = coreFfile::getRealpath($this->docroot);
     if ($this->isClass('subdomain')) {
         $dnstemplate = $parentdomain->getObject('dns');
     } else {
         $dnstemplate = new Dnstemplate($this->__masterserver, null, $this->dnstemplate_f);
         $dnstemplate->get();
         if ($dnstemplate->dbaction === 'add') {
             throw new lxexception('the_dns_template_doesnt_exist', 'dnstemplate_f', $this->dnstemplate_f);
         }
     }
     //$mmail->catchall = $domaindefault->catchall;
     if (!$mmail->catchall) {
         $mmail->catchall = 'Delete';
     }
     $web->ipaddress = $dnstemplate->getIpForBaseDomain();
     $web->docroot = $this->docroot;
     ///#656 When adding a subdomain, the Document Root field is not being validated
     if (csa($web->docroot, " /")) {
         throw new lxexception("document_root_may_not_contain_spaces", 'docroot', "");
     } else {
         $domain_validation = str_split($web->docroot);
         $domain_validation_num = strlen($web->docroot) - 1;
         if ($domain_validation[$domain_validation_num] == " ") {
             throw new lxexception("document_root_may_not_contain_spaces", 'docroot', "");
         }
     }
     $web->docroot = trim($web->docroot, "/");
     $dns->copyObject($dnstemplate);
     $dns->dbaction = 'add';
     $web->syncserver = $parent->websyncserver;
     $dns->syncserver = implode(",", $parent->dnssyncserver_list);
     $mmail->syncserver = $parent->mmailsyncserver;
     $dns->zone_type = 'master';
     unset($this->cttype);
     if ($this->isClass('subdomain')) {
         $this->dtype = 'subdomain';
     } else {
         $this->dtype = 'maindomain';
     }
     $mmail->fixSyncServer();
     $web->fixSyncServer();
     $dns->fixSyncServer();
     if ($sgbl->dbg < 0) {
         if (getOsForServer($dns->syncserver) === 'windows') {
             throw new lxexception('no_dns_on_windows');
         }
         if (getOsForServer($mmail->syncserver) === 'windows') {
             throw new lxexception('no_mail_on_windows');
         }
     }
     $skelf = "__path_client_root/{$parent->nname}/skeleton.zip";
     if (!lxfile_exists($skelf)) {
         $skelf = "__path_client_root/admin/skeleton.zip";
     }
     //--- for new user-skeleton (since 6.1.7)
     if (!lxfile_exists($skelf)) {
         // MR -- must using \- for zip name
         $skelf = "__path_kloxo_httpd_root/" . "user\\-skeleton.zip";
     }
     if (!lxfile_exists($skelf)) {
         $skelf = "__path_kloxo_httpd_root/skeleton.zip";
     }
     if (!lxfile_exists($skelf)) {
         $skelf = null;
     }
     if ($skelf) {
         $web->__var_skelmachine = getOneIPForLocalhost($web->syncserver);
         $ret = cp_fileserv($skelf);
         $web->__var_skelfile = $ret;
     } else {
         $web->__var_skelfile = null;
     }
     $ftpuser = new Ftpuser(null, $web->syncserver, $web->ftpusername);
     $ftpuser->initThisdef();
     //$uuser = new Uuser(null, $web->syncserver, $dname);
     //$uuser->initThisdef();
     //$web->addObject('uuser', $uuser);
     $ftpuser->directory = $this->docroot;
     $parent->addObject('ftpuser', $ftpuser);
     $ftpuser->username = $parent->username;
     if ($this->getRealClientParentO()->username) {
         $web->username = $this->getRealClientParentO()->username;
     } else {
         $web->username = $this->getRealClientParentO()->nname;
     }
     $rp = $this->getRealClientParentO();
     $web->customer_name = $rp->getPathFromName('nname');
     $mmail->systemuser = $web->username;
     $this->mmailpserver = $mmail->syncserver;
     $this->webpserver = $web->syncserver;
     $this->dnspserver = $dns->syncserver;
     // hack hack convert listpriv into a differnet object.
     $this->generateCMList();
     $this->distributeChildQuota();
     $driverapp = $gbl->getSyncClass($this->__masterserver, $web->syncserver, 'web');
     ////////////////////
     //$uuser->syncserver = $web->syncserver;
     $ftpuser->syncserver = $web->syncserver;
     //$ftpuser->directory =  "/domain/$this->nname";
     //Hack hack uuser needs driver to be redone, since the driver was created when uuser had no syncserver....
     //$uuser->createSyncClass();
     $ftpuser->createSyncClass();
     $web->createSyncClass();
     $mmail->createSyncClass();
     $dns->createSyncClass();
     //$uuser->realpass = $this->realpass;
     //$uuser->password = crypt($this->realpass);
     $ftpuser->realpass = $this->realpass;
     $ftpuser->password = crypt($this->realpass);
     $mmail->remotelocalflag = 'local';
     $web->stats_username = $this->nname;
     $web->stats_password = null;
     // Gotta Add postmaster...
     $mailaccount = new Mailaccount($this->__masterserver, $this->__readserver, "postmaster@{$this->nname}");
     $mailaccount->initThisdef();
     $mailaccount->__parent_o = $mmail;
     $mailaccount->syncserver = $mmail->syncserver;
     $mailaccount->parent_clname = $mmail->getClName();
     $mailaccount->postAdd();
     $mailaccount->cpstatus = 'on';
     $mailaccount->password = $this->password;
     $mailaccount->realpass = $this->realpass;
     //$mailaccount->metadbaction = 'writeonly';
     $mmail->addToList('mailaccount', $mailaccount);
     $spam = new Spam($this->__masterserver, $this->__readserver, $this->nname);
     $spam->initThisdef();
     $res['syncserver'] = $mmail->syncserver;
     $spam->create($res);
     $spam->parent_clname = $mmail->getClName();
     $mmail->addObject('spam', $spam);
     /* Not needed, instead the admin can configure this after the domain is created.
     	if ($maindomain) {
     		$parked = new addondomain(null, null, "{$this->nname}.$maindomain");
     		$parked->initThisdef();
     		$res['mail_flag'] = 'off';
     		$parked->create($res);
     		$parked->parent_clname = $this->getClName();
     		$this->addToList('addondomain', $parked);
     	}
     */
     //$uuser->shellflag = 'off';
     //$uuser->shell = '--Disabled--';
     /*
     	if (exists_in_db($this->__masterserver, "uuser", $uuser->nname)) {
     		throw new lxexception('user_exists_in_db', 'uuser');
     	}
     */
     /*
     $backup = new LxBackup($this->__masterserver, $this->__readserver, $this->getClName());
     $backup->initThisDef();
     $this->AddObject('lxbackup', $backup);
     */
     //lxfile_mkdir("__path_program_home/domain/$this->nname/__backup");
     $this->lxclientpostAdd();
     $this->generateDomainKey(true);
 }
Пример #6
0
 function setUpOsTemplateDownloadParam()
 {
     if ($this->isLocalhost()) {
         return;
     }
     if (!lxfile_real($this->getFullPathOstemplate())) {
         return;
     }
     $this->__var_ost_md5 = lmd5_file($this->getFullPathOstemplate());
     $this->__var_ostemplatefileserv = cp_fileserv($this->getFullPathOstemplate());
     $this->__var_masterip = getOneIPForLocalhost($this->syncserver);
 }