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(); } }
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)) {