public static void Create_user(string str) { Regex regex = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<login>[A-Za-z0-9]+)[|](?<password>[A-Za-z0-9]+)"); Match matches = regex.Match(str); string name = String.Empty; string password = String.Empty; if (matches.Success) { name = matches.Groups["login"].Value.ToString(); password = matches.Groups["password"].Value.ToString(); User user = getUser(name); //Если такого пользователя еще нет... if (user == null) { OC.User t = new OC.User(); t.user_id = Main.Sess.user_list.Count + 1; t.user_name = name; t.password = password; Main.Sess.user_list.Add(t); Serializing_User.Ser(Main.Sess.user_list); Program.myForm.Log.Text += "Пользователь внесен в базу!\n\n"; } else { Program.myForm.Log.Text += "Пользователь уже существует!\n\n"; } } else { Program.myForm.Log.Text += "Ошибка в команде!\n\n"; } }
//Авторизация и вход в систему public bool Start(string str) { List <User> t = new List <User>(); t = Serializing_User.Deser("User.txt"); Sess.path = "root/"; Sess.user_list = t; Regex regex = new Regex(@"^(?<login>[A-Za-z0-9]+)[|](?<password>[A-Za-z0-9]+)"); Match matches = regex.Match(str); string name = String.Empty; string password = String.Empty; if (matches.Success) { name = matches.Groups["login"].Value.ToString(); password = matches.Groups["password"].Value.ToString(); } else { //throw new Exception("Ошибка в команде!"); return(false); } return(Search_User(name, password)); }
public static Boolean Delete_user(string str) { Regex regex = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<login>[A-Za-z0-9]+)"); Match matches = regex.Match(str); string name = String.Empty; if (matches.Success) { name = matches.Groups["login"].Value.ToString(); User user = getUser(name); if (user != null) { Main.Sess.user_list.Remove(user); Serializing_User.Ser(Main.Sess.user_list); Program.myForm.Log.Text += "Пользователь удален!\n\n"; } else { Program.myForm.Log.Text += "Пользователь не существует!\n\n"; return(false); } return(true); } else { throw new Exception("Ошибка в команде!\n\n"); } }
public static Boolean resetPass(string str) { Regex regex = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<login>[A-Za-z0-9]+)[|](?<password>[A-Za-z0-9]+)[|](?<newpassword>[A-Za-z0-9]+)"); Match matches = regex.Match(str); string name = String.Empty; string password = String.Empty; string newpassword = String.Empty; if (matches.Success) { name = matches.Groups["login"].Value.ToString(); password = matches.Groups["password"].Value.ToString(); newpassword = matches.Groups["newpassword"].Value.ToString(); User user = getUser(name); if (user != null) { //Если пользователь есть и пароли совпадают if (user.password == password) { user.password = newpassword; Serializing_User.Ser(Main.Sess.user_list); Program.myForm.Log.Text += "Пароль изменен!\n\n"; } else { Program.myForm.Log.Text += "Неверный пароль!\n\n"; } } else { Program.myForm.Log.Text += "Пользователя не существует!\n\n"; return(false); } return(true); } else { Program.myForm.Log.Text += "Ошибка в команде!\n\n"; return(false); } }
public void MainMenu() { if (Sess.user_id != 0) { switch (Program.myForm.Command.Text) { case "process": { Core core = new Core(4); core.init(); Core.proc[1].Memory = Core.proc[0].Memory; Core.mem[0].process.Add(Core.proc[1].PID); core.Planning(); break; } case "mount": { mount(); break; } case "user_to_file": { Serializing_User.Ser(Sess.user_list); break; } case "inode_map": { Program.myForm.Log.Text += "Block.Inode" + "\n"; List <string> t = Super.FreeInode(); for (int i = 0; i < t.Count; i++) { Program.myForm.Log.Text += t[i] + "\n"; } break; } case "claster_map": { Program.myForm.Log.Text += "Block.Claster" + "\n"; List <string> t = Super.FreeClaster(); for (int i = 0; i < t.Count; i++) { Program.myForm.Log.Text += t[i] + "\n"; } break; } case "exit": { function_user.new_session(); break; } case "lf": { catalog t = new catalog(); t = function_dir.See_folder(Sess.path); if (t.List.Count == 0) { Program.myForm.Log.Text += "В папке '" + t.name + "' пусто!\n\n"; } else { Program.myForm.Log.Text += "Папка '" + t.name + "' содержит:" + "\n"; for (int i = 0; i < t.List.Count; i++) { Program.myForm.Log.Text += t.List[i].name + " (" + t.List[i].attributes.dimode.type + ")\n"; } Program.myForm.Log.Text += "\n"; } break; } default: { Regex regex = new Regex(@"^(?<command>[A-Za-z_]+)[ ]*"); Match matches = regex.Match(Program.myForm.Command.Text); string command = String.Empty; if (matches.Success) { command = matches.Groups["command"].Value.ToString(); } switch (command) { //--------------------------------------- пользователи case "create_user": { if (Main.Sess.user_name == "admin") { function_user.Create_user(Program.myForm.Command.Text); } else { Program.myForm.Log.Text += "Для добавления учетной записи нужны права администратора!\n\n"; } break; } case "del_user": { if (Main.Sess.user_name == "admin") { function_user.Delete_user(Program.myForm.Command.Text); } else { Program.myForm.Log.Text += "Для удаления учетной записи нужны права администратора!\n\n"; } break; } case "reset_pass": { if (Main.Sess.user_name == "admin") { function_user.resetPass(Program.myForm.Command.Text); } else { Program.myForm.Log.Text += "Для изменения пароля учетной записи нужны права администратора!\n\n"; } break; } //--------------------------------------- папки case "create_dir": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<dir>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["dir"].Value.ToString(); function_dir.create_dir(dir, Sess.path, Sess.user_name); Serializing.Ser(Super.Blocks); } else { Program.myForm.Log.Text += "Некорректое имя директории!\n\n"; } break; } case "way": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<dir>[./A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["dir"].Value.ToString(); if (dir == "./") { string[] match = Sess.path.Split('/'); Sess.path = ""; for (int i = 0; i < match.Count() - 2; i++) { Sess.path += match[i] + '/'; } } else { Sess.path = function_dir.Search_folder(dir, Sess.path); } } else { Program.myForm.Log.Text += "Некорректый путь!\n\n"; } break; } case "rename": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<folder>[A-Za-z0-9]+)[|](?<rename>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["folder"].Value.ToString(); string rename = matches.Groups["rename"].Value.ToString(); { string c = Sess.path + dir + "/"; function_dir.ren_folder(c, rename); Serializing.Ser(Super.Blocks); } } else { Program.myForm.Log.Text += "Некорректно введена команда!\nВведите rename <oldName>|<newName>\n\n"; } break; } case "del_dir": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<folder>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["folder"].Value.ToString(); { function_dir.Dell_folder(Sess.path, dir); Serializing.Ser(Super.Blocks); } } else { Program.myForm.Log.Text += "Некорректно введено имя директории!\n\n"; } break; } //--------------------------------------- файлы case "create_file": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<fil>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string fil = String.Empty; if (matches.Success) { fil = matches.Groups["fil"].Value.ToString(); function_file.create_file(fil, Sess.path, Sess.user_name); Serializing.Ser(Super.Blocks); } else { Program.myForm.Log.Text += "Некорректно введено имя файла!\n\n"; } break; } case "del_file": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<fil>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string fil = String.Empty; if (matches.Success) { fil = matches.Groups["fil"].Value.ToString(); { string c = Sess.path; function_dir.Dell_folder(c, fil); Serializing.Ser(Super.Blocks); } } else { Program.myForm.Log.Text += "Некорректно введено имя файла!\n\n"; } break; } case "insert_file": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<files>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["files"].Value.ToString(); Boolean tr = function_file.Is_file(dir, Main.Sess.path); if (tr) { file f = new file(); //нужный файл f = function_file.search_file_retf(dir, Main.Sess.path); //поиск нужного файла //Если учетная запись админа или если создателю можно записывать, или если другим пользователям можно записывать if ((Main.Sess.user_name == "admin") || ((f.attributes.di_uid == Main.Sess.user_name) && (function_inode.rights_for_all(f)[1])) || ((function_inode.rights_for_all(f)[3]))) { function_file.modify_file(f); } else { Program.myForm.Log.Text += "Вам не разрешено редактировать этот файл. \nВы не являетесь владельцем данного файла.\n\n"; } } else { Program.myForm.Log.Text += "Файл не существует или у вас нет прав для доступа к нему\n\n"; } } else { Program.myForm.Log.Text += "Некорректно введено имя файла!\n\n"; } break; } case "edit_file": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<files>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["files"].Value.ToString(); Boolean tr = function_file.Is_file(dir, Main.Sess.path); if (tr) { //Находим текст файла file f = new file(); //нужный файл f = function_file.search_file_retf(dir, Main.Sess.path); //поиск нужного файла //Если учетная запись админа или если создателю можно записывать, или если другим пользователям можно записывать if ((Main.Sess.user_name == "admin") || ((f.attributes.di_uid == Main.Sess.user_name) && (function_inode.rights_for_all(f)[1])) || ((function_inode.rights_for_all(f)[3]))) { string text = function_file.see_file(dir, Main.Sess.path); function_file.modify_file(f, text); } else { Program.myForm.Log.Text += "Вам не разрешено редактировать этот файл. \nВы не являетесь владельцем данного файла.\n\n"; } } else { Program.myForm.Log.Text += "Файл не существует или у вас нет прав на его редактирование\n\n"; } Serializing.Ser(Super.Blocks); } else { Program.myForm.Log.Text += "Некорректно введено имя файла!\n\n"; } break; } case "watch_file": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<files>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["files"].Value.ToString(); Program.myForm.Log.Text += function_file.see_file(dir, Main.Sess.path) + "\n\n"; Serializing.Ser(Super.Blocks); } else { Program.myForm.Log.Text += "Некорректно введено имя файла!\n\n"; } break; } case "attr": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<files>[A-Za-z0-9]+)"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; if (matches.Success) { dir = matches.Groups["files"].Value.ToString(); Program.myForm.Log.Text += function_file.attr(dir, Main.Sess.path); Serializing.Ser(Super.Blocks); } else { Program.myForm.Log.Text += "Некорректно введено имя!\n\n"; } break; } case "rights": { Regex regex_d = new Regex(@"^(?<command>[A-Za-z_]+)[ ](?<files>[A-Za-z0-9]+)[ ](?<rights>[r-][w-]-[r-][w-])"); matches = regex_d.Match(Program.myForm.Command.Text); string dir = String.Empty; string rights = String.Empty; if (matches.Success) { dir = matches.Groups["files"].Value.ToString(); rights = matches.Groups["rights"].Value.ToString(); function_inode.rights(dir, Main.Sess.path, rights); Serializing.Ser(Super.Blocks); } else { Program.myForm.Log.Text += "Некорректно введено имя или права!\n\n"; } break; } default: { Program.myForm.Log.Text += Program.myForm.Command.Text + ": Неизвестная команда\n\n"; break; } } break; } } } else { if (Program.myForm.Command.Text != "") { bool result = Start(Program.myForm.Command.Text); if (!result) { Program.myForm.Log.Text += "Необходимо войти в систему!\n\n"; } } } }