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"); }
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); } } }