Exemplo n.º 1
0
        public iniControl(string iniPath, string MainDomainName = "windpro")
        {
            this.MainDomainName = MainDomainName;
            DomainArr           = new Dictionary <string, string>();
            //读入文件
            this.iniPath = iniPath;
            if (!File.Exists(iniPath))
            {
                throw new Exception("不存在文件");
            }
            StreamReader sr = new StreamReader(iniPath, System.Text.Encoding.Default);

            iniContent = sr.ReadToEnd();
            sr.Close();

            //得到配置文件头
            Match m_header = Regex.Match(iniContent, @"\[GLOBAL\].*?(?=\[Domain[0-9]+\])", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled);

            _header = m_header.Value;

            //得到域名列表
            MatchCollection mc_DomainList = Regex.Matches(iniContent, @"\[(Domain[0-9]+)\].*?((?=\[Domain[0-9]+\])|$)", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled);

            foreach (Match m in mc_DomainList)
            {
                Match  m_key = Regex.Match(_header, @"Domain1=.*?\|\|.*?\|(.*?)\|", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled);
                string key   = m_key.Groups[1].Value;
                string value = m.Groups[0].Value;
                DomainArr.Add(key, value);
            }

            string MainDomainStr = DomainArr[MainDomainName];

            if (MainDomainStr == null)
            {
                throw new Exception("需要处理域错误");
            }

            //得到域名除用户以外的配置信息
            Match  m_DomainConfig  = Regex.Match(MainDomainStr, @"\[Domain[0-9]+\].?\n(.*?)\n\[USER="******"^(?!User[0-9]+)((.*?)=(.*?))\r?$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);

            MainDomainConfigWithoutUserConfig = new PropertyControl();;
            foreach (Match m in mc_DomainConfigWithoutUserConfig)
            {
                string key   = m.Groups[2].Value;
                string value = m.Groups[3].Value;
                MainDomainConfigWithoutUserConfig.Add(key, value);
            }

            ////得到域名用户配置信息
            //MatchCollection mc_DomainConfigInUserConfig = Regex.Matches(DomainConfigStr, @"^(?=User[0-9])+.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);

            //得到用户信息
            Match  m_DomainUserList = Regex.Match(MainDomainStr, @"\[USER=.*", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled);
            string UserListStr      = m_DomainUserList.Value;

            //得到用户列表
            MatchCollection mc_DomainUserStr = Regex.Matches(UserListStr, @"\[USER=(.*?)\|.*?((?=\n\[USER=)|$)", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled);

            FtpUserList = new Dictionary <string, FtpUserInfo>();
            foreach (Match m in mc_DomainUserStr)
            {
                try
                {
                    FtpUserInfo userinfo = new FtpUserInfo(m.Value);
                    FtpUserList.Add(m.Groups[1].Value, userinfo);
                }
                catch { }
            }
        }