Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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));
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 public bool UnRegisterComputer(DataContracts.HostnameChanger msg)
 {
     return(true);
 }
Exemplo n.º 8
0
 public bool RegisterComputer(DataContracts.HostnameChanger msg)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 9
0
        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);
        }