public static void Parse() { if (!File.Exists(dhcpdFile)) { return; } var content = File.ReadAllText(dhcpdFile); var model = new DhcpdModel() { Active = false }; var allow = DhcpdParser.ParseAllow(content); model.Allow = allow; model = DhcpdParser.ParseParameters(model, content); model = DhcpdParser.ParseKeySecret(model, content); var reservations = DhcpdParser.ParseReservation(content); model.Reservations = reservations; var classes = DhcpdParser.ParseClass(content); model.Classes = classes; var subnets = DhcpdParser.ParseSubnet(content); model.Subnets = subnets; Application.CurrentConfiguration.Services.Dhcpd = model; ConsoleLogger.Log("[dhcpd] import existing configuration"); }
//(key "[\w]+" {[\s\d\w\-;"=]+[\s]+};) public static DhcpdModel ParseKeySecret(DhcpdModel dhcpdConfigurationModel, string text) { var regex = new Regex("(key \"[\\w]+\" {[\\s\\d\\w\\-;\"=]+[\\s]+};)"); var matchedGroups = regex.Match(text).Groups; var capturedText = matchedGroups[1].Value; dhcpdConfigurationModel.KeyName = CaptureGroup(capturedText, "key \"([\\w]+)\""); dhcpdConfigurationModel.KeySecret = CaptureGroup(capturedText, "secret \"([\\s\\S]*)\";"); return(dhcpdConfigurationModel); }
public static DhcpdModel ParseParameters(DhcpdModel dhcpdConfigurationModel, string text) { dhcpdConfigurationModel.UpdateStaticLeases = CaptureGroup(text, "update-static-leases[\\s]+([\\w\\-]+);"); dhcpdConfigurationModel.UpdateConflictDetection = CaptureGroup(text, "update-conflict-detection[\\s]+([\\w\\-]+);"); dhcpdConfigurationModel.UseHostDeclNames = CaptureGroup(text, "use-host-decl-names[\\s]+([\\w\\-]+);"); dhcpdConfigurationModel.DoForwardUpdates = CaptureGroup(text, "do-forward-updates[\\s]+([\\w\\-]+);"); dhcpdConfigurationModel.DoReverseUpdates = CaptureGroup(text, "do-reverse-updates[\\s]+([\\w\\-]+);"); dhcpdConfigurationModel.LogFacility = CaptureGroup(text, "log-facility[\\s]+([\\w\\d\\-]+);"); dhcpdConfigurationModel.DefaultLeaseTime = CaptureGroup(text, "default-lease-time[\\s]+([\\d]+);"); dhcpdConfigurationModel.MaxLeaseTime = CaptureGroup(text, "max-lease-time[\\s]+([\\d]+);"); dhcpdConfigurationModel.OptionRouters = CaptureGroup(text, "option[\\s]+routers[\\s]+([\\w\\d\\-\\s.=\"]+);"); dhcpdConfigurationModel.OptionLocalProxy = CaptureGroup(text, "option[\\s]+local-proxy-config[\\s]+code[\\s]+([\\w\\d\\-\\s.=\"]+);"); dhcpdConfigurationModel.OptionDomainName = CaptureGroup(text, "option[\\s]+domain-name[\\s]+([\\w\\d\\-\\s.=\"]+);"); dhcpdConfigurationModel.ZoneName = CaptureGroup(text, "zone[\\s]+([\\w.\\d]+)[\\s]+{"); dhcpdConfigurationModel.ZonePrimaryAddress = CaptureGroup(text, "zone[\\s]+[\\w.\\d]+[\\s]+{[\\s]+primary[\\s]+([.\\d]+);"); dhcpdConfigurationModel.ZonePrimaryKey = CaptureGroup(text, "zone[\\s]+[\\w.\\d]+[\\s]+{[\\s]+primary[\\s]+[.\\d]+;[\\s]+key[\\s]+([\\w\\d]+);"); dhcpdConfigurationModel.DdnsUpdateStyle = CaptureGroup(text, "ddns-update-style[\\s]+([\\w]+);"); dhcpdConfigurationModel.DdnsUpdates = CaptureGroup(text, "ddns-updates[\\s]+([\\w]+);"); dhcpdConfigurationModel.DdnsDomainName = CaptureGroup(text, "ddns-domainname[\\s]+\"([\\w\\d.]+)\";"); dhcpdConfigurationModel.DdnsRevDomainName = CaptureGroup(text, "ddns-rev-domainname[\\s]+\"([\\w\\d.\\-]+)\";"); return(dhcpdConfigurationModel); }