private async void Login() { var AM = DependencyService.Resolve <AppModel>(); await _client.OpenURL(Constants.BASE_URI + String.Format("user_sessions/?user_session[username]={0}&user_session[password]={1}", Username, Password), MethodEnum.POST, false); AM.UserSessionCookie = _client.UserSessionCookie; if (_client.UserSessionCookie != null) { AM.StoreCredentials(Username, Password, _client.UserSessionCookie); await _client.OpenURL(Constants.BASE_URI + String.Format("users/{0}/", AM.User.username), MethodEnum.GET, true); var user = Newtonsoft.Json.JsonConvert.DeserializeObject <UserDTO>(_client.ResponseText); AM.User.ID = user.User.ID; AM.User.Name = user.User.Name; AM.User.Email = user.User.Email; AM.User.Bio = user.User.Bio; AM.User.Website = user.User.Website; Barrel.Current.Add(key: nameof(AppModel), data: AM, expireIn: TimeSpan.FromDays(1)); await Shell.Current.GoToAsync("..?refresh=true"); _hub.PublishAsync <LoggedInMessage>(new LoggedInMessage()); } else { var forgot = await Shell.Current.DisplayAlert("Sorry", "Your username and/or password were not recognized.", "Reset Password", "Try Again"); if (forgot) { Device.OpenUri(new Uri("http://www.whitepaperbible.org")); } } }
private Global() { MessageHub = new TinyMessengerHub(); Texts = new ResXResourceSet(@".\Resources\Texts.resx"); MessageHub.Subscribe<UserBoatsRetrieved>((m) => { UserBoats = m.Content; #if DEBUG MessageHub.PublishAsync(new LogMessage(this, new LogText(Texts.GetString("UserBoatsRetrieved")))); #endif }); MessageHub.Subscribe<SelectedBoatRefreshed>((m) => { Boat = m.Content; Boat.FixTime = DateTime.Now; if(Boat.FixQuality == InstrumentsData.FixQualityType.ESTIMATED_DEAD_RECKONING) { MessageHub.PublishAsync(new LogMessage(this, new LogText($"{Texts.GetString("BoatDataRefreshedDeadReckoning")} - {Boat.UserName}'s {Boat.BoatName} - {DateTime.Now.ToString("hh:mm:ss")}", Color.Goldenrod))); } else { MessageHub.PublishAsync(new LogMessage(this, new LogText($"{Texts.GetString("BoatDataRefreshed")} - {Boat.UserName}'s {Boat.BoatName} - {DateTime.Now.ToString("hh:mm:ss")}", Color.DarkGreen))); } Boat.toInstrumentsData(ref boatData); NmeaServer.SendData(); }); NmeaServer = new NMEAServer(ref boatData, NmeaTcpPort); NmeaServer.OnServerStarted += delegate { MessageHub.PublishAsync(new LogMessage(this, new LogText($"{Texts.GetString("NMEAServerStarted")} {NmeaTcpPort}"))); }; NmeaServer.OnServerStop += delegate { MessageHub.PublishAsync(new LogMessage(this, new LogText(Texts.GetString("NMEAServerStopped")))); }; NmeaServer.OnNMEASent += NmeaServer_OnNMEASent; NmeaServer.OnServerError += NmeaServer_OnServerError; NmeaServer.OnClientConnected += NmeaServer_OnClientConnected; DeadReckoning.Active = true; DeadReckoning.Rate = 1; DeadReckoning.StartDeadReckoningTask(); }
private async void MenuItem_Clicked(object sender, System.EventArgs e) { _hub.PublishAsync <LoggedOutMessage>(new LoggedOutMessage()); await SecureStorage.SetAsync(App.REMEMBER_ME, false.ToString()); //Shell.SetFlyoutBehavior(Shell.Current, FlyoutBehavior.Disabled); Shell.Current.FlyoutIsPresented = false; await Task.Delay(100); await Shell.Current.GoToAsync("///login"); }
static void Main(string[] args) { ConfigureServices(serviceCollection); serviceProvider = serviceCollection.BuildServiceProvider(); logger = serviceProvider.GetService <ILogger <Program> >(); logger.LogInformation($"Shortel Token {appConfig.ShoreTelToken}"); logger.LogInformation($"Shoretel Host {appConfig.Host}"); logger.LogInformation($"Shortel Domain {appConfig.Domain}"); logger.LogInformation($"Shortel Username {appConfig.UserName}"); logger.LogInformation($"Smtp Host {appConfig.SmtpHost}"); logger.LogInformation($"Smtp port {appConfig.SmtpPort}"); logger.LogInformation($"Smtp port {appConfig.SendEmailDelay}"); foreach (string user in appConfig.UsersToRespondTo) { logger.LogInformation($"Users to respond to {user}"); } msgHub = new TinyMessengerHub(new ErrorHandler(logger)); msgHub.Subscribe <ActiveMessage>(m => { logger.LogDebug("Enter ActiveMessage"); try { var email = emailCollection.GetOrAdd(m.message.Thread, e => new Email(m.message.From.Bare, m.message.Thread)); Monitor.Enter(email); try { if (email.mailBody.Length < 1) { if (appConfig.UsersToRespondTo.FindIndex(x => x.Equals(email.EmailFrom, StringComparison.OrdinalIgnoreCase)) >= 0) { var txtMsg = "I am unable to respond to ShoreTel IMs right now. Leave a message, exit the conversation and I will get back with you,"; var sndMsg = new Matrix.Xmpp.Client.Message(m.message.From, MessageType.Chat, txtMsg, ""); xmppClient.SendAsync(sndMsg).GetAwaiter().GetResult(); } } email.AddString(m.message.Body); } finally { Monitor.Exit(email); } } catch (Exception e) { logger.LogError($"Active message error {e.Message}"); } logger.LogDebug("Exit ActiveMessage"); }); msgHub.Subscribe <GoneMessage>(m => { logger.LogDebug("Enter GoneMessage"); try { Email email; if (emailCollection.TryRemove(m.Thread, out email)) { Monitor.Enter(email); try { using (var client = new SmtpClient(new MailKit.ProtocolLogger("smtp.log", false))) { client.ServerCertificateValidationCallback = (s, c, h, e) => true; client.CheckCertificateRevocation = false; client.ConnectAsync(appConfig.SmtpHost, appConfig.SmtpPort, SecureSocketOptions.StartTlsWhenAvailable).GetAwaiter().GetResult(); var mailMsg = new MimeMessage(); mailMsg.From.Add(new MailboxAddress(email.EmailFrom)); mailMsg.To.Add(new MailboxAddress(appConfig.UserName)); mailMsg.Subject = $"ShoreTel message from {email.EmailFrom}"; var builder = new BodyBuilder { TextBody = email.mailBody.ToString() }; mailMsg.Body = builder.ToMessageBody(); client.SendAsync(mailMsg).GetAwaiter().GetResult(); client.DisconnectAsync(true).GetAwaiter().GetResult(); } } finally { Monitor.Exit(email); } } } catch (Exception e) { logger.LogError($"Gone message error {e.Message}"); } logger.LogDebug("Exit GoneMessage"); }); var pipelineInitializerAction = new Action <IChannelPipeline, ISession>((pipeline, session) => { pipeline.AddFirst(new MyLoggingHandler(logger)); }); xmppClient = new XmppClient() { Username = appConfig.UserName, XmppDomain = appConfig.Domain, SaslHandler = new ShoretelSSOProcessor(appConfig.ShoreTelToken), // use a local server for dev purposes running // on a non standard XMPP port 5333 HostnameResolver = new StaticNameResolver(IPAddress.Parse(appConfig.Host), appConfig.Port) }; xmppClient.XmppSessionStateObserver.Subscribe(v => { Console.WriteLine($"State changed: {v}"); logger.LogInformation(v.ToString()); }); xmppClient .XmppXElementStreamObserver .Where(el => el is Presence) .Subscribe(el => { logger.LogDebug("Enter Presence observer"); //Console.WriteLine(el.ToString()); //logger.LogInformation(el.ToString()); logger.LogDebug("Exit Presence observer"); }); xmppClient .XmppXElementStreamObserver .Where(el => el is Message) .Subscribe(el => { logger.LogDebug("Enter Message observer"); var msg = el as Message; switch (msg.Chatstate) { case Matrix.Xmpp.Chatstates.Chatstate.Active: msgHub.PublishAsync(new ActiveMessage(msg), x => { }); break; case Matrix.Xmpp.Chatstates.Chatstate.Composing: break; case Matrix.Xmpp.Chatstates.Chatstate.Gone: msgHub.PublishAsync(new GoneMessage(msg.Thread), x => { }); break; } logger.LogDebug("Exit Message observer"); }); xmppClient .XmppXElementStreamObserver .Where(el => el is Iq) .Subscribe(el => { Console.WriteLine(el.ToString()); logger.LogInformation(el.ToString()); }); xmppClient.ConnectAsync().GetAwaiter().GetResult(); // Send our presence to the server xmppClient.SendPresenceAsync(Show.Chat, "free for chat").GetAwaiter().GetResult(); using (Timer t = new Timer(TimerCallback, null, 0, 1000)) { Console.ReadLine(); } // Disconnect the XMPP connection xmppClient.DisconnectAsync().GetAwaiter().GetResult(); }