mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2025-12-22 01:08:37 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d19a69c60 | ||
|
|
f6a8d16c85 | ||
|
|
f13991c2da | ||
|
|
40a3d6558d | ||
|
|
fea76a3dda | ||
|
|
1087c01a2c | ||
|
|
fd49ff5483 | ||
|
|
0f5d9a665c |
@@ -47,6 +47,8 @@ namespace ArchiSteamFarm {
|
|||||||
private readonly SemaphoreSlim SessionSemaphore = new SemaphoreSlim(1);
|
private readonly SemaphoreSlim SessionSemaphore = new SemaphoreSlim(1);
|
||||||
private readonly WebBrowser WebBrowser;
|
private readonly WebBrowser WebBrowser;
|
||||||
|
|
||||||
|
internal bool Ready { get; private set; }
|
||||||
|
|
||||||
private ulong SteamID;
|
private ulong SteamID;
|
||||||
private DateTime LastSessionRefreshCheck = DateTime.MinValue;
|
private DateTime LastSessionRefreshCheck = DateTime.MinValue;
|
||||||
|
|
||||||
@@ -117,7 +119,9 @@ namespace ArchiSteamFarm {
|
|||||||
WebBrowser = new WebBrowser(bot.BotName);
|
WebBrowser = new WebBrowser(bot.BotName);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool Init(SteamClient steamClient, string webAPIUserNonce, string parentalPin) {
|
internal void OnDisconnected() => Ready = false;
|
||||||
|
|
||||||
|
internal async Task<bool> Init(SteamClient steamClient, string webAPIUserNonce, string parentalPin) {
|
||||||
if ((steamClient == null) || string.IsNullOrEmpty(webAPIUserNonce)) {
|
if ((steamClient == null) || string.IsNullOrEmpty(webAPIUserNonce)) {
|
||||||
Logging.LogNullError(nameof(steamClient) + " || " + nameof(webAPIUserNonce), Bot.BotName);
|
Logging.LogNullError(nameof(steamClient) + " || " + nameof(webAPIUserNonce), Bot.BotName);
|
||||||
return false;
|
return false;
|
||||||
@@ -179,10 +183,17 @@ namespace ArchiSteamFarm {
|
|||||||
string steamLoginSecure = authResult["tokensecure"].Value;
|
string steamLoginSecure = authResult["tokensecure"].Value;
|
||||||
WebBrowser.CookieContainer.Add(new Cookie("steamLoginSecure", steamLoginSecure, "/", "." + SteamCommunityHost));
|
WebBrowser.CookieContainer.Add(new Cookie("steamLoginSecure", steamLoginSecure, "/", "." + SteamCommunityHost));
|
||||||
|
|
||||||
if (!UnlockParentalAccount(parentalPin).Result) {
|
// Apparently Steam is too stupid to detect language from our headers, so we must ask for it explicitly
|
||||||
|
if (!await SetLanguage().ConfigureAwait(false)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unlock Steam Parental if needed
|
||||||
|
if (!await UnlockParentalAccount(parentalPin).ConfigureAwait(false)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ready = true;
|
||||||
LastSessionRefreshCheck = DateTime.Now;
|
LastSessionRefreshCheck = DateTime.Now;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -246,7 +257,7 @@ namespace ArchiSteamFarm {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
string request = SteamCommunityURL + "/mobileconf/conf?p=" + deviceID + "&a=" + SteamID + "&k=" + WebUtility.UrlEncode(confirmationHash) + "&t=" + time + "&m=android&tag=conf";
|
string request = SteamCommunityURL + "/mobileconf/conf?l=english&p=" + deviceID + "&a=" + SteamID + "&k=" + WebUtility.UrlEncode(confirmationHash) + "&t=" + time + "&m=android&tag=conf";
|
||||||
return await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
return await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,7 +446,7 @@ namespace ArchiSteamFarm {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
string request = SteamCommunityURL + "/tradeoffer/" + tradeID;
|
string request = SteamCommunityURL + "/tradeoffer/" + tradeID + "?l=english";
|
||||||
|
|
||||||
HtmlDocument htmlDocument = await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
HtmlDocument htmlDocument = await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
||||||
if (htmlDocument == null) {
|
if (htmlDocument == null) {
|
||||||
@@ -837,7 +848,7 @@ namespace ArchiSteamFarm {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
string request = SteamCommunityURL + "/my/badges?p=" + page;
|
string request = SteamCommunityURL + "/my/badges?l=english&p=" + page;
|
||||||
|
|
||||||
return await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
return await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
@@ -852,7 +863,7 @@ namespace ArchiSteamFarm {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
string request = SteamCommunityURL + "/my/gamecards/" + appID;
|
string request = SteamCommunityURL + "/my/gamecards/" + appID + "?l=english";
|
||||||
|
|
||||||
return await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
return await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
@@ -933,5 +944,21 @@ namespace ArchiSteamFarm {
|
|||||||
Logging.LogGenericInfo("Success!", Bot.BotName);
|
Logging.LogGenericInfo("Success!", Bot.BotName);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task<bool> SetLanguage() {
|
||||||
|
string sessionID = WebBrowser.CookieContainer.GetCookieValue(SteamCommunityURL, "sessionid");
|
||||||
|
if (string.IsNullOrEmpty(sessionID)) {
|
||||||
|
Logging.LogNullError(nameof(sessionID), Bot.BotName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
string request = SteamCommunityURL + "/actions/SetLanguage";
|
||||||
|
Dictionary<string, string> data = new Dictionary<string, string>(2) {
|
||||||
|
{ "sessionid", sessionID },
|
||||||
|
{ "language", "english" }
|
||||||
|
};
|
||||||
|
|
||||||
|
return await WebBrowser.UrlPostRetry(request, data).ConfigureAwait(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ namespace ArchiSteamFarm {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArchiWebHandler.Init(SteamClient, callback.Nonce, BotConfig.SteamParentalPIN)) {
|
if (await ArchiWebHandler.Init(SteamClient, callback.Nonce, BotConfig.SteamParentalPIN).ConfigureAwait(false)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1452,6 +1452,7 @@ namespace ArchiSteamFarm {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ArchiWebHandler.OnDisconnected();
|
||||||
Logging.LogGenericInfo("Disconnected from Steam!", BotName);
|
Logging.LogGenericInfo("Disconnected from Steam!", BotName);
|
||||||
|
|
||||||
FirstTradeSent = false;
|
FirstTradeSent = false;
|
||||||
@@ -1503,6 +1504,14 @@ namespace ArchiSteamFarm {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (byte i = 0; (i < Program.GlobalConfig.HttpTimeout) && !ArchiWebHandler.Ready; i++) {
|
||||||
|
await Task.Delay(1000).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ArchiWebHandler.Ready) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
bool acceptedSomething = false;
|
bool acceptedSomething = false;
|
||||||
foreach (ulong gid in callback.GuestPasses.Select(guestPass => guestPass["gid"].AsUnsignedLong()).Where(gid => gid != 0)) {
|
foreach (ulong gid in callback.GuestPasses.Select(guestPass => guestPass["gid"].AsUnsignedLong()).Where(gid => gid != 0)) {
|
||||||
Logging.LogGenericInfo("Accepting gift: " + gid + "...", BotName);
|
Logging.LogGenericInfo("Accepting gift: " + gid + "...", BotName);
|
||||||
@@ -1698,7 +1707,7 @@ namespace ArchiSteamFarm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ArchiWebHandler.Init(SteamClient, callback.WebAPIUserNonce, BotConfig.SteamParentalPIN)) {
|
if (!await ArchiWebHandler.Init(SteamClient, callback.WebAPIUserNonce, BotConfig.SteamParentalPIN).ConfigureAwait(false)) {
|
||||||
if (!await RefreshSession().ConfigureAwait(false)) {
|
if (!await RefreshSession().ConfigureAwait(false)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -389,7 +389,7 @@ namespace ArchiSteamFarm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Logging.LogGenericInfo("Status for " + appID + ": " + progress, Bot.BotName);
|
Logging.LogGenericInfo("Status for " + appID + ": " + progress, Bot.BotName);
|
||||||
return progress.Equals("No card drops remaining");
|
return !progress.Equals("No card drops remaining");
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool FarmMultiple() {
|
private bool FarmMultiple() {
|
||||||
|
|||||||
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("2.1.0.2")]
|
[assembly: AssemblyVersion("2.1.0.4")]
|
||||||
[assembly: AssemblyFileVersion("2.1.0.2")]
|
[assembly: AssemblyFileVersion("2.1.0.4")]
|
||||||
|
|||||||
@@ -80,6 +80,9 @@ namespace ArchiSteamFarm {
|
|||||||
|
|
||||||
// Most web services expect that UserAgent is set, so we declare it globally
|
// Most web services expect that UserAgent is set, so we declare it globally
|
||||||
HttpClient.DefaultRequestHeaders.UserAgent.ParseAdd(DefaultUserAgent);
|
HttpClient.DefaultRequestHeaders.UserAgent.ParseAdd(DefaultUserAgent);
|
||||||
|
|
||||||
|
// We should always operate in English language, declare it globally
|
||||||
|
HttpClient.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en-US,en;q=0.8,en-GB;q=0.6");
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async Task<bool> UrlHeadRetry(string request, string referer = null) {
|
internal async Task<bool> UrlHeadRetry(string request, string referer = null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user