コード例 #1
0
        public static void NotifyStartUp(IServiceProvider serviceProvider)
        {
            if (notifyStarted)
            {
                return;
            }
            lock (syncRoot)
            {
                if (notifyStarted)
                {
                    return;
                }

                var configuration  = serviceProvider.GetService <IConfiguration>();
                var cacheNotify    = serviceProvider.GetService <ICacheNotify <NotifyMessage> >();
                var cacheInvoke    = serviceProvider.GetService <ICacheNotify <NotifyInvoke> >();
                var options        = serviceProvider.GetService <IOptionsMonitor <ILog> >();
                var telegramHelper = serviceProvider.GetService <TelegramHelper>();

                NotifyContext = new NotifyContext(serviceProvider);

                INotifySender jabberSender   = new NotifyServiceSender(cacheNotify, cacheInvoke);
                INotifySender emailSender    = new NotifyServiceSender(cacheNotify, cacheInvoke);
                INotifySender telegramSender = new TelegramSender(options, telegramHelper);

                var postman = configuration["core:notify:postman"];

                if ("ases".Equals(postman, StringComparison.InvariantCultureIgnoreCase) || "smtp".Equals(postman, StringComparison.InvariantCultureIgnoreCase))
                {
                    jabberSender = new JabberSender(serviceProvider);

                    var properties = new Dictionary <string, string>
                    {
                        ["useCoreSettings"] = "true"
                    };
                    if ("ases".Equals(postman, StringComparison.InvariantCultureIgnoreCase))
                    {
                        emailSender                  = new AWSSender(serviceProvider, options);
                        properties["accessKey"]      = configuration["ses:accessKey"];
                        properties["secretKey"]      = configuration["ses:secretKey"];
                        properties["refreshTimeout"] = configuration["ses:refreshTimeout"];
                    }
                    else
                    {
                        emailSender = new SmtpSender(serviceProvider, options);
                    }
                    emailSender.Init(properties);
                }

                NotifyContext.NotifyService.RegisterSender(Constants.NotifyEMailSenderSysName, new EmailSenderSink(emailSender, serviceProvider, options));
                NotifyContext.NotifyService.RegisterSender(Constants.NotifyMessengerSenderSysName, new JabberSenderSink(jabberSender, serviceProvider));
                NotifyContext.NotifyService.RegisterSender(Constants.NotifyTelegramSenderSysName, new TelegramSenderSink(telegramSender, serviceProvider));

                NotifyContext.NotifyEngine.BeforeTransferRequest += NotifyEngine_BeforeTransferRequest;
                NotifyContext.NotifyEngine.AfterTransferRequest  += NotifyEngine_AfterTransferRequest;
                notifyStarted = true;
            }
        }
コード例 #2
0
ファイル: WorkContext.cs プロジェクト: Wifisoft/teamlab.v6.5
        private static void NotifyStartUp()
        {
            if (notifyStarted)
            {
                return;
            }
            lock (syncRoot)
            {
                if (notifyStarted)
                {
                    return;
                }

                notifyContext = new NotifyContext();

                INotifySender jabberSender = new NotifyServiceSender();
                INotifySender emailSender  = new NotifyServiceSender();

                var postman = ConfigurationManager.AppSettings["core.notify.postman"];

                if ("ases".Equals(postman, StringComparison.InvariantCultureIgnoreCase) || "smtp".Equals(postman, StringComparison.InvariantCultureIgnoreCase))
                {
                    jabberSender = new JabberSender();

                    var properties = new Dictionary <string, string>();
                    var s          = CoreContext.Configuration.SmtpSettings;
                    properties["host"]      = s.Host;
                    properties["port"]      = s.Port.GetValueOrDefault(25).ToString();
                    properties["enableSsl"] = s.EnableSSL.ToString();
                    properties["userName"]  = s.CredentialsUserName;
                    properties["password"]  = s.CredentialsUserPassword;
                    properties["domain"]    = s.CredentialsDomain;
                    if ("ases".Equals(postman, StringComparison.InvariantCultureIgnoreCase))
                    {
                        emailSender                  = new AWSSender();
                        properties["accessKey"]      = ConfigurationManager.AppSettings["ses.accessKey"];
                        properties["secretKey"]      = ConfigurationManager.AppSettings["ses.secretKey"];
                        properties["refreshTimeout"] = ConfigurationManager.AppSettings["ses.refreshTimeout"];
                    }
                    else
                    {
                        emailSender = new SmtpSender();
                    }
                    emailSender.Init(properties);
                }

                notifyContext.NotifyService.RegisterSender(Constants.NotifyEMailSenderSysName, new EmailSenderSink(emailSender));
                notifyContext.NotifyService.RegisterSender(Constants.NotifyMessengerSenderSysName, new JabberSenderSink(jabberSender));

                notifyContext.NotifyEngine.Scheduling             = ConfigurationManager.AppSettings["core.notify.scheduling"] != "false";
                notifyContext.NotifyEngine.BeforeTransferRequest += NotifyEngine_BeforeTransferRequest;
                notifyContext.NotifyEngine.AfterTransferRequest  += NotifyEngine_AfterTransferRequest;
                notifyStarted = true;
            }
        }
コード例 #3
0
        private static void NotifyStartUp()
        {
            if (notifyStarted)
            {
                return;
            }
            lock (syncRoot)
            {
                if (notifyStarted)
                {
                    return;
                }

                notifyContext = new NotifyContext();

                INotifySender jabberSender = new NotifyServiceSender();
                INotifySender emailSender  = new NotifyServiceSender();

                var postman = ConfigurationManager.AppSettings["core:notify:postman"];

                if ("ases".Equals(postman, StringComparison.InvariantCultureIgnoreCase) || "smtp".Equals(postman, StringComparison.InvariantCultureIgnoreCase))
                {
                    jabberSender = new JabberSender();

                    var properties = new Dictionary <string, string>
                    {
                        ["useCoreSettings"] = "true"
                    };
                    if ("ases".Equals(postman, StringComparison.InvariantCultureIgnoreCase))
                    {
                        emailSender                  = new AWSSender();
                        properties["accessKey"]      = ConfigurationManager.AppSettings["ses:accessKey"];
                        properties["secretKey"]      = ConfigurationManager.AppSettings["ses:secretKey"];
                        properties["refreshTimeout"] = ConfigurationManager.AppSettings["ses:refreshTimeout"];
                    }
                    else
                    {
                        emailSender = new SmtpSender();
                    }
                    emailSender.Init(properties);
                }

                notifyContext.NotifyService.RegisterSender(Constants.NotifyEMailSenderSysName, new EmailSenderSink(emailSender));
                notifyContext.NotifyService.RegisterSender(Constants.NotifyMessengerSenderSysName, new JabberSenderSink(jabberSender));

                notifyContext.NotifyEngine.BeforeTransferRequest += NotifyEngine_BeforeTransferRequest;
                notifyContext.NotifyEngine.AfterTransferRequest  += NotifyEngine_AfterTransferRequest;
                notifyStarted = true;
            }
        }
コード例 #4
0
ファイル: JabberAdapter.cs プロジェクト: zaitsevyan/Theseus
        public override void Start(CancellationToken token)
        {
            base.Start(token);
            token.Register(Disconnect);
            Connection = new XmppClientConnection();
            Connection.Server = Config["server"] as String;
            Connection.ConnectServer = Config["server"] as String;
            Connection.Username = Config["username"] as String;
            Connection.Password = Config["password"] as String;
            Connection.Resource = "";
            Connection.AutoAgents = false;
            Connection.AutoPresence = true;
            Connection.AutoRoster = true;
            Connection.AutoResolveConnectServer = true;
            Connection.Priority = 0;
            Connection.OnLogin += new ObjectHandler(OnLoginEvent);
            Connection.OnPresence += async delegate(object sender, Presence pres) {
                User user = pres.SelectSingleElement(typeof(User)) as User;
                if (user != null) {
                    var userID = pres.From.ToString();
                    var role = Api.Role.Normal;
                    if (user.Item.Role == agsXMPP.protocol.x.muc.Role.moderator) {
                        role = Api.Role.Moderator;
                    }
                    var account = await Manager.GetCore().GetAccountsDB().GetAccount(userID, null);
                    if (account!=null && account.Role > role) {
                        role = account.Role;
                    }
                    accounts[userID] = new JabberSender(pres.From, role);
                    Logger.Debug("User: {0} - {1}", userID, role);
                }
            };

            Connection.OnError += delegate(object sender, Exception ex) {
                Logger.Error(ex);
                Disconnect();
            };
            Connection.OnWriteXml += new XmlHandler(delegate(object sender, string xml) {
                    Logger.Trace("Write: {0}", xml);
                });
            Connection.OnReadXml += new XmlHandler(delegate(object sender, string xml) {
                    Logger.Trace("Read: {0}", xml);
                });
            Connection.OnAuthError += delegate(object sender, agsXMPP.Xml.Dom.Element e) {
                Logger.Error("Cannot log in as {0} to {1}", Connection.Username, Connection.Server);
                Disconnect();
            };

            Connection.Open();
        }
コード例 #5
0
ファイル: JabberAdapter.cs プロジェクト: zaitsevyan/Theseus
 public JabberRequest(JabberSender sender, String command, MessageType messageType)
     : base(sender, command)
 {
     MessageType = messageType;
 }
コード例 #6
0
ファイル: JabberAdapter.cs プロジェクト: zaitsevyan/Theseus
        private void OnMessage(object s, Message msg)
        {
            if (msg.XDelay != null)
                return;
            if (msg.Body == null || msg.Body == null)
                return;
            Logger.Debug("Message[{1}]: {0}", msg.Body, msg.Chatstate);

            var userID = msg.From.ToString();
            JabberSender sender;
            if (accounts.ContainsKey(userID)) {
                sender = accounts[userID];
            }
            else {
                sender = new JabberSender(msg.From, Api.Role.Normal);
            }
            var request = new JabberRequest(sender, msg.Body, msg.Type);
            Manager.Process(this, request);
        }