Beispiel #1
0
 public void Stop()
 {
     try
     {
         if (xmppServer != null)
         {
             xmppServer.StopListen();
             xmppServer.Dispose();
             xmppServer = null;
         }
         if (host != null)
         {
             host.Close();
             host = null;
         }
         if (cleaner != null)
         {
             cleaner.Stop();
         }
     }
     catch (Exception ex)
     {
         log.Error("Error while stopping the service", ex);
     }
 }
Beispiel #2
0
        protected override XElement ProcessRequest(XmppServer server, Jid jid, NameValueCollection values)
        {
            var to      = values["to"];
            var from    = values["from"];
            var command = values["command"];

            if (string.IsNullOrEmpty(from) || string.IsNullOrEmpty(to) || string.IsNullOrEmpty(command))
            {
                throw new ArgumentException("argument count mismatch");
            }

            var jidTo = GetJid(to);
            var iq    = new IQ(IqType.set, GetJid(from), jidTo)
            {
                Query = new Command(command)
            };

            var session = server.SessionManager.GetSession(jidTo);

            if (session != null)
            {
                var sender = (IXmppSender)server.GetService(typeof(IXmppSender));
                sender.SendTo(session, iq);
            }
            return(new XElement("ok"));
        }
Beispiel #3
0
 public SignalRXmppConnection(string connectionId, XmppServer xmppServer)
 {
     Id          = connectionId;
     _xmppServer = xmppServer;
     IdleWatcher.StopWatch(Id);
     IdleWatcher.StartWatch(Id, _inactivityPeriod, IdleTimeout);
     _log.DebugFormat("Create new SignalR connection Id = {0}.", Id);
 }
 public void Start()
 {
     xmppServer = new XmppServer();
     JabberConfiguration.Configure(xmppServer);
     xmppServer.StartListen();
     host = new ServiceHost(new JabberService(xmppServer));
     host.Open();
 }
 public SignalRXmppConnection(string connectionId, XmppServer xmppServer)
 {
     Id = connectionId;
     _xmppServer = xmppServer;
     IdleWatcher.StopWatch(Id);
     IdleWatcher.StartWatch(Id, _inactivityPeriod, IdleTimeout);
     _log.DebugFormat("Create new SignalR connection Id = {0}.", Id);
 }
		private static void ConfigureStorages(JabberConfigurationSection jabberSection, XmppServer server)
		{
			foreach (JabberConfigurationElement se in jabberSection.Storages)
			{
				var storage = Activator.CreateInstance(Type.GetType(se.TypeName, true));
				if (storage is IConfigurable) ((IConfigurable)storage).Configure(se.GetProperties());
				server.StorageManager.SetStorage(se.Name, storage);
			}
		}
Beispiel #7
0
 /// <summary>
 /// 注册 Xmpp相关配置
 /// </summary>
 public static void Launch()
 {
     Console.WriteLine("Starting xmpp service ......");
     //启动xmpp服务
     XmppServer.GetInstance().StartUp();
     Console.WriteLine("xmpp service started");
     //启动诊断
     //TraceManager.StartTrace();
 }
		private static void ConfigureListeners(JabberConfigurationSection jabberSection, XmppServer server)
		{
			foreach (JabberConfigurationElement le in jabberSection.Listeners)
			{
				var listener = (IXmppListener)Activator.CreateInstance(Type.GetType(le.TypeName, true));
				listener.Name = le.Name;
				listener.Configure(le.GetProperties());
				server.AddXmppListener(listener);
			}
		}
        public static void Configure(XmppServer server, string configFile)
        {
            XmlConfigurator.Configure();

            var jabberSection = GetSection(configFile);

            ConfigureListeners(jabberSection, server);
            ConfigureStorages(jabberSection, server);
            ConfigureServices(jabberSection, server);
        }
		public static void Configure(XmppServer server, string configFile)
		{
			XmlConfigurator.Configure();

			var jabberSection = GetSection(configFile);

			ConfigureListeners(jabberSection, server);
			ConfigureStorages(jabberSection, server);
			ConfigureServices(jabberSection, server);
		}
Beispiel #11
0
        protected override XElement ProcessRequest(XmppServer server, Jid jid, NameValueCollection values)
        {
            var user = values["user"];

            if (!string.IsNullOrEmpty(user))
            {
                jid = GetJid(user);
            }
            var session = server.SessionManager.GetSession(jid);

            return(new XElement("availible", session != null && session.Available));
        }
Beispiel #12
0
 public void Stop()
 {
     if (xmppServer != null)
     {
         xmppServer.StopListen();
         xmppServer = null;
     }
     if (host != null)
     {
         host.Close();
         host = null;
     }
 }
            public XmppSeverConnection(XmppServer server, Socket sock)
                : this()
            {
                this.m_SessionId = SessionID.CreateNewId();

                this.strClientIP = ((IPEndPoint)sock.RemoteEndPoint).Address.ToString();
               
                m_Sock = sock;
                m_Server = server;
                m_Sock.BeginReceive(buffer, 0, BUFFERSIZE, 0, new AsyncCallback(ReadCallback), null);

                m_AuthenticatedClient = false;

            }
		private static void ConfigureServices(JabberConfigurationSection jabberSection, XmppServer server)
		{
			foreach (ServiceConfigurationElement se in jabberSection.Services)
			{
				var service = (IXmppService)Activator.CreateInstance(Type.GetType(se.TypeName, true));
				service.Jid = new Jid(Stringprep.NamePrep(se.Jid));
				service.Name = se.Name;
				if (!string.IsNullOrEmpty(se.Parent))
				{
					service.ParentService = server.GetXmppService(new Jid(Stringprep.NamePrep(se.Parent)));
				}
				service.Configure(se.GetProperties());
				server.RegisterXmppService(service);
			}
		}
Beispiel #15
0
        protected override XElement ProcessRequest(XmppServer server, Jid jid, NameValueCollection values)
        {
            var to      = values["to"];
            var subject = values["subject"];
            var text    = values["message"];

            if (!string.IsNullOrEmpty(to) && !string.IsNullOrEmpty(text))
            {
                var jidTo = GetJid(to);
                text = ModifyJabberNotification(text);
                var message = new Message(
                    jidTo,
                    new Jid(CoreContext.TenantManager.GetCurrentTenant().TenantDomain),
                    MessageType.headline,
                    text,
                    subject ?? "")
                {
                    XDelay = new Delay()
                    {
                        Stamp = DateTime.UtcNow
                    }
                };

                var session = server.SessionManager.GetSession(jid);
                if (session != null)
                {
                    var sender = (IXmppSender)server.GetService(typeof(IXmppSender));
                    sender.SendTo(session, message);
                }
                else
                {
                    server.StorageManager.OfflineStorage.SaveOfflineMessages(message);
                }
                var archive = server.StorageManager.GetStorage <DbMessageArchive>("archive");
                if (archive != null)
                {
                    archive.SaveMessages(message);
                }
            }
            else
            {
                throw new ArgumentException("argument count mismatch");
            }
            return(new XElement("ok"));
        }
Beispiel #16
0
            public Main()
            {
                InitializeComponent();

                outputList = new Dictionary<string, RichTextBox>();
                
                ///ÅäÖÃÏêϸ¼ÓÔØ
                ConfigManager.Load();//gt
                
                server = new XmppServer();
                //server.ClientStart = ClientStartHandler;//gt
                //server.ClientEnd = ClientEndHandler;//gt
                //server.Output = OutputHandler;//gt

                this.btnStart.Enabled = true;
                this.btnStop.Enabled = false;

            }
Beispiel #17
0
        /// <summary>
        /// Starts services.
        /// </summary>
        private void StartServices()
        {
            var config = ApiConfig.Current;

            ApiConfig.Current.Logger = Log.Logger;

            // Start the API server.
            _apiServer = new ApiServer(ApiConfig.Current.Port)
            {
                Logger           = Log.Logger,
                LogHttpRequests  = ApiConfig.Current.LogHttpRequests,
                Log404           = ApiConfig.Current.Log404,
                AlternativeRoute = "/fortnite-gameapi"
            };
            try
            {
                _apiServer.Start();
                Log.Information("API server started on port " + _apiServer.Port);
            }
            catch (HttpListenerException) when(_apiServer.Port == 80)
            {
                Log.Fatal("You must run this program as an administrator to use port 80!");
                return;
            }

            // Start the XMPP service.
            _xmppServer = new XmppServer(ApiConfig.Current.XmppPort)
            {
                Logger = Log.Logger
            };
            _xmppServer.Start();
            Log.Information("XMPP server started on port " + _xmppServer.Port);

            // Start the matchmaker server.
            _matchmakerServer = new MatchmakerServer(ApiConfig.Current.MatchmakerPort)
            {
                Logger = Log.Logger
            };
            _matchmakerServer.Start();
            Log.Information("Matchmaker server started on port " + _matchmakerServer.Port);

            // TODO: Start the game server.
        }
        public static void Configure(XmppServer server, string configFile)
        {
            XmlConfigurator.Configure();

            var jabberSection = GetSection(configFile);

            ConfigureListeners(jabberSection, server);
            ConfigureStorages(jabberSection, server);
            ConfigureServices(jabberSection, server);

            var replaceSetting = ConfigurationManager.AppSettings["jabber.replace-domain"];
            if (!string.IsNullOrEmpty(replaceSetting))
            {
                ReplaceDomain = true;
                var q = replaceSetting.Split(new []{"->"}, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim().ToLowerInvariant());
                ReplaceFromDomain = q.ElementAt(0);
                ReplaceToDomain = q.ElementAt(1);
            }
        }
        public static void Configure(XmppServer server, string configFile)
        {
            var jabberSection = GetSection(configFile);

            ConfigureListeners(jabberSection, server);
            ConfigureStorages(jabberSection, server);
            ConfigureServices(jabberSection, server);



            var replaceSetting = ConfigurationManager.AppSettings["jabber.replace-domain"];

            if (!string.IsNullOrEmpty(replaceSetting))
            {
                ReplaceDomain = true;
                var q = replaceSetting.Split(new [] { "->" }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim().ToLowerInvariant());
                ReplaceFromDomain = q.ElementAt(0);
                ReplaceToDomain   = q.ElementAt(1);
            }
        }
		public static void Configure(XmppServer server)
		{
			Configure(server, null);
		}
        public void AddXmppConnection(string connectionId, XmppServer xmppServer)
        {
            var connection = new SignalRXmppConnection(connectionId, xmppServer);

            base.AddNewXmppConnection(connection);
        }
Beispiel #22
0
 protected override XElement ProcessRequest(XmppServer server, Jid jid, NameValueCollection values)
 {
     return(new XElement("unread", server.StorageManager.OfflineStorage.GetOfflineMessagesCount(jid)));
 }
Beispiel #23
0
 protected abstract XElement ProcessRequest(XmppServer server, Jid username, NameValueCollection values);
Beispiel #24
0
 public JabberService(XmppServer xmppServer)
 {
     this.xmppServer   = xmppServer;
     CurrentXmppServer = xmppServer;
 }
 public JabberService(XmppServer xmppServer)
 {
     _xmppServer = xmppServer;
     _reverseJabberServiceClient = new ReverseJabberServiceClient();
 }
Beispiel #26
0
 protected override XElement ProcessRequest(XmppServer server, Jid jid, NameValueCollection values)
 {
     return(new XElement("token", server.AuthManager.GetUserToken(jid.User)));
 }
 public static void Configure(XmppServer server)
 {
     Configure(server, null);
 }
 private static void ConfigureListeners(JabberConfigurationSection jabberSection, XmppServer server)
 {
     foreach (JabberConfigurationElement le in jabberSection.Listeners)
     {
         var listener = (IXmppListener)Activator.CreateInstance(Type.GetType(le.TypeName, true));
         listener.Name = le.Name;
         listener.Configure(le.GetProperties());
         server.AddXmppListener(listener);
     }
 }
 private static void ConfigureServices(JabberConfigurationSection jabberSection, XmppServer server)
 {
     foreach (ServiceConfigurationElement se in jabberSection.Services)
     {
         var service = (IXmppService)Activator.CreateInstance(Type.GetType(se.TypeName, true));
         service.Jid  = new Jid(Stringprep.NamePrep(se.Jid));
         service.Name = se.Name;
         if (!string.IsNullOrEmpty(se.Parent))
         {
             service.ParentService = server.GetXmppService(new Jid(Stringprep.NamePrep(se.Parent)));
         }
         service.Configure(se.GetProperties());
         server.RegisterXmppService(service);
     }
 }
 public void AddXmppConnection(string connectionId, XmppServer xmppServer)
 {
     var connection = new SignalRXmppConnection(connectionId, xmppServer);
     base.AddNewXmppConnection(connection);
 }
Beispiel #31
0
 public JabberService(XmppServer xmppServer)
 {
     _xmppServer          = xmppServer;
     signalrServiceClient = new SignalrServiceClient("chat");
 }
 private static void ConfigureStorages(JabberConfigurationSection jabberSection, XmppServer server)
 {
     foreach (JabberConfigurationElement se in jabberSection.Storages)
     {
         var storage = Activator.CreateInstance(Type.GetType(se.TypeName, true));
         if (storage is IConfigurable)
         {
             ((IConfigurable)storage).Configure(se.GetProperties());
         }
         server.StorageManager.SetStorage(se.Name, storage);
     }
 }