Exemple #1
0
        //(location[\s]+[\/\w]+[\s]+{[\s]+[\w\s_\/:;$\-".]+[\s]+})
        public static List <NginxLocation> ParseLocation(string text)
        {
            var list    = new List <NginxLocation>();
            var regex   = new Regex("(location[\\s]+[\\/\\w]+[\\s]+{[\\s]+[\\w\\s_\\/:;$\\-\".]+[\\s]+})");
            var matches = regex.Matches(text);

            foreach (var match in matches)
            {
                var path            = CaptureGroup(match.ToString(), "location[\\s]+[\\/\\w\\d]+[\\s]+{");
                var autoindex       = CaptureGroup(match.ToString(), "autoindex[\\s]+([\\w\\d]+);");
                var root            = CaptureGroup(match.ToString(), "root[\\s]+([\\w\\d\\/._-]+);");
                var mp4             = CaptureGroup(match.ToString(), "mp4;");
                var proxyPass       = CaptureGroup(match.ToString(), "proxy_pass[\\s]+([\\w\\d\\/._\\-:]+);");
                var proxysslsession = CaptureGroup(match.ToString(), "proxy_ssl_session_reuse[\\s]+([\\w\\d\\/._\\-:]+);");
                var location        = new NginxLocation {
                    Path                 = path,
                    Autoindex            = autoindex,
                    Root                 = root,
                    Mp4                  = !string.IsNullOrEmpty(mp4),
                    ProxyPass            = proxyPass,
                    ProxySslSessionReuse = proxysslsession
                };

                list.Add(location);
            }
            return(list);
        }
        public void PropertiesHasNoLocations(NginxLocation location)
        {
            var r = location.Properties.Any(c => c.Key.Contains("location"));

            Assert.AreEqual(r, false);
            location.Locations.ForEach(PropertiesHasNoLocations);
        }
Exemple #3
0
        static NginxLocation ParseLocationToken(TokenEntry locationToken)
        {
            var location = new NginxLocation {
                Name = locationToken.Name.Replace("location ", "")
            };

            location.ParseProperties(locationToken.Content);
            if (locationToken.Tokens.Any())
            {
                location.Locations   = locationToken.Tokens.Where(k => k.Name.Contains("location")).Select(ParseLocationToken).ToList();
                location.LimitExcept = locationToken.Tokens.Where(k => k.Name.Contains("limit_except")).Select(ParseLimitExceptToken).FirstOrDefault();
            }
            else
            {
                location.Locations = new List <NginxLocation>();
            }
            return(location);
        }