Exemplo n.º 1
0
 public Auth(string keystring, Boolean active, Boolean primary)
 {
     this.Key = new Key(keystring);
     this.Active = active;
     this.Primary = primary;
     this.UUID = this.Key.UUID;
 }
Exemplo n.º 2
0
        public Auth(string keystring)
        {

            this.Key = new Key(keystring);
            this.Active = true;
            this.Primary = false;
            this.UUID = this.Key.UUID;
        }
Exemplo n.º 3
0
        public static void Start(string path, string configfile)
        {
            Runner.PingTime = 4373;
            Type t = Type.GetType("Mono.Runtime");
            if (t != null)
            {
                Runner.Mono = true;
            }
            else
            {
                Runner.Mono = false;
            }
            SimpleMesh.Service.Runner.StorePath = path;
            SimpleMesh.Service.Runner.ConfigFile = configfile;

            SimpleMesh.Service.Runner.Network = new Trackfile();
            SimpleMesh.Service.Runner.Read();
            try
            {
                NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
                foreach (NetworkInterface adapter in adapters)
                {
                    IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
                    foreach (IPAddressInformation unicast in adapterProperties.UnicastAddresses)
                    {
                        if (unicast.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            string[] chunks = unicast.Address.ToString().Split('.');
                            if (chunks[0] != "169")
                            {
                                Info.Addresses.Add(unicast.Address);
                            }
                        }
                        else
                        {
                            Info.Addresses.Add(unicast.Address);
                        }
                    }

                }
            }
            catch
            {
            }
            if (Info.Addresses.Count == 0)
            {
                try
                {

                    System.Net.IPHostEntry myiphost = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
                    foreach (System.Net.IPAddress myipadd in myiphost.AddressList)
                    {
                        Info.Addresses.Add(myipadd);
                    }

                }
                catch
                {
                    if (Runner.Mono == true)
                    {
                        Info.Addresses.Add(IPAddress.Any);
                        Info.Addresses.Add(IPAddress.IPv6Any);
                    }

                }
            }

            Info.Compile();
            SimpleMesh.Service.Runner.Write();
            SimpleMesh.Service.Runner.DebugMessage("Debug.Info.ConfigFile", SimpleMesh.Service.Runner.StorePath);
            SimpleMesh.Service.Runner.DebugMessage("Debug.Info.ConfigFile", SimpleMesh.Service.Runner.ConfigFile);
            string TrackfilePath = SimpleMesh.Service.Runner.StorePath + System.IO.Path.DirectorySeparatorChar + @"default.tkf";
            Runner.DebugMessage("Debug.Info.Trackfile", "Trackfile Path: " + TrackfilePath);
            if (System.IO.File.Exists(TrackfilePath) == true)
            {
                SimpleMesh.Service.Runner.Network.Read(TrackfilePath);
            }
            else
            {
                Dictionary<string, string> Hints = SimpleMesh.Service.Runner.NetworkSpecCallback();
                string type;
                string trackfilelocation;
                if (Hints.TryGetValue("trackfilelocation", out trackfilelocation) == false)
                {
                    return;
                }
                if (Hints.TryGetValue("type", out type) == true)
                {
                    switch (type)
                    {
                        case "create":
                            string name;
                            if (Hints.TryGetValue("name", out name) == true)
                            {
                                SimpleMesh.Service.Runner.Network.Name = name;
                            }
                            else
                            {
                                SimpleMesh.Service.Runner.Network.Name = "Undefined";
                            }
                            string keylength;
                            Key scratch = new Key();
                            if (Hints.TryGetValue("enrollkeylength", out keylength) == true)
                            {
                                scratch.Generate("RSA", keylength);
                            }
                            else
                            {
                                scratch.Generate("RSA");
                            }
                            Auth temp = new Auth();
                            temp.UUID = new UUID();
                            temp.Key = scratch;
                            SimpleMesh.Service.Runner.Network.Enrollment.Add(temp.UUID.ToString(), temp);
                            break;

                        case "enroll":
                            Network.ReadOnce(trackfilelocation);
                            break;
                    }
                    try
                    {
                        Network.WriteOnce(trackfilelocation);
                    }
                    catch
                    {
                    }
                }

            }
            SimpleMesh.Service.Runner.Network.Write(TrackfilePath);
            /*
            string inputstring = "Test";
            byte[] ciphertext;
            byte[] plaintext;
            Network.Node.Key.Encrypt(true, UTF8Encoding.UTF8.GetBytes(inputstring), out ciphertext);
            Network.Node.Key.Decrypt(true, ciphertext, out plaintext);
            Console.WriteLine("output string = " + UTF8Encoding.UTF8.GetString(plaintext));
            Console.ReadLine();
            */
            Runner.Native = true;
            Network.Start();

        }