Example #1
0
        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";
            }
        }
Example #2
0
        //Авторизация и вход в систему
        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));
        }
Example #3
0
        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");
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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";
                    }
                }
            }
        }