示例#1
0
        private void RegisterGatewayServer()
        {
            GatewayServer gateway = GetGatewayServer( );

            if (gateway == null)
            {
                return;
            }

            GatewayServersManager serverManager = new GatewayServersManager(gateway);

            if (serverManager != null)
            {
                AeInfo remote = serverManager.GetRemoteServer();

                if (remote != null)
                {
                    StorageServerInformation info = GetStorageServerInfo();

                    if (info != null)
                    {
                        if (remote.Address == info.DicomServer.IPAddress &&
                            remote.Port == info.DicomServer.Port)
                        {
                            DicomServer server = ServiceLocator.Retrieve <DicomServer>();

                            GatewaySession.Log(string.Empty, string.Empty, -1, DicomCommandType.Undefined, LogType.Error, MessageDirection.None, null,
                                               "Gateway - Remote server cannot be the same as primary server.  Gateway [" + server.AETitle + "] not available.");
                            return;
                        }
                    }
                }
                ServiceLocator.Register <GatewayServersManager> (serverManager);
            }
        }
示例#2
0
        private void InitializeForwards(ITunnel tunnel, int sid)
        {
            foreach (var forward in ClientConfig.Forwards.Values)
            {
                if (!forward.Enabled)
                {
                    continue;
                }

                var remotePort = forward.RemotePort;
                var localPort  = forward.LocalPort;
                var shared     = forward.Shared;
                var address    = forward.Address;

                if (_servers.ContainsKey(localPort))
                {
                    Log(string.Format(Strings.FORWARD_CANCELED, localPort, address, remotePort), ESeverity.WARN);
                }
                else
                {
                    var server = new GatewayServer(localPort, shared, remotePort, address, tunnel, sid);
                    _servers.Add(localPort, server);
                }
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            ConsoleMonitor.Closed += ConsoleMonitor_Closed;

            string portStr = ConfigurationManager.AppSettings["GatewayPort"];
            int    port    = int.Parse(portStr);

            //NetServer server = new NetServer(port);
            //server.Start();
            GatewayServer.StartServer();
            Console.WriteLine("网关服务启动!");
            Logger.Default.Trace("网关服务启动!");
            while (true)
            {
                string line = Console.ReadLine();
                if (line.Equals("exit", StringComparison.OrdinalIgnoreCase))
                {
                    break;
                }
                else if (line.Equals("clear", StringComparison.OrdinalIgnoreCase))
                {
                    Console.Clear();
                }
                else if (line.Equals("share", StringComparison.OrdinalIgnoreCase))
                {
                    ResourceSharer.Instance.NotifyToPlatform("7aad6dba-819a-42f8-b712-3415d4aa228e");
                }
            }
        }
示例#4
0
        private GatewayServer GetGatewayServer( )
        {
            GatewayServer gateway;


            gateway = __Settings.GetAddInCustomData <GatewayServer> (this.GetType( ).Name, typeof(GatewayServer).Name);

            if (gateway == null)
            {
                DicomServer server = __Server;

                if (null != server)
                {
                    gateway = new GatewayServer( );


                    gateway.Server         = new AeInfo( );
                    gateway.ServiceName    = server.Name;
                    gateway.Server.AETitle = server.AETitle;
                    gateway.Server.Address = server.HostAddress;
                    gateway.Server.Port    = server.HostPort;
                }
            }

            return(gateway);
        }
示例#5
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Initialise les différents serveurs pour le test
        /// </summary>
        /// <typeparam name="T">le protocole à utiliser</typeparam>
        /// <param name="port">le port de base pour le remoting</param>
        /// <param name="server">le serveur (tunnel)</param>
        /// <param name="client">le client (tunnel)</param>
        /// <param name="echo">le serveur d'echo</param>
        /// <param name="gw">la passerelle</param>
        /// -----------------------------------------------------------------------------
        private void Initialize <T>(int port, out BdtServer server, out BdtClient client, out EchoServer echo, out GatewayServer gw) where T : GenericProtocol
        {
            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 0);
            var config = new TestConfigPackage(typeof(T).FullName, port);

            server = new TestServer(TestContext, config);
            client = new TestClient(TestContext, config);

            var args = new String[] { };

            server.LoadConfiguration(args);
            client.LoadConfiguration(args);

            Tunnel.Configuration = server.Configuration;
            Tunnel.Logger        = LoggedObject.GlobalLogger;
            server.Protocol.ConfigureServer(typeof(Tunnel));

            client.StartClient();

            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 2);

            echo = new EchoServer(port + EchoOffset, false);
            Servers.Add(echo);

            gw = new GatewayServer(port + GatewayOffset, false, port + EchoOffset, "localhost", client.Tunnel, client.Sid);
            Servers.Add(gw);
        }
        private void MoveRow(int direction)
        {
            Gateways gateways = (Gateways)_gatewaySource.DataSource;

            Gateways.RemoteServerRow currentRow = ((Gateways.RemoteServerRow)(( DataRowView )_remoteServerSource.Current).Row);
            _remoteServerSource.Position += direction;
            Gateways.RemoteServerRow newRow = ((Gateways.RemoteServerRow)(( DataRowView )_remoteServerSource.Current).Row);
            AeInfo remoteServer             = (AeInfo)currentRow.RemoteServerSettings;
            int    currentIndex             = gateways.RemoteServer.Rows.IndexOf(currentRow);
            int    newIndex = gateways.RemoteServer.Rows.IndexOf(newRow);

            object[] items = currentRow.ItemArray;

            gateways.RemoteServer.Rows.Remove(currentRow);
            DataRow updateRow = gateways.RemoteServer.NewRow( );

            updateRow.ItemArray = items;
            gateways.RemoteServer.Rows.InsertAt(updateRow, newIndex);
            _remoteServerSource.Position = newIndex;

            GatewayServer server = ( GatewayServer )((Gateways.GatewayServerRow)(( DataRowView )_gatewaySource.Current).Row).GatewayServer;

            int aeInfoIndex = server.RemoteServers.IndexOf(remoteServer);

            aeInfoIndex += direction;
            server.RemoteServers.Remove(remoteServer);
            server.RemoteServers.Insert(aeInfoIndex, remoteServer);

            GatewaySettingsPresenter.SetGatwayServerAddInSettings(server);
        }
示例#7
0
 public static void Start()
 {
     if (_GatewayServer == null)
     {//webactivatorex sometimes calls start twice.. I think it might call
         Debug.WriteLine("Calling Start on Gateway");
         _GatewayServer = new GatewayServer();
     }
 }
示例#8
0
        private void _adapter_ReceiveCompleted(object sender, SocketHelper.Events.ReceiveEventArgs args)
        {
            if (args.ByteLenght >= 4)
            {
                int code = BitConverter.ToInt32(args.ReceivedBytes, 0);
                switch (code)
                {
                case MessageCode.StartServer:
                {
                    GatewayServer.StartServer();
                }
                break;

                case MessageCode.StopServer:
                {
                    GatewayServer.StopServer();
                }
                break;

                case MessageCode.StartRegister:
                {
                    StringPacket sp = StringPacket.DeserializeObject(args.ReceivedBytes);
                    GatewayServer.StartRegister(sp.Content);
                }
                break;

                case MessageCode.StopRegister:
                {
                    StringPacket sp = StringPacket.DeserializeObject(args.ReceivedBytes);
                    GatewayServer.StopRegister(sp.Content);
                }
                break;

                case MessageCode.IsServerStarted:
                {
                    send(new BoolPacket(code, GatewayServer.IsServerStarted()));
                }
                break;

                case MessageCode.IsSuperiorOnline:
                {
                    StringPacket sp = StringPacket.DeserializeObject(args.ReceivedBytes);
                    send(new BoolPacket(code, GatewayServer.IsSuperOnline(sp.Content)));
                }
                break;

                case MessageCode.ShareDevice:
                {
                    StringPacket sp = StringPacket.DeserializeObject(args.ReceivedBytes);
                    GatewayServer.ShareToPlatform(sp.Content);
                }
                break;
                }
            }
        }
示例#9
0
        private void ManagerRemoveObjectFunc(Session sess)
        {
            if (sess.Object is GatewayServer)
            {
                GatewayServer gate_server = sess.Object as GatewayServer;

                if (null != gate_server)
                {
                    GatewayServerManager.Instance.RemoveGatewayServer(gate_server);
                }
            }
        }
示例#10
0
        private void ManagerRemoveObjectFunc(Session sess)
        {
            if (sess.Object is GatewayServer)
            {
                GatewayServer gate_server = sess.Object as GatewayServer;

                if (null != gate_server)
                {
                    Debug.Assert(false);
                }
            }
        }
示例#11
0
        private static DicomService GetGatewayService(Gateways.GatewayServerRow gatewayRow)
        {
            DicomService  gatewayService = null;
            GatewayServer gatewayServer  = (GatewayServer)gatewayRow.GatewayServer;

            if (ServerState.Instance.ServiceAdmin.Services.ContainsKey(gatewayServer.ServiceName))
            {
                gatewayService = ServerState.Instance.ServiceAdmin.Services [gatewayServer.ServiceName];
            }

            return(gatewayService);
        }
示例#12
0
        public void NotEnoughDrivers_SimultaneousTrips_VerifyRejected()
        {
            Logger.Log("NotEnoughDrivers_SimultaneousTrips_VerifyRejected");

            /* In this test since there are not enough drivers it tries to dispatch to tripthru --
             * which has an empty implementation that always rejects.
             * We expect an assertion error because we expect the trip status to change from Queued to Dispatched
             * */
            GatewayServer           gatewayServer = new GatewayServer("EmptyGateway", "EmptyGateway");
            Test_TripLifeCycle_Base lib           = new Test_TripLifeCycle_Base(
                filename: "Test_Configurations/LocalTripsNotEnoughDriversSimultaneous.txt",
                tripthru: gatewayServer,
                maxLateness: new TimeSpan(0, 1, 0));

            lib.Test_SimultaneousTripLifecycle_ForAllPartnerFleets(new List <Partner>()
            {
                lib.partner
            });
        }
示例#13
0
        public void UpdateUI( )
        {
            _syncContext.Send(new SendOrPostCallback(delegate(object state) {
                _serverControlStrip.CanStart    = _serverControlStrip.CanStop = (_view.SelectedRow != null) && ServerState.Instance.ServiceAdmin != null;
                _serverControlStrip.CanStartAll = _serverControlStrip.CanStopAll = _gatewaySource.Count > 0 && ServerState.Instance.ServiceAdmin != null;

                if (null != _view.SelectedRow && _gatewaySource.Current != null)
                {
                    GatewayServer server = (GatewayServer)((Gateways.GatewayServerRow)(( DataRowView )_gatewaySource.Current).Row).GatewayServer;

                    if (null != ServerState.Instance.ServiceAdmin &&
                        ServerState.Instance.ServiceAdmin.Services.ContainsKey(server.ServiceName))
                    {
                        DicomService service = ServerState.Instance.ServiceAdmin.Services [server.ServiceName];


                        _serverControlStrip.CanStart = service.Status != ServiceControllerStatus.Running;
                        _serverControlStrip.CanStop  = service.Status != ServiceControllerStatus.Stopped;
                    }
                }
            }), null);
        }
示例#14
0
        static void Main(string[] args)
        {
            AppDomain.MonitoringIsEnabled = true;


            logger.Info("Loading settings.");
            config.Load("./Settings.config");
            dynamic result;

            if (Sheriffy.Check(config.Key, out result))
            {
                logger.Info("Subscription name : {0} ", result["subscription"]["name"]);
                logger.Info("Subscription key : {0} ", result["subscription"]["key"]);
                logger.Info("Subscription remaining : {0} days", result["subscription"]["remaining"]["days"]);
                logger.Info("Subscription end date : {0} ", result["subscription"]["remaining"]["date"]);
            }
            else
            {
                logger.Info("Your subscription has expired or not found please contact to your provider.");
                Environment.Exit(100);
            }

            logger.Info("Loading librarys.");
            manager.LoadLibrarys();
            logger.Info("Loading plugins.");
            manager.Load();
            logger.Info("({0}) Plugin successfully loaded.", manager.Plugins.Count);



            logger.Info("Services are being loaded and starting.");
            foreach (Server module in config.Servers)
            {
                if (module.Class == typeof(GatewayServer).FullName)
                {
                    GatewayServer server = new GatewayServer();
                    server.Bind        = module.Bind;
                    server.ID          = module.ID;
                    server.Class       = module.Class;
                    server.Description = module.Description;
                    server.Divisions   = module.Divisions;
                    server.Server      = module.Reditected;
                    server.Start();
                    services.Add(server);
                }
                else if (module.Class == typeof(AgentServer).FullName)
                {
                    AgentServer server = new AgentServer();
                    server.Bind        = module.Bind;
                    server.ID          = module.ID;
                    server.Class       = module.Class;
                    server.Description = module.Description;
                    server.Start();
                    services.Add(server);
                }
                else if (module.Class == typeof(DownloadServer).FullName)
                {
                    DownloadServer server = new DownloadServer();
                    server.Bind        = module.Bind;
                    server.ID          = module.ID;
                    server.Class       = module.Class;
                    server.Description = module.Description;
                    server.Start();
                    services.Add(server);
                }
                else if (module.Class == typeof(ApiServer).FullName)
                {
                    ApiServer server = new ApiServer();
                    server.Bind               = module.Bind;
                    server.ID                 = module.ID;
                    server.Class              = module.Class;
                    server.Description        = module.Description;
                    server.OnRequestReceived += ApiServer_OnRequestReceived;
                    server.Start();
                    services.Add(server);
                }
            }



            logger.Info("Everything is looking fine.");
            SetupConsole();
        }
示例#15
0
 public static void Stop()
 {
     _GatewayServer.Dispose();
     _GatewayServer = null;
 }
示例#16
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Destruction des entités de test
        /// </summary>
        /// <param name="server">le serveur (tunnel)</param>
        /// <param name="client">le client (tunnel)</param>
        /// <param name="echo">le serveur d'echo</param>
        /// <param name="gw">la passerelle</param>
        /// -----------------------------------------------------------------------------
        private void Finalize(ref BdtServer server, ref BdtClient client, ref EchoServer echo, ref GatewayServer gw)
        {
            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 2);
            client.StopClient();

            Tunnel.DisableChecking();
            server.Protocol.UnConfigureServer();

            server.UnLoadConfiguration();
            client.UnLoadConfiguration();

            server = null;
            client = null;
            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 0);

            echo.CloseServer();
            Servers.Remove(echo);
            echo = null;

            gw.CloseServer();
            Servers.Remove(gw);
            gw = null;
        }
示例#17
0
        static void Main(string[] args)
        {
            while (true)
            {
                var line = Console.ReadLine();

                args = line.Trim().Split(' ');

                string cmd = args[0].ToLowerInvariant();

                if (cmd == "start")
                {
                    if (GatewayServer == null)
                    {
                        GatewayServer = new GatewayServer(6608, 10000);
                        GatewayServer.ClientConnected      += GatewayServer_ClientConnected;
                        GatewayServer.ClientDisconnected   += GatewayServer_ClientDisconnected;
                        GatewayServer.ClientRuntimeUpdated += GatewayServer_ClientRuntimeUpdated;
                    }
                    GatewayServer.Start();

                    if (MediaServer == null)
                    {
                        MediaServer = new MediaServer("Media Server", 6602);
                        MediaServer.ClientConnected += MediaServer_ClientConnected;
                    }
                    MediaServer.Start();

                    if (MediaRtspServer == null)
                    {
                        MediaRtspServer = new MediaRtspServer(6601);
                    }
                    MediaRtspServer.Start();
                }
                else if (cmd == "stop")
                {
                    if (GatewayServer != null)
                    {
                        GatewayServer.Stop();
                    }

                    if (MediaServer != null)
                    {
                        MediaServer.Stop();
                    }
                }
                else if (cmd == "open")
                {
                    var devIDNO   = args[1];
                    var channelNo = int.Parse(args[2]);

                    GatewayServer.SendStartVideo(devIDNO, channelNo, ServerIp, 6602);
                }
                else if (cmd == "close")
                {
                    var devIDNO   = args[1];
                    var channelNo = int.Parse(args[2]);

                    GatewayServer.SendStopVideo(devIDNO, channelNo, ServerIp, 6602);
                }
            }
        }