示例#1
0
文件: Fuzer.cs 项目: tide4cw/Jackett
        public override async Task <ConfigurationData> GetConfigurationForSetup()
        {
            var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty);

            CQ  cq      = loginPage.Content;
            var captcha = cq.Find(".g-recaptcha"); // invisible recaptcha

            if (captcha.Any())
            {
                var result = configData;
                result.CookieHeader.Value = loginPage.Cookies;
                result.Captcha.SiteKey    = captcha.Attr("data-sitekey");
                result.Captcha.Version    = "2";
                return(result);
            }
            else
            {
                var result = new ConfigurationDataBasicLogin();
                result.SiteLink.Value     = configData.SiteLink.Value;
                result.Instructions.Value = configData.Instructions.Value;
                result.Username.Value     = configData.Username.Value;
                result.Password.Value     = configData.Password.Value;
                result.CookieHeader.Value = loginPage.Cookies;
                return(result);
            }
        }
示例#2
0
        public override async Task <ConfigurationData> GetConfigurationForSetup()
        {
            var loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty);

            var parser    = new HtmlParser();
            var dom       = parser.ParseDocument(loginPage.Content);
            var recaptcha = dom.QuerySelector(".g-recaptcha");

            if (recaptcha != null)
            {
                var result = configData;
                result.Captcha.Version    = "2";
                result.CookieHeader.Value = loginPage.Cookies;
                result.Captcha.SiteKey    = recaptcha.GetAttribute("data-sitekey");
                return(result);
            }

            var stdResult = new ConfigurationDataBasicLogin
            {
                SiteLink     = { Value = configData.SiteLink.Value },
                Username     = { Value = configData.Username.Value },
                Password     = { Value = configData.Password.Value },
                CookieHeader = { Value = loginPage.Cookies }
            };

            return(stdResult);
        }
示例#3
0
        public async Task <IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
        {
            var incomingConfig = new ConfigurationDataBasicLogin();

            incomingConfig.LoadValuesFromJson(configJson);
            var pairs = new Dictionary <string, string> {
                { "username", incomingConfig.Username.Value },
                { "password", incomingConfig.Password.Value },
                { "login", "Login" },
                { "keeplogged", "1" }
            };

            // Do the login
            var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, string.Empty, true, SiteLink);

            await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php?"), () =>
            {
                CQ dom = response.Content;
                dom["#loginform > table"].Remove();
                var errorMessage = dom["#loginform"].Text().Trim().Replace("\n\t", " ");
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)incomingConfig);
            });

            return(IndexerConfigurationStatus.RequiresTesting);
        }
示例#4
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary<string, string> {
				{ "username", config.Username.Value },
				{ "password", config.Password.Value },
                { "remember_me", "on" },
                { "login", "submit" }
			};

            var content = new FormUrlEncodedContent(pairs);

            var response = await client.PostAsync(LoginUrl, content);
            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("/user/account/logout"))
            {
                CQ dom = responseContent;
                var messageEl = dom[".ui-state-error"].Last();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                cookies.DumpToJson(SiteLink, configSaveData);

                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }
        }
示例#5
0
        public override async Task <ConfigurationData> GetConfigurationForSetup()
        {
            var loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty);

            CQ  cq        = loginPage.Content;
            var result    = this.configData;
            CQ  recaptcha = cq.Find(".g-recaptcha").Attr("data-sitekey");

            if (recaptcha.Length != 0)   // recaptcha not always present in login form, perhaps based on cloudflare uid or just phase of the moon
            {
                result.CookieHeader.Value = loginPage.Cookies;
                result.Captcha.SiteKey    = cq.Find(".g-recaptcha").Attr("data-sitekey");
                result.Captcha.Version    = "2";
                return(result);
            }
            else
            {
                var stdResult = new ConfigurationDataBasicLogin();
                stdResult.SiteLink.Value     = configData.SiteLink.Value;
                stdResult.Username.Value     = configData.Username.Value;
                stdResult.Password.Value     = configData.Password.Value;
                stdResult.CookieHeader.Value = loginPage.Cookies;
                return(stdResult);
            }
        }
示例#6
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary<string, string> {
				{ "username", config.Username.Value },
				{ "password", config.Password.Value }
			};

            var content = new FormUrlEncodedContent(pairs);

            var response = await client.PostAsync(LoginUrl, content);
            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("logout.php"))
            {
                CQ dom = responseContent;
                var messageEl = dom["table.detail td.text"].Last();
                messageEl.Children("a").Remove();
                messageEl.Children("style").Remove();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                cookies.DumpToJson(SiteLink, configSaveData);

                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }
        }
示例#7
0
        public override async Task <ConfigurationData> GetConfigurationForSetup()
        {
            var loginPage = await RequestStringWithCookies(LoginUrl, configData.CookieHeader.Value);

            CQ     cq = loginPage.Content;
            string recaptchaSiteKey = cq.Find(".g-recaptcha").Attr("data-sitekey");

            if (recaptchaSiteKey != null)
            {
                var result = this.configData;
                result.CookieHeader.Value = loginPage.Cookies;
                result.Captcha.SiteKey    = recaptchaSiteKey;
                result.Captcha.Version    = "2";
                return(result);
            }
            else
            {
                var result = new ConfigurationDataBasicLogin();
                result.SiteLink.Value     = configData.SiteLink.Value;
                result.Instructions.Value = configData.Instructions.Value;
                result.Username.Value     = configData.Username.Value;
                result.Password.Value     = configData.Password.Value;
                result.CookieHeader.Value = loginPage.Cookies;
                return(result);
            }
        }
示例#8
0
        public override async Task <ConfigurationData> GetConfigurationForSetup()
        {
            var loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty);

            CQ  cq     = loginPage.Content;
            var result = configData;

            result.Captcha.Version = "2";
            CQ recaptcha = cq.Find(".g-recaptcha").Attr("data-sitekey");

            if (recaptcha.Length != 0)
            {
                result.CookieHeader.Value = loginPage.Cookies;
                result.Captcha.SiteKey    = cq.Find(".g-recaptcha").Attr("data-sitekey");
                return(result);
            }
            else
            {
                var stdResult = new ConfigurationDataBasicLogin();
                stdResult.SiteLink.Value     = configData.SiteLink.Value;
                stdResult.Username.Value     = configData.Username.Value;
                stdResult.Password.Value     = configData.Password.Value;
                stdResult.CookieHeader.Value = loginPage.Cookies;
                return(stdResult);
            }
        }
示例#9
0
        public async Task <ConfigurationData> GetConfigurationForSetup()
        {
            await client.GetAsync(new Uri(BaseUrl));

            var config = new ConfigurationDataBasicLogin();

            return((ConfigurationData)config);
        }
示例#10
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var configSaveData = new JObject();
            if (OnSaveConfigurationRequested != null)
                OnSaveConfigurationRequested(this, configSaveData);

            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary<string, string> {
				{ "username", config.Username.Value },
				{ "password", @config.Password.Value },
				{ "login", "Login" },
			    { "keeplogged", "1" }
			};

            var content = new FormUrlEncodedContent(pairs);
            var message = CreateHttpRequest(new Uri(LoginUrl));
            message.Content = content;

            //message.Headers.Referrer = new Uri(LoginUrl);
            string responseContent;

            configSaveData = new JObject();

            if (Program.IsWindows)
            {
                // If Windows use .net http
                var response = await client.SendAsync(message);
                responseContent = await response.Content.ReadAsStringAsync();
                cookies.DumpToJson(SiteLink, configSaveData);
            }
            else
            {
                // If UNIX system use curl, probably broken due to missing chromeUseragent record for CURL...cannot test
                var response = await CurlHelper.PostAsync(LoginUrl, pairs);
                responseContent = Encoding.UTF8.GetString(response.Content);
                cookieHeader = response.CookieHeader;
                configSaveData["cookie_header"] = cookieHeader;
            }

            if (!responseContent.Contains("logout.php?"))
            {
                CQ dom = responseContent;
                dom["#loginform > table"].Remove();
                var errorMessage = dom["#loginform"].Text().Trim().Replace("\n\t", " ");
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);

            }
            else
            {
                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }
        }
示例#11
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();

            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary <string, string> {
                { "username", config.Username.Value },
                { "password", config.Password.Value },
                { "submit", "come on in" }
            };

            var content = new FormUrlEncodedContent(pairs);

            string responseContent;
            JArray cookieJArray;

            if (Program.IsWindows)
            {
                // If Windows use .net http
                var response = await client.PostAsync(LoginUrl, content);

                responseContent = await response.Content.ReadAsStringAsync();

                cookieJArray = cookies.ToJson(SiteLink);
            }
            else
            {
                // If UNIX system use curl
                var response = await CurlHelper.PostAsync(LoginUrl, pairs);

                responseContent = Encoding.UTF8.GetString(response.Content);
                cookieHeader    = response.CookieHeader;
                cookieJArray    = new JArray(response.CookiesFlat);
            }

            if (!responseContent.Contains("nav_profile"))
            {
                CQ  dom          = responseContent;
                var messageEl    = dom["#login_box_desc"];
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                configSaveData["cookies"] = cookieJArray;

                if (OnSaveConfigurationRequested != null)
                {
                    OnSaveConfigurationRequested(this, configSaveData);
                }

                IsConfigured = true;
            }
        }
示例#12
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary<string, string> {
				{ "username", config.Username.Value },
				{ "password", config.Password.Value },
				{ "login", "Log in" },
				{ "keeplogged", "1" }
			};

            var content = new FormUrlEncodedContent(pairs);

            string responseContent;
            JArray cookieJArray;

            if (Program.IsWindows)
            {
                // If Windows use .net http
                var response = await client.PostAsync(LoginUrl, content);
                responseContent = await response.Content.ReadAsStringAsync();
                cookieJArray = cookies.ToJson(SiteLink);
            }
            else
            {
                // If UNIX system use curl
                var response = await CurlHelper.PostAsync(LoginUrl, pairs);
                responseContent = Encoding.UTF8.GetString(response.Content);
                cookieHeader = response.CookieHeader;
                cookieJArray = new JArray(response.CookiesFlat);
            }

            if (!responseContent.Contains("logout.php?"))
            {
                CQ dom = responseContent;
                dom["#loginform > table"].Remove();
                var errorMessage = dom["#loginform"].Text().Trim().Replace("\n\t", " ");
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);

            }
            else
            {

                var configSaveData = new JObject();
                configSaveData["cookies"] = cookieJArray;
                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }
        }
示例#13
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary<string, string> {
                { "username", config.Username.Value },
                { "password", config.Password.Value },
                { "submit", "come on in" }
            };

            var content = new FormUrlEncodedContent(pairs);

            string responseContent;
            var configSaveData = new JObject();

            if (Program.IsWindows)
            {
                // If Windows use .net http
                var response = await client.PostAsync(LoginUrl, content);
                responseContent = await response.Content.ReadAsStringAsync();
                cookies.DumpToJson(SiteLink, configSaveData);
            }
            else
            {
                // If UNIX system use curl
                var response = await CurlHelper.PostAsync(LoginUrl, pairs);
                responseContent = Encoding.UTF8.GetString(response.Content);
                cookieHeader = response.CookieHeader;
                configSaveData["cookie_header"] = cookieHeader;
            }

            if (!responseContent.Contains("nav_profile"))
            {
                CQ dom = responseContent;
                var messageEl = dom["#login_box_desc"];
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }
        }
示例#14
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();

            config.LoadValuesFromJson(configJson);

            var startMessage = CreateHttpRequest(StartPageUrl);
            var results      = await(await client.SendAsync(startMessage)).Content.ReadAsStringAsync();


            var pairs = new Dictionary <string, string> {
                { "username", config.Username.Value },
                { "password", config.Password.Value }
            };
            var content      = new FormUrlEncodedContent(pairs);
            var loginRequest = CreateHttpRequest(LoginUrl);

            loginRequest.Method           = HttpMethod.Post;
            loginRequest.Content          = content;
            loginRequest.Headers.Referrer = new Uri(StartPageUrl);

            var response = await client.SendAsync(loginRequest);

            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("logout.php"))
            {
                CQ  dom       = responseContent;
                var messageEl = dom["#login"];
                messageEl.Children("form").Remove();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                configSaveData["cookies"] = cookies.ToJson(SiteLink);

                if (OnSaveConfigurationRequested != null)
                {
                    OnSaveConfigurationRequested(this, configSaveData);
                }

                IsConfigured = true;
            }
        }
示例#15
0
 public override async Task<ConfigurationData> GetConfigurationForSetup()
 {
     var loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty);
     CQ cq = loginPage.Content;
     var result = new ConfigurationDataRecaptchaLogin();
     CQ recaptcha = cq.Find(".g-recaptcha").Attr("data-sitekey");
     if(recaptcha.Length != 0)   // recaptcha not always present in login form, perhaps based on cloudflare uid or just phase of the moon
     {
         result.CookieHeader.Value = loginPage.Cookies;
         result.Captcha.SiteKey = cq.Find(".g-recaptcha").Attr("data-sitekey");
         return result;
     } else
     {
         var stdResult = new ConfigurationDataBasicLogin();
         stdResult.CookieHeader.Value = loginPage.Cookies;
         return stdResult;
     }           
 }
示例#16
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();

            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary <string, string> {
                { "username", config.Username.Value },
                { "password", config.Password.Value }
            };

            var content = new FormUrlEncodedContent(pairs);
            var message = new HttpRequestMessage();

            message.Method           = HttpMethod.Post;
            message.Content          = content;
            message.RequestUri       = new Uri(BaseUrl);
            message.Headers.Referrer = new Uri(BaseUrl);
            message.Headers.UserAgent.ParseAdd(chromeUserAgent);

            var response = await client.SendAsync(message);

            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("/my.php"))
            {
                CQ  dom          = responseContent;
                var messageEl    = dom["body > div"].First();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                configSaveData["cookies"] = cookies.ToJson(SiteLink);

                if (OnSaveConfigurationRequested != null)
                {
                    OnSaveConfigurationRequested(this, configSaveData);
                }

                IsConfigured = true;
            }
        }
示例#17
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var startMessage = CreateHttpRequest(StartPageUrl);
            var results = await (await client.SendAsync(startMessage)).Content.ReadAsStringAsync();


            var pairs = new Dictionary<string, string> {
				{ "username", config.Username.Value },
				{ "password", config.Password.Value }
			};
            var content = new FormUrlEncodedContent(pairs);
            var loginRequest = CreateHttpRequest(LoginUrl);
            loginRequest.Method = HttpMethod.Post;
            loginRequest.Content = content;
            loginRequest.Headers.Referrer = new Uri(StartPageUrl);

            var response = await client.SendAsync(loginRequest);
            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("logout.php"))
            {
                CQ dom = responseContent;
                var messageEl = dom["#login"];
                messageEl.Children("form").Remove();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                cookies.DumpToJson(SiteLink, configSaveData);

                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }
        }
示例#18
0
        public async Task ApplyConfiguration(JToken configJson)
        {

            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary<string, string> {
				{ "username", config.Username.Value },
				{ "password", config.Password.Value }
			};

            var content = new FormUrlEncodedContent(pairs);
            var message = new HttpRequestMessage();
            message.Method = HttpMethod.Post;
            message.Content = content;
            message.RequestUri = new Uri(BaseUrl);
            message.Headers.Referrer = new Uri(BaseUrl);
            message.Headers.UserAgent.ParseAdd(chromeUserAgent);

            var response = await client.SendAsync(message);
            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("/my.php"))
            {
                CQ dom = responseContent;
                var messageEl = dom["body > div"].First();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                cookies.DumpToJson(SiteLink, configSaveData);

                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }

        }
示例#19
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var incomingConfig = new ConfigurationDataBasicLogin();
            incomingConfig.LoadValuesFromJson(configJson);
            var pairs = new Dictionary<string, string> {
                { "username", incomingConfig.Username.Value },
                { "password", incomingConfig.Password.Value },
                { "login", "Login" },
                { "keeplogged", "1" }
            };

            // Do the login
            var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, string.Empty, true, SiteLink);
            await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php?"), () =>
               {
                   CQ dom = response.Content;
                   dom["#loginform > table"].Remove();
                   var errorMessage = dom["#loginform"].Text().Trim().Replace("\n\t", " ");
                   throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)incomingConfig);
               });
        }
示例#20
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            var startMessage = CreateHttpRequest(LoginUrl);
            var results = await (await client.SendAsync(startMessage)).Content.ReadAsStringAsync();


            var pairs = new Dictionary<string, string> {
				{ "uid", config.Username.Value },
				{ "pwd", config.Password.Value }
			};

            var content = new FormUrlEncodedContent(pairs);

            var loginRequest = CreateHttpRequest(LoginUrl);
            loginRequest.Method = HttpMethod.Post;
            loginRequest.Content = content;
            loginRequest.Headers.Referrer = new Uri("https://hd-torrents.org/torrents.php");

            var response = await client.SendAsync(loginRequest);
            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("If your browser doesn't have javascript enabled"))
            {
                var errorMessage = "Couldn't login";
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                cookies.DumpToJson(SiteLink, configSaveData);

                if (OnSaveConfigurationRequested != null)
                    OnSaveConfigurationRequested(this, configSaveData);

                IsConfigured = true;
            }
        }
示例#21
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();

            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary <string, string> {
                { "username", config.Username.Value },
                { "password", config.Password.Value },
                { "keeplogged", "1" },
                { "login", "Login" }
            };

            var content = new FormUrlEncodedContent(pairs);

            var response = await client.PostAsync(LoginUrl, content);

            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("logout.php"))
            {
                CQ  dom       = responseContent;
                var messageEl = dom["#loginform"];
                messageEl.Children("table").Remove();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                configSaveData["cookies"] = cookies.ToJson(SiteLink);

                if (OnSaveConfigurationRequested != null)
                {
                    OnSaveConfigurationRequested(this, configSaveData);
                }

                IsConfigured = true;
            }
        }
示例#22
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();

            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary <string, string> {
                { "username", config.Username.Value },
                { "password", config.Password.Value },
                { "remember_me", "on" },
                { "login", "submit" }
            };

            var content = new FormUrlEncodedContent(pairs);

            var response = await client.PostAsync(LoginUrl, content);

            var responseContent = await response.Content.ReadAsStringAsync();

            if (!responseContent.Contains("/user/account/logout"))
            {
                CQ  dom          = responseContent;
                var messageEl    = dom[".ui-state-error"].Last();
                var errorMessage = messageEl.Text().Trim();
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                var configSaveData = new JObject();
                configSaveData["cookies"] = cookies.ToJson(SiteLink);

                if (OnSaveConfigurationRequested != null)
                {
                    OnSaveConfigurationRequested(this, configSaveData);
                }

                IsConfigured = true;
            }
        }
示例#23
0
 public Task<ConfigurationData> GetConfigurationForSetup()
 {
     var config = new ConfigurationDataBasicLogin();
     return Task.FromResult<ConfigurationData>(config);
 }
示例#24
0
 public override async Task<ConfigurationData> GetConfigurationForSetup()
 {
     var loginPage = await RequestStringWithCookies(StartPageUrl, string.Empty);
     CQ cq = loginPage.Content;
     var result = this.configData;
     result.Captcha.Version = "2";
     CQ recaptcha = cq.Find(".g-recaptcha").Attr("data-sitekey");
     if (recaptcha.Length != 0)
     {
         result.CookieHeader.Value = loginPage.Cookies;
         result.Captcha.SiteKey = cq.Find(".g-recaptcha").Attr("data-sitekey");
         return result;
     }
     else
     {
         var stdResult = new ConfigurationDataBasicLogin();
         stdResult.Username.Value = configData.Username.Value;
         stdResult.Password.Value = configData.Password.Value;
         stdResult.CookieHeader.Value = loginPage.Cookies;
         return stdResult;
     }
 }
示例#25
0
 public async Task<ConfigurationData> GetConfigurationForSetup()
 {
     await client.GetAsync(new Uri(BaseUrl));
     var config = new ConfigurationDataBasicLogin();
     return (ConfigurationData)config;
 }
示例#26
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            var config = new ConfigurationDataBasicLogin();
            config.LoadValuesFromJson(configJson);

            username = config.Username.Value;
            password = config.Password.Value;

            try
            {
                await GetAuthToken(true);
            }
            catch (Exception ex)
            {
                throw new ExceptionWithConfigData(ex.Message, (ConfigurationData)config);
            }

            var configSaveData = new JObject();
            configSaveData["username"] = username;
            configSaveData["password"] = password;
            configSaveData["token"] = token;
            configSaveData["last_token_fetch"] = lastTokenFetch;

            if (OnSaveConfigurationRequested != null)
                OnSaveConfigurationRequested(this, configSaveData);

            IsConfigured = true;
        }
示例#27
0
        public Task <ConfigurationData> GetConfigurationForSetup()
        {
            var config = new ConfigurationDataBasicLogin();

            return(Task.FromResult <ConfigurationData>(config));
        }
示例#28
0
        public async Task ApplyConfiguration(JToken configJson)
        {
            cookies = new CookieContainer();
            client  = new HttpClient(handler);

            var configSaveData = new JObject();

            if (OnSaveConfigurationRequested != null)
            {
                OnSaveConfigurationRequested(this, configSaveData);
            }

            var config = new ConfigurationDataBasicLogin();

            config.LoadValuesFromJson(configJson);

            var pairs = new Dictionary <string, string> {
                { "username", config.Username.Value },
                { "password", @config.Password.Value },
                { "login", "Login" },
                { "keeplogged", "1" }
            };

            var content = new FormUrlEncodedContent(pairs);
            var message = CreateHttpRequest(new Uri(LoginUrl));

            message.Content = content;

            //message.Headers.Referrer = new Uri(LoginUrl);
            string responseContent;
            JArray cookieJArray;

            if (Program.IsWindows)
            {
                // If Windows use .net http
                var response = await client.SendAsync(message);

                responseContent = await response.Content.ReadAsStringAsync();

                cookieJArray = cookies.ToJson(SiteLink);
            }
            else
            {
                // If UNIX system use curl, probably broken due to missing chromeUseragent record for CURL...cannot test
                var response = await CurlHelper.PostAsync(LoginUrl, pairs);

                responseContent = Encoding.UTF8.GetString(response.Content);
                cookieHeader    = response.CookieHeader;
                cookieJArray    = new JArray(response.CookiesFlat);
            }

            if (!responseContent.Contains("logout.php?"))
            {
                CQ dom = responseContent;
                dom["#loginform > table"].Remove();
                var errorMessage = dom["#loginform"].Text().Trim().Replace("\n\t", " ");
                throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
            }
            else
            {
                configSaveData            = new JObject();
                configSaveData["cookies"] = cookieJArray;
                if (OnSaveConfigurationRequested != null)
                {
                    OnSaveConfigurationRequested(this, configSaveData);
                }

                IsConfigured = true;
            }
        }