コード例 #1
0
        public void Login(string login, string password)
        {
            lock (loginLock)
            {
                LoggedIn = false;

                if (loginWC.gotCookies(cookieForTest, mainDomain))
                {
                    LoggedIn = true;
                    return;
                }
                String content = String.Empty;
                try
                {
                    content = loginWC.DownloadString(loginUrl);
                }
                catch (Exception e)
                {
                    Debug.Print("Sc2tv login error: {0}", e.Message);
                }

                if (String.IsNullOrEmpty(content))
                {
                    return;
                }

                string formBuildId = Re.GetSubString(content, reHiddenFormId, 1);

                if (String.IsNullOrEmpty(formBuildId))
                {
                    Debug.Print("Can't find Form Build ID. Check RE");
                    return;
                }
                else if (formBuildId != null)
                {
                    try
                    {
                        string loginParams = "name=" + HttpUtility.UrlEncode(login) + "&pass="******"&form_build_id=" + formBuildId + "&form_id=user_login_block";

                        loginWC.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded; charset=UTF-8";
                        loginWC.UploadString(loginUrl, loginParams);

                        if (loginWC.gotCookies(cookieForTest, mainDomain))
                        {
                            loginWC.setCookie("chat-img", "1", "chat.sc2tv.ru");
                            loginWC.setCookie("chat_channel_id", ChannelId.ToString(), "chat.sc2tv.ru");
                            loginWC.setCookie("chat-on", "1", "chat.sc2tv.ru");
                            loginWC.DownloadString(chatTokenUrl);

                            loginWC.setCookie("chat_token", loginWC.CookieValue("chat_token", chatDomain + "/gate.php"), "chat.sc2tv.ru");
                            LoggedIn           = true;
                            settingsWC.Cookies = loginWC.Cookies;
                            OnLogon(new Sc2Event());
                        }
                    }
                    catch
                    {
                        Debug.Print("Exception in Sc2 Login()");
                    }
                }
            }
        }
コード例 #2
0
        public bool Login()
        {
            Debug.Print("Goodgame logging in");
            lock (loginLock)
            {
                try
                {
                    isLoggedIn = false;

                    if (String.IsNullOrEmpty(_user) || String.IsNullOrEmpty(_password))
                    {
                        Debug.Print("Goodgame: Username or password is empty");
                        return(false);
                    }

                    String result = loginWC.DownloadString(@"http://" + domain);

                    string loginParams = "login="******"&password="******"&remember=1";
                    loginWC.setCookie("fixed", "1", domain);
                    loginWC.setCookie("auto_login_name", _user, domain);

                    loginWC.ContentType = ContentType.UrlEncoded;
                    loginWC.Headers["X-Requested-With"] = "XMLHttpRequest";

                    result = loginWC.UploadString(loginUrl, loginParams);

                    int.TryParse(loginWC.CookieValue("uid", "http://" + domain), out _userId);

                    result = loginWC.DownloadString(String.Format(userUrl, _userId));

                    URLUser = Re.GetSubString(result, reChannelUrl, 1);

                    result = loginWC.DownloadString(String.Format(chatUrl, URLUser));

                    if (String.IsNullOrEmpty(result))
                    {
                        Debug.Print("Goodgame: Could not fetch " + String.Format(chatUrl, URLUser));
                        return(false);
                    }

                    int.TryParse(Re.GetSubString(result, @"channelId: (\d+?),", 1), out _chatId);
                    _channel   = _chatId.ToString();
                    _userToken = Re.GetSubString(result, @"token: '(.*?)',", 1);

                    var editContent = loginWC.DownloadString(String.Format(editUlr, URLUser));
                    var serviceUrls = new String[] { "twitch.tv", "cybergame.tv", "hashd.tv", "youtube.com" };
                    //<input type="text" name="video_urls[22473]" value="http://twitch.tv/xedoc"

                    ServiceNames = String.Empty;
                    foreach (var service in serviceUrls)
                    {
                        var substr = Re.GetSubString(editContent, @"<input.*?video_urls\[.*?value=.*?(" + service + @")[^\""]*", 1);
                        if (!String.IsNullOrEmpty(substr))
                        {
                            ServiceNames = ServiceNames + substr;
                        }
                    }



                    isLoggedIn = true;
                }
                catch (Exception e) {
                    Debug.Print("Goodgame: login exception " + e.Data + " " + e.StackTrace.ToString());
                }

                return(true);
            }
        }
コード例 #3
0
        public bool Login()
        {
            lock (loginLock)
            {
                loginWC.Headers["X-Requested-With"] = "XMLHttpRequest";
                try
                {
                    String result = loginWC.DownloadString(loginPopupUrl);
                    if (String.IsNullOrEmpty(result))
                    {
                        return(false);
                    }

                    GetCSRFToken(result);
                    if (String.IsNullOrEmpty(csrf_token))
                    {
                        return(false);
                    }

                    loginWC.ContentType       = ContentType.UrlEncoded;
                    loginWC.Headers["Accept"] = "text/html, application/xhtml+xml, */*";
                    result = loginWC.UploadString(loginUrl, String.Format(loginParams, csrf_token, User, Password));
                    if (String.IsNullOrEmpty(result))
                    {
                        return(false);
                    }
                    api_token = loginWC.CookieValue("api_token", "http://" + domain);

                    loginWC.Headers["Twitch-Api-Token"] = api_token;
                    loginWC.Headers["Accept"]           = "application/vnd.twitchtv.v2+json";

                    result = loginWC.DownloadString(oauthUrl);
                    if (String.IsNullOrEmpty(result))
                    {
                        return(false);
                    }

                    JObject chatOauthJson = JObject.Parse(result);
                    if (chatOauthJson == null)
                    {
                        return(false);
                    }

                    String chatOauthKey = chatOauthJson["chat_oauth_token"].ToString();
                    if (String.IsNullOrEmpty(chatOauthKey))
                    {
                        return(false);
                    }


                    ChatOAuthKey = "oauth:" + chatOauthKey;
                }
                catch (Exception e)
                {
                    Debug.Print("Twitch login exception: {0}", e.Message);
                }

                if (OnLogin != null)
                {
                    OnLogin(this, EventArgs.Empty);
                }

                return(true);
            }
        }