Commit Graph

218 Commits

Author SHA1 Message Date
Archi
be5ec43772 Add support for automatically rejecting trade offers from bad bots
With special dedication to the guy who attempted to DDoS ASF STM listing today, hope your business will truly expand from now on! <3
2022-12-17 02:39:37 +01:00
Archi
fc20b6cfc4 Final Rider inspections 2022-12-15 19:23:46 +01:00
Łukasz Domeradzki
98ef37e722 Extract PublicListing and MatchActively to a plugin, resurrect MatchActively (#2759)
* Start work on extracting remote communication

* ok

* Dockerfile fixes

* More fixes

* Prepare /Api/Announce and /Api/HeartBeat

* Decrease publish race conditions

* OK

* Misc

* Misc

* Misc

* Move Steam group part back to ASF core

* Finally implement match actively v2 core

* Update RemoteCommunication.cs

* Use single round exclusively, report inventories more often

* Use randomization when asking others for assetIDs

* Add support for license and crowdin

* Kill dead code

* Fix return type of inventories

* Fix responses for good

* Unify old backend with new

* Report whole inventory, always

Helps with optimization on the backend side in terms of inventory fetching

* Update RemoteCommunication.cs

* Determine index of each asset and tell server about it

* Update AnnouncementRequest.cs

* Fix ASF screwing up with the order

* Fix warnings

* Misc rename

* Final logging touches
2022-12-15 18:46:37 +01:00
Archi
fd517294d1 Closes #2763 2022-12-15 17:44:38 +01:00
3ncy
3be6bf8aca Add steam awards badge id to blacklist (#2764) 2022-12-15 14:18:18 +01:00
JustArchi
e994dca817 Remove inventory count that no longer does anything anyway 2022-12-03 00:09:33 +01:00
JustArchi
e6171456c3 Retry inventory requests on error 29 2022-11-27 15:12:25 +01:00
Archi
caa54a7f2b Run RemoteCommunication also in Debug builds
Originally it was to not spam the server with irrelevant data, but sometimes I'm also debugging that part and it's counter-intuitive. If somebody doesn't want that during debugging, he has bot config option for that.
2022-11-23 12:08:27 +01:00
JustArchi
3cf4ef3466 Address SYSLIB1045 2022-11-16 12:33:17 +01:00
JustArchi
cee7cd03b2 Use culture invariant refex for owns command 2022-11-16 12:30:21 +01:00
JustArchi
bce0649822 Closes #2728 2022-10-28 19:08:14 +02:00
Arkadiusz Sygulski
17563149b6 Update count parameter when loading inventory (#2730)
This change lessers the impacts of recent changes to the endpoint. It is still limited, but at least you can do more than 3 requests 😃
2022-10-28 19:00:05 +02:00
JustArchi
ea7b944114 Include http errors in GetInventoryAsync()
And stop actively matching on first 429
2022-10-27 10:46:00 +02:00
Łukasz Domeradzki
57956e0ed9 Add support for wallet codes balance (#2699) 2022-09-08 19:59:28 +02:00
JustArchi
582f508f33 Remove requirement of wallet currency for redeem wallet keys 2022-09-07 22:55:47 +02:00
JustArchi
63c188cd03 Misc reorder 2022-09-07 19:23:19 +02:00
JustArchi
9fd4ef2b63 Add helpful comment 2022-09-07 19:18:55 +02:00
JustArchi
1e03077dc7 Implement local response of Fail/AlreadyPurchases for addlicense 2022-08-25 20:38:37 +02:00
JustArchi
019893ee43 Rewrite WebBrowser errors logic, again
Maybe THIS TIME after 7 years it'll finally do what I need from it.

TL;DR, if anybody is insane enough to return client/server errors, and expects HtmlDocument or other Object to actually be null, it must be explicitly specified now with allow, to work like 200-OK, where we return only stuff that actually parses
2022-08-25 20:23:37 +02:00
JustArchi
f5d165493d Actually ask community for help in regards to unknown messages 2022-08-25 18:24:05 +02:00
JustArchi
6f0eacf615 Detect RateLimited from store addlicense response 2022-08-25 18:09:55 +02:00
JustArchi
d67366cd12 Implement cache validity for PackagesData
For unknown to me reason, this breaks for many people with Steam reporting invalid data and ASF caching it until new change number, which may never arrive. Add our own 7-days validity on top, to ensure that user never needs to delete ASF.db manually.
2022-08-11 22:38:19 +02:00
JustArchi
270a71e83c Misc 2022-08-07 00:35:54 +02:00
JustArchi
f3229fa45f Implement AngleSharp.XPath breaking changes
Bump of B warranted, more in the release notes
2022-08-06 18:51:32 +02:00
JustArchi
144a1d1574 Do not trigger ProfileUri workaround if request was for profile 2022-07-11 23:15:29 +02:00
JustArchi
0cd7b10c9a Rewrite AWH requests public API
Breaking change that needs recompilation but doesn't need code edits, actually make maxTries work as they should and are expected to, with session refresh being controlled by a new boolean instead
2022-07-09 00:51:52 +02:00
JustArchi
196afbf276 Merge branch 'fix' 2022-07-02 00:32:45 +02:00
JustArchi
0ded9698b2 Fix custom game name not being displayed at all
In original change I totally forgot custom game ACTUALLY must be the first on the list, otherwise it never works properly.

So use exactly the same logic, but with custom name being first (if possible to fit)
2022-07-02 00:16:26 +02:00
JustArchi
bc38ba478d Fix Archi brain damage 2022-07-01 13:29:47 +02:00
JustArchi
2f22757fea Be more optimistic about session checks
We can't check for session with every request, allow at least 10 seconds of optimistic assumption as otherwise we're spamming the servers too much
2022-07-01 13:15:45 +02:00
JustArchi
3ff0468926 Avoid excessive 2FA delays when waitIfNeeded without specifying IDs 2022-07-01 13:13:39 +02:00
JustArchi
e532b57369 Thanks netf 2022-06-27 14:32:50 +02:00
JustArchi
b117c5164d Misc 2022-06-27 14:17:38 +02:00
JustArchi
83fac5b115 Misc 2022-06-22 20:52:41 +02:00
JustArchi
237f23e965 Attempt to silence excessive IL warnings 2022-06-20 21:37:03 +02:00
JustArchi
776755d3ab Change GamesPlayedWhileIdle to ImmutableList
Similar to FarmingOrders, the order of elements might be relevant in regards to games displayed e.g. in recently played.
2022-06-20 21:08:24 +02:00
JustArchi
e1e464b4e7 Misc 2022-06-20 20:33:33 +02:00
JustArchi
772607b680 Use recommended async dispose pattern
Funny enough, non-breaking API changes since all of those classes are sealed.
2022-06-19 18:24:52 +02:00
JustArchi
5f803cf725 Use Uri.UnescapeDataString() instead of WebUtility.HtmlDecode() 2022-06-18 14:15:14 +02:00
Sebastian Göls
ebdb17d71b Add latest sale id to blacklist (#2621) 2022-06-16 16:49:54 +02:00
JustArchi
c753ed24cd CAN WE STOP ALREADY 2022-06-15 19:16:25 +02:00
JustArchi
dcebde55a2 Make xpoo happy 2022-06-15 19:09:03 +02:00
JustArchi
bd0f1779d6 Do not emit new game added event without a clear need
This callback is emitted by Steam with new licenses available, but also in many other situations, such as when somebody else logs in into the account (e.g. Steam deck, another PC), when somebody deletes licenses, and even on PICS changes from time to time, not to mention other cases I forgot/don't know about.

It seems silly to restart cards farmer every time, I believe we can assume that user won't delete license for a game we're farming, and even if he does, we'll catch that in 30 minutes or so anyway, while not restarting the farming every time Steam feels like sending us licenses.
2022-06-15 18:50:32 +02:00
JustArchi
164d9330f0 Do not emit shutdown event when changing the config 2022-06-15 18:44:07 +02:00
JustArchi
7c1c0d61b4 Misc 2022-06-15 16:23:00 +02:00
JustArchi
2a845ab46f Of course I had to forgot about something 2022-06-11 18:52:17 +02:00
JustArchi
6eb9b9b26d Misc 2022-06-11 18:15:46 +02:00
JustArchi
95a6cef6db Take into account trade hold durations from both sides
Previous implementations had several problems when dealing with trade holds:
- User could've configured max trade hold duration to 0, and still accept trades with hold when he's the cause of it, this is unwanted
- There is virtually no way to ensure that the other party is willing to accept our trade hold even if we allow it, so expose that detail.

This precisely answers quite rather but not impossible situation of having a trade hold with ASF 2FA, e.g. due to moving authenticator, but we're also now ready for "perpetual" trade hold with ASF 2FA, in case it ever happened.

This way, we:
- Expose to other users our max trade hold duration preference
- Users validate both their own and listed user's trade hold, and if it exceeds either their own or user's limit, bot is not considered for matching
- It also resolves problem of accepting trade offers from other people when we're on trade hold ourselves
2022-06-11 18:07:06 +02:00
JustArchi
3ee2ded814 Closes #2599 2022-06-07 20:46:41 +02:00
JustArchi
c67aecacbc Misc 2022-06-06 23:27:22 +02:00