function build(){
	$sock=new sockets();
	$users=new usersMenus();
	$ini=new Bs_IniHandler();
	
	$_SESSION["WIZARD_CYRUS"]["LOCAL_ARTICA_SERVER"]=$_GET["LOCAL_ARTICA_SERVER"];
	
	$ini->_params["REPLICA"]["servername"]=$_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_SERVER"];
	$ini->_params["REPLICA"]["artica_port"]=$_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_SERVER_PORT"];
	$ini->_params["REPLICA"]["username"]=$_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_USR"];
	$ini->_params["REPLICA"]["password"]=$_SESSION["WIZARD_CYRUS"]["REMOTE_ARTICA_PASS"];
	$ini->_params["REPLICA"]["master_ip"]=$_SESSION["WIZARD_CYRUS"]["LOCAL_ARTICA_SERVER"];
	$sock=new sockets();
	$sock->SaveConfigFile($ini->toString(),"CyrusClusterReplicaInfos");
	$cyrus=new cyrus_cluster();
	if(!$cyrus->notify_replica()){
		$tpl=new templates();
		echo $tpl->javascript_parse_text("{failed}:$cyrus->error_text");
		$sock->SET_INFO("EnableCyrusMasterCluster",0);
		$sock->SET_INFO("CyrusClusterPort","2005");
		$sock->SET_INFO("CyrusClusterID",1);		
		return;	
		
	}
	
	$sock->SET_INFO("EnableCyrusMasterCluster",1);
	$sock->SET_INFO("CyrusClusterPort","2005");
	$sock->SET_INFO("CyrusClusterID",1);	
	
	
}
function DelteReplica()
{
    $cyrus = new cyrus_cluster();
    if (!$cyrus->notify_disable_replica()) {
        $tpl = new templates();
        echo $tpl->javascript_parse_text("{failed}:{$cyrus->error_text}");
        return;
    }
    $sock = new sockets();
    $sock->SET_INFO("EnableCyrusMasterCluster", 0);
    $sock->getFrameWork('cmd.php?cyrus-reconfigure=yes&force=yes');
}
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));
    }
}