Bot.Modules.access.get_access_list C# (CSharp) Method

get_access_list() public method

public get_access_list ( string nick, string channel, bot ircbot ) : List
nick string
channel string
ircbot bot
return List
        public List<int> get_access_list(string nick, string channel, bot ircbot)
        {
            string file_name = ircbot.Conf.Server_Name + "_list.txt";
            List<int> access = new List<int>();

            if (File.Exists(ircbot.cur_dir + Path.DirectorySeparatorChar + "modules" + Path.DirectorySeparatorChar + "access" + Path.DirectorySeparatorChar + file_name))
            {
                string[] log_file = System.IO.File.ReadAllLines(ircbot.cur_dir + Path.DirectorySeparatorChar + "modules" + Path.DirectorySeparatorChar + "access" + Path.DirectorySeparatorChar + file_name);
                int number_of_lines = log_file.GetUpperBound(0) + 1;
                if (number_of_lines > 0)
                {
                    foreach (string line in log_file)
                    {
                        char[] sep = new char[] { '*' };
                        string[] new_line = line.Split(sep, 3);
                        if (new_line.GetUpperBound(0) > 1)
                        {
                            if (channel != null)
                            {
                                if (new_line[0].Trim().Equals(nick, StringComparison.InvariantCultureIgnoreCase) && new_line[1].Trim().Equals(channel, StringComparison.InvariantCultureIgnoreCase))
                                {
                                    try
                                    {
                                        access.Add(Convert.ToInt32(new_line[2]));
                                    }
                                    catch { }
                                }
                            }
                        }
                    }
                }
            }
            return access;
        }

Usage Example

Example #1
0
 internal int get_nick_access(string tmp_nick, string channel)
 {
     List<int> access_num = new List<int>();
     int top_access = Conf.Default_Level;
     access_num.Add(Conf.Default_Level);
     try
     {
         Nick_Info nick_info = get_nick_info(tmp_nick, channel);
         if (nick_info != null)
         {
             access_num.Add(nick_info.Access);
         }
         else
         {
             Nick_Info new_nick = new Nick_Info();
             new_nick.Nick = tmp_nick;
             new_nick.Access = Conf.Default_Level;
             new_nick.Identified = false;
             add_nick_info(new_nick, channel);
             nick_info = new_nick;
         }
         if (nick_info.Nick.Equals(nick, StringComparison.InvariantCultureIgnoreCase))
         {
             access_num.Add(Conf.Owner_Level);
         }
         if (!nick_info.Identified)
         {
             nick_info.Identified = get_nick_ident(nick_info.Nick);
         }
         if (nick_info.Identified == true)
         {
             foreach (Modules.Module module in Conf.Modules)
             {
                 if (module.Class_Name.Equals("access"))
                 {
                     bool chan_allowed = true;
                     foreach (string blacklist in module.Blacklist)
                     {
                         if (blacklist.Equals(channel, StringComparison.InvariantCultureIgnoreCase))
                         {
                             chan_allowed = false;
                             break;
                         }
                     }
                     if (chan_allowed)
                     {
                         Modules.access acc = new Modules.access();
                         access_num.AddRange(acc.get_access_list(tmp_nick, channel, this));
                     }
                     break;
                 }
             }
         }
         if (nick_info.Identified == true)
         {
             foreach (string owner in Conf.Owners)
             {
                 if (tmp_nick.Equals(owner, StringComparison.InvariantCultureIgnoreCase))
                 {
                     access_num.Add(Conf.Owner_Level);
                 }
             }
         }
         foreach (int access in access_num)
         {
             if (access > top_access)
             {
                 top_access = access;
             }
         }
         if (top_access == Conf.Default_Level && channel != null)
         {
             top_access = get_nick_chan_access(tmp_nick, channel);
             if (top_access != Conf.Default_Level)
             {
                 nick_info.Access = top_access;
             }
         }
     }
     catch (Exception ex)
     {
         lock (controller.errorlock)
         {
             controller.log_error(ex, Conf.Logs_Path);
         }
     }
     return top_access;
 }