public bool RegisterComputer(DataContracts.HostnameChanger msg) { var returnCode = ProcessHandler.Run("/bin/bash", $"{Path.Combine(Settings.Location, "osxbind.sh")} {msg.ADDom} {msg.ADUser} {msg.ADPass} {msg.ADOU}"); return(returnCode == 0); }
public bool RenameComputer(DataContracts.HostnameChanger msg) { ProcessHandler.Run("scutil", "--set HostName " + msg.Hostname); ProcessHandler.Run("scutil", "--set LocalHostName " + msg.Hostname); ProcessHandler.Run("scutil", "--set ComputerName " + msg.Hostname); return(true); }
public bool RenameComputer(DataContracts.HostnameChanger msg) { currentHostName = Environment.MachineName; BruteForce(msg.Hostname); Power.Restart(Settings.Get("Company") + " needs to rename your computer", Power.ShutdownOptions.Delay); return(true); }
private static int DomainWrapper(DataContracts.HostnameChanger msg, bool ou, JoinOptions options) { return(NetJoinDomain(null, msg.ADDom, ou ? msg.ADOU : null, msg.ADUser, msg.ADPass, options)); }
public bool UnRegisterComputer(DataContracts.HostnameChanger msg) { try { Domain.GetComputerDomain(); } catch (ActiveDirectoryObjectNotFoundException) { // If the host is not bound to a domain, this exception will be thrown return(true); } catch (Exception) { // Swallow any unknown errors and proceed with the unbiding process } try { var returnCode = NetUnjoinDomain(null, msg.ADUser, msg.ADPass, UnJoinOptions.NetsetupAccountDelete); Log.Entry(Name, $"{(_returnCodes.ContainsKey(returnCode) ? $"{_returnCodes[returnCode]}, code = " : "Unknown Return Code: ")} {returnCode}"); if (returnCode == 0) { Power.Restart("Host left active directory, restart needed", Power.ShutdownOptions.Delay); } if (returnCode == 0 || returnCode == 2692) { return(true); } } catch (Exception ex) { Log.Error(Name, ex); } return(false); }
public bool RegisterComputer(DataContracts.HostnameChanger msg) { // Check if the host is already part of the set domain by checking server IPs if (IsJoinedToDomain(msg.ADDom)) { Log.Entry(Name, "Host already joined to target domain"); return(true); } // Attempt to join the domain var returnCode = DomainWrapper(msg, true, (JoinOptions.NETSETUP_JOIN_DOMAIN | JoinOptions.NETSETUP_ACCT_CREATE)); switch (returnCode) { case 2224: returnCode = DomainWrapper(msg, true, JoinOptions.NETSETUP_JOIN_DOMAIN); break; case 2: case 50: case 1355: returnCode = DomainWrapper(msg, false, (JoinOptions.NETSETUP_JOIN_DOMAIN | JoinOptions.NETSETUP_ACCT_CREATE)); break; } // Entry the results Log.Entry(Name, $"{(_returnCodes.ContainsKey(returnCode) ? $"{_returnCodes[returnCode]}, code = " : "Unknown Return Code: ")} {returnCode}"); if (returnCode != 0) { return(false); } Power.Restart("Host joined to Active Directory, restart required", Power.ShutdownOptions.Delay); return(true); }
public bool UnRegisterComputer(DataContracts.HostnameChanger msg) { return(true); }
public bool RegisterComputer(DataContracts.HostnameChanger msg) { throw new NotImplementedException(); }
public bool RenameComputer(DataContracts.HostnameChanger msg) { var success = false; if (IsJoinedToDomain(msg.ADDom)) { if (!msg.AD) { Log.Error(Name, "Host is currently bound to a domain, but domain management is disabled; Cannot rename"); return(false); } if (string.IsNullOrEmpty(msg.ADDom) || string.IsNullOrEmpty(msg.ADUser) || string.IsNullOrEmpty(msg.ADPass)) { Log.Error(Name, "Host is currently bound to a domain, but required domain information is missing; Cannot rename"); return(false); } Log.Entry(Name, "Renaming host inside existing domain binding"); // We are already in the correct domain var returnCode = NetRenameMachineInDomain(null, msg.Hostname, msg.ADUser, msg.ADPass, JoinOptions.NETSETUP_ACCT_CREATE); Log.Entry(Name, $"{(_returnCodes.ContainsKey(returnCode) ? $"{_returnCodes[returnCode]}, code = " : "Unknown Return Code: ")} {returnCode}"); if (returnCode == 0) { success = true; SetLocalHostName(msg.Hostname); } } else if (IsJoinedToAnyDomain()) { if (!msg.AD) { Log.Error(Name, "Host is currently bound to a domain, but domain management is disabled; Cannot rename"); return(false); } if (string.IsNullOrEmpty(msg.ADDom) || string.IsNullOrEmpty(msg.ADUser) || string.IsNullOrEmpty(msg.ADPass)) { Log.Error(Name, "Host is currently bound to a domain, but required domain information is missing; Cannot rename"); return(false); } Log.Entry(Name, "Moving host to correct domain"); // We are in the incorrect domain success = UnRegisterComputer(msg); } else { // We are not joined to any domain success = SetLocalHostName(msg.Hostname); if (success && msg.AD && !string.IsNullOrEmpty(msg.ADDom) && !string.IsNullOrEmpty(msg.ADUser) && !string.IsNullOrEmpty(msg.ADPass)) { Log.Entry(Name, "Joining domain"); var returnCode = DomainWrapper(msg, true, JoinOptions.NETSETUP_JOIN_DOMAIN | JoinOptions.NETSETUP_JOIN_WITH_NEW_NAME | JoinOptions.NETSETUP_ACCT_CREATE); switch (returnCode) { case 2224: returnCode = DomainWrapper(msg, true, JoinOptions.NETSETUP_JOIN_DOMAIN | JoinOptions.NETSETUP_JOIN_WITH_NEW_NAME); break; case 2: case 50: case 1355: returnCode = DomainWrapper(msg, false, (JoinOptions.NETSETUP_JOIN_DOMAIN | JoinOptions.NETSETUP_JOIN_WITH_NEW_NAME | JoinOptions.NETSETUP_ACCT_CREATE)); break; } Log.Entry(Name, $"{(_returnCodes.ContainsKey(returnCode) ? $"{_returnCodes[returnCode]}, code = " : "Unknown Return Code: ")} {returnCode}"); } } if (success) { Power.Restart(Settings.Get("Company") + " needs to rename your computer", Power.ShutdownOptions.Delay); } return(success); }