Esempio n. 1
0
 public StarNetNode(SharedDatabase database, LocalSettings settings, CryptoProvider crypto, IPEndPoint endpoint)
 {
     Settings       = settings;
     Database       = database;
     Listener       = new TcpListener(endpoint);
     Clients        = new List <StarboundClient>();
     CryptoProvider = crypto;
     Network        = new InterNodeNetwork(this, crypto);
     RegisterHandlers();
     NextClientId   = 0;
     HeartbeatTimer = new Timer(DoHeartbeats);
 }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            if (!File.Exists("node.key") || !File.Exists("node.key.pub"))
            {
                Console.WriteLine("Error: Please generate an RSA keypair with an empty password and save it to node.key and node.key.pub\n" +
                                  "$ openssl genrsa -out node.key && openssl rsa -pubout -in node.key -out node.key.pub\n" +
                                  "Distribute node.key.pub to a network authority node and add it to the trusted nodes with:\n" +
                                  "$ mono StarNet.exe add-node <ip address> <port> <path/to/key.pub>");
                return;
            }
            LoadKeys();
            LocalSettings settings = new LocalSettings();

            if (File.Exists("node.config"))
            {
                JsonConvert.PopulateObject(File.ReadAllText("node.config"), settings);
                File.WriteAllText("node.config", JsonConvert.SerializeObject(settings, Formatting.Indented));
            }
            else
            {
                settings = FirstRun(settings);
            }
            var sharedDatabase = new SharedDatabase(settings.ConnectionString);

            if (args.Length != 0)
            {
                HandleArguments(args, settings);
            }
            else
            {
                var localNode = new StarNetNode(sharedDatabase, settings,
                                                new CryptoProvider(ServerKey), new IPEndPoint(IPAddress.Any, settings.StarboundPort));
                Console.WriteLine("Starting node {0}", localNode.Settings.UUID);
                localNode.Start();
                while (true)
                {
                    Thread.Sleep(10000);
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Performs tasks that happen before each test.
        /// </summary>
        public virtual void TestInitialize()
        {
            // Create connections.
            PrimaryConnection = new SqlConnection(AssemblyInitialize.dbConnectionString);
            PrimaryConnection.Open();

            SecondaryConnection = new SqlConnection(AssemblyInitialize.dbConnectionString);
            SecondaryConnection.Open();

            // create the data access object.
            var sharedDB = new SharedDatabase(PrimaryConnection);

            MockSchema = new Mock <IDbSchemaConfiguration>();
            MockSchema.Setup(s => s.Schema).Returns(DefaultSchema);

            dataAccess = new DapperDataAccess(sharedDB, MockSchema.Object);

            // start all tests with an Empty DB.
            // each test will setup rows it needs.
            BeginSecondaryTransaction();
            TruncateAll();
            CommitSecondaryTransaction();
        }