Example #1
0
        public static void AddClass(DhcpdClass model)
        {
            var cls = ServiceModel.Classes;

            if (cls.Any(_ => _.Name == model.Name))
            {
                return;
            }
            cls.Add(model);
            ServiceModel.Classes = cls;
            Save(ServiceModel);
        }
Example #2
0
        //(class "[\w\d]+" {[\s\w\-\d(),":=]+;)
        public static List <DhcpdClass> ParseClass(string text)
        {
            var list    = new List <DhcpdClass>();
            var regex   = new Regex("(class \"[\\w\\d]+\" {[\\s\\w\\-\\d(),\":=]+;)");
            var matches = regex.Matches(text);

            foreach (var match in matches)
            {
                var name             = CaptureGroup(match.ToString(), "class (\"[\\w\\d]+\") {");
                var vendorMacAddress = CaptureGroup(match.ToString(), "[\\s]*=[\\s]+\"([\\w\\d:]+)\";");
                var reservation      = new DhcpdClass {
                    Name             = name,
                    VendorMacAddress = vendorMacAddress
                };
                list.Add(reservation);
            }
            return(list);
        }
Example #3
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);
            };
        }