示例#1
0
function restore($id, $target_resource, $db)
{
    $sql = "SELECT * FROM dar_index where filekey='{$id}'";
    $q = new mysql();
    $ligne = @mysql_fetch_array($q->QUERY_SQL($sql, 'artica_backup'));
    $ressource = $ligne["mount_md5"];
    $sourcefile = $ligne["filepath"];
    if ($_GET["RESTORE_DIR"]) {
        $sourcefile = dirname($sourcefile);
    }
    $ini = new Bs_IniHandler("/tmp/restore.{$id}.ini");
    $ini->set('INFO', "backup_resource", $ressource);
    $ini->set('INFO', "target_resource", $target_resource);
    $ini->set('INFO', "database", $db);
    $ini->set('INFO', "source_path", $sourcefile);
    $ini->saveFile("/tmp/restore.{$id}.ini");
    $ini = new Bs_IniHandler(dirname(__FILE__) . "/ressources/logs/exec.dar.find.restore.ini");
    $ini->set("STATUS", "progress", 15);
    $ini->set("STATUS", "text", "{Executing}...");
    $ini->saveFile(dirname(__FILE__) . "/ressources/logs/exec.dar.find.restore.ini");
    $cmd = "/usr/share/artica-postfix/bin/artica-backup --dar-restore-path /tmp/restore.{$id}.ini";
    events($cmd);
    system($cmd);
}
示例#2
0
function interface_events($product, $line)
{
    $ini = new Bs_IniHandler();
    if (is_file("/usr/share/artica-postfix/ressources/logs/interface.events")) {
        $ini->loadFile("/usr/share/artica-postfix/ressources/logs/interface.events");
    }
    $ini->set($product, 'error', $line);
    $ini->saveFile("/usr/share/artica-postfix/ressources/logs/interface.events");
    @chmod("/usr/share/artica-postfix/ressources/logs/interface.events", 0755);
}
示例#3
0
function SetStatus($filetype, $max, $current, $startedAT)
{
    $ini = new Bs_IniHandler();
    $ini->set("PROGRESS", "type", $filetype);
    $ini->set("PROGRESS", "max", $max);
    $ini->set("PROGRESS", "current", $current);
    $ini->set("PROGRESS", "time", date('Y-m-d H:i:s'));
    $ini->set("PROGRESS", "pid", getmypid());
    $ini->set("PROGRESS", "starton", $startedAT);
    $ini->saveFile("/usr/share/artica-postfix/ressources/logs/postfix-logger.ini");
    @chmod("/usr/share/artica-postfix/ressources/logs/postfix-logger.ini", 0777);
}
示例#4
0
function BuildTunServer(){
LoadArgvs();
   $unix=new unix();
   if(isset($GLOBALS["CLASS_SOCKETS"])){$sock=$GLOBALS["CLASS_SOCKETS"];}else{$GLOBALS["CLASS_SOCKETS"]=new sockets();$sock=$GLOBALS["CLASS_SOCKETS"];}
   $servername=$unix->hostname_g();	
   $routess=array();
   $duplicate_cn=null;
 
   
  if(preg_match("#^(.+?)\.#",$servername,$re)){$servername=$re[1];}
   $servername=strtoupper($servername);       
   echo "Starting......: OpenVPN building settings for $servername...\n";
   
   
   
   $ini=new Bs_IniHandler();
   
   $ini->loadString($sock->GET_INFO("ArticaOpenVPNSettings"));
   if(!isset($ini->_params["GLOBAL"]["ENABLE_BRIDGE_MODE"])){$ini->_params["GLOBAL"]["ENABLE_BRIDGE_MODE"]=0;}
   if(!isset($ini->_params["GLOBAL"]["IP_START"])){$ini->_params["GLOBAL"]["IP_START"]="10.8.0.0";}
   if(!isset($ini->_params["GLOBAL"]["NETMASK"])){$ini->_params["GLOBAL"]["NETMASK"]="255.255.255.0";}
   
   
   if($ini->_params["GLOBAL"]["ENABLE_BRIDGE_MODE"]==1){
   		echo "Starting......: OpenVPN building settings mode bridge enabled...\n";
   		BuildBridgeServer();
   		return;
   }
   
   
   $IPTABLES_ETH=$GLOBALS["IPTABLES_ETH"];
   $DEV_TYPE=$ini->_params["GLOBAL"]["DEV_TYPE"];
   $port=$ini->_params["GLOBAL"]["LISTEN_PORT"];
   $IP_START=$ini->_params["GLOBAL"]["IP_START"];
   $NETMASK=$ini->_params["GLOBAL"]["NETMASK"];
   $bind_addr=$ini->_params["GLOBAL"]["LOCAL_BIND"];
   $LISTEN_PROTO=$ini->_params["GLOBAL"]["LISTEN_PROTO"];
   if($LISTEN_PROTO==null){$LISTEN_PROTO="udp";}
   if($LISTEN_PROTO=="udp"){$proto="--proto udp";}else{$proto="--proto tcp-server";}
   
    
   if(trim($port)==null){$port=1194;}
   if(trim($IP_START)==null){$IP_START="10.8.0.0";}
   if(trim($NETMASK)==null){$NETMASK="255.255.255.0";}
   
$nic=new networking();

while (list ($num, $ligne) = each ($nic->array_TCP) ){
	if($ligne==null){continue;}
		$eths[][$num]=$num;
		$ethi[$num]=$ligne;
	} 

if($IPTABLES_ETH<>null){
		echo "Starting......: OpenVPN linked to $IPTABLES_ETH ({$ethi[$IPTABLES_ETH]})...\n";
		$IPTABLES_ETH_ROUTE=IpCalcRoute($ethi[$IPTABLES_ETH]);
}else{
	echo "Starting......: OpenVPN no local NIC linked...\n";
}
	
   $ca='/etc/artica-postfix/openvpn/keys/allca.crt';
   $dh='/etc/artica-postfix/openvpn/keys/dh1024.pem';
   $key="/etc/artica-postfix/openvpn/keys/vpn-server.key";
   $crt="/etc/artica-postfix/openvpn/keys/vpn-server.crt";
   $route='';
   
   //$IPTABLES_ETH_IP=

if (is_file('/etc/artica-postfix/settings/Daemons/OpenVPNRoutes')){
   $routes=(explode("\n",@file_get_contents("/etc/artica-postfix/settings/Daemons/OpenVPNRoutes")));
   while (list ($num, $ligne) = each ($routes) ){
   	if(!preg_match("#(.+?)\s+(.+)#",$ligne,$re)){continue;}
   	$routess[]="--push \"route {$re[1]} {$re[2]}\"";
   }
}
$GetRoutes=GetRoutes();
$routess=$routess+$GetRoutes;



if(count($routess)==0){
	if($IPTABLES_ETH_ROUTE<>null){
		echo "Starting......: OpenVPN IP adding default route \"$IPTABLES_ETH_ROUTE\"\n";
		$routess[]="--push \"route $IPTABLES_ETH_ROUTE\"";
	}
  }else{
  	echo "Starting......: OpenVPN IP adding ".count($routess)." routes\n";
  }
   

	
   if(trim($bind_addr)<>null){
   	$local=" --local $bind_addr";
   	echo "Starting......: OpenVPN IP bind $bind_addr\n";
   }
   
   $IP_START=FIX_IP_START($IP_START,$local);
   $ini->set("GLOBAL","IP_START",$IP_START); 	
  
   if(preg_match("#(.+?)\.([0-9]+)$#",$IP_START,$re)){
   	$calc_ip=" {$re[1]}.0";
   	$calc_ip_end="{$re[1]}.254";
   	echo "Starting......: OpenVPN IP pool from {$re[1]}.2 to {$re[1]}.254 mask:$NETMASK\n";
   	$server_ip="{$re[1]}.1";
   	$IP_START_PREFIX=$re[1];
   }

   if($NETMASK==null){
			$ip=new IP();
			$cdir=$ip->ip2cidr($calc_ip,$calc_ip_end);
			$arr=$ip->parseCIDR($cdir);
			$rang=$arr[0];
			$netbit=$arr[1];
			$ipv=new ipv4($calc_ip,$netbit);
			$NETMASK=$ipv->netmask();	   
			if($NETMASK=="255.255.255.255"){$NETMASK="255.255.255.0";}		
   			echo "Starting......: OpenVPN Netmask is null for the range $calc_ip, assume $NETMASK\n";
   			$ini->set("GLOBAL","NETMASK",$NETMASK);
   	}
   	
	$OpenVpnPasswordCert=$sock->GET_INFO("OpenVpnPasswordCert");
	if($OpenVpnPasswordCert==null){$OpenVpnPasswordCert="MyKey";}
   
	$askpass=null;
   	if(is_file("/etc/artica-postfix/openvpn/keys/password")){
   		$askpass="******";
   	}
   	
   	$ifconfig_pool_persist=" --ifconfig-pool-persist /etc/artica-postfix/openvpn/ipp.txt ";
   	
 	if(isset($GLOBALS["OPENVPNPARAMS"]["duplicate-cn"])){
 		echo "Starting......: OpenVPN duplicate-cn is enabled\n";
 		$duplicate_cn=" --duplicate-cn ";
 		$ifconfig_pool_persist=null;
 	}
 	
 	if(isset($GLOBALS["OPENVPNPARAMS"]["script-security"])){
 		echo "Starting......: OpenVPN script-security is enabled\n";
 		$script_security=" --script-security 2";
 	} 	
 	
	if(!is_dir("/etc/openvpn/cdd")){@mkdir("/etc/openvpn/cdd");}
	$already=array();
 	echo "Starting......: OpenVPN get remote sites routes...\n";
 	$sql="SELECT sitename,IP_START,netmask,remote_site_routes,FixedIPAddr FROM vpnclient WHERE connexion_type=1";
 	$q=new mysql();
	$results=$q->QUERY_SQL($sql,"artica_backup");
	if(!$q->ok){echo2("Starting......: OpenVPN : $q->mysql_error");}
 	while($ligne=mysql_fetch_array($results,MYSQL_ASSOC)){
 		$iroute=array();
 		$sitename=$ligne["sitename"];
 		$FixedIPAddr=$ligne["FixedIPAddr"];
 		if(!is_numeric($FixedIPAddr)){$FixedIPAddr=0;}
 		
 		if($IP_START_PREFIX<>null){
 			if($FixedIPAddr>2){
 				if($FixedIPAddr<255){
 					echo "Starting......: OpenVPN $sitename $IP_START_PREFIX.$FixedIPAddr fixed IP address\n";
 					$iroute[]="ifconfig-push $IP_START_PREFIX.$FixedIPAddr $IP_START_PREFIX.2";
 				}
 			}
 		}
 		
 		if(!isset($already[$ligne["IP_START"]])){
 			echo "Starting......: OpenVPN $sitename ({$ligne["IP_START"]} {$ligne["netmask"]})\n";
 			$rou[]=" --route {$ligne["IP_START"]} {$ligne["netmask"]}";
 			$iroute[]="iroute {$ligne["IP_START"]} {$ligne["netmask"]}";
 			$already[$ligne["IP_START"]]=true;
 		}
 		
 		$remote_site_routes=unserialize(base64_decode($ligne["remote_site_routes"]));
		while (list ($num, $site_mask) = each ($remote_site_routes) ){
			if(!isset($already[$num])){
				echo "Starting......: OpenVPN $sitename ($num $site_mask)\n";
				$rou[]=" --route $num $site_mask";
				$iroute[]="iroute $num $site_mask";
				$already[$num]=true;
			}
		}
 		echo "Starting......: OpenVPN cdd $sitename\n";
 		@file_put_contents("/etc/openvpn/cdd/$sitename",@implode("\n", $iroute) );
 		
 	}
 	if(count($rou)>0){
 		$localroutes=@implode(" ", $rou);
 		$client_config_dir=" --client-config-dir /etc/openvpn/cdd";
 	}
 	
 	 
 	
 	$LDAP_AUTH=$ini->_params["GLOBAL"]["LDAP_AUTH"];
 	if($LDAP_AUTH==1){
 		if(is_file("/usr/lib/openvpn/openvpn-auth-pam.so")){
 		$plugin=" --plugin /usr/lib/openvpn/openvpn-auth-pam.so common-auth";
 		echo "Starting......: OpenVPN auth is enabled\n";
 		shell_exec("/usr/share/artica-postfix/bin/artica-install --nsswitch");
 		}
 	}
   
   @mkdir("/etc/openvpn/ccd",0666,true);
   $php5=$unix->LOCATE_PHP5_BIN();
   $me=__FILE__;
   $cmd=" --port $port --dev tun $proto --server $IP_START $NETMASK$localroutes$client_config_dir --comp-lzo $local --ca $ca --dh $dh --key $key --cert $crt";
   $cmd=$cmd. "$ifconfig_pool_persist " . implode(" ",$routess);
   $cmd=$cmd. " $askpass$duplicate_cn--client-to-client$script_security$plugin --learn-address \"$php5 $me --client-connect\" --keepalive 10 60 --persist-tun --verb 5 --daemon --writepid /var/run/openvpn/openvpn-server.pid --log \"/var/log/openvpn/openvpn.log\"";
   $cmd=$cmd. " --status /var/log/openvpn/openvpn-status.log 10";
   echo "Starting......: OpenVPN building /etc/openvpn/cmdline.conf done\n";
   @file_put_contents("/etc/openvpn/cmdline.conf",$cmd);
  
   
   $sock->SaveConfigFile($ini->toString(),"ArticaOpenVPNSettings");
   send_email_events("OpenVPN was successfully reconfigured",$cmd,"VPN");
   echo "Starting......: OpenVPN building settings done.\n";
   if($GLOBALS["VERBOSE"]){writelogs("$cmd",__FUNCTION__,__FILE__,__LINE__);}
}
function parsequeue()
{
    $unix = new unix();
    $iptables = $unix->find_program("iptables");
    $q = new mysql();
    $q->Check_iptables_table();
    $ini = new Bs_IniHandler();
    $ini->loadFile('/etc/artica-postfix/settings/Daemons/PostfixAutoBlockResults');
    if ($GLOBALS["VERBOSE"]) {
        echo "Scanning /var/log/artica-postfix/smtp-hack\n";
    }
    foreach (glob("/var/log/artica-postfix/smtp-hack/*.hack") as $filename) {
        if ($GLOBALS["VERBOSE"]) {
            echo "Scanning {$filename}\n";
        }
        $basename = basename($filename);
        $array = unserialize(@file_get_contents($filename));
        $IP = $array["IP"];
        if ($IP == "127.0.0.1") {
            @unlink($filename);
            continue;
        }
        $server_name = gethostbyaddr($IP);
        $matches = $array["MATCHES"];
        $EVENTS = $array["EVENTS"];
        $date = $array["DATE"];
        if ($GLOBALS["VERBOSE"]) {
            echo "{$basename}: servername:{$server_name} IP=[{$IP}]\n";
        }
        $cmd = "{$iptables} -A INPUT -s {$IP} -p tcp --destination-port 25 -j DROP -m comment --comment \"ArticaInstantPostfix\"";
        $iptablesClass = new iptables_chains();
        $iptablesClass->serverip = $IP;
        $iptablesClass->servername = $server_name;
        $iptablesClass->rule_string = $cmd;
        $iptablesClass->EventsToAdd = $EVENTS;
        if ($iptablesClass->addPostfix_chain()) {
            if ($GLOBALS["VERBOSE"]) {
                echo "Add IP:Addr=<{$IP}>, servername=<{$server_name}> to mysql\n";
            }
            $ini->set($IP, "events", $matches);
            $ini->set($IP, "iptablerule", $cmd);
            $ini->set($IP, "hostname", $server_name);
            if ($GLOBALS["VERBOSE"]) {
                echo "delete {$filename}\n";
            }
            @unlink($filename);
        }
        $cmd = "{$iptables} -A INPUT -s {$IP} -p tcp --destination-port 587 -j DROP -m comment --comment \"ArticaInstantPostfix\"";
        $iptablesClass = new iptables_chains(587);
        $iptablesClass->serverip = $IP;
        $iptablesClass->servername = $server_name;
        $iptablesClass->rule_string = $cmd;
        $iptablesClass->EventsToAdd = $EVENTS;
        $iptablesClass->addPostfix_chain();
        $cmd = "{$iptables} -A INPUT -s {$IP} -p tcp --destination-port 465 -j DROP -m comment --comment \"ArticaInstantPostfix\"";
        $iptablesClass = new iptables_chains();
        $iptablesClass->serverip = $IP;
        $iptablesClass->servername = $server_name;
        $iptablesClass->rule_string = $cmd;
        $iptablesClass->EventsToAdd = $EVENTS;
        $iptablesClass->addPostfix_chain(465);
    }
    $filestr = $ini->toString();
    file_put_contents("/etc/artica-postfix/settings/Daemons/PostfixAutoBlockResults", $filestr);
}
示例#6
0
        }
    } else {
        events("processing {$quarantine_dir}/{$file} failed");
    }
    $count = $count + 1;
    $ini = new Bs_IniHandler();
    $ini->set("PROGRESS", "current", $count);
    $ini->set("PROGRESS", "total", $max);
    $ini->set("PROGRESS", "pid", $pid);
    $ini->set("PROGRESS", "quarantine", "(spam)/virus *.gz,virus-");
    $ini->saveFile("/usr/share/artica-postfix/ressources/logs/mailarchive-quarantine-progress.ini");
    chmod("/usr/share/artica-postfix/ressources/logs/mailarchive-quarantine-progress.ini", 0755);
    //if($count>50){break;}
}
$ini = new Bs_IniHandler();
$ini->set("PROGRESS", "pid", "0");
$date = date('H:i:s');
$ini->set("PROGRESS", "quarantine", "Finish {$date1} -> {$date}, next in 5mn");
$ini->saveFile("/usr/share/artica-postfix/ressources/logs/mailarchive-quarantine-progress.ini");
system('/bin/rm /var/virusmails/*.eml >/dev/null 2>&1');
ASSP_QUAR("/usr/share/assp/spam");
ASSP_QUAR("/usr/share/assp/discarded");
ASSP_QUAR("/usr/share/assp/quarantine");
ASSP_QUAR("/usr/share/assp/errors/notspam");
ASSP_QUAR("/usr/share/assp/errors/spam");
ASSP_QUAR("/var/spam-mails");
die;
function ASSP_QUAR($baseDir)
{
    //""
    if (!is_dir($baseDir)) {
示例#7
0
function network_scanner_execute()
{
    $tpl = new templates();
    $net = new networkscanner();
    $net->save();
    $sock = new sockets();
    $sock->getFrameWork("cmd.php?LaunchNetworkScanner=yes");
    $box = $tpl->javascript_parse_text('{network_scanner_execute_background}', 1);
    $ini = new Bs_IniHandler('ressources/logs/nmap.progress.ini');
    $ini->set('NMAP', 'pourc', '10');
    $ini->set('NMAP', 'text', '{scheduled}');
    $ini->saveFile('ressources/logs/nmap.progress.ini');
    echo $box;
}
示例#8
0
function WriteCOmputerBrowseProgress($pourc,$text){
	$ini=new Bs_IniHandler();
	$ini->set('NMAP','pourc',$pourc);
	$ini->set('NMAP','text',$text);
	$ini->saveFile('/usr/share/artica-postfix/ressources/logs/nmap.progress.ini');
	@chmod("/usr/share/artica-postfix/ressources/logs/nmap.progress.ini",0755);
}
function point_events($postfix_id=null,$smtp_sender=null,$from=null,$to=null,$error=null,$mailsize=0){
	if($postfix_id==null){
		if($GLOBALS["DebugArticaFilter"]==1){events("postfix_id is null",__FUNCTION__,__LINE__);}
		return;
	}
	@mkdir("/var/log/artica-postfix/RTM",null,true);
	$file="/var/log/artica-postfix/RTM/$postfix_id.msg";
	if($GLOBALS["DebugArticaFilter"]==1){events("Loading monitor file $file",__FUNCTION__,__LINE__);}
	$ini=new Bs_IniHandler($file);
	
	if($GLOBALS["DebugArticaFilter"]==1){events("populate monitor file $file",__FUNCTION__,__LINE__);}
	if($smtp_sender<>null){$ini->set("TIME","smtp_sender",$smtp_sender);}
	
	if($from<>null){$ini->set("TIME","mailfrom",$from);}
	$ini->set("TIME","mailto","$to");
	
	$ini->set("TIME","time_end",date("Y-m-d H:i:s"));
	$ini->set("TIME","message-id",$postfix_id);
	$ini->set("TIME","mailsize",$mailsize);
	
	
	if($error==null){
		$ini->set("TIME","bounce_error","Success");
		$ini->set("TIME","delivery_success","yes");
	}else{
		$ini->set("TIME","bounce_error","$error");
		$ini->set("TIME","delivery_success","no");
	}
	if($GLOBALS["DebugArticaFilter"]==1){events("save monitor file $file",__FUNCTION__,__LINE__);}
	$ini->saveFile($file);	
	
	
}
示例#10
0
function savelicense()
{
    $sock = new sockets();
    $uuid = base64_decode($sock->getFrameWork("cmd.php?system-unique-id=yes"));
    $sock = new sockets();
    $shallalistLicense = $sock->GET_INFO("shallalistLicense");
    $ini = new Bs_IniHandler();
    $ini->loadString($shallalistLicense);
    $license = $_GET["savelicense"];
    $tpl = new templates();
    $array["check"] = "yes";
    $array["lic"] = "{$license}";
    $array["uuid"] = "{$uuid}";
    $curl = new ccurl("http://www.artica.fr/shalla-orders.php");
    $curl->parms = $array;
    if (!$curl->get()) {
        $tpl = new templates();
        echo $tpl->javascript_parse_text($curl->error);
        return;
    }
    if (preg_match("#<ANSWER>OK</ANSWER>#is", $curl->data)) {
        echo $tpl->javascript_parse_text("{shalla_success_license}");
    } else {
        echo $tpl->javascript_parse_text("{failed}") . "\n" . $curl->data;
        exit;
    }
    $ini->set("SHALLA", "LICENSE", $license);
    $sock->SaveConfigFile($ini->toString(), "shallalistLicense");
    $sock->getFrameWork("cmd.php?shalla-update-now=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));
    }
}
示例#12
0
function readlsfile($path)
{
    if (!preg_match('#-md-(.+?)\\.ls#', $path, $re)) {
        events("Unable to determine source from this file " . basename($path));
        return true;
    } else {
        $external_source = $re[1];
    }
    $file_name = basename($path);
    $filename = $path;
    $filesize = @filesize($filename);
    events("Request for analyze file {$path} size {$filesize} bytes");
    if ($filesize == 0) {
        events("Obytes -> Abort but return true;");
        return true;
    }
    if (preg_match('#(.+?)-md-.+?\\.[a-z0-9]+$#', $path, $re)) {
        $database_path = $re[1];
    }
    $database_name = basename($database_path);
    if (preg_match('#(.+?)\\-.+?\\-diff#', $database_name, $re)) {
        $database_name = $re[1];
    }
    if ($filesize > 400) {
        DeleteDatabase($database_name);
    }
    $source_path = GetSources($database_path);
    if ($source_path == null) {
        $source_path = GetSources($database_name);
    }
    $external_source_pattern = $_GET["STORAGES"][$external_source];
    if ($external_source == null) {
        events("Unable to find source for {$external_source} !!");
        return false;
    }
    events("*********************************************************************");
    events("Analyzing cache from {$filename}...");
    events("MD5 source....: {$external_source}");
    events("Pattern source: {$external_source_pattern}");
    events("database name.: {$database_name}");
    events("database Path.: {$database_path}");
    events("Source Path...: {$source_path}");
    events("*********************************************************************");
    $content = file_get_contents($filename);
    $md5 = md5($content);
    $ini = new Bs_IniHandler("/etc/artica-postfix/dar.cache.ini");
    if ($ini->_params["{$database_name}"]["md5"] == $md5) {
        events("Analyzing {$database_name} cache:{$md5} already set");
        return true;
    }
    $ini->set($database_name, "md5", $md5);
    $ini->saveFile("/etc/artica-postfix/dar.cache.ini");
    $filesize = @filesize($filename);
    $filesize = round($filesize / 1024, 2) . " Ko";
    events("Analyzing " . basename($filename) . " ({$filesize}) for database: {$database_name} cache:{$md5}");
    if ($fd = @fopen($filename, "r")) {
        while ($fd && !feof($fd)) {
            $line = trim(fgets($fd, 4096));
            if (preg_match("#^\\[.+?\\]\\s+\\[.*?\\]\\s+[a-z\\-]+\\s+[a-zA-Z0-9\\-\\_\\.]+\\s+[a-zA-Z0-9\\-\\_\\.]+\\s+([0-9]+)\\s+([a-zA-Z0-9\\s\\:]+)\\s+(.+)#", $line, $re)) {
                if (!Insert($re[3], $re[1], $re[2], $source_path, $database_name, $external_source_pattern)) {
                    events("Failed line \"{$line}\" aborting process");
                    return false;
                }
            } else {
                events("Failed line {$num} \"{$line}\" -> continue reading file...");
            }
        }
        fclose($fd);
        events("{$_GET["COUNT"][$database_name]} files added...");
        events("Optimize table...");
        $sql = "OPTIMIZE TABLE `dar_index`";
        $q = new mysql();
        $q->QUERY_SQL($sql, "artica_backup");
        return true;
    }
}
示例#13
0
function BuildTunServer()
{
    $unix = new unix();
    $sock = new sockets();
    $servername = $unix->hostname_g();
    if (preg_match("#^(.+?)\\.#", $servername, $re)) {
        $servername = $re[1];
    }
    $servername = strtoupper($servername);
    echo "Starting......: OpenVPN building settings for {$servername}...\n";
    $ini = new Bs_IniHandler();
    $sock = new sockets();
    $ini->loadString($sock->GET_INFO("ArticaOpenVPNSettings"));
    if ($ini->_params["GLOBAL"]["ENABLE_BRIDGE_MODE"] == 1) {
        echo "Starting......: OpenVPN building settings mode bridge enabled...\n";
        BuildBridgeServer();
        return;
    }
    $IPTABLES_ETH = $GLOBALS["IPTABLES_ETH"];
    $DEV_TYPE = $ini->_params["GLOBAL"]["DEV_TYPE"];
    $port = $ini->_params["GLOBAL"]["LISTEN_PORT"];
    $IP_START = $ini->_params["GLOBAL"]["IP_START"];
    $NETMASK = $ini->_params["GLOBAL"]["NETMASK"];
    $bind_addr = $ini->_params["GLOBAL"]["LOCAL_BIND"];
    if (trim($port) == null) {
        $port = 1194;
    }
    if (trim($IP_START) == null) {
        $IP_START = "10.8.0.0";
    }
    if (trim($NETMASK) == null) {
        $IP_START = "255.255.255.0";
    }
    $nic = new networking();
    while (list($num, $ligne) = each($nic->array_TCP)) {
        if ($ligne == null) {
            continue;
        }
        $eths[][$num] = $num;
        $ethi[$num] = $ligne;
    }
    if ($IPTABLES_ETH != null) {
        echo "Starting......: OpenVPN linked to {$IPTABLES_ETH} ({$ethi[$IPTABLES_ETH]})...\n";
        $IPTABLES_ETH_ROUTE = IpCalcRoute($ethi[$IPTABLES_ETH]);
    } else {
        echo "Starting......: OpenVPN no local NIC linked...\n";
    }
    $ca = '/etc/artica-postfix/openvpn/keys/allca.crt';
    $dh = '/etc/artica-postfix/openvpn/keys/dh1024.pem';
    $key = "/etc/artica-postfix/openvpn/keys/vpn-server.key";
    $crt = "/etc/artica-postfix/openvpn/keys/vpn-server.crt";
    $route = '';
    //$IPTABLES_ETH_IP=
    if (is_file('/etc/artica-postfix/settings/Daemons/OpenVPNRoutes')) {
        $routes = explode("\n", @file_get_contents("/etc/artica-postfix/settings/Daemons/OpenVPNRoutes"));
        while (list($num, $ligne) = each($routes)) {
            if (!preg_match("#(.+?)\\s+(.+)#", $ligne, $re)) {
                continue;
            }
            $routess[] = "--push \"route {$re[1]} {$re[2]}\"";
        }
    }
    $routess[] = GetRoutes();
    if (count($routess) == 0) {
        if ($IPTABLES_ETH_ROUTE != null) {
            echo "Starting......: OpenVPN IP adding default route \"{$IPTABLES_ETH_ROUTE}\"\n";
            $routess[] = "--push \"route {$IPTABLES_ETH_ROUTE}\"";
        }
    } else {
        echo "Starting......: OpenVPN IP adding " . count($routess) . " routes\n";
    }
    if (trim($bind_addr) != null) {
        $local = " --local {$bind_addr}";
        echo "Starting......: OpenVPN IP bind {$bind_addr}\n";
    }
    $IP_START = FIX_IP_START($IP_START, $local);
    $ini->set("GLOBAL", "IP_START", $IP_START);
    if (preg_match("#(.+?)\\.([0-9]+)\$#", $IP_START, $re)) {
        $calc_ip = " {$re[1]}.0";
        $calc_ip_end = "{$re[1]}.254";
        echo "Starting......: OpenVPN IP pool from {$re[1]}.2 to {$re[1]}.254 mask:{$NETMASK}\n";
        $server_ip = "{$re[1]}.1";
    }
    if ($NETMASK == null) {
        $ip = new IP();
        $cdir = $ip->ip2cidr($calc_ip, $calc_ip_end);
        $arr = $ip->parseCIDR($cdir);
        $rang = $arr[0];
        $netbit = $arr[1];
        $ipv = new ipv4($calc_ip, $netbit);
        $NETMASK = $ipv->netmask();
        if ($NETMASK == "255.255.255.255") {
            $NETMASK = "255.255.255.0";
        }
        echo "Starting......: OpenVPN Netmask is null for the range {$calc_ip}, assume {$NETMASK}\n";
        $ini->set("GLOBAL", "NETMASK", $NETMASK);
    }
    $OpenVpnPasswordCert = $sock->GET_INFO("OpenVpnPasswordCert");
    if ($OpenVpnPasswordCert == null) {
        $OpenVpnPasswordCert = "MyKey";
    }
    if (is_file("/etc/artica-postfix/openvpn/keys/password")) {
        $askpass = "******";
    }
    $cmd = " --port {$port} --dev tun --server {$IP_START} {$NETMASK} --comp-lzo {$local} --ca {$ca} --dh {$dh} --key {$key} --cert {$crt}";
    $cmd = $cmd . " --ifconfig-pool-persist /etc/artica-postfix/openvpn/ipp.txt " . implode(" ", $routess);
    $cmd = $cmd . " {$askpass}--client-to-client --persist-tun --verb 5 --daemon --writepid /var/run/openvpn/openvpn-server.pid --log \"/var/log/openvpn/openvpn.log\"";
    $cmd = $cmd . " --status /var/log/openvpn/openvpn-status.log 10";
    @file_put_contents("/etc/openvpn/cmdline.conf", $cmd);
    $sock->SaveConfigFile($ini->toString(), "ArticaOpenVPNSettings");
    echo "Starting......: OpenVPN building settings done.\n";
    if ($GLOBALS["VERBOSE"]) {
        writelogs("{$cmd}", __FUNCTION__, __FILE__, __LINE__);
    }
}