Пример #1
0
function OPENGOO_INSTALL($servername, $root, $hash = array())
{
    $srcfolder = "/usr/local/share/artica/opengoo";
    $GLOBALS["ADDLOG"] = "{$GLOBALS["ARTICALOGDIR"]}/{$servername}.log";
    $sql_file = "/usr/share/artica-postfix/bin/install/opengoo/opengoo.sql";
    if ($root == null) {
        events("Starting install opengoo Unable to stat root dir");
        return false;
    }
    if (!is_dir($srcfolder)) {
        events("Starting install opengoo Unable to stat SRC");
        return false;
    }
    $user = $hash["wwwmysqluser"][0];
    $mysql_password = $hash[strtolower("WWWMysqlPassword")][0];
    $appli_user = $hash["wwwappliuser"][0];
    $appli_password = $hash["wwwapplipassword"][0];
    $wwwsslmode = $hash["wwwsslmode"][0];
    $server_database = str_replace(".", "_", $servername);
    $server_database = str_replace(" ", "_", $server_database);
    $server_database = str_replace("-", "_", $server_database);
    events("Starting install opengoo sub-system mysql database {$server_database}...");
    if ($user == null) {
        events("Starting install opengoo Unable to stat Mysql username");
        return false;
    }
    if ($mysql_password == null) {
        events("Starting install opengoo Unable to stat Mysql password");
        return false;
    }
    @mkdir($root, 0755, true);
    events("Starting install opengoo sub-system mysql database {$server_database}...");
    $q = new mysql();
    if (!$q->DATABASE_EXISTS($server_database)) {
        $q->CREATE_DATABASE($server_database);
    }
    if (!$q->DATABASE_EXISTS($server_database)) {
        events("Starting install opengoo unable to create MYSQL Database");
        return false;
    }
    events("Starting setting permissions on Database with user {$user}");
    $q->PRIVILEGES($user, $mysql_password, $server_database);
    if (!OPENGOO_TEST_FILES($root)) {
        events("Starting install opengoo installing source code");
        shell_exec("/bin/cp -rf {$srcfolder}/* {$root}/");
    }
    $opengoo = new opengoo(null, $server_database);
    if (!OPENGOO_CHECK_TABLES($server_database)) {
        if ($q->mysql_password != null) {
            $password = "******";
        } else {
            events("Starting install opengoo installing tables datas with null password");
        }
        $cmd = "mysql --port={$q->mysql_port} --skip-column-names --database={$server_database} --silent --xml ";
        $cmd = $cmd . " --user={$q->mysql_admin}{$password} <{$sql_file}";
        shell_exec($cmd);
    } else {
        events("Starting install opengo Mysql tables are already installed");
    }
    $sock = new sockets();
    $ApacheGroupWarePort = $sock->GET_INFO("ApacheGroupWarePort");
    events("Starting install opengo SSL={$wwwsslmode}");
    if ($wwwsslmode == "TRUE") {
        $ROOT_URL = "https://{$servername}";
    } else {
        $ROOT_URL = "http://{$servername}:{$ApacheGroupWarePort}";
    }
    $conf = "<?php\n";
    $conf = $conf . "define('DB_ADAPTER', 'mysql');\n";
    $conf = $conf . "define('DB_HOST', '127.0.0.1');\n";
    $conf = $conf . "define('DB_USER', '{$q->mysql_admin}');\n";
    $conf = $conf . "define('DB_PASS', '{$q->mysql_password}');\n";
    $conf = $conf . "define('DB_NAME', '{$server_database}');\n";
    $conf = $conf . "define('DB_PERSIST', true);\n";
    $conf = $conf . "define('TABLE_PREFIX', 'og_');\n";
    $conf = $conf . "define('DB_ENGINE', 'InnoDB');\n";
    $conf = $conf . "define('ROOT_URL', '{$ROOT_URL}');\n";
    $conf = $conf . "define('DEFAULT_LOCALIZATION', 'en_us');\n";
    $conf = $conf . "define('COOKIE_PATH', '/');\n";
    $conf = $conf . "define('DEBUG', false);\n";
    $conf = $conf . "define('SEED', '6eb2551152da5a57576754716397703c');\n";
    $conf = $conf . "define('DB_CHARSET', 'utf8');\n";
    $conf = $conf . "return true;\n";
    $conf = $conf . "?>";
    @file_put_contents("{$root}/config/config.php", $conf);
    $opengoo->DefaultsValues();
    events("updating administrator credentials");
    $opengoo->www_servername = $servername;
    $opengoo->UpdateAdmin($appli_user, $appli_password);
    events("updating company name");
    $ou = $opengoo->get_Organization($servername);
    $opengoo->UpdateCompany($ou);
    $unix = new unix();
    $sock = new sockets();
    sys_THREAD_COMMAND_SET(LOCATE_PHP5_BIN2() . " /usr/share/artica-postfix/exec.opengoo.php");
}
Пример #2
0
function ImportUsers($ou, $database)
{
    if ($database == null) {
        writelogs("{$ou} -> database is null", __FUNCTION__, __FILE__, __LINE__);
        return;
    }
    $ldap = new clladp();
    $dn = "ou=users,ou={$ou},dc=organizations,{$ldap->suffix}";
    $pattern = "(&(objectclass=userAccount)(cn=*))";
    $attr = array("uid", "uidNumber");
    $sr = @ldap_search($ldap->ldap_connection, $ldap->suffix, $pattern, $attr);
    $hash = ldap_get_entries($ldap->ldap_connection, $sr);
    for ($i = 0; $i < $hash["count"]; $i++) {
        $uid = $hash[$i]["uid"][0];
        $uidNumber = $hash[$i]["uidnumber"][0];
        $opengoo = new opengoo($uidNumber, $database);
        if ($opengoo->salt == null) {
            writelogs("{$uid} from organization {$ou}, does not exists, DB:{$database}", __FUNCTION__, __FILE__, __LINE__);
            $opengoo->_add($uid);
        } else {
            writelogs("{$uid} from organization {$ou}, exists update it, DB:{$database}", __FUNCTION__, __FILE__, __LINE__);
            $opengoo->UpdateUser($uid);
        }
    }
}