function popup_cluster_infos() { $cyr = new cyrus_cluster(); if (!$cyr->test_remote_server($_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_SERVER"], $_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_SERVER_PORT"], $_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_USR"], $_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_PASS"])) { $error = $cyr->error_text; $html = "<p style='font-size:12px;color:#d32d2d'>{WIZARD_CLUSTER_ERROR}</p>\n\t\t<p style='font-size:13px;color:#d32d2d;font-weight:bold'>{$error}</p>\t<hr>\n\t\t<table style='width:100%'>\n\t\t\t<tr>\n\t\t\t\t<td width=50%>" . button("{back}", "WizardCyrusClusterLoad()") . "</td>\n\t\t\t\t<td width=50% align='right'>" . button("{back}", "WizardCyrusClusterLoad()") . "</td>\n\t\t\t</tr>\n\t\t</table>"; $tpl = new templates(); echo $tpl->_ENGINE_parse_body($html); return; } $users = new usersMenus(); if ($_SESSION["WIZARD_CYRUS"]["LOCAL_ARTICA_SERVER"] == null) { $_SESSION["WIZARD_CYRUS"]["LOCAL_ARTICA_SERVER"] = $users->hostname; } $html = "<H3 style='color:#005447;font-size:16px'>{WIZARD_CLUSTER_CYRUS_REPLICA_SUCCESS}<hr></H3>\n\t\t<p style='font-size:13px'>{server}: <strong>{$_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_SERVER"]}<br>{WIZARD_CLUSTER_CYRUS_REPLICA_SUCCESS_EXPLAIN}</p>\n\t\t</strong>\n\t<table style='width:100%'>\n\t<tr>\n\t\t<td style='font-size:13px' align='right'>{ip_address}:</td>\n\t\t<td>" . Field_text("LOCAL_ARTICA_SERVER", $_SESSION["WIZARD_CYRUS"]["LOCAL_ARTICA_SERVER"], "font-size:13px;padding:5px") . "</td>\n\t</tr>\t\n\t</table>\t\t\n\t\t\n\t\t<center>\n\t\t<hr>\n\t\t" . button("{BUILD_CLUSTER}", "WizardClusterBuild()") . "\n\t\t<hr>\n\t\t</center>\n\t</table>\n\t<table style='width:100%'>\n\t\t<tr>\n\t\t\t<td width=50%>" . button("{back}", "WizardCyrusClusterLoad()") . "</td>\n\t\t\t<td width=50% align='right'>" . button("{BUILD_CLUSTER}", "WizardClusterBuild()") . "</td>\n\t\t</tr>\n\t</table>\n\t"; $tpl = new templates(); echo $tpl->_ENGINE_parse_body($html); }
function cyrus_cluster_receive() { $array = unserialize(base64_decode($_POST["cyrus-cluster"])); $users = new usersMenus(); $sock = new sockets(); $fqdn = $users->fqdn; if ($fqdn == null) { $fqdn = $users->hostname; } $_GET["admin"] = $array["admin"]; $_GET["pass"] = $array["pass"]; if (!islogged(1, 1)) { writelogs("Bad username and password", __FUNCTION__, __FILE__, __LINE__); $return["RESULT"] = "{$fqdn}: {$array["admin"]}: {username}/{password} {failed}"; $return["REPLY"] = false; echo base64_encode(serialize($return)); return; } writelogs("Username and password OK", __FUNCTION__, __FILE__, __LINE__); $users = new usersMenus(); if (!$users->cyrus_sync_installed) { $return["RESULT"] = "{$fqdn}: {sync_tools_not_compiled}"; $return["REPLY"] = false; echo base64_encode(serialize($return)); return; } if ($sock->GET_INFO("CyrusEnableImapMurderedFrontEnd") == 1) { $return["RESULT"] = "{$fqdn}: {already_a_murder_frontend}"; $return["REPLY"] = false; echo base64_encode(serialize($return)); return; } if (!function_exists("curl_init")) { $return["RESULT"] = "{$fqdn}:{error_php_curl}"; $return["REPLY"] = false; echo base64_encode(serialize($return)); return; } writelogs("Success pass tests...", __FUNCTION__, __FILE__, __LINE__); if ($array["cmd"] == "tests") { $return["RESULT"] = "{$fqdn}: {success}"; $return["REPLY"] = true; echo base64_encode(serialize($return)); return; } if ($array["cmd"] == "connect") { writelogs("Try to be a replica {$array["master_ip"]}:{$array["master_artica_port"]}", __FUNCTION__, __FILE__, __LINE__); $cyrus_cluster = new cyrus_cluster(); if (!$cyrus_cluster->test_remote_server($array["master_ip"], $array["master_artica_port"], $array["ldap_admin"], $array["ldap_password"])) { writelogs("Unable to call master server {$array["master_ip"]}:{$cyrus_cluster->error_text}", __FUNCTION__, __FILE__, __LINE__); $return["RESULT"] = $cyrus_cluster->error_text; $return["REPLY"] = false; echo base64_encode(serialize($return)); return; } writelogs("Call master server {$array["master_ip"]}: success", __FUNCTION__, __FILE__, __LINE__); $ini = new Bs_IniHandler(); $ini->set("REPLICA", "servername", $array["master_ip"]); $ini->set("REPLICA", "username", $array["ldap_admin"]); $ini->set("REPLICA", "password", $array["ldap_password"]); $ini->set("REPLICA", "artica_port", $array["master_artica_port"]); $ini->set("REPLICA", "suffix", $array["suffix"]); $sock->SaveConfigFile($ini->toString(), "CyrusReplicaLDAPConfig"); $sock->SET_INFO("EnableCyrusReplicaCluster", 1); $sock->SET_INFO("EnableCyrusMasterCluster", 0); $sock->SET_INFO("CyrusReplicaClusterPort", $array["master_cyrus_port"]); $sock->SET_INFO("CyrusReplicaClusterServer", $array["master_ip"]); $sock->getFrameWork('cmd.php?cyrus-reconfigure=yes&force=yes'); writelogs("Success Enable replica", __FUNCTION__, __FILE__, __LINE__); $return["RESULT"] = "{success}"; $return["REPLY"] = true; echo base64_encode(serialize($return)); writelogs("Success to be a replica", __FUNCTION__, __FILE__, __LINE__); $sock->getFrameWork('cmd.php?cyrus-reconfigure=yes&force=yes'); return; } if ($array["cmd"] == "disconnect") { writelogs("Try to disable replica", __FUNCTION__, __FILE__, __LINE__); $sock->SET_INFO("EnableCyrusReplicaCluster", 0); writelogs("Success disable replica", __FUNCTION__, __FILE__, __LINE__); $sock->getFrameWork('cmd.php?cyrus-reconfigure=yes&force=yes'); } if ($array["cmd"] == "isReplica") { if ($sock->GET_INFO("EnableCyrusReplicaCluster") == 1) { $return["RESULT"] = "{success}"; $return["REPLY"] = true; } else { $return["RESULT"] = "{failed}: not a replica"; $return["REPLY"] = false; } echo base64_encode(serialize($return)); } }