コード例 #1
0
ファイル: Timedatectl.cs プロジェクト: jeason0813/Antd
        public static bool SetTimezone(string timezone)
        {
            var args = CommonString.Append(setTimezoneArg, " ", timezone);

            CommonProcess.Do(timedatectlFileLocation, args);
            return(true);
        }
コード例 #2
0
ファイル: Hostnamectl.cs プロジェクト: jeason0813/Antd
        public static bool SetChassis(string chassis)
        {
            var args = CommonString.Append(setChassisArg, " ", chassis);

            CommonProcess.Do(hostnamectlFileLocation, args);
            return(true);
        }
コード例 #3
0
ファイル: Hostnamectl.cs プロジェクト: jeason0813/Antd
        public static bool SetLocation(string location)
        {
            var args = CommonString.Append(setLocationArg, " ", location);

            CommonProcess.Do(hostnamectlFileLocation, args);
            return(true);
        }
コード例 #4
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool DeleteRoute(string networkAdapter, string gateway, string destinationAddress = "default")
        {
            var args = CommonString.Append("route del ", destinationAddress, " via ", gateway, " dev ", networkAdapter);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #5
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool DisableNetworkAdapter(string networkAdapter)
        {
            var args = CommonString.Append("link set ", networkAdapter, " down");

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #6
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool AddMultipathRoute(string networkAdapter, string secondNetworkAdapter)
        {
            var args = CommonString.Append("route add default scope global nexthop dev ", networkAdapter, " dev ", secondNetworkAdapter);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #7
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool AddNetworkAdapted(string networkAdapter, string type)
        {
            var args = CommonString.Append("link add name ", networkAdapter, " type ", type);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #8
0
        public static void Stop()
        {
            var conf        = Application.CurrentConfiguration.Network.WpaSupplicant;
            var serviceName = CommonString.Append("wpa_supplicant@", conf.Interface, ".service");

            Systemctl.Stop(serviceName);
        }
コード例 #9
0
        public static bool Set()
        {
            var current = Application.CurrentConfiguration.Boot.Modules;

            for (var i = 0; i < current.Length; i++)
            {
                var currentModule = current[i];
                if (currentModule.Blacklist)
                {
                    Blacklist(currentModule.Module);
                    continue;
                }
                if (currentModule.Remove)
                {
                    Remove(currentModule.Module);
                    continue;
                }
                if (currentModule.Active)
                {
                    var moduleToLoad = CommonString.Append(currentModule.Module, " ", currentModule.Arguments);
                    Add(moduleToLoad.Trim());
                }
            }
            return(true);
        }
コード例 #10
0
ファイル: Parted.cs プロジェクト: jeason0813/Antd
        public static bool MakeLabel(string diskPath, string labelType)
        {
            var args = CommonString.Append(diskPath, " -a optimal mklabel ", labelType);

            CommonProcess.Do(partedLocation, args);
            return(true);
        }
コード例 #11
0
        public static void WriteFile(WpaSupplicant conf)
        {
            if (!Directory.Exists(wpasupplicantEtcFolder))
            {
                return;
            }
            var lines = new string[] {
                "###### Global Configuration ######",
                "ctrl_interface=/var/run/wpa_supplicant",
                "ctrl_interface_group=wheel",
                "update_config=1",
                "fast_reauth=1",
                "ap_scan=1",
                "country=IT",
                "",
                "network={",
                "    priority=1",
                $"    ssid=\"{conf.Ssid}\"",
                "    mode=0",
                "    key_mgmt=WPA-PSK",
                $"    psk=\"{conf.Password}\"",
                "}"
            };
            var confFilePath = CommonString.Append(wpasupplicantEtcFolder, "/wpa_supplicant-", conf.Interface, ".conf");

            File.WriteAllLines(confFilePath, lines);
        }
コード例 #12
0
ファイル: Parted.cs プロジェクト: jeason0813/Antd
        public static bool MakePartition(string diskPath, string partitionName, string partitionType, string partitionStart, string partitionEnd)
        {
            var args = CommonString.Append(diskPath, " -a optimal mkpart ", partitionName, " ", partitionType, " ", partitionStart, " ", partitionEnd);

            CommonProcess.Do(partedLocation, args);
            return(true);
        }
コード例 #13
0
ファイル: Rsync.cs プロジェクト: jeason0813/Antd
        public static bool Sync(string source, string destination)
        {
            var args = CommonString.Append(optionaHA, source, " ", destination);

            CommonProcess.Do(rsyncFileLocation, args);
            return(true);
        }
コード例 #14
0
        /// <summary>
        /// Meccanismo di autenticazione centralizzato
        /// Prende i parametri id e password e li confronta coi dati di Application.CurrentConfiguration.Users.ApplicativeUsers
        /// Flusso:
        ///     - ci sono utenti?
        ///     - c'è l'utente richiesto?
        ///     - l'utente trovato è abilitato a fare l'autenticazione?
        ///     - il parametro password corrisponde?
        /// </summary>
        /// <param name="id">Parametro dell'utente, es: username</param>
        /// <param name="claims">Parametri dell'utente, es: hashing della password</param>
        /// <returns>Restituisce un HttpStatusCode, solo se l'autenticazione è andata a buon fine restituisce OK</returns>
        public static HttpStatusCode Authenticate(string id, string[] claims)
        {
            var current = Application.CurrentConfiguration.Users.ApplicativeUsers;

            if (!current.Any())
            {
                return(HttpStatusCode.Unauthorized);
            }
            var method = current.FirstOrDefault(_ => CommonString.AreEquals(_.Id, id) == true);

            if (method == null)
            {
                return(HttpStatusCode.Unauthorized);
            }
            if (!method.Active)
            {
                return(HttpStatusCode.Unauthorized);
            }

            switch (method.Type)
            {
            case AuthenticationType.none:
                return(HttpStatusCode.Unauthorized);

            case AuthenticationType.simple:
                return(SimpleAuthentication(claims, method.Claims));

            default:
                return(HttpStatusCode.Unauthorized);
            }
        }
コード例 #15
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool SetNetworkAdapterTxqueuelen(string networkAdapter, string txqueuelenValue)
        {
            var args = CommonString.Append("link set dev ", networkAdapter, " txqueuelen ", txqueuelenValue);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #16
0
        public override void DoJob()
        {
            if (Application.CurrentConfiguration.Cluster.Active == false)
            {
                return;
            }
            var clusterStatus = Application.ClusterChecklist;

            if (clusterStatus == null)
            {
                return;
            }
            if (clusterStatus.Length < 1)
            {
                return;
            }
            var nodesKnownHosts = new List <KnownHost>();

            for (var i = 0; i < clusterStatus.Length; i++)
            {
                var nodeIPs     = clusterStatus[i].DiscoveredIpsReach;
                var nodeName    = clusterStatus[i].Hostname;
                var commonNames = new string[] {
                    CommonString.Append(nodeName, "int", i.ToString())
                };
                for (var p = 0; p < nodeIPs.Length; p++)
                {
                    var knownHost = new KnownHost()
                    {
                        IpAddr      = nodeIPs[p].IpAddress,
                        CommonNames = commonNames
                    };
                    nodesKnownHosts.Add(knownHost);
                }
            }
            var currentKnownHosts = Application.CurrentConfiguration.Network.KnownHosts.ToList();

            foreach (var nodeHost in nodesKnownHosts)
            {
                //i casi possono essere tre:
                //  1) l'ip non è presente nella CurrentConfiguration   -> aggiungo il nuovo KnownHost
                //  2) l'ip è presente ma i CommonNames sono differenti -> aggiorno solamente i CommonNames del KnownHost corrispondente
                //  3) l'ip è presente e i CommonNames coincidono       -> non faccio nulla
                if (!currentKnownHosts.Any(_ => CommonString.AreEquals(_.IpAddr, nodeHost.IpAddr) == true))
                {
                    currentKnownHosts.Add(nodeHost);
                }
                else
                {
                    var existingCn = currentKnownHosts.FirstOrDefault(_ => CommonString.AreEquals(_.IpAddr, nodeHost.IpAddr) == true).CommonNames;
                    if (CommonString.AreEquals(CommonString.Build(existingCn), CommonString.Build(nodeHost.CommonNames)) == false)
                    {
                        currentKnownHosts.FirstOrDefault(_ => CommonString.AreEquals(_.IpAddr, nodeHost.IpAddr) == true).CommonNames = nodeHost.CommonNames;
                    }
                }
            }
            Application.CurrentConfiguration.Network.KnownHosts = currentKnownHosts.ToArray();
            ConfigRepo.Save();
            Dns.Set();
        }
コード例 #17
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static IEnumerable <string> GetNetworkAdapterRouting(string networkAdapter)
        {
            //todo map to model
            var args = CommonString.Append("route show ", networkAdapter);

            return(CommonProcess.Execute(ipFileLocation, args));
        }
コード例 #18
0
 public static void ParsePayload(string topic, byte[] payload)
 {
     if (topic.StartsWith("/control"))
     {
         var controlData = topic.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
         if (controlData.Length != 4)
         {
             Console.WriteLine("Invalid topic");
             return;
         }
         if (CommonString.AreEquals(Application.MACHINE_ID.MachineUid.ToString(), controlData[1]) == true &&
             CommonString.AreEquals(Application.MACHINE_ID.PartNumber.ToString(), controlData[2]) == true &&
             CommonString.AreEquals(Application.MACHINE_ID.SerialNumber.ToString(), controlData[3]))
         {
             Console.WriteLine(string.Join(" ", payload));
             if (!COMMANDS.ContainsKey(payload))
             {
                 Console.WriteLine("Invalid command");
                 return;
             }
             Console.WriteLine("Executing command");
             Console.WriteLine(COMMANDS[payload]);
             ExecuteCommand(COMMANDS[payload]);
         }
     }
 }
コード例 #19
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool AddNat(string address, string secondAddress)
        {
            var args = CommonString.Append("route add nat ", address, " via ", secondAddress);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #20
0
        private ClusterNodeChecklistModel NodeStatus(ClusterNode node)
        {
            //ConsoleLogger.Log($"[hb] check node {node.Hostname} {node.MachineUid}");
            var status = new ClusterNodeChecklistModel();

            status.TargetNodeMachineUid = node.MachineUid;
            status.Hostname             = node.Hostname;

            //controllo l'IP pubblico
            status.KnownPublicIpReach = PingStatus(node.PublicIp);
            if (status.KnownPublicIpReach == 1)
            {
                //ConsoleLogger.Warn($"[hb] {node.Hostname} is unreachable at its known public ip");
                return(status);
            }

            //controllo antd
            var serviceStatus = ApiConsumer.Post(CommonString.Append(node.EntryPoint, serviceStatusPath));

            if (serviceStatus == Nancy.HttpStatusCode.OK)
            {
                status.ServiceReach = 0;
            }

            //controllo se ho già salvato delle informazioni
            var storedNodeIps = Application.ClusterChecklist?.FirstOrDefault(_ => _.TargetNodeMachineUid == node.MachineUid)?.DiscoveredIpsReach?.Select(_ => _.IpAddress) ?? new string[0];

            //controllo gli IP scoperti
            var nodeIps = ApiConsumer.Get <string[]>(CommonString.Append(node.EntryPoint, networkAddressPath)) ?? new string[0];

            nodeIps = storedNodeIps.Union(nodeIps).Where(_ => _ != localIp).ToArray();

            var ipStatusList = new ClusterNodeIpStatusModel[nodeIps.Length];

            for (var n = 0; n < nodeIps.Length; n++)
            {
                var ipStatus = new ClusterNodeIpStatusModel();
                ipStatus.IpAddress = nodeIps[n];
                ipStatus.Status    = PingStatus(nodeIps[n]);
                ipStatusList[n]    = ipStatus;
            }
            status.DiscoveredIpsReach = ipStatusList;

            var uptime = ApiConsumer.GetString(CommonString.Append(node.EntryPoint, appUptimePath));

            status.ApplicationUptime = uptime;

            //controllo stato nodo
            var nodeChecklist = ApiConsumer.Get <MachineStatusChecklistModel>(CommonString.Append(node.EntryPoint, machineChecklistPath)) ?? new MachineStatusChecklistModel();

            status.InternetReach    = nodeChecklist.InternetReach;
            status.InternetDnsReach = nodeChecklist.InternetDnsReach;

            //controllo servizio: virsh
            var virshStatus = ApiConsumer.Get <VirshModel>(CommonString.Append(node.EntryPoint, virshStatusPath)) ?? new VirshModel();

            status.VirshService = virshStatus;

            return(status);
        }
コード例 #21
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool DeleteBroadcast(string networkAdapter, string address, string range, string broadcast)
        {
            var args = CommonString.Append("addr del ", address, "/", range, " broadcast ", broadcast, " dev ", networkAdapter);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #22
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool AddAddress(string networkAdapter, string address, string range)
        {
            var args = CommonString.Append("addr add ", address, "/", range, " dev ", networkAdapter);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #23
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool DeleteNetworkAdapted(string networkAdapter)
        {
            var args = CommonString.Append("link del ", networkAdapter);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #24
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool FlushNetworkAdapter(string networkAdapter)
        {
            var args = CommonString.Append("addr flush dev ", networkAdapter);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #25
0
ファイル: Hostnamectl.cs プロジェクト: jeason0813/Antd
        public static bool Apply()
        {
            var current = Application.CurrentConfiguration.Host;
            var running = Application.RunningConfiguration.Host;

            if (CommonString.AreEquals(current.HostName, running.HostName) == false)
            {
                ConsoleLogger.Log($"[host] name: {current.HostName}");
                SetHostname(current.HostName);
            }
            if (CommonString.AreEquals(current.HostDeployment, running.HostDeployment) == false)
            {
                ConsoleLogger.Log($"[host] deployment: {current.HostDeployment}");
                SetDeployment(current.HostDeployment);
            }
            if (CommonString.AreEquals(current.HostChassis, running.HostChassis) == false)
            {
                ConsoleLogger.Log($"[host] chassis: {current.HostChassis}");
                SetChassis(current.HostChassis);
            }
            if (CommonString.AreEquals(current.HostLocation, running.HostLocation) == false)
            {
                ConsoleLogger.Log($"[host] location: {current.HostLocation}");
                SetLocation(current.HostLocation);
            }
            return(true);
        }
コード例 #26
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool SetNetworkAdapterPromiscOff(string networkAdapter)
        {
            var args = CommonString.Append("link set dev ", networkAdapter, " promisc off");

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #27
0
ファイル: Hostnamectl.cs プロジェクト: jeason0813/Antd
        public static bool SetDeployment(string deployment)
        {
            var args = CommonString.Append(setDeploymentArg, " ", deployment);

            CommonProcess.Do(hostnamectlFileLocation, args);
            return(true);
        }
コード例 #28
0
ファイル: Ip.cs プロジェクト: jeason0813/Antd
        public static bool SetNetworkAdapterMTU(string networkAdapter, string mtuValue)
        {
            var args = CommonString.Append("link set dev ", networkAdapter, " mtu ", mtuValue);

            CommonProcess.Do(ipFileLocation, args);
            return(true);
        }
コード例 #29
0
        public static bool DeleteNetworkAdapter(string bondName, string networkAdapter)
        {
            var args = CommonString.Append("-d ", bondName, " ", networkAdapter);

            CommonProcess.Do(ifenslaveFileLocation, args);
            return(true);
        }
コード例 #30
0
        public static bool Restore(string domain)
        {
            var args = CommonString.Append(restoreArg, " ", domain);

            CommonProcess.Do(virshFileLocation, args);
            return(true);
        }