Ejemplo n.º 1
0
        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"));
                }
            }
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 4
0
        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();
        }