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; } }
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; } }
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; } }
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(); }
public JabberRequest(JabberSender sender, String command, MessageType messageType) : base(sender, command) { MessageType = messageType; }
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); }