Пример #1
0
        //(key "[\w]+" {[\s\d\w\-;"=]+[\s]+};)
        public static DhcpdConfigurationModel ParseKeySecret(DhcpdConfigurationModel 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);
        }
Пример #2
0
        public static void Save(DhcpdConfigurationModel model)
        {
            var text = JsonConvert.SerializeObject(model, Formatting.Indented);

            if (File.Exists(CfgFile))
            {
                File.Copy(CfgFile, CfgFileBackup, true);
            }
            FileWithAcl.WriteAllText(CfgFile, text, "644", "root", "wheel");
            ConsoleLogger.Log("[dhcpd] configuration saved");
        }
Пример #3
0
        public void Save(DhcpdConfigurationModel model)
        {
            var text = JsonConvert.SerializeObject(model, Formatting.Indented);

            if (File.Exists(_cfgFile))
            {
                File.Copy(_cfgFile, _cfgFileBackup, true);
            }
            File.WriteAllText(_cfgFile, text);
            ConsoleLogger.Log("[dhcpd] configuration saved");
        }
Пример #4
0
 public DhcpdConfiguration()
 {
     IoDir.CreateDirectory(Parameter.AntdCfgServices);
     if (!File.Exists(_cfgFile))
     {
         _serviceModel = new DhcpdConfigurationModel();
     }
     else
     {
         try {
             var text = File.ReadAllText(_cfgFile);
             var obj  = JsonConvert.DeserializeObject <DhcpdConfigurationModel>(text);
             _serviceModel = obj;
         }
         catch (Exception) {
             _serviceModel = new DhcpdConfigurationModel();
         }
     }
 }
Пример #5
0
        private static DhcpdConfigurationModel Parse(string text)
        {
            var model = new DhcpdConfigurationModel {
                IsActive = false
            };
            var allow = DhcpdParser.ParseAllow(text);

            model.Allow = allow;
            model       = DhcpdParser.ParseParameters(model, text);
            model       = DhcpdParser.ParseKeySecret(model, text);
            var reservations = DhcpdParser.ParseReservation(text);

            model.Reservations = reservations;
            var classes = DhcpdParser.ParseClass(text);

            model.Classes = classes;
            var subnets = DhcpdParser.ParseSubnet(text);

            model.Subnets = subnets;
            return(model);
        }
Пример #6
0
 public static DhcpdConfigurationModel ParseParameters(DhcpdConfigurationModel 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);
 }
Пример #7
0
        public AntdDhcpdModule()
        {
            Get["/dhcpd"] = x => {
                var dhcpdIsActive = DhcpdConfiguration.IsActive();
                var model         = new PageDhcpdModel {
                    DhcpdIsActive    = dhcpdIsActive,
                    DhcpdOptions     = DhcpdConfiguration.Get() ?? new DhcpdConfigurationModel(),
                    DhcpdClass       = DhcpdConfiguration.Get()?.Classes,
                    DhcpdReservation = DhcpdConfiguration.Get()?.Reservations
                };
                return(JsonConvert.SerializeObject(model));
            };

            Post["/dhcpd/set"] = x => {
                DhcpdConfiguration.Set();
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/restart"] = x => {
                DhcpdConfiguration.Start();
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/stop"] = x => {
                DhcpdConfiguration.Stop();
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/enable"] = x => {
                DhcpdConfiguration.Enable();
                DhcpdConfiguration.Start();
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/disable"] = x => {
                DhcpdConfiguration.Disable();
                DhcpdConfiguration.Stop();
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/options"] = x => {
                string allow = Request.Form.Allow;
                string updateStaticLeases      = Request.Form.UpdateStaticLeases;
                string updateConflictDetection = Request.Form.UpdateConflictDetection;
                string useHostDeclNames        = Request.Form.UseHostDeclNames;
                string doForwardUpdates        = Request.Form.DoForwardUpdates;
                string doReverseUpdates        = Request.Form.DoReverseUpdates;
                string logFacility             = Request.Form.LogFacility;
                string option             = Request.Form.Option;
                string zoneName           = Request.Form.ZoneName;
                string zonePrimaryAddress = Request.Form.ZonePrimaryAddress;
                string ddnsUpdateStyle    = Request.Form.DdnsUpdateStyle;
                string ddnsUpdates        = Request.Form.DdnsUpdates;
                string ddnsDomainName     = Request.Form.DdnsDomainName;
                string ddnsRevDomainName  = Request.Form.DdnsRevDomainName;
                string defaultLeaseTime   = Request.Form.DefaultLeaseTime;
                string maxLeaseTime       = Request.Form.MaxLeaseTime;
                string keyName            = Request.Form.KeyName;
                string keySecret          = Request.Form.KeySecret;
                string ipFamily           = Request.Form.IpFamily;
                string ipMask             = Request.Form.IpMask;
                string optionRouters      = Request.Form.OptionRouters;
                string ntpServers         = Request.Form.NtpServers;
                string timeServers        = Request.Form.DoForTimeServerswardUpdates;
                string domainNameServers  = Request.Form.DomainNameServers;
                string broadcastAddress   = Request.Form.BroadcastAddress;
                string subnetMask         = Request.Form.SubnetMask;

                var model = new DhcpdConfigurationModel {
                    Allow = allow.SplitToList().Select(_ => _.Trim()).ToList(),
                    UpdateStaticLeases      = updateStaticLeases,
                    UpdateConflictDetection = updateConflictDetection,
                    UseHostDeclNames        = useHostDeclNames,
                    DoForwardUpdates        = doForwardUpdates,
                    DoReverseUpdates        = doReverseUpdates,
                    LogFacility             = logFacility,
                    ZoneName           = zoneName,
                    ZonePrimaryAddress = zonePrimaryAddress,
                    DdnsUpdateStyle    = ddnsUpdateStyle,
                    DdnsUpdates        = ddnsUpdates,
                    DdnsDomainName     = ddnsDomainName,
                    DdnsRevDomainName  = ddnsRevDomainName,
                    DefaultLeaseTime   = defaultLeaseTime,
                    MaxLeaseTime       = maxLeaseTime,
                    KeyName            = keyName,
                    KeySecret          = keySecret
                };
                DhcpdConfiguration.Save(model);
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/class"] = x => {
                string name      = Request.Form.Name;
                string macVendor = Request.Form.MacVendor;
                var    model     = new DhcpdClass {
                    Name             = name,
                    VendorMacAddress = macVendor
                };
                DhcpdConfiguration.AddClass(model);
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/class/del"] = x => {
                string guid = Request.Form.Guid;
                DhcpdConfiguration.RemoveClass(guid);
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/pool"] = x => {
                //string option = Request.Form.Option;
                //var model = new DhcpdPool {
                //    Options = option.SplitToList().Select(_ => _.Trim()).ToList()
                //};
                //DhcpdConfiguration.AddPool(model);
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/pool/del"] = x => {
                string guid = Request.Form.Guid;
                //DhcpdConfiguration.RemovePool(guid);
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/reservation"] = x => {
                string hostName   = Request.Form.HostName;
                string macAddress = Request.Form.MacAddress;
                string ipAddress  = Request.Form.IpAddress;
                var    model      = new DhcpdReservation {
                    HostName   = hostName,
                    MacAddress = macAddress,
                    IpAddress  = ipAddress
                };
                DhcpdConfiguration.AddReservation(model);
                return(HttpStatusCode.OK);
            };

            Post["/dhcpd/reservation/del"] = x => {
                string guid = Request.Form.Guid;
                DhcpdConfiguration.RemoveReservation(guid);
                return(HttpStatusCode.OK);
            };
        }