Exemplo n.º 1
0
function kinit(){
	$unix=new unix();
	$kinit=$unix->find_program("kinit");
	$echo=$unix->find_program("echo");
	$net=$unix->LOCATE_NET_BIN_PATH();
	$hostname=$unix->find_program("hostname");
	$sock=new sockets();
	$config=unserialize(base64_decode($sock->GET_INFO("SambaAdInfos")));
	$domain=strtoupper($config["ADDOMAIN"]);
	$domain_lower=strtolower($config["ADDOMAIN"]);
	$cachefile="/etc/artica-postfix/NetADSInfo.cache";
	$CyrusToAD=$sock->GET_INFO("CyrusToAD");
	if(!is_numeric($CyrusToAD)){$CyrusToAD=0;}
	$ADSERVER_IP=$config["ADSERVER_IP"];
	@unlink("/etc/artica-postfix/NetADSInfo.cache");
	
	$ad_server=strtolower($config["ADSERVER"]);
	$kinitpassword=$config["PASSWORD"];
	$kinitpassword=$unix->shellEscapeChars($kinitpassword);
	
	if($kinit<>null){	
		shell_exec("$echo $kinitpassword|$kinit {$config["ADADMIN"]}@$domain");
	}
	
	
	exec($hostname,$results);
	$servername=trim(@implode(" ",$results));
	echo "Starting......: Samba using server name has $servername.$domain_lower\n";
	shell_exec("/usr/share/artica-postfix/bin/artica-install --change-hostname $servername.$domain_lower");
	echo "Starting......: connecting to $ad_server.$domain_lower\n";
	@unlink($cachefile);
	
	$NetADSINFOS=GetNetAdsInfos();
	$KDC_SERVER=$NetADSINFOS["KDC server"];
	$adminpassword=$config["PASSWORD"];
	
	$WINBINDPASSWORD=$config["WINBINDPASSWORD"];
	if(strlen($WINBINDPASSWORD)>2){
		$WINBINDPASSWORD=$unix->shellEscapeChars($WINBINDPASSWORD);
		exec("$net setauthuser -U winbind%$WINBINDPASSWORD 2>&1",$results);
		while (list ($index, $line) = each ($results) ){writelogs("setauthuser [winbind]: $line",__FUNCTION__,__FILE__,__LINE__);}
	}
	
	echo "Starting......: checking winbindd daemon...\n";
	shell_exec("/etc/init.d/artica-postfix start winbindd");
	
	$adminpassword=$unix->shellEscapeChars($adminpassword);
	
	
	
	if($KDC_SERVER==null){
		$cmd="$net ads join -W $ad_server.$domain_lower -S $ad_server -U {$config["ADADMIN"]}%$adminpassword 2>&1";
		if($GLOBALS["VERBOSE"]){echo $cmd."\n";}
		
		exec("$cmd",$results);
		
		while (list ($index, $line) = each ($results) ){
			writelogs("ads join [{$config["ADADMIN"]}]: $line",__FUNCTION__,__FILE__,__LINE__);
			
			if(preg_match("#DNS update failed#",$line)){
				echo "Starting......: ADS Join FAILED with command line \"$cmd\"\n";
			}
			
			if(preg_match("#The network name cannot be found#",$line)){
				echo "Starting......: ADS Join $ad_server.$domain_lower failed, unable to resolve it\n";
				if($ADSERVER_IP<>null){
					if(!$GLOBALS["CHANGE_ETC_HOSTS_AD"]){
						$line=base64_encode("$ADSERVER_IP\t$ad_server.$domain_lower\t$ad_server");
						$sock->getFrameWork("cmd.php?etc-hosts-add=$line");
						$GLOBALS["CHANGE_ETC_HOSTS_AD"]=true;
						echo "Starting......: ADS Join add $ad_server.$domain_lower $ADSERVER_IP in hosts file done, restart\n";
						kinit();
						return;
					}
				}
			}
			
			echo "Starting......: ADS Join $ad_server.$domain_lower ($line)\n";
		}
	}else{
		echo "Starting......: ADS Already joined to \"$KDC_SERVER\"\n";
	}
	
	
	
	if($CyrusToAD==1){
		echo "Starting......: Activate PAM for Cyrus sasl\n";
		EnablePamd();
	}else{
		echo "Starting......: Disable PAM for Cyrus sasl\n";
		DisablePamd();
	}
	
}
Exemplo n.º 2
0
    exit;
}
if (isset($_GET["watchdog-config"])) {
    watchdog_monit();
    exit;
}
if (isset($_GET["winbindd-logs"])) {
    winbind_logs();
    exit;
}
if (isset($_GET["joint"])) {
    join_ad();
    exit;
}
if (isset($_GET["GetNetAdsInfos"])) {
    GetNetAdsInfos();
    exit;
}
if (isset($_GET["current-version"])) {
    current_version();
    exit;
}
if (isset($_GET["downgrade"])) {
    downgrade();
    exit;
}
if (isset($_GET["net-ads-status"])) {
    ads_status();
    exit;
}
while (list($num, $line) = each($_GET)) {