public static Computer LoadComputer(string filename, bool preventAddingToNetmap = false, bool preventInitDaemons = false) { filename = LocalizedFileLoader.GetLocalizedFilepath(filename); os = OS.currentInstance; executor.SetText(filename, true); holder = new ComputerHolder(); foreach (var custom in CustomExecutors) { var customInstance = (ComputerExecutor)Activator.CreateInstance(custom.ExecutorType); customInstance.Init(os, ref holder); executor.RegisterTempExecutor(custom.Element, customInstance.Execute, custom.Options); } foreach (var customDaemon in DaemonManager.CustomDaemons) { executor.RegisterTempExecutor("Computer." + customDaemon.Name, (exec, info) => { DaemonManager.TryLoadCustomDaemon(info, comp, os); }); } if (!executor.TryParse(out var ex)) { throw new FormatException($"{filename}: {ex.Message}", ex); } var ret = comp; comp = null; if (ret == null) { return(null); } if (!preventInitDaemons) { ret.initDaemons(); } if (!preventAddingToNetmap) { os.netMap.nodes.Add(ret); eos?.links.Add(os.netMap.nodes.Count - 1); } os = null; eos = null; holder = null; return(ret); }
protected internal override void CallOn(HacknetPlugin plugin, MemberInfo targettedInfo) { DaemonManager.RegisterDaemon((Type)targettedInfo); }
/// <summary> /// Probe a machine /// </summary> /// <param name="daemonMachine">Daemon Machine entity</param> /// <returns></returns> public DaemonProbeResult ProbeMachine(global::Aneka.PAL.Management.Model.Machine daemonMachine) { DaemonProbeResult result = new DaemonProbeResult(DaemonProbeStatus.Unknown, null); if (daemonMachine != null) { // set the probe status to unknown daemonMachine.ProbeResult = result; // check service status if (daemonMachine.UserAccount != null) { // Probe the target machine.. DaemonManager daemonManager = new DaemonManager(); result = daemonManager.Probe(daemonMachine); //The machine been pinged and it is reachable of course, //so the statues can't be "NetworkNotReachable"!!! //If DaemonManager.Probe returns "NetworkNotReachable" //it is most likely that it is a credential problem, but maybe not. //So the DaemonManager.Probe must be re-implemented to be more accurate. if(result.Status == DaemonProbeStatus.NetworkNotReachable) result = new DaemonProbeResult(DaemonProbeStatus.BadCredentials, null); } else result = new DaemonProbeResult(DaemonProbeStatus.BadCredentials, null); } //set the probe status of the machine return result; }