예제 #1
0
        public void TryLogin(String user, String pass)
        {
            var wsResp = model.Login(user, pass);

            if (wsResp.error == null && wsResp.token != null)
            {
                OnSuccessLogin?.Invoke(this, wsResp.token);
            }
            else
            {
                OnFailLogin?.Invoke(this, wsResp.error);
            }
        }
예제 #2
0
        public static async Task <bool> Login(string id, string pwd, OnSuccessLogin loginCallback, OnFailedLogin failedCallback)
        {
            string x = await Launcher.Authenticate(id, pwd);

            dynamic json        = Newtonsoft.Json.JsonConvert.DeserializeObject(x);
            string  accessToken = "";
            string  username    = "";
            string  Puuid       = "";

            try
            {
                accessToken = json.accessToken;
                username    = json.selectedProfile.name;
                Puuid       = json.selectedProfile.id;
                if (accessToken != null)
                {
                    if (loginCallback != null)
                    {
                        loginCallback.Invoke();
                    }
                }
                else
                {
                    if (failedCallback != null)
                    {
                        failedCallback.Invoke();
                    }
                    return(false);
                }
            }
            catch (Exception eex)
            {
                if (failedCallback != null)
                {
                    failedCallback.Invoke();
                }

                return(false);
            }
            DATA.username    = username;
            DATA.premium     = true;
            DATA.uuidPremium = Puuid;
            DATA.accessToken = accessToken;
            return(true);
        }
예제 #3
0
 private void DoOnSuccessLogin(User e)
 {
     OnSuccessLogin?.Invoke(this, e);
 }
예제 #4
0
        /// <summary>
        /// The handler for when the string is received
        /// </summary>
        /// <param name="x">The received string</param>
        private bool ReadXMPPMessage(string x)
        {
            if (x.Contains("</stream:stream>"))
            {
                //TODO: Handle a disconnect
            }
            //Lazy hack, this converts the initial starting output to a valid XML doc
            else if (x.Contains("<stream:stream"))
            {
                x += "</stream:stream>";
            }
            //Lazy hack 2, This stops any stupid blah blah blah is not a part of this domain stuff
            x = x.Replace("stream:", "");


            try
            {
                //The XML Reader
                using (var reader = XmlReader.Create(new StringReader(x)))
                {
                    //Convert to XmlDocument for reading
                    var doc = new XmlDocument();
                    doc.Load(reader);
                    var el = doc.DocumentElement;

                    #region XmppPresenceHandler

                    if (el.Name == "presence" && el.HasChildNodes)
                    {
                        PresenceManager.HandleReceivedPresence(el);
                    }

                    #endregion XmppPresenceHandler

                    #region XmppMessageRecieveHandler

                    else if (el.Name == "message" && el.HasChildNodes)
                    {
                        try
                        {
                            if (el.Attributes["from"].Value == el.Attributes["to"].Value)
                            {
                                return(true);
                            }

                            //TODO: Add a message handler
                            //OnMessageRecieved?.Invoke(new Jid(el.Attributes["from"].Value), el.InnerText);
                        }
                        catch
                        {
                            //Ignore for now
                        }
                    }

                    #endregion XmppMessageRecieveHandler

                    else if (el.HasChildNodes)
                    {
                        foreach (var node in el.ChildNodes)
                        {
                            var xmlNode = (XmlNode)node;

                            //Handle RsoAuth

                            #region AuthHandler

                            if (xmlNode.Name == "mechanisms")
                            {
                                if (AuthHandler.HandleAuth(xmlNode))
                                {
                                    break;
                                }
                            }

                            #endregion AuthHandler

                            #region ConnectionSuccessHandler

                            if (el.Name == "success" && xmlNode.Name == "#text")
                            {
                                //I have no idea why I did this, but I did it. Don't question me Wild
                                if (int.TryParse(xmlNode.InnerText, out var output))
                                {
                                    Id = output;
                                }

                                //Say we logged in okay
                                OnSuccessLogin?.Invoke();

                                //Send another random static string
                                TcpClient.SendString(
                                    "<stream:stream " +
                                    "to=\"pvp.net\" " +
                                    "xml:lang=\"*\" " +
                                    "version=\"1.0\" " +
                                    "xmlns:stream=\"http://etherx.jabber.org/streams\" " +
                                    "xmlns=\"jabber:client\">");
                            }

                            #endregion ConnectionSuccessHandler

                            #region IDontKnowWtfThisIsButReturnBinding

                            if (xmlNode.Name == "rxep")
                            {
                                //This is sent from client to server after this is received. I honestly don't know this xmpp stuff so lets pretend we read that

                                TcpClient.SendString("<iq type=\"set\" id=\"0\"><bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"><resource>RC</resource></bind></iq>");

                                break;
                            }

                            #endregion IDontKnowWtfThisIsButReturnBinding

                            #region IQManager
                            if (el.Name == "iq")
                            {
                                IqManager.HandleIq(xmlNode, el);
                            }
                            #endregion IQManager
                        }
                    }
                    else
                    {
                        //TODO: <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='3891861776' from='pvp.net' version='1.0'>
                    }
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }