public override void Execute(String args) { if (String.IsNullOrEmpty(args)) { Helper.WriteLine("target File non specified"); return; } var dir = NoobDirectory.GetDirectoryByFullName(GlobalEnvironment.Current["CURRENTDIR"]); NoobFile file = dir.GetFileByName(args); if (file == null) { file = NoobDirectory.GetFileByFullName(args); } if (file == null) { Helper.WriteLine("Can't find file"); } else { String content = file.ReadAllText(); Helper.WriteLine(content); } }
/// <summary> /// Executes the command specified. /// </summary> /// <param name="cmd">the command name</param> /// <param name="args">arguments associated with the command</param> /// <returns>true if there is a command of the name and executed, false other wise</returns> public static bool ProcessCommand(String cmd, String args) { CommandBase c = Find(cmd); if (c == null) { NoobDirectory dir = NoobDirectory.GetDirectoryByFullName(NoobOS.Environment.GlobalEnvironment.Current["CURRENTDIR"]); if (dir != null) { NoobFile fl = dir.GetFileByName(cmd); if (fl != null) { Helper.WriteLine("Please make sure the file you have selected IS A BINARY or expect lots of crashes!"); if (Helper.Continue()) { NoobOS.Executables.BinaryLoader.CallRaw(fl.ReadAllBytes()); return(true); } } } return(false); } if (c.CanExecute(args)) { c.Execute(args); } return(true); }
private static void CreateFileAndVerify(string file, string directory) { NoobDirectory dir = NoobFileSystem.mFS.Root.GetDirectoryByName(directory); if (dir != null) { dir.AddFile(file); NoobFile nf = dir.GetFileByName(file); if (nf == null) { throw new Exception("Could not create!"); } } else { throw new ArgumentException("Bad directory"); } }
/// <summary> /// Adds this new user to the Accounts file. /// </summary> /// <param name="newus">New Username</param> /// <param name="newpass">New Password</param> public static bool Add(String newus, String newpass) { if (!Utils.StringContains(newus, InvalidChars)) { NoobFile accfile = NoobDirectory.GetFileByFullName("/etc/passwd"); if (accfile == null) { NoobFileSystem.mFS.Root.GetDirectoryByName("etc").AddFile("passwd"); accfile = NoobDirectory.GetFileByFullName("/etc/passwd"); } hasher.Value = newpass; accfile.WriteAllText(newus + uspasssep + hasher.FingerPrint + usseparator); return(true); } else { return(false); } }
/// <summary> /// Starts a new infinite loop that represents a simple shell /// </summary> public static void StartShell() { Helper.WriteLine("Starting Shell...", ConsoleColor.Green); NoobFile motd = NoobDirectory.GetFileByFullName("/etc/motd"); if (motd == null) { Helper.Error("MOTD not available. Please type touch /etc/motd in the command line!"); } else { Helper.WriteLine(motd.ReadAllText()); } String cmd = ""; do { Account u = new Account(GlobalEnvironment.Current["USER"]); String h = GlobalEnvironment.Current["HOST"]; NoobDirectory dir = NoobDirectory.GetDirectoryByFullName(GlobalEnvironment.Current["CURRENTDIR"]); String consoleline = u.Username + "@" + h + ":" + dir.FullName + "# "; Helper.Write(consoleline); cmd = Helper.ReadLine(); String[] t = cmd.SplitAtFirstSpace(); String c = t[0]; // Command String a = t.Length > 1 ? t[1] : String.Empty; // Argument(s) Boolean p = CommandManager.ProcessCommand(c, a); if (!p) { Helper.WriteLine("No such command found!"); } if (!Helper.LastLineIsEmpty()) { Helper.WriteLine(""); } }while (true); }
/// <summary> /// Account constructor method that check's the user credentials /// </summary> /// <param name="User">Username</param> /// <param name="Pass">Password</param> public Account(String User, String Pass) { NoobFile accfile = NoobDirectory.GetFileByFullName("/etc/passwd"); if (accfile == null) { Helper.Error("/etc/passwd not available! Quitting."); this._OK = false; } hasher.Value = Pass; if (accfile.ReadAllText() == (User + uspasssep + hasher.FingerPrint + usseparator)) { this._Username = User; this._HomeDir = "/"; this._OK = true; Helper.WriteLine("Login Succeded!"); } else { this._OK = false; Helper.Error("Login Failed! Verify user And Password!"); } }