Esempio n. 1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="config">Network configuration</param>
        /// <param name="aclLoader">ACL loader to define access</param>
        /// <param name="peerFactory">Factory to create peers from endpoints</param>
        /// <param name="peerListener">Listener to accept peer connections</param>
        /// <param name="peerMessageListener">PeerMessageListener</param>
        /// <param name="logger">Logger</param>
        public Server(
            NetworkConfig config,
            INetworkAclLoader aclLoader,
            IPeerFactory peerFactory,
            IPeerListener peerListener,
            IPeerMessageListener peerMessageListener,
            ILogger <Server> logger)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            _peerFactory  = peerFactory ?? throw new ArgumentNullException(nameof(peerFactory));
            _peerListener = peerListener ?? throw new ArgumentNullException(nameof(peerListener));

            if (aclLoader == null)
            {
                throw new ArgumentNullException(nameof(aclLoader));
            }
            _acl = aclLoader.Load(config.AclConfig) ?? NetworkAcl.Default;

            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
            _peerMessageListener = peerMessageListener ?? throw new ArgumentNullException(nameof(peerMessageListener));

            _peerListener.OnPeerConnected += PeerConnected;

            _connectedPeers = new ConcurrentBag <IPeer>();
            _failedPeers    = new List <IPEndPoint>();

            // TODO: Change after port forwarding implementation
            _peerEndPoints = config.PeerEndPoints;
        }
        protected override void Setup()
        {
            // Set up LOG
            LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
            Log = LogManager.GetCurrentClassLogger();
            GlobalContext.Properties["LogFileName"] = ApplicationName;
            XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(BinaryPath, "log4net.config")));

            // Set up CONFIG
            var config = new ConfigurationBuilder();

            config.AddXmlFile(Path.Combine(BinaryPath, ApplicationName + ".config"));
            Log.Info(Path.Combine(BinaryPath, ApplicationName + ".config"));

            // Set up AUTOFAC
            var module  = new ConfigurationModule(config.Build());
            var builder = new ContainerBuilder();

            builder.RegisterInstance(this).SingleInstance();
            builder.RegisterInstance(Log).As <ILogger>().SingleInstance();
            builder.RegisterModule(module);

            var container = builder.Build();

            ServerApplication = container.Resolve <IServerApplication>();
            ServerApplication.Setup();
            PeerFactory = container.Resolve <IPeerFactory>();
        }
Esempio n. 3
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="config">Network configuration</param>
        /// <param name="aclLoader">ACL loader to define access</param>
        /// <param name="peerFactory">Factory to create peers from endpoints</param>
        /// <param name="peerListener">Listener to accept peer connections</param>
        /// <param name="peerMessageListener">PeerMessageListener</param>
        /// <param name="serverContext">Server context</param>
        /// <param name="serverProcesses">Server processes</param>
        /// <param name="logger">Logger</param>
        public Server(
            NetworkConfig config,
            INetworkAclLoader aclLoader,
            IPeerFactory peerFactory,
            IPeerListener peerListener,
            IPeerMessageListener peerMessageListener,
            IServerContext serverContext,
            IEnumerable <IServerProcess> serverProcesses,
            ILogger <Server> logger)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            _peerFactory  = peerFactory ?? throw new ArgumentNullException(nameof(peerFactory));
            _peerListener = peerListener ?? throw new ArgumentNullException(nameof(peerListener));

            if (aclLoader == null)
            {
                throw new ArgumentNullException(nameof(aclLoader));
            }
            _acl = aclLoader.Load(config.AclConfig) ?? NetworkAcl.Default;

            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
            _peerMessageListener = peerMessageListener ?? throw new ArgumentNullException(nameof(peerMessageListener));
            _serverContext       = serverContext ?? throw new ArgumentNullException(nameof(serverContext));
            _serverProcesses     = serverProcesses ?? throw new ArgumentNullException(nameof(serverProcesses));

            _peerListener.OnPeerConnected += PeerConnected;

            // TODO #364: Change after port forwarding implementation
            _peerEndPoints = config.PeerEndPoints;
        }
Esempio n. 4
0
        public Node(IWallet miner, IListener listener, IPeerFactory peerFactory, NodeOptions options = null)
        {
            this.Engine  = new Engine(miner);
            this.options = options ?? new NodeOptions();

            this.listener = listener;
            this.listener.Start();
            this.peerFactory = peerFactory;
            this.ConnPool    = new ConnectionPool(this, this.options.WellKnownNodes, this.peerFactory, this.listener);
            this.ConnPool.Start();
        }
Esempio n. 5
0
 public ConnectionPool(Node node, string[] wellKnowns, IPeerFactory peerFactory, IListener listener)
 {
     this.selfNode = node;
     this.nodes    = wellKnowns
                     .Where(_ => _ != listener.Address)
                     .Select(_ => new ConnectionNode(_))
                     .ToList();
     this.peerFactory = peerFactory;
     this.listener    = listener;
     this.listener.OnPeerConnected          += Listener_OnPeerConnected;
     this.selfNode.Engine.OnNewBlockCreated += Engine_OnNewBlockCreated;
     this.selfNode.Engine.OnNewTxCreated    += Engine_OnNewTxCreated;
 }
Esempio n. 6
0
        public Server(
            IBlockchain blockchain,
            NetworkConfig config,
            IPeerFactory peerFactory,
            IPeerListener peerListener,
            IMessageHandler <Message> messageHandler,
            ILogger <Server> logger,
            NetworkACLFactory aclFactory)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            this._blockchain   = blockchain ?? throw new ArgumentNullException(nameof(blockchain));
            this._peerFactory  = peerFactory ?? throw new ArgumentNullException(nameof(peerFactory));
            this._peerListener = peerListener ?? throw new ArgumentNullException(nameof(peerListener));
            this._logger       = logger ?? throw new ArgumentNullException(nameof(logger));
            if (aclFactory == null)
            {
                throw new ArgumentNullException(nameof(aclFactory));
            }

            this._messageHandler = messageHandler;
            this._acl            = aclFactory.CreateNew();
            this._acl?.Load(config?.ACL);

            this._peerListener.OnPeerConnected += PeerConnected;

            this._connectedPeers = new ConcurrentBag <IPeer>();
            this._failedPeers    = new List <IPEndPoint>();

            // TODO: Change after port forwarding implementation
            this._port = config.Port;

            ProtocolVersion = 2;

            var r = new Random(Environment.TickCount);

            Nonce = (uint)r.Next();

            this._peerEndPoints = config.PeerEndPoints;

            this._userAgent = $"/NEO:{Assembly.GetExecutingAssembly().GetName().Version.ToString(3)}/";
        }
 public Registration(Uri listenUri, IPeerFactory factory)
 {
     if (factory.Resolver == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
             new InvalidOperationException(SR.GetString(SR.PeerResolverRequired)));
     }
     if (factory.ListenIPAddress != null)
     {
         listenIPAddress = factory.ListenIPAddress;
     }
     this.listenUri = new UriBuilder(PeerStrings.Scheme, listenUri.Host).Uri;
     this.port = factory.Port;
     this.maxReceivedMessageSize = factory.MaxReceivedMessageSize;
     this.resolver = factory.Resolver;
     this.securityManager = factory.SecurityManager;
     this.readerQuotas = new XmlDictionaryReaderQuotas();
     factory.ReaderQuotas.CopyTo(this.readerQuotas);
     this.maxBufferPoolSize = factory.MaxBufferPoolSize;
 }
 public LoginAuthenticationHandler(ILogger log, IAuthorizationService authService, IConnectionCollection <IClientPeer> connectionCollection, IPeerFactory peerFactory)
 {
     Log                  = log;
     AuthService          = authService;
     ConnectionCollection = connectionCollection;
     PeerFactory          = peerFactory;
 }
Esempio n. 9
0
 public LoginHandler(ILogger log, IConnectionCollection <IClientPeer> connectionCollection, IPeerFactory peerFactory)
 {
     this.log = log;
     this.connectionCollection = connectionCollection;
     this.peerFactory          = peerFactory;
 }