コード例 #1
0
 static function add($parent, $class, $param)
 {
     if (isset($param['external']) && isOn($param['external'])) {
         $param['nname'] = base64_encode($param['nname']);
     }
     return $param;
 }
コード例 #2
0
ファイル: webtrafficlib.php プロジェクト: zseand/kloxo
 static function getweb_usage($name, $customer_name, $oldtime, $newtime, $d)
 {
     global $gbl, $sgbl, $login, $ghtml;
     $web_home = "{$sgbl->__path_httpd_root}";
     $log_path = "{$web_home}/{$name}/stats";
     $processedir = "{$sgbl->__path_customer_root}/{$customer_name}/__processed_stats/";
     lxfile_mkdir($processedir);
     $dir1 = "{$log_path}/";
     $files = lscandir_without_dot($dir1);
     $total = 0;
     foreach ($files as $file) {
         if (!strstr($file, "gz")) {
             $total += self::getEachwebfilequota("{$dir1}/{$file}", $oldtime, $newtime);
             $stat = stat("{$dir1}/{$file}");
             if ($stat['size'] >= 50 * 1024 * 1024) {
                 if (isOn($d->remove_processed_stats)) {
                     lxfile_rm("{$dir1}/{$file}");
                 } else {
                     lxfile_mv("{$dir1}/{$file}", getNotexistingFile($processedir, $file));
                 }
             }
         }
     }
     return $total;
 }
コード例 #3
0
ファイル: dskfavorite.php プロジェクト: digideskio/hypervm
 static function add($parent, $class, $param)
 {
     if ($param['ttype'] === 'separator') {
         $sq = new Sqlite(null, 'ndskshortcut');
         $separatorid = getIncrementedValueFromTable('ndskshortcut', 'separatorid');
         $param['separatorid'] = $separatorid;
         $param['nname'] = "{$separatorid}___{$parent->getClName()}";
         return $param;
     }
     if (isset($param['external']) && isOn($param['external'])) {
         $param['url'] = base64_encode($param['url']);
     }
     $param['nname'] = "{$param['url']}___{$parent->getClName()}";
     return $param;
 }
コード例 #4
0
ファイル: dskfavorite.php プロジェクト: soar-team/kloxo
 static function add($parent, $class, $param)
 {
     if ($param['ttype'] === 'separator') {
         $sq = new Sqlite(null, 'ndskshortcut');
         $separatorid = getIncrementedValueFromTable('ndskshortcut', 'separatorid');
         $param['separatorid'] = $separatorid;
         $param['nname'] = "{$separatorid}___{$parent->getClName()}";
         return $param;
     }
     $url = base64_decode($param['url']);
     if (isset($param['external']) && isOn($param['external'])) {
         $url = $param['url'];
         $param['url'] = base64_encode($param['url']);
     }
     if (trim($url) == '' || !isset($url)) {
         throw new lxexception('url_is_not_defined', 'nname');
     }
     $param['nname'] = "{$param['url']}___{$parent->getClName()}";
     return $param;
 }
コード例 #5
0
ファイル: htmllib.php プロジェクト: hypervm-ng/hypervm-ng
 function object_variable_quota($parent, $stuff, $variable)
 {
     global $gbl, $sgbl, $ghtml;
     $parent = $parent->getClientParentO();
     $value = null;
     $this->fix_stuff_or_class($stuff, $variable, $class, $value);
     $descr = $this->get_classvar_description_after_overload($class, $variable);
     $cvar = $variable;
     if ($value === 'Unlimited') {
         $value = null;
     }
     $check = trim($value) !== "" ? 'no' : 'yes';
     if (is_object($stuff)) {
         if (isOn($value)) {
             $chval = 'yes';
         } else {
             $chval = 'no';
         }
     } else {
         $cl = get_name_without_template($stuff);
         if (isOn(exec_class_method($cl, "getDefaultValue", $variable))) {
             $chval = 'yes';
         } else {
             $chval = "no";
         }
     }
     if (cse($variable, "_flag")) {
         $rvr = new FormVar();
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_checkname";
         $rvr->desc = $descr[2];
         $rvr->type = "hidden";
         $rvr->value = "off";
         $ret[] = $rvr;
         if ($parent->priv->isOn($variable)) {
             $rvr = new FormVar();
             $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_checked";
             $rvr->desc = $descr[2];
             $rvr->type = "checkbox";
             $rvr->checked = $chval;
             $rvr->value = "on";
             $ret[] = $rvr;
         } else {
             $rvr = new FormVar();
             $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_checked";
             $rvr->desc = $descr[2];
             $rvr->type = "checkbox";
             $rvr->checked = "disabled";
             $rvr->value = "off";
             $ret[] = $rvr;
         }
         return $ret;
     }
     if (is_unlimited($parent->priv->{$cvar})) {
         $rvr = new FormVar();
         $rvr->name = "frm_{$class}_c_{$variable}";
         $rvr->type = "checkboxwithtext";
         $rvr->desc = $descr[2];
         $rvr->mode = "or";
         $text = new FormVar();
         $text->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotaname";
         $text->value = $value;
         $rvr->text = $text;
         $checkbox = new FormVar();
         $checkbox->desc = "Unlimited";
         $checkbox->name = "frm_{$class}_c_priv_s_{$variable}_aaa_unlimited";
         $checkbox->checked = $check;
         $checkbox->value = "yes";
         $rvr->checkbox = $checkbox;
         $ret[] = $rvr;
         $rvr = new FormVar();
         $rvr->type = "hidden";
         $rvr->value = "Unlimited";
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotamax";
         $ret[] = $rvr;
     } else {
         $quotaleft = $parent->getEffectivePriv($cvar, $class);
         if (isHardQuotaVariableInClass($class, $cvar)) {
             $quotaleft += $value;
         }
         $totalstring = null;
         $totalstring = "Total: " . $parent->priv->{$cvar};
         if (cse($class, "template")) {
             $totalstring = null;
             $quotaleft = $parent->priv->{$cvar};
         }
         if ($value === "") {
             $value = $quotaleft;
         }
         $rvr = new FormVar();
         $rvr->type = "modify";
         $rvr->texttype = "text";
         $rvr->value = $value;
         $rvr->desc = $descr[2];
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotaname";
         $rvr->posttext = "Max {$quotaleft} {$totalstring}";
         $rvr->format = "integer";
         $ret[] = $rvr;
         $rvr = new FormVar();
         $rvr->type = "hidden";
         $rvr->value = $quotaleft;
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotamax";
         $ret[] = $rvr;
     }
     return $ret;
 }
コード例 #6
0
ファイル: lib.php プロジェクト: lonelywoolf/hypervm
function getDownloadServer()
{
    global $gbl, $sgbl, $login, $ghtml;
    static $local;
    $progname = $sgbl->__var_program_name;
    $maj = $sgbl->__ver_major_minor;
    if (!$local) {
        if (lfile_exists("__path_program_etc/.local_download")) {
            $local = 'on';
        } else {
            $local = 'off';
        }
    }
    if (isOn($local)) {
        $server = "http://192.168.1.100/download/{$progname}/{$maj}";
    } else {
        $server = "http://download.lxcenter.org/download/{$progname}/{$maj}";
    }
    /*
    	if ($sgbl->dbg < 0) {
    		$server = "http://download.lxlabs.com/download/$progname/$maj";
    	}
    */
    return $server;
}
コード例 #7
0
ファイル: lxlib.php プロジェクト: zseand/kloxo
function isQuotaGreaterThan($used, $priv)
{
    if (is_unlimited($priv)) {
        return false;
    }
    if (is_unlimited($used)) {
        return true;
    }
    if (isOn($priv)) {
        return false;
    }
    if (isOn($used)) {
        return true;
    }
    return $used > $priv ? true : false;
}
コード例 #8
0
ファイル: clientbaselib.php プロジェクト: zseand/kloxo
 static function continueForm($parent, $class, $param, $continueaction)
 {
     global $gbl, $sgbl, $login, $ghtml;
     $vlist = null;
     self::validate_client_name($param['nname']);
     // and issue #657 - Client user names with "__" are displayed with missing end
     if (stristr($param['nname'], '__')) {
         throw new lxexception("{$param['nname']}_use_double_underscore", 'nname');
     }
     // also check if /home/<client> exists --> prevent use like 'httpd' as client
     /*
     	if (lxfile_exists("/home/{$param['nname']}")) {
     		throw new lxexception("{$param['nname']}_dir_exists_under_home_dir", 'nname');
     
     	}
     */
     $reserved = array('apache', 'lighttpd', 'nginx', 'httpd', 'kloxo', 'lxadmin', 'lxlabs', 'lxcenter', 'nouser', 'tinydns', 'axfrdns', 'dnscache', 'dnslog', 'bind', 'named');
     foreach ($reserved as $r) {
         if ($param['nname'] === $r) {
             throw new lxexception("{$param['nname']}_dir_as_reserved_under_home_dir", 'nname');
         }
     }
     $param['nname'] = trim($param['nname']);
     if ($continueaction === 'server') {
         if (isOn($param['send_welcome_f'])) {
             if (!$param['contactemail']) {
                 throw new lxexception("sending_welcome_needs_contactemail", array('contactemail', 'send_welcome_f'), '');
             }
             // accept to more contact mail - http://forum.lxcenter.org/index.php?t=msg&goto=89118
             $contact = implode(",", str_replace(" ", "", $param['contactemail']));
             foreach ($contact as $c) {
                 if (!validate_email($c)) {
                     throw new lxexception("contactemail_is_not_valid_email_address", 'contactemail', '');
                 }
             }
         }
         dprintr($param);
         if ($param['resourceplan_f'] !== 'continue_without_plan') {
             $param['use_resourceplan_f'] = 'On';
             $ret['param'] = $param;
             $ret['action'] = 'addnow';
             return $ret;
         }
         $array = client::getPserverListPriv();
         foreach ((array) $array as $a) {
             $v = "{$a}_list";
             if (!$parent->listpriv->{$v}) {
                 //throw new lxException ("no_server_pool", $v);
             }
             $param["listpriv_s_{$a}_list"] = $parent->listpriv->{$v};
         }
         // This is a hack... This should now only happen in kloxo and not in hypervm.
         if (isset($param['listpriv_s_webpserver_list'])) {
             $weblist = $param['listpriv_s_webpserver_list'];
             $param['listpriv_s_ipaddress_list'] = $parent->getIpaddress($weblist);
             $nlist = domain::getDnsTemplateList($parent);
             $param['dnstemplate_list'] = $nlist;
         }
         $qvlist = getQuotaListForClass('client', $param);
         $vlist = lx_merge_good($vlist, $qvlist);
         $ret['action'] = "add";
         //$ret['continueaction'] = 'server';
         $ret['variable'] = $vlist;
         $ret['param'] = $param;
     }
     return $ret;
 }
コード例 #9
0
 static function continueForm($parent, $class, $param, $continueaction)
 {
     global $gbl, $sgbl, $login, $ghtml;
     $vlist = null;
     self::validate_client_name($param['nname']);
     $param['nname'] = trim($param['nname']);
     if ($continueaction === 'server') {
         if (isOn($param['send_welcome_f'])) {
             if (!$param['contactemail']) {
                 throw new lxexception("sending_welcome_needs_contactemail", array('contactemail', 'send_welcome_f'), '');
             }
             if (!validate_email($param['contactemail'])) {
                 throw new lxexception("contactemail_is_not_valid_email_address", 'contactemail', '');
             }
         }
         dprintr($param);
         if ($param['resourceplan_f'] !== 'continue_without_plan') {
             $param['use_resourceplan_f'] = 'On';
             $ret['param'] = $param;
             $ret['action'] = 'addnow';
             return $ret;
         }
         $array = client::getPserverListPriv();
         foreach ((array) $array as $a) {
             $v = "{$a}_list";
             if (!$parent->listpriv->{$v}) {
                 //throw new lxException ("no_server_pool", $v);
             }
             $param["listpriv_s_{$a}_list"] = $parent->listpriv->{$v};
         }
         // This is a hack... This should now only happen in kloxo and not in hypervm.
         if (isset($param['listpriv_s_webpserver_list'])) {
             $weblist = $param['listpriv_s_webpserver_list'];
             $param['listpriv_s_ipaddress_list'] = $parent->getIpaddress($weblist);
             $nlist = domain::getDnsTemplateList($parent);
             $param['dnstemplate_list'] = $nlist;
         }
         $qvlist = getQuotaListForClass('client', $param);
         $vlist = lx_merge_good($vlist, $qvlist);
         $ret['action'] = "add";
         //$ret['continueaction'] = 'server';
         $ret['variable'] = $vlist;
         $ret['param'] = $param;
     }
     return $ret;
 }
コード例 #10
0
function check_priv($parent, $class, $pvar, $v)
{
    if (cse($class, "template")) {
        foreach ($v as $pk => $pv) {
            $pvar->{$pk} = $pv;
        }
        return;
    }
    $parent = $parent->getClientParentO();
    foreach ($v as $pk => $pv) {
        if (cse($pk, "_time")) {
            $pvar->{$pk} = $pv;
            continue;
        }
        if (!$parent->isQuotaVariable($pk) && !$parent->isDeadQuotaVariable($pk)) {
            continue;
        }
        if (cse($pk, "_flag")) {
            if ($parent->priv->isOn($pk)) {
                $pvar->{$pk} = $pv;
                continue;
            }
            if (isOn($pv)) {
                throw new lxException("Parent Doesnt Have Permission for {$pk}", "frm_{$class}_c_priv_s_{$pk}", null);
            }
            $pvar->{$pk} = $pv;
            continue;
        }
        if (cse($pk, "_num") || cse($pk, "_usage")) {
            $tmp = $pv;
            if ($tmp < 0) {
                throw new lxException('has_to_be_greater_than_zero', "priv_s_{$pk}");
            }
            if (is_unlimited($parent->priv->{$pk})) {
                if (isHardQuotaVariableInClass($class, $pk)) {
                    $parent->used->{$pk} -= $pvar->{$pk};
                    $parent->used->{$pk} += $pv;
                    $parent->setUpdateSubaction();
                }
                $pvar->{$pk} = $pv;
                continue;
            }
            if (is_unlimited($pv)) {
                $desc = getNthToken(get_v_descr($parent, $pk), 2);
                if (!$desc) {
                    $desc = $pk;
                }
                throw new lxException("quota_exceeded", "priv_s_{$pk}", $desc);
            }
            if (isHardQuotaVariableInClass($class, $pk)) {
                $parent->used->{$pk} -= $pvar->{$pk};
            }
            dprintr($parent->used);
            if ($tmp > $parent->getEffectivePriv($pk, $class)) {
                dprint("After throw");
                $desc = getNthToken(get_v_descr($parent, $pk), 1);
                if (!$desc) {
                    $desc = $pk;
                }
                throw new lxException("quota_exceeded", "priv_s_{$pk}", $desc);
            }
            dprint("No throw.. {$tmp} <br> ");
            if (isHardQuotaVariableInClass($class, $pk)) {
                $parent->used->{$pk} += $pv;
                $parent->setUpdateSubaction();
            }
            $pvar->{$pk} = $pv;
        }
    }
}
コード例 #11
0
ファイル: pservercorelib.php プロジェクト: soar-team/kloxo
 function isSelect()
 {
     if ($this->nname === "localhost") {
         return false;
     }
     if (isOn($this->createUsed())) {
         return false;
     }
     return $this->getParentO()->isAdmin();
 }
コード例 #12
0
ファイル: generallib.php プロジェクト: zseand/kloxo
 function updateselfbackupconfig($param)
 {
     if (isOn($param['selfbackupparam_b-selfbackupflag'])) {
         $fn = ftp_connect($param['selfbackupparam_b-ftp_server']);
         $mylogin = ftp_login($fn, $param['selfbackupparam_b-rm_username'], $param['selfbackupparam_b-rm_password']);
         if (!$mylogin) {
             $p = error_get_last();
             throw new lxException('could_not_connect_to_ftp_server', '', $p);
         }
     }
     return $param;
 }
コード例 #13
0
ファイル: ffilelib.php プロジェクト: lonelywoolf/hypervm
 function updateToggle_dot($param)
 {
     global $gbl, $sgbl, $login, $ghtml;
     $v = $gbl->getSessionV("frm_show_dot");
     if (isOn($v)) {
         $v = 'off';
     } else {
         $v = 'on';
     }
     $gbl->setSessionV("frm_show_dot", $v);
 }
コード例 #14
0
ファイル: domainlib.php プロジェクト: zseand/kloxo
 function generateDomainKey($dontwasflag)
 {
     global $gbl, $sgbl, $login, $ghtml;
     $mmail = $this->getObject('mmail');
     $dns = $this->getObject('dns');
     $domainkeyflag = db_get_value('servermail', $mmail->syncserver, 'domainkey_flag');
     if (!isOn($domainkeyflag)) {
         $dns->RemoveDomainKey();
         if ($dontwasflag) {
             return;
         }
         $dns->setUpdateSubaction('full_update');
         $dns->was();
         return;
     }
     $dkey = rl_exec_in_driver($mmail, 'mmail', 'generateDKey', array($this->nname));
     if (!$dkey) {
         return;
     }
     $dns->addDomainKey($dkey);
     if ($dontwasflag) {
         return;
     }
     $dns->setUpdateSubaction('full_update');
     $dns->was();
 }
コード例 #15
0
ファイル: vpslib.php プロジェクト: digideskio/hypervm
 static function continueForm($parent, $class, $param, $continueaction)
 {
     global $gbl, $sgbl, $login, $ghtml;
     /*
     	if(!eregi("^[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,5})$", $param['nname'])) { 
     		throw new lxException('invalid_domain_name', 'nname');
     	}
     */
     if (!cse($param['nname'], ".vm")) {
         $param['nname'] .= ".vm";
     }
     $param['nname'] = strtolower($param['nname']);
     if ($param['one_ipaddress_f']) {
         full_validate_ipaddress($param['one_ipaddress_f']);
     }
     /*
     	if (!preg_match("/[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+]/i", $param['nname'])) {
     		throw new lxException('domain_name_invalid', 'nname');
     	}
     */
     if (isOn($param['send_welcome_f'])) {
         if (!$param['contactemail']) {
             throw new lxexception("sending_welcome_needs_contactemail", array('contactemail', 'send_welcome_f'), '');
         }
         if (!validate_email($param['contactemail'])) {
             throw new lxexception("contactemail_is_not_valid_email_address", 'contactemail', '');
         }
     }
     if ($param['resourceplan_f'] === 'continue_without_plan') {
         $vlist['__c_subtitle_quota'] = 'Quota';
         $qvlist = getQuotaListForClass('vps');
         $vlist = lx_merge_good($vlist, $qvlist);
         $ret['param'] = $param;
         $ret['variable'] = $vlist;
         $ret['action'] = "Add";
     } else {
         $template = getFromAny(array($login, $parent), 'resourceplan', $param['resourceplan_f']);
         $param['use_resourceplan_f'] = 'on';
         if (!$template) {
             throw new lxexception("the_template_doesnt_exist", 'resourceplan_f', $param['resourceplan_f']);
         }
         $ret['action'] = 'addnow';
         $ret['param'] = $param;
         return $ret;
     }
     return $ret;
 }
コード例 #16
0
ファイル: lxbackuplib.php プロジェクト: digideskio/hypervm
 function updateFtp_conf($param)
 {
     $param['rm_username'] = fix_meta_character($param['rm_username']);
     if (is_star_password($param['rm_password'])) {
         $param['rm_password'] = $this->rm_password;
     }
     if (isOn($param['upload_to_ftp']) && !isOn($param['dont_verify_ftp_f'])) {
         $fn = ftp_connect($param['ftp_server']);
         $mylogin = ftp_login($fn, $param['rm_username'], $param['rm_password']);
         if (!$mylogin) {
             $p = error_get_last();
             throw new lxException('could_not_connect_to_ftp_server', '', $p);
         }
     }
     return $param;
 }
コード例 #17
0
ファイル: lxclient.php プロジェクト: lonelywoolf/hypervm
 function getCPToggleUrl(&$alist)
 {
     if ($this->isLogin()) {
         return;
     }
     if (isOn($this->cpstatus)) {
         $alist[] = "a=update&sa=cpdisable";
     } else {
         $alist[] = "a=update&sa=cpenable";
     }
 }
コード例 #18
0
ファイル: smessagelib.php プロジェクト: lonelywoolf/hypervm
 static function add($parent, $class, $param)
 {
     $ticketconfig = $parent->getObject('ticketconfig');
     $cmlist = explode(',', $param['text_sent_to_cmlist']);
     $cl = $parent->getChildListFilter('L');
     foreach ($cl as &$c) {
         $c = $parent->getChildNameFromDes($c);
         $child = $parent->getList($c);
         foreach ((array) $child as $q) {
             if (!array_search_bool('--all-children--', $cmlist)) {
                 if (array_search_bool(self::getNameRep($q), $cmlist)) {
                     $list[$q->getClName()] = $q;
                 }
             } else {
                 $list[$q->getClName()] = $q;
             }
         }
     }
     $param['text_sent_to_cmlist'] = implode(',', array_keys($list));
     $param['text_sent_to_cmlist'] = "," . $param['text_sent_to_cmlist'] . ",";
     $param['ddate'] = time();
     $param['nname'] = getIncrementedValueFromTable("smessage", "nname");
     $param['made_by'] = $parent->getClName();
     $param['text_readby_cmlist'] = ",,";
     $param['name_made_by'] = $parent->nname;
     if (isOn($param['send_mail_f'])) {
         self::send_mail_to($list, $param);
     }
     return $param;
 }
コード例 #19
0
ファイル: clientlib.php プロジェクト: zseand/kloxo
 static function continueFormClientFinish($parent, $class, $param, $continueaction)
 {
     $weblist = explode(',', $param['listpriv_s_webpserver_list']);
     //$vlist['dbtype_list'] = null;
     $vlist['ipaddress_list'] = array('Q', $parent->getIpaddress($weblist));
     if (!isOn($param['priv_s_dns_manage_flag'])) {
         $dlist = $parent->getList('dnstemplate');
         $nlist = get_namelist_from_objectlist($dlist);
         $vlist['dnstemplate_list'] = array('U', $nlist);
     }
     $ret['action'] = 'add';
     $ret['variable'] = $vlist;
     $ret['param'] = $param;
     return $ret;
 }
コード例 #20
0
ファイル: lxclass.php プロジェクト: hypervm-ng/hypervm-ng
 function getToggleUrl(&$alist)
 {
     if ($this->isLogin() || $this->isAdmin()) {
         return;
     }
     if (isOn($this->status)) {
         $alist[] = "a=update&sa=disable";
     } else {
         $alist[] = "a=update&sa=enable";
     }
 }
コード例 #21
0
ファイル: lxbackuplib.php プロジェクト: soar-team/kloxo
 function updateFtp_conf($param)
 {
     $param['rm_username'] = fix_meta_character($param['rm_username']);
     if (is_star_password($param['rm_password'])) {
         $param['rm_password'] = $this->rm_password;
     }
     if (isOn($param['upload_to_ftp']) && !isOn($param['dont_verify_ftp_f'])) {
         $fn = ftp_connect($param['ftp_server']);
         $mylogin = ftp_login($fn, $param['rm_username'], $param['rm_password']);
         if (!$mylogin) {
             $p = error_get_last();
             throw new lxException('could_not_connect_to_ftp_server', '', $p);
         }
     }
     /*
     	ftp_pasv($fn, true);
     	$fp = lfopen($file, "r");
     	$ret = ftp_fput($fn, $uploadfilename, $fp, FTP_BINARY);
     	if (!$ret) {
     		throw new lxException('could_not_upload_file', '', $object->ftp_server);
     	}
     */
     return $param;
 }
コード例 #22
0
ファイル: lib.php プロジェクト: zseand/kloxo
function setFreshClam($nolog = null)
{
    global $gbl, $sgbl, $login, $ghtml;
    // need this code until have kloxo database sync between master and slave
    if ($sgbl->is_this_slave()) {
        return;
    }
    if (!$nolog) {
        log_cleanup("Checking freshclam (virus scanner)");
    }
    $path = "/var/qmail/supervise/clamd";
    if (!isOn(db_get_value("servermail", "localhost", "virus_scan_flag")) || lxfile_exists("/var/cache/kloxo/kloxo-install-firsttime.flg")) {
        system("chkconfig freshclam off > /dev/null 2>&1");
        system("/etc/init.d/freshclam stop >/dev/null 2>&1");
        if (!$nolog) {
            log_cleanup("- Disabled freshclam service");
        }
        system("svc -d {$path} {$path}/log > /dev/null 2>&1");
        if (file_exists("{$path}/run.stop")) {
            lxfile_mv("{$path}/run.stop", "{$path}/down");
            lxfile_mv("{$path}/log/run.stop", "{$path}/log/down");
        } else {
            if (file_exists("{$path}/run")) {
                lxfile_mv("{$path}/run", "{$path}/down");
                lxfile_mv("{$path}/log/run", "{$path}/log/down");
            }
        }
    } else {
        system("chkconfig freshclam on > /dev/null 2>&1");
        system("/etc/init.d/freshclam start >/dev/null 2>&1");
        if (!$nolog) {
            log_cleanup("- Enabled freshclam service");
        }
        lxfile_mv("{$path}/down", "{$path}/run");
        lxfile_mv("{$path}/log/down", "{$path}/log/run");
        system("svc -u {$path} {$path}/log > /dev/null 2>&1");
    }
    // Issue #658
    if (lxfile_exists("/usr/share/clamav/main.cld")) {
        lxfile_rm("/usr/share/clamav/main.cvd");
    }
}