コード例 #1
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_GetHashCode_Returns_Same_Value_For_Equals_CIDRs()
        {
            var obj1 = Cidr.Parse("1.2.3.4/32");
            var obj2 = Cidr.Parse("1.2.3.4/32");

            Assert.AreEqual(obj1.GetHashCode(), obj2.GetHashCode());
        }
コード例 #2
0
ファイル: Server.cs プロジェクト: Earth2Me/Aselia
        public override unsafe bool IsKLined(IPAddress fullIp)
        {
            byte[] bytes = fullIp.GetAddressBytes();
            if (bytes.Length < 4)
            {
                return(true);
            }

            unchecked
            {
                uint ip;
                fixed(byte *pBytes = bytes)
                {
                    int offset = bytes.Length - 4;

                    ip = *(uint *)&pBytes[offset];
                }

                Cidr[] ks = Lines.K;
                for (int i = 0; i < ks.Length; i++)
                {
                    Cidr cidr  = ks[i];
                    uint mask  = cidr.Ip >> (32 - cidr.Mask);
                    uint match = ip >> (32 - cidr.Mask);
                    if (match == mask)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
コード例 #3
0
        public void A()
        {
            var a = Cidr.Parse("92.223.124.5/32");

            Assert.Equal(IPAddress.Parse("92.223.124.5"), a.Start);
            Assert.Equal(IPAddress.Parse("92.223.124.5"), a.End);
        }
コード例 #4
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_Parse_Parses_Addresses_Correctly()
        {
            var worksheet = new ExcelWorksheetData(TestContext);

            // Uncomment this block if you want to restrict the test to just those rows with a RunThis of true
            // var runThis = worksheet.NBool("RunThis").GetValueOrDefault();
            // if(!runThis) Assert.Fail();

            var       address   = worksheet.EString("Parse");
            Exception exception = null;
            Cidr      cidr      = null;

            try {
                cidr = Cidr.Parse(address);
            } catch (Exception ex) {
                exception = ex;
            }

            Assert.AreEqual(exception != null, worksheet.NBool("Exception").GetValueOrDefault(), exception == null ? "Did not see exception" : exception.Message);
            if (exception == null)
            {
                Assert.AreEqual(GetExcelIPAddress(worksheet, "Address"), cidr.Address);
                Assert.AreEqual(GetExcelIPAddress(worksheet, "MaskedAddress"), cidr.MaskedAddress);
                Assert.AreEqual(worksheet.Int("BitmaskBits"), cidr.BitmaskBits);
                Assert.AreEqual(worksheet.UInt("IPv4Bitmask"), cidr.IPv4Bitmask);
                Assert.AreEqual(GetExcelIPAddress(worksheet, "From"), cidr.FirstMatchingAddress);
                Assert.AreEqual(GetExcelIPAddress(worksheet, "To"), cidr.LastMatchingAddress);
            }
        }
コード例 #5
0
ファイル: Default.cs プロジェクト: diycp/Antd
        public static NetworkInterfaceConfiguration ExternalBridgeInterfaceConfiguration(string customIp = "")
        {
            var                   host      = Host2Configuration.Host;
            var                   ip        = string.IsNullOrEmpty(customIp) ? "10.11.254.254" : customIp;
            const string          subnet    = "16";
            const NetworkRoleVerb verb      = NetworkRoleVerb.eif;
            var                   hostname  = $"{host.HostName}{verb}.{host.InternalDomainPrimary}";
            var                   alias     = $"{verb}00";
            var                   broadcast = Cidr.CalcNetwork(ip, subnet).Broadcast.ToString();
            var                   networkInterfaceConfiguration = new NetworkInterfaceConfiguration {
                Id          = $"{customIp}gfEUxrgNe0qVR4HWpT1U2A",
                Type        = NetworkInterfaceType.External,
                Hostname    = hostname,
                Index       = 0,
                Description = "default interface configuration",
                RoleVerb    = verb,
                Alias       = alias,
                Mode        = NetworkInterfaceMode.Static,
                Ip          = ip,
                Subnet      = subnet,
                Broadcast   = broadcast,
                Adapter     = NetworkAdapterType.Bridge,
                ChildrenIf  = Network2Configuration.InterfacePhysical.ToList()
            };

            return(networkInterfaceConfiguration);
        }
コード例 #6
0
        public void B()
        {
            var a = Cidr.Parse("92.223.126.204/32");

            Assert.Equal(32, a.Suffix);
            Assert.Equal(IPAddress.Parse("92.223.126.204"), a.Start);
            Assert.Equal(IPAddress.Parse("92.223.126.204"), a.End);
        }
コード例 #7
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_Default_Constructor_Initialises_To_Known_State()
        {
            var cidr = new Cidr();

            Assert.AreEqual(IPAddress.None, cidr.Address);
            Assert.AreEqual(IPAddress.Parse("0.0.0.0"), cidr.MaskedAddress);
            Assert.AreEqual(0, cidr.BitmaskBits);
            Assert.AreEqual((uint)0, cidr.IPv4Bitmask);
        }
コード例 #8
0
        /// <summary>
        /// Fills the first and last address on the view.
        /// </summary>
        private void ShowCidrAddresses()
        {
            Cidr cidr    = null;
            var  isEmpty = String.IsNullOrEmpty(_View.Cidr);
            var  isValid = !isEmpty && Cidr.TryParse(_View.Cidr, out cidr);

            _View.FirstMatchingAddress = isEmpty ? "" : !isValid ? Strings.CidrInvalid : cidr.FirstMatchingAddress.ToString();
            _View.LastMatchingAddress  = isEmpty ? "" : !isValid ? Strings.CidrInvalid : cidr.LastMatchingAddress.ToString();
        }
コード例 #9
0
        public int CompareTo(IPNetwork other)
        {
            var network = Network.CompareTo(other.Network);

            if (network != 0)
            {
                return(network);
            }

            var cidr = Cidr.CompareTo(other.Cidr);

            return(cidr);
        }
コード例 #10
0
        /// <summary>
        /// Called when the list view wants the columns for a CIDR address.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView_FetchRecordContent(object sender, ListContentEventArgs e)
        {
            Cidr cidr     = null;
            var  cidrText = e.Record as string;

            if (!String.IsNullOrEmpty(cidrText))
            {
                Cidr.TryParse(cidrText, out cidr);
            }

            e.ColumnTexts.Add(cidrText);
            e.ColumnTexts.Add(cidr == null ? "" : cidr.FirstMatchingAddress.ToString());
            e.ColumnTexts.Add(cidr == null ? "" : cidr.LastMatchingAddress.ToString());
        }
コード例 #11
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_Equals_Returns_True_When_Properties_Match()
        {
            var obj1 = Cidr.Parse("1.2.3.4/32");
            var obj2 = Cidr.Parse("1.2.3.4/32");
            var obj3 = Cidr.Parse("5.6.7.8/32");
            var obj4 = Cidr.Parse("1.2.3.4/31");

            Assert.IsTrue(obj1.Equals(obj1));
            Assert.IsTrue(obj1.Equals(obj2));

            Assert.IsFalse(obj1.Equals(null));
            Assert.IsFalse(obj1.Equals(obj3));
            Assert.IsFalse(obj1.Equals(obj4));
        }
コード例 #12
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_Matches_Compares_Addresses_Correctly()
        {
            var worksheet = new ExcelWorksheetData(TestContext);

            // Uncomment this block if you want to restrict the test to just those rows with a RunThis of true
            // var runThis = worksheet.NBool("RunThis").GetValueOrDefault();
            // if(!runThis) Assert.Fail();

            var cidr    = Cidr.Parse(worksheet.String("CIDR"));
            var address = GetExcelIPAddress(worksheet, "Address");

            var expected = worksheet.Bool("Result");
            var actual   = cidr.Matches(address);

            Assert.AreEqual(expected, actual);
        }
コード例 #13
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_TryParse_Parses_Addresses_Correctly()
        {
            var worksheet = new ExcelWorksheetData(TestContext);

            Cidr cidr;
            var  address = worksheet.EString("Parse");
            var  parsed  = Cidr.TryParse(address, out cidr);

            Assert.AreEqual(!parsed, worksheet.NBool("Exception").GetValueOrDefault());
            if (parsed)
            {
                Assert.AreEqual(GetExcelIPAddress(worksheet, "Address"), cidr.Address);
                Assert.AreEqual(GetExcelIPAddress(worksheet, "MaskedAddress"), cidr.MaskedAddress);
                Assert.AreEqual(worksheet.Int("BitmaskBits"), cidr.BitmaskBits);
                Assert.AreEqual(worksheet.UInt("IPv4Bitmask"), cidr.IPv4Bitmask);
            }
        }
コード例 #14
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="access"></param>
        public void Initialise(Access access)
        {
            if (access == null)
            {
                throw new ArgumentNullException("access");
            }

            lock (_SyncLock) {
                _Initialised   = true;
                _DefaultAccess = access.DefaultAccess;

                _Cidrs = new List <Cidr>();
                foreach (var address in access.Addresses)
                {
                    _Cidrs.Add(Cidr.Parse(address));
                }

                Access = access;
            }
        }
コード例 #15
0
        /// <summary>
        /// Adds or inserts the CIDR address to the CIDR list.
        /// </summary>
        /// <param name="cidrText"></param>
        /// <param name="index"></param>
        private void AddOrInsertCidr(string cidrText, int index = -1)
        {
            Cidr cidr;

            if (Cidr.TryParse(cidrText, out cidr))
            {
                var normalisedCidr = String.Format("{0}/{1}", cidr.MaskedAddress, cidr.BitmaskBits);
                if (!Addresses.Contains(normalisedCidr))
                {
                    if (index == -1 || index >= Addresses.Count)
                    {
                        Addresses.Add(normalisedCidr);
                    }
                    else
                    {
                        Addresses.Insert(index, normalisedCidr);
                    }
                }

                listView.SelectedRecord = normalisedCidr;
            }
        }
コード例 #16
0
ファイル: Server.cs プロジェクト: Earth2Me/Aselia
            public void Load(SettingsBase settings)
            {
                try
                {
                    KLine[] ks = settings.KLines.ToArray();
                    K = new Cidr[ks.Length];
                    for (int i = 0; i < K.Length; i++)
                    {
                        K[i] = ks[i].Ban;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Unable to load K:lines: {0}", ex.Message);
                }

                try
                {
                    QLine[] qs = settings.QLines.ToArray();
                    Q = new Regex[qs.Length];
                    for (int i = 0; i < Q.Length; i++)
                    {
                        try
                        {
                            Q[i] = new Regex(qs[i].Ban, RegexOptions.Compiled | RegexOptions.IgnoreCase);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("The following Q:line is invalid: {0} ({1})", qs[i], ex.Message);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Unable to load Q:lines: {0}", ex.Message);
                }
            }
コード例 #17
0
ファイル: AntdNetwork2Module.cs プロジェクト: diycp/Antd
        public AntdNetwork2Module()
        {
            Get["/network2"] = x => {
                var physicalInterfaces = Network2Configuration.InterfacePhysical.ToList();
                var bridgeInterfaces   = Network2Configuration.InterfaceBridge.ToList();
                var bondInterfaces     = Network2Configuration.InterfaceBond.ToList();
                var virtualInterfaces  = Network2Configuration.InterfaceVirtual.ToList();
                foreach (var vif in virtualInterfaces)
                {
                    if (physicalInterfaces.Any(_ => _ == vif) ||
                        bridgeInterfaces.Any(_ => _ == vif) ||
                        bondInterfaces.Any(_ => _ == vif))
                    {
                        virtualInterfaces.Remove(vif);
                    }
                }
                var allifs = new List <string>();
                allifs.AddRange(physicalInterfaces);
                allifs.AddRange(bridgeInterfaces);
                allifs.AddRange(bondInterfaces);
                var model = new PageNetwork2Model {
                    PhysicalIf = physicalInterfaces,
                    BridgeIf   = bridgeInterfaces,
                    BondIf     = bondInterfaces,
                    VirtualIf  = virtualInterfaces,
                    AllIfs     = allifs, //new List <string> { "dev1", "dev2", "dev3" },
                    InterfaceConfigurationList = Network2Configuration.InterfaceConfigurationList,
                    GatewayConfigurationList   = Network2Configuration.GatewayConfigurationList,
                    RouteConfigurationList     = Network2Configuration.RouteConfigurationList,
                    DnsConfigurationList       = Network2Configuration.DnsConfigurationList,
                    Configuration = Network2Configuration.Conf.Interfaces,
                    NetworkHardwareConfigurationList = Network2Configuration.NetworkHardwareConfigurationList,
                    LagConfigurationList             = Network2Configuration.NetworkAggregatedInterfaceConfigurationList,
                    Variables = Host2Configuration.Host,
                    //ActiveDnsConfiguration = Network2Configuration.Conf.ActiveDnsConfiguration
                };
                return(JsonConvert.SerializeObject(model));
            };

            Post["/network2/restart"] = x => {
                new Do().NetworkChanges();
                return(HttpStatusCode.OK);
            };

            Post["/network2/interfaceconfiguration"] = x => {
                string id        = Request.Form.Id;
                string type      = Request.Form.Type;
                var    typedType = type?.ToEnum <NetworkInterfaceType>() ?? NetworkInterfaceType.Null;
                if (typedType == NetworkInterfaceType.Null)
                {
                    return(HttpStatusCode.InternalServerError);
                }
                var    index       = Network2Configuration.InterfaceConfigurationList.Count(_ => _.Type == typedType);
                string description = Request.Form.Description;
                var    typedVerb   = typedType == NetworkInterfaceType.Internal ? NetworkRoleVerb.iif : NetworkRoleVerb.eif;
                var    alias       = $"{typedVerb.ToString()}{index:D2}";
                string mode        = Request.Form.Mode;
                var    typedMode   = mode?.ToEnum <NetworkInterfaceMode>() ?? NetworkInterfaceMode.Dynamic;
                string ip          = Request.Form.Ip;
                string range       = Request.Form.Range;
                var    vars        = Host2Configuration.Host;

                var hostname = "";
                var subnet   = "";
                if (typedType == NetworkInterfaceType.Internal)
                {
                    hostname = $"{vars.HostName}{typedVerb.ToString()}.{vars.InternalDomainPrimary}";
                    subnet   = vars.InternalNetPrimaryBits;
                }
                if (typedType == NetworkInterfaceType.External)
                {
                    hostname = $"{vars.HostName}{typedVerb.ToString()}.{vars.ExternalDomainPrimary}";
                    subnet   = vars.ExternalNetPrimaryBits;
                }

                var broadcast = "";
                try {
                    broadcast = Cidr.CalcNetwork(ip, subnet).Broadcast.ToString();
                }
                catch (Exception ex) {
                    ConsoleLogger.Error(ex.Message);
                }

                var model = new NetworkInterfaceConfiguration {
                    Id          = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id,
                    Type        = typedType,
                    Hostname    = hostname,
                    Index       = index,
                    Description = description,
                    RoleVerb    = typedVerb,
                    Alias       = alias,
                    Mode        = typedMode,
                    Ip          = ip,
                    Range       = range,
                    Subnet      = subnet,
                    Broadcast   = broadcast
                };
                Network2Configuration.AddInterfaceConfiguration(model);
                return(HttpStatusCode.OK);
            };

            Post["/network2/interfaceconfiguration/del"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.RemoveInterfaceConfiguration(guid);
                return(HttpStatusCode.OK);
            };

            Post["/network2/gatewayconfiguration"] = x => {
                string id             = Request.Form.Id;
                string description    = Request.Form.Description;
                string gatewayAddress = Request.Form.GatewayAddress;
                string def            = Request.Form.Default;
                var    model          = new NetworkGatewayConfiguration {
                    Id             = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id,
                    Description    = description,
                    GatewayAddress = gatewayAddress,
                    IsDefault      = !string.IsNullOrEmpty(def) && Convert.ToBoolean(def)
                };
                Network2Configuration.AddGatewayConfiguration(model);
                return(HttpStatusCode.OK);
            };

            Post["/network2/gatewayconfiguration/del"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.RemoveGatewayConfiguration(guid);
                return(HttpStatusCode.OK);
            };

            Post["/network2/lagconfiguration"] = x => {
                string id       = Request.Form.Id;
                string parent   = Request.Form.Parent;
                string children = Request.Form.Children;
                var    model    = new NetworkAggregatedInterfaceConfiguration {
                    Id       = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id,
                    Parent   = parent,
                    Children = string.IsNullOrEmpty(children) ? new List <string>() : children.SplitToList()
                };
                Network2Configuration.AddAggregatedInterfaceConfiguration(model);
                return(HttpStatusCode.OK);
            };

            Post["/network2/lagconfiguration/del"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.RemoveAggregatedInterfaceConfiguration(guid);
                return(HttpStatusCode.OK);
            };

            Post["/network2/routeconfiguration"] = x => {
                string id               = Request.Form.Id;
                string destinationIp    = Request.Form.DestinationIp;
                string destinationRange = Request.Form.DestinationRange;
                string gateway          = Request.Form.Gateway;
                var    model            = new NetworkRouteConfiguration {
                    Id               = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id,
                    DestinationIp    = destinationIp,
                    DestinationRange = destinationRange,
                    Gateway          = gateway
                };
                Network2Configuration.AddRouteConfiguration(model);
                return(HttpStatusCode.OK);
            };

            Post["/network2/routeconfiguration/del"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.RemoveRouteConfiguration(guid);
                return(HttpStatusCode.OK);
            };

            Post["/network2/dnsconfiguration"] = x => {
                string id        = Request.Form.Id;
                string type      = Request.Form.Type;
                var    typedType = type?.ToEnum <DnsType>() ?? DnsType.Null;
                if (typedType == DnsType.Null)
                {
                    return(HttpStatusCode.InternalServerError);
                }
                string domain = Request.Form.Domain;
                string ip     = Request.Form.Ip;
                var    model  = new DnsConfiguration {
                    Id     = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id,
                    Type   = typedType,
                    Domain = domain,
                    Ip     = ip
                };
                Network2Configuration.AddDnsConfiguration(model);
                return(HttpStatusCode.OK);
            };

            Post["/network2/dnsconfiguration/del"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.RemoveDnsConfiguration(guid);
                return(HttpStatusCode.OK);
            };

            Post["/network2/dnsconfiguration/active"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.SetDnsConfigurationActive(guid);
                return(HttpStatusCode.OK);
            };

            Post["/network2/nsupdateconfiguration"] = x => {
                string id           = Request.Form.Id;
                string serverName   = Request.Form.ServerName;
                string serverPort   = Request.Form.ServerPort;
                string localAddress = Request.Form.LocalAddress;
                string localPort    = Request.Form.LocalPort;
                string zoneName     = Request.Form.ZoneName;
                string className    = Request.Form.ClassName;
                string nxDomain     = Request.Form.NxDomain;
                string yxDomain     = Request.Form.YxDomain;
                string nxRrset      = Request.Form.NxRrset;
                string yxRrset      = Request.Form.YxRrset;
                string delete       = Request.Form.Delete;
                string add          = Request.Form.Add;
                var    model        = new NsUpdateConfiguration {
                    Id           = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id,
                    ServerName   = serverName,
                    ServerPort   = serverPort,
                    LocalAddress = localAddress,
                    LocalPort    = localPort,
                    ZoneName     = zoneName,
                    ClassName    = className,
                    NxDomain     = nxDomain,
                    YxDomain     = yxDomain,
                    NxRrset      = nxRrset,
                    YxRrset      = yxRrset,
                    Delete       = delete,
                    Add          = add
                };
                Network2Configuration.AddNsUpdateConfiguration(model);
                return(HttpStatusCode.OK);
            };

            Post["/network2/nsupdateconfiguration/del"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.RemoveNsUpdateConfiguration(guid);
                return(HttpStatusCode.OK);
            };

            Post["/network2/hardwareconfiguration"] = x => {
                string id         = Request.Form.Id;
                string txqueuelen = Request.Form.Txqueuelen;
                string mtu        = Request.Form.Mtu;
                string macAddress = Request.Form.MacAddress;
                var    model      = new NetworkHardwareConfiguration()
                {
                    Id         = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id,
                    Txqueuelen = txqueuelen,
                    Mtu        = mtu,
                    MacAddress = macAddress
                };
                Network2Configuration.AddNetworkHardwareConfiguration(model);
                return(HttpStatusCode.OK);
            };

            Post["/network2/hardwareconfiguration/del"] = x => {
                string guid = Request.Form.Guid;
                Network2Configuration.RemoveNetworkHardwareConfiguration(guid);
                return(HttpStatusCode.OK);
            };

            //Post["/network2/interface"] = x => {
            //    string dev = Request.Form.Device;
            //    string conf = Request.Form.Configuration;
            //    string confs = Request.Form.AdditionalConfigurations;
            //    string gwConf = Request.Form.GatewayConfiguration;
            //    string hwConf = Request.Form.HardwareConfiguration;
            //    string status = Request.Form.Status;
            //    var typedStatus = status?.ToEnum<NetworkInterfaceStatus>() ?? NetworkInterfaceStatus.Down;
            //    var model = new NetworkInterface {
            //        Device = dev,
            //        Configuration = conf,
            //        HardwareConfiguration = hwConf,
            //        Status = typedStatus,
            //        AdditionalConfigurations = confs == null ? new List<string>() : StringExtensions.SplitToList(confs),
            //        GatewayConfiguration = gwConf
            //    };
            //    Network2Configuration.AddInterfaceSetting(model);
            //    return HttpStatusCode.OK;
            //};

            Post["/network2/interface2"] = x => {
                string conf  = Request.Form.Config;
                var    model = JsonConvert.DeserializeObject <List <NetworkInterface> >(conf);
                Network2Configuration.SaveInterfaceSetting(model);
                return(HttpStatusCode.OK);
            };

            //Post["/network2/interface/del"] = x => {
            //    string dev = Request.Form.Device;
            //    Network2Configuration.RemoveInterfaceSetting(dev);
            //    return HttpStatusCode.OK;
            //};

            Post["/network2/add/bond"] = x => {
                string name = Request.Form.Name;
                try {
                    CommandLauncher.Launch("bond-set", new Dictionary <string, string> {
                        { "$bond", name }
                    });
                    ConsoleLogger.Log($"created bond {name}");
                }
                catch (Exception ex) {
                    ConsoleLogger.Error(ex.Message);
                }
                return(HttpStatusCode.OK);
            };

            Post["/network2/add/bridge"] = x => {
                string name = Request.Form.Name;
                try {
                    CommandLauncher.Launch("brctl-add", new Dictionary <string, string> {
                        { "$bridge", name }
                    });
                    ConsoleLogger.Log($"created bridge {name}");
                }
                catch (Exception ex) {
                    ConsoleLogger.Error(ex.Message);
                }
                return(HttpStatusCode.OK);
            };
        }
コード例 #18
0
ファイル: IPAddress.cs プロジェクト: laitkor/SampleADO.Net
        public override string ToString()
        {
            if (Null)
            {
                return("");
            }
            var s = new System.Text.StringBuilder();

            if (!V6)
            {
                var ipl = Address;
                if (IsMask)
                {
                    int digits = 32 - Cidr;
                    ipl = (Int128.MaxValue << 1) | 0x1; // remove left sign bit
                    ipl = ipl << digits;
                }
                s.Append(String.Format("{0}.{1}.{2}.{3}", (ipl >> 24) & 0xFFL, (ipl >> 16) & 0xFFL, (ipl >> 8) & 0xFFL, (ipl & 0xFFL)));
            }
            else if (!IsMask)
            {
                var    vals = new List <int>();
                int    i;
                Int128 a = Address;
                for (i = 0; i < 8; i++)
                {
                    vals.Add((int)(a % c));
                    a = a / c;
                }

                int index = -1, n = 0, m = 0;
                for (i = 7; i >= 0; i--)
                {
                    if (vals[i] == 0)
                    {
                        n++;
                        if (n > m)
                        {
                            index = i;
                            m     = n;
                        }
                    }
                }
                index += m - 1;

                i = 7;
                while (i >= 0)
                {
                    if (i == index)
                    {
                        if (m == 8)
                        {
                            s.Append("::");
                        }
                        else
                        {
                            s.Append(":");
                        }
                        i -= m;
                    }
                    if (i >= 0)
                    {
                        if (i < 7)
                        {
                            s.Append(":");
                        }
                        s.Append(vals[i].ToString("x"));
                    }
                    i--;
                }
            }
            if (IsSubnet && !(IsMask && V4))
            {
                s.Append('/'); s.Append(Cidr.ToString());
            }
            return(s.ToString());
        }
コード例 #19
0
ファイル: Server.cs プロジェクト: Earth2Me/Aselia
            public void Load(SettingsBase settings)
            {
                try
                {
                    KLine[] ks = settings.KLines.ToArray();
                    K = new Cidr[ks.Length];
                    for (int i = 0; i < K.Length; i++)
                    {
                        K[i] = ks[i].Ban;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Unable to load K:lines: {0}", ex.Message);
                }

                try
                {
                    QLine[] qs = settings.QLines.ToArray();
                    Q = new Regex[qs.Length];
                    for (int i = 0; i < Q.Length; i++)
                    {
                        try
                        {
                            Q[i] = new Regex(qs[i].Ban, RegexOptions.Compiled | RegexOptions.IgnoreCase);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("The following Q:line is invalid: {0} ({1})", qs[i], ex.Message);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Unable to load Q:lines: {0}", ex.Message);
                }
            }
コード例 #20
0
ファイル: Application.cs プロジェクト: diycp/Antd
        private static void Main()
        {
            ConsoleLogger.Log("[boot step] starting antd");
            var startTime = DateTime.Now;

            ConsoleLogger.Log("[boot step] core procedures");

            #region [    os Rw    ]
            Bash.Execute("mount -o remount,rw /", false);
            Bash.Execute("mount -o remount,rw /mnt/cdrom", false);
            #endregion

            #region [    Remove Limits    ]
            const string limitsFile = "/etc/security/limits.conf";
            if (File.Exists(limitsFile))
            {
                if (!File.ReadAllText(limitsFile).Contains("root - nofile 1024000"))
                {
                    FileWithAcl.AppendAllLines(limitsFile, new[] { "root - nofile 1024000" }, "644", "root", "wheel");
                }
            }
            Bash.Execute("ulimit -n 1024000", false);
            #endregion

            #region [    Overlay Watcher    ]
            if (Directory.Exists(Parameter.Overlay))
            {
                new OverlayWatcher().StartWatching();
                ConsoleLogger.Log("overlay watcher ready");
            }
            #endregion

            #region [    Working Directories    ]
            Directory.CreateDirectory(Parameter.AntdCfg);
            Directory.CreateDirectory(Parameter.AntdCfgServices);
            Directory.CreateDirectory(Parameter.AntdCfgNetwork);
            Network2Configuration.CreateWorkingDirectories();
            Directory.CreateDirectory(Parameter.AntdCfgParameters);
            Directory.CreateDirectory(Parameter.AntdCfgCluster);
            Directory.CreateDirectory($"{Parameter.AntdCfgServices}/acls");
            Directory.CreateDirectory($"{Parameter.AntdCfgServices}/acls/template");
            Directory.CreateDirectory(Parameter.RepoConfig);
            Directory.CreateDirectory(Parameter.RepoDirs);
            Directory.CreateDirectory(Parameter.AnthillaUnits);
            Directory.CreateDirectory(Parameter.TimerUnits);
            Directory.CreateDirectory(Parameter.AntdCfgVfs);
            Directory.CreateDirectory(Parameter.AntdCfgRssdp);
            ConsoleLogger.Log("working directories created");
            MountManagement.WorkingDirectories();
            ConsoleLogger.Log("working directories mounted");
            #endregion

            #region [    Mounts    ]
            if (MountHelper.IsAlreadyMounted("/mnt/cdrom/Kernel/active-firmware", "/lib64/firmware") == false)
            {
                Bash.Execute("mount /mnt/cdrom/Kernel/active-firmware /lib64/firmware", false);
            }
            var kernelRelease = Bash.Execute("uname -r").Trim();
            var linkedRelease = Bash.Execute("file /mnt/cdrom/Kernel/active-modules").Trim();
            if (MountHelper.IsAlreadyMounted("/mnt/cdrom/Kernel/active-modules") == false &&
                linkedRelease.Contains(kernelRelease))
            {
                var moduleDir = $"/lib64/modules/{kernelRelease}/";
                DirectoryWithAcl.CreateDirectory(moduleDir);
                Bash.Execute($"mount /mnt/cdrom/Kernel/active-modules {moduleDir}", false);
            }
            Bash.Execute("systemctl restart systemd-modules-load.service", false);
            MountManagement.AllDirectories();
            ConsoleLogger.Log("mounts ready");
            #endregion

            #region [    Check Units Location    ]
            var anthillaUnits = Directory.EnumerateFiles(Parameter.AnthillaUnits, "*.*", SearchOption.TopDirectoryOnly);
            if (!anthillaUnits.Any())
            {
                var antdUnits = Directory.EnumerateFiles(Parameter.AntdUnits, "*.*", SearchOption.TopDirectoryOnly);
                foreach (var unit in antdUnits)
                {
                    var trueUnit = unit.Replace(Parameter.AntdUnits, Parameter.AnthillaUnits);
                    if (!File.Exists(trueUnit))
                    {
                        File.Copy(unit, trueUnit);
                    }
                    File.Delete(unit);
                    Bash.Execute($"ln -s {trueUnit} {unit}");
                }
                var appsUnits = Directory.EnumerateFiles(Parameter.AppsUnits, "*.*", SearchOption.TopDirectoryOnly);
                foreach (var unit in appsUnits)
                {
                    var trueUnit = unit.Replace(Parameter.AntdUnits, Parameter.AnthillaUnits);
                    if (!File.Exists(trueUnit))
                    {
                        File.Copy(unit, trueUnit);
                    }
                    File.Delete(unit);
                    Bash.Execute($"ln -s {trueUnit} {unit}");
                }
                var applicativeUnits = Directory.EnumerateFiles(Parameter.ApplicativeUnits, "*.*", SearchOption.TopDirectoryOnly);
                foreach (var unit in applicativeUnits)
                {
                    var trueUnit = unit.Replace(Parameter.AntdUnits, Parameter.AnthillaUnits);
                    if (!File.Exists(trueUnit))
                    {
                        File.Copy(unit, trueUnit);
                    }
                    File.Delete(unit);
                    Bash.Execute($"ln -s {trueUnit} {unit}");
                }
            }
            anthillaUnits = Directory.EnumerateFiles(Parameter.AnthillaUnits, "*.*", SearchOption.TopDirectoryOnly).ToList();
            if (!anthillaUnits.Any())
            {
                foreach (var unit in anthillaUnits)
                {
                    Bash.Execute($"chown root:wheel {unit}");
                    Bash.Execute($"chmod 644 {unit}");
                }
            }
            ConsoleLogger.Log("[check] units integrity");
            #endregion

            #region [    Application Keys    ]
            var ak  = new AsymmetricKeys(Parameter.AntdCfgKeys, KeyName);
            var pub = ak.PublicKey;
            #endregion

            #region [    Secret    ]
            if (!File.Exists(Parameter.AntdCfgSecret))
            {
                FileWithAcl.WriteAllText(Parameter.AntdCfgSecret, Secret.Gen(), "644", "root", "wheel");
            }

            if (string.IsNullOrEmpty(File.ReadAllText(Parameter.AntdCfgSecret)))
            {
                FileWithAcl.WriteAllText(Parameter.AntdCfgSecret, Secret.Gen(), "644", "root", "wheel");
            }
            #endregion

            #region [    License Management    ]
            var appconfig = new AppConfiguration().Get();
            ConsoleLogger.Log($"[cloud] {appconfig.CloudAddress}");
            try {
                var machineIds = Machine.MachineIds.Get;
                ConsoleLogger.Log($"[machineid] {machineIds.PartNumber}");
                ConsoleLogger.Log($"[machineid] {machineIds.SerialNumber}");
                ConsoleLogger.Log($"[machineid] {machineIds.MachineUid}");
                var licenseManagement = new LicenseManagement();
                licenseManagement.Download("Antd", machineIds, pub);
                var licenseStatus = licenseManagement.Check("Antd", machineIds, pub);
                ConsoleLogger.Log(licenseStatus == null
                    ? "[license] license results null"
                    : $"[license] {licenseStatus.Status} - {licenseStatus.Message}");
            }
            catch (Exception ex) {
                ConsoleLogger.Warn(ex.Message);
            }
            #endregion

            #region [    JournalD    ]
            if (JournaldConfiguration.IsActive())
            {
                JournaldConfiguration.Set();
            }
            #endregion

            #region [    Import Existing Configuration    ]

            Network2Configuration.SetWorkingDirectories();

            #region import host2model
            var tmpHost  = HostConfiguration.Host;
            var varsFile = Host2Configuration.FilePath;
            var vars     = new Host2Model {
                HostName              = tmpHost.HostName.StoredValues.FirstOrDefault().Value,
                HostChassis           = tmpHost.HostChassis.StoredValues.FirstOrDefault().Value,
                HostDeployment        = tmpHost.HostDeployment.StoredValues.FirstOrDefault().Value,
                HostLocation          = tmpHost.HostLocation.StoredValues.FirstOrDefault().Value,
                InternalDomainPrimary = tmpHost.InternalDomain,
                ExternalDomainPrimary = tmpHost.ExternalDomain,
                InternalHostIpPrimary = "",
                ExternalHostIpPrimary = "",
                Timezone              = tmpHost.Timezone.StoredValues.FirstOrDefault().Value,
                NtpdateServer         = tmpHost.NtpdateServer.StoredValues.FirstOrDefault().Value,
                MachineUid            = Machine.MachineIds.Get.MachineUid,
                Cloud = Parameter.Cloud
            };

            if (File.Exists(HostConfiguration.FilePath))
            {
                if (!File.Exists(varsFile))
                {
                    ConsoleLogger.Log("[data import] host configuration");
                    Host2Configuration.Export(vars);
                }
                else
                {
                    if (string.IsNullOrEmpty(File.ReadAllText(varsFile)))
                    {
                        ConsoleLogger.Log("[data import] host configuration");
                        Host2Configuration.Export(vars);
                    }
                }
            }
            #endregion

            #region import network2model
            var tmpNet   = NetworkConfiguration.Get();
            var tmpHost2 = Host2Configuration.Host;
            var niflist  = new List <NetworkInterface>();
            foreach (var cif in tmpNet.Interfaces)
            {
                ConsoleLogger.Log($"[data import] network configuration for '{cif.Interface}'");
                var broadcast = "";
                try {
                    broadcast = Cidr.CalcNetwork(cif.StaticAddress, cif.StaticRange).Broadcast.ToString();
                }
                catch (Exception ex) {
                    ConsoleLogger.Error($"[data import] {ex.Message}");
                }
                var hostname             = $"{vars.HostName}{NetworkInterfaceType.Internal}.{vars.InternalDomainPrimary}";
                var subnet               = tmpHost2.InternalNetPrimaryBits;
                var index                = Network2Configuration.InterfaceConfigurationList.Count(_ => _.Type == NetworkInterfaceType.Internal);
                var networkConfiguration = new NetworkInterfaceConfiguration {
                    Id          = cif.Interface + cif.Guid.Substring(0, 8),
                    Adapter     = cif.Type,
                    Alias       = "import " + cif.Interface,
                    Ip          = cif.StaticAddress,
                    Subnet      = subnet,
                    Mode        = cif.Mode,
                    ChildrenIf  = cif.InterfaceList,
                    Broadcast   = broadcast,
                    Type        = NetworkInterfaceType.Internal,
                    Hostname    = hostname,
                    Index       = index,
                    Description = "import " + cif.Interface,
                    RoleVerb    = NetworkRoleVerb.iif
                };

                var tryget = Network2Configuration.InterfaceConfigurationList.FirstOrDefault(_ => _.Id == networkConfiguration.Id);
                if (tryget == null)
                {
                    Network2Configuration.AddInterfaceConfiguration(networkConfiguration);
                }

                var ifConfig = new NetworkInterface {
                    Device                   = cif.Interface,
                    Configuration            = networkConfiguration.Id,
                    AdditionalConfigurations = new List <string>(),
                    GatewayConfiguration     = ""
                };

                var tryget2 = Network2Configuration.Conf.Interfaces.FirstOrDefault(_ => _.Device == cif.Interface);
                if (tryget2 == null)
                {
                    niflist.Add(ifConfig);
                }
            }
            if (niflist.Any())
            {
                Network2Configuration.SaveInterfaceSetting(niflist);
            }
            if (!Network2Configuration.GatewayConfigurationList.Any())
            {
                var defaultGatewayConfiguration = new NetworkGatewayConfiguration {
                    Id             = Random.ShortGuid(),
                    IsDefault      = true,
                    GatewayAddress = vars.InternalHostIpPrimary,
                    Description    = "DFGW"
                };
                Network2Configuration.AddGatewayConfiguration(defaultGatewayConfiguration);
            }
            #endregion

            #region import parameters
            if (!File.Exists($"{Parameter.AntdCfgParameters}/endcommands.conf"))
            {
                var tmpsetup = SetupConfiguration.Get();
                HostParametersConfiguration.SetEndCommandsList(tmpsetup);
            }
            if (!File.Exists($"{Parameter.AntdCfgParameters}/modprobes.conf"))
            {
                var ddd = EnumerableExtensions.Merge(tmpHost.Modprobes.Select(_ => _.StoredValues.Select(___ => ___.Value)));
                HostParametersConfiguration.SetModprobesList(ddd.ToList());
            }
            if (!File.Exists($"{Parameter.AntdCfgParameters}/rmmod.conf"))
            {
                var ddd = tmpHost.RemoveModules.StoredValues.FirstOrDefault().Value.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                HostParametersConfiguration.SetRmmodList(ddd.ToList());
            }
            if (!File.Exists($"{Parameter.AntdCfgParameters}/modulesblacklist.conf"))
            {
                var ddd = tmpHost.ModulesBlacklist;
                HostParametersConfiguration.SetModulesBlacklistList(ddd.ToList());
            }
            if (!File.Exists($"{Parameter.AntdCfgParameters}/osparameters.conf"))
            {
                var list = new List <string> {
                    "/proc/sys/fs/file-max 1024000",
                    "/proc/sys/net/bridge/bridge-nf-call-arptables 0",
                    "/proc/sys/net/bridge/bridge-nf-call-ip6tables 0",
                    "/proc/sys/net/bridge/bridge-nf-call-iptables 0",
                    "/proc/sys/net/bridge/bridge-nf-filter-pppoe-tagged 0",
                    "/proc/sys/net/bridge/bridge-nf-filter-vlan-tagged 0",
                    "/proc/sys/net/core/netdev_max_backlog 300000",
                    "/proc/sys/net/core/optmem_max 40960",
                    "/proc/sys/net/core/rmem_max 268435456",
                    "/proc/sys/net/core/somaxconn 65536",
                    "/proc/sys/net/core/wmem_max 268435456",
                    "/proc/sys/net/ipv4/conf/all/accept_local 1",
                    "/proc/sys/net/ipv4/conf/all/accept_redirects 1",
                    "/proc/sys/net/ipv4/conf/all/accept_source_route 1",
                    "/proc/sys/net/ipv4/conf/all/rp_filter 0",
                    "/proc/sys/net/ipv4/conf/all/forwarding 1",
                    "/proc/sys/net/ipv4/conf/default/rp_filter 0",
                    "/proc/sys/net/ipv4/ip_forward 1",
                    "/proc/sys/net/ipv4/ip_local_port_range 1024 65000",
                    "/proc/sys/net/ipv4/ip_no_pmtu_disc 1",
                    "/proc/sys/net/ipv4/tcp_congestion_control htcp",
                    "/proc/sys/net/ipv4/tcp_fin_timeout 40",
                    "/proc/sys/net/ipv4/tcp_max_syn_backlog 3240000",
                    "/proc/sys/net/ipv4/tcp_max_tw_buckets 1440000",
                    "/proc/sys/net/ipv4/tcp_moderate_rcvbuf 1",
                    "/proc/sys/net/ipv4/tcp_mtu_probing 1",
                    "/proc/sys/net/ipv4/tcp_rmem 4096 87380 134217728",
                    "/proc/sys/net/ipv4/tcp_slow_start_after_idle 1",
                    "/proc/sys/net/ipv4/tcp_tw_recycle 0",
                    "/proc/sys/net/ipv4/tcp_tw_reuse 1",
                    "/proc/sys/net/ipv4/tcp_window_scaling 1",
                    "/proc/sys/net/ipv4/tcp_wmem 4096 65536 134217728",
                    "/proc/sys/net/ipv6/conf/br0/disable_ipv6 1",
                    "/proc/sys/net/ipv6/conf/eth0/disable_ipv6 1",
                    "/proc/sys/net/ipv6/conf/wlan0/disable_ipv6 1",
                    "/proc/sys/vm/swappiness 0"
                };
                HostParametersConfiguration.SetOsParametersList(list);

                ConsoleLogger.Log("[data import] parameters");
            }
            #endregion

            #endregion

            #region [    Adjustments    ]
            new Do().ParametersChangesPre();
            ConsoleLogger.Log("modules, services and os parameters ready");
            #endregion

            ConsoleLogger.Log("[boot step] procedures");

            #region [    Users    ]
            var manageMaster = new ManageMaster();
            manageMaster.Setup();
            UserConfiguration.Import();
            UserConfiguration.Set();
            ConsoleLogger.Log("users config ready");
            #endregion

            #region [    Host Configuration & Name Service    ]
            new Do().HostChanges();
            ConsoleLogger.Log("host configured");
            ConsoleLogger.Log("name service ready");
            #endregion

            #region [    Network    ]
            new Do().NetworkChanges();
            if (File.Exists("/cfg/antd/services/network.conf"))
            {
                File.Delete("/cfg/antd/services/network.conf");
            }
            if (File.Exists("/cfg/antd/services/network.conf.bck"))
            {
                File.Delete("/cfg/antd/services/network.conf.bck");
            }
            ConsoleLogger.Log("network ready");
            #endregion

            #region [    Firewall    ]
            if (FirewallConfiguration.IsActive())
            {
                FirewallConfiguration.Set();
            }
            #endregion

            #region [    Dhcpd    ]
            DhcpdConfiguration.TryImport();
            if (DhcpdConfiguration.IsActive())
            {
                DhcpdConfiguration.Set();
            }
            #endregion

            #region [    Bind    ]
            BindConfiguration.TryImport();
            BindConfiguration.DownloadRootServerHits();
            if (BindConfiguration.IsActive())
            {
                BindConfiguration.Set();
            }
            #endregion

            ConsoleLogger.Log("[boot step] post procedures");

            #region [    Apply Setup Configuration    ]
            new Do().ParametersChangesPost();
            ConsoleLogger.Log("machine configured (apply setup.conf)");
            #endregion

            #region [    Nginx    ]
            NginxConfiguration.TryImport();
            if (NginxConfiguration.IsActive())
            {
                NginxConfiguration.Set();
            }
            #endregion

            #region [    Ssh    ]
            if (SshdConfiguration.IsActive())
            {
                SshdConfiguration.Set();
            }
            DirectoryWithAcl.CreateDirectory(Parameter.RootSsh, "755", "root", "wheel");
            DirectoryWithAcl.CreateDirectory(Parameter.RootSshMntCdrom, "755", "root", "wheel");
            if (!MountHelper.IsAlreadyMounted(Parameter.RootSsh))
            {
                MountManagement.Dir(Parameter.RootSsh);
            }
            var rk = new RootKeys();
            if (rk.Exists == false)
            {
                rk.Create();
            }
            var authorizedKeysConfiguration = new AuthorizedKeysConfiguration();
            var storedKeys = authorizedKeysConfiguration.Get().Keys;
            foreach (var storedKey in storedKeys)
            {
                var home = storedKey.User == "root" ? "/root/.ssh" : $"/home/{storedKey.User}/.ssh";
                var authorizedKeysPath = $"{home}/authorized_keys";
                if (!File.Exists(authorizedKeysPath))
                {
                    File.Create(authorizedKeysPath);
                }
                FileWithAcl.AppendAllLines(authorizedKeysPath, new List <string> {
                    $"{storedKey.KeyValue} {storedKey.RemoteUser}"
                }, "644", "root", "wheel");
                Bash.Execute($"chmod 600 {authorizedKeysPath}");
                Bash.Execute($"chown {storedKey.User}:{storedKey.User} {authorizedKeysPath}");
            }
            ConsoleLogger.Log("ssh ready");
            #endregion

            #region [    Service Discovery    ]
            try {
                ServiceDiscovery.Rssdp.PublishThisDevice();
                ConsoleLogger.Log("[rssdp] published device");
            }
            catch (Exception ex) {
                ConsoleLogger.Log($"[rssdp] {ex.Message}");
            }
            #endregion

            #region [    AntdUI    ]
            UiService.Setup();
            ConsoleLogger.Log("antduisetup");
            #endregion

            ConsoleLogger.Log("[boot step] managed procedures");

            #region [    Samba    ]
            if (SambaConfiguration.IsActive())
            {
                SambaConfiguration.Set();
            }
            #endregion

            #region [    Syslog    ]
            if (SyslogNgConfiguration.IsActive())
            {
                SyslogNgConfiguration.Set();
            }
            #endregion

            #region [    Storage - Zfs   ]
            foreach (var pool in Zpool.ImportList().ToList())
            {
                if (string.IsNullOrEmpty(pool))
                {
                    continue;
                }
                ConsoleLogger.Log($"pool {pool} imported");
                Zpool.Import(pool);
            }
            ConsoleLogger.Log("storage ready");
            #endregion

            #region [    Scheduler    ]
            Timers.MoveExistingTimers();
            Timers.Setup();
            Timers.Import();
            Timers.Export();
            foreach (var zp in Zpool.List())
            {
                Timers.Create(zp.Name.ToLower() + "snap", "hourly", $"/sbin/zfs snap -r {zp.Name}@${{TTDATE}}");
            }
            Timers.StartAll();
            new SnapshotCleanup().Start(new TimeSpan(2, 00, 00));
            new SyncTime().Start(new TimeSpan(0, 42, 00));
            new RemoveUnusedModules().Start(new TimeSpan(2, 15, 00));

            JobManager jobManager = new JobManager();
            jobManager.ExecuteAllJobs();

            ConsoleLogger.Log("scheduled events ready");
            #endregion

            #region [    Acl    ]
            if (AclConfiguration.IsActive())
            {
                AclConfiguration.Set();
                AclConfiguration.ScriptSetup();
            }
            #endregion

            #region [    C A    ]
            if (CaConfiguration.IsActive())
            {
                CaConfiguration.Set();
            }
            #endregion

            #region [    Host Init    ]
            var app  = new AppConfiguration().Get();
            var port = app.AntdPort;
            var uri  = $"http://localhost:{app.AntdPort}/";
            var host = new NancyHost(new Uri(uri));
            host.Start();
            ConsoleLogger.Log("host ready");
            StaticConfiguration.DisableErrorTraces = false;
            ConsoleLogger.Log($"http port: {port}");
            ConsoleLogger.Log("[boot step] antd is running");
            #endregion

            ConsoleLogger.Log("[boot step] working procedures");

            #region [    Apps    ]
            AppTarget.Setup();
            var apps = AppsConfiguration.Get().Apps;
            foreach (var mapp in apps)
            {
                var units = mapp.UnitLauncher;
                foreach (var unit in units)
                {
                    if (Systemctl.IsActive(unit) == false)
                    {
                        Systemctl.Restart(unit);
                    }
                }
            }
            //AppTarget.StartAll();
            ConsoleLogger.Log("apps ready");
            #endregion

            #region [    Sync / Gluster   ]
            if (GlusterConfiguration.IsActive())
            {
                GlusterConfiguration.Launch();
            }
            if (RsyncConfiguration.IsActive())
            {
                RsyncConfiguration.Set();
            }
            #endregion

            #region [    Storage Server    ]
            VfsConfiguration.SetDefaults();
            new Thread(() => {
                try {
                    var srv = new StorageServer(VfsConfiguration.GetSystemConfiguration());
                    srv.Start();
                }
                catch (Exception ex) {
                    ConsoleLogger.Error(ex.Message);
                }
            }).Start();
            #endregion

            #region [    Tor    ]
            if (TorConfiguration.IsActive())
            {
                TorConfiguration.Start();
            }
            #endregion

            #region [    Cluster    ]
            VfsWatcher = new VfsWatcher();
            ClusterConfiguration.Prepare();
            new Do().ClusterChanges();
            ConsoleLogger.Log("[cluster] active");
            #endregion

            #region [    Directory Watchers    ]
            DirectoryWatcherCluster.Start();
            DirectoryWatcherRsync.Start();
            #endregion

            #region [    Check Application File Acls    ]
            var files = Directory.EnumerateFiles(Parameter.RepoApps, "*.squashfs.xz", SearchOption.AllDirectories);
            foreach (var file in files)
            {
                Bash.Execute($"chmod 644 {file}");
                Bash.Execute($"chown root:wheel {file}");
            }
            ConsoleLogger.Log("[check] app-file acl");
            #endregion

            #region [    Check System Components    ]
            MachineInfo.CheckSystemComponents();
            ConsoleLogger.Log("[check] system components health");
            #endregion

            #region [    Test    ]
#if DEBUG
            Test();
#endif
            #endregion

            ConsoleLogger.Log($"loaded in: {DateTime.Now - startTime}");
            KeepAlive();
            ConsoleLogger.Log("antd is closing");
            host.Stop();
            Console.WriteLine("host shutdown");
        }
コード例 #21
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_Matches_Returns_False_If_Passed_Null()
        {
            var cidr = new Cidr();

            Assert.AreEqual(false, cidr.Matches(null));
        }
コード例 #22
0
ファイル: CidrTests.cs プロジェクト: PhenTse/virtualRadar
        public void Cidr_Matches_Returns_False_If_Passed_An_IPv6()
        {
            var cidr = new Cidr();

            Assert.AreEqual(false, cidr.Matches(IPAddress.Parse("2001:0DB8:AC10:FE01::")));
        }