Ejemplo n.º 1
0
        //(zone "[\s\w\d.\-]+" { type[\w\s]+;[\s]+file "[\w\d\/\-.]+";\s[\s]*serial-update[\-\w ]+;[\s]+allow-update { [\w ;]+};[\s]+allow-query { [\w ;]+};[\s]+allow-transfer { [\w ;]+};[\s]+)
        public static List <BindZoneModel> ParseComplexZones(string text)
        {
            var list    = new List <BindZoneModel>();
            var regex   = new Regex("(zone \"[\\s\\w\\d.\\-]+\" { type[\\w\\s]+;[\\s]+file \"[\\w\\d\\/\\-.]+\";\\s[\\s]*serial-update[\\-\\w ]+;[\\s]+allow-update { [\\w ;]+};[\\s]+allow-query { [\\w ;]+};[\\s]+allow-transfer { [\\w ;]+};[\\s]+)");
            var matches = regex.Matches(text);

            foreach (var match in matches)
            {
                var name               = CaptureGroup(match.ToString(), "zone[\\s]+\"([\\s\\d\\w\\-.]+)\"");
                var type               = CaptureGroup(match.ToString(), "type ([\\w]+)");
                var filePath           = CaptureGroup(match.ToString(), "file \"([\\w\\d\\/.]+)\"");
                var serialUpdateMethod = CaptureGroup(match.ToString(), "serial-update-method[\\s]+([\\w]+)");
                var allowUpdate        = CaptureGroup(match.ToString(), "allow-update[\\s]+{[\\s]+([\\w\\s]+);").Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select(_ => _.Trim()).Where(_ => !string.IsNullOrWhiteSpace(_)).ToArray();
                var allowQuery         = CaptureGroup(match.ToString(), "allow-query[\\s]+{[\\s]+([\\w\\s]+);").Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select(_ => _.Trim()).Where(_ => !string.IsNullOrWhiteSpace(_)).ToArray();
                var allowTransfer      = CaptureGroup(match.ToString(), "allow-transfer[\\s]+{[\\s]+([\\w\\s]+);").Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select(_ => _.Trim()).Where(_ => !string.IsNullOrWhiteSpace(_)).ToArray();
                var zone               = new BindZoneModel {
                    Name = name,
                    Type = type,
                    File = filePath,
                    //SerialUpdateMethod = serialUpdateMethod,
                    //AllowUpdate = allowUpdate,
                    //AllowQuery = allowQuery,
                    //AllowTransfer = allowTransfer
                };
                list.Add(zone);
            }
            return(list);
        }
Ejemplo n.º 2
0
        //(zone[\s]*"[\w\d\-.]+"[\s]*{[\s]*[\w ;"\/.]*};)
        public static List <BindZoneModel> ParseSimpleZones(string text)
        {
            var list    = new List <BindZoneModel>();
            var regex   = new Regex("(zone[\\s]*\"[\\w\\d\\-.]+\"[\\s]*{[\\s]*[\\w ;\"\\/.]*};)");
            var matches = regex.Matches(text);

            foreach (var match in matches)
            {
                var name     = CaptureGroup(match.ToString(), "zone[\\s]+\"([\\s\\d\\w\\-.]+)\"");
                var type     = CaptureGroup(match.ToString(), "type ([\\w]+)");
                var filePath = CaptureGroup(match.ToString(), "file \"([\\w\\d\\/.]+)\"");
                var zone     = new BindZoneModel {
                    Name = name,
                    Type = type,
                    File = filePath,
                };
                list.Add(zone);
            }
            return(list);
        }