Commit Graph

148 Commits

Author SHA1 Message Date
Archi
9258819c84 Misc 2024-02-12 15:24:41 +01:00
Archi
f0ef4c6ba6 Implement basic crash protection
- On start, we create/load crash file, if previous startup was less than 5 minutes ago, we also increase the counter
- If counter reaches 5, we abort the process, that is, freeze the process by not loading anything other than auto-updates
- In order for user to recover from above, he needs to manually remove ASF.crash file
- If process exits normally without reaching counter of 5 yet, we remove crash file (reset the counter), normal exit includes SIGTERM, SIGINT, clicking [X], !exit, !restart, and anything else that allows ASF to gracefully quit
- If process exits abnormally, that includes SIGKILL, unhandled exceptions, as well as power outages and anything that prevents ASF from graceful quit, we keep crash file around
- Update procedure, as an exception, allows crash file removal even with counter of 5. This should allow crash file recovery for people that crashed before, without a need of manual removal.
2024-02-03 21:18:47 +01:00
Archi
716b253a04 Move from System.IdentityModel.Tokens.Jwt to Microsoft.IdentityModel.JsonWebTokens
> As of IdentityModel 7x, this is a legacy tool that should be replaced with Microsoft.IdentityModel.JsonWebTokens.

> This is a newer, faster version of System.IdentityModel.Tokens.Jwt that has additional functionality
2024-01-30 13:26:32 +01:00
Archi
119caebfa8 Deprecate CachedAccessToken, move to Bot.AccessToken instead
Thanks to @xPaw findings, it seems that access token we get on logon can be used for all functionality we require in ASF. This means we no longer need to fetch the one from points shop in AWH and can safely remove that.

Since access token in AWH is public API, this commit:
- Makes Bot.AccessToken public API.
- Deprecates ArchiWebHandler.CachedAccessToken with intention of removal in the next version. Until then, it resolves to Bot.AccessToken internally so all plugins can keep working during transition period.
- Deprecates Utilities.ReadJwtToken(), probably nobody else than me used it, just switch over to Utilities.TryReadJwtToken(), much better design.
- Reverts ArchiCacheable parts back to stable API, as we no longer need the breaking change done in #3133
2024-01-29 18:42:21 +01:00
Archi
2e0771b8d9 Closes #3133
After investigation, it turns out that the token actually has correct scope (THANK GOD), it's the fact that Valve started issuing those on much shorter notice than our cache.

Up until now, we played it smartly by assuming cached access token should be valid for at least 6 hours, since every time we visited the page, we got a new token that was valid for 24h since issuing. This however is no longer the case and Valve seems to recycle the same token for every request now, probably until we get close to its expiration. This also means that with unlucky timing, we might be trying to use access token that has expired already even for up to 6 more hours, which is unwanted and causes all kind of issues, with 403 in trade offers being one of them.

I could make stupid solution and cache token for shorter, e.g. 1 minute, but instead I did 200 IQ move and rewrote the functionality in a way to actually parse that token, its validity, and set the cache to be valid for a brief moment before the token actually expires. This way, we're not only more efficient (we can cache the token even for 24h if needed), but we're also invalidating it as soon as it goes out of the scope.
2024-01-29 17:53:46 +01:00
Archi
05c5a7fc30 Closes #3128 2024-01-24 12:43:36 +01:00
Sebastian Göls
dbf7148fbe Happy new year! (#3121)
Co-authored-by: Sebastian Göls <sebastian.goels@salvagninigroup.com>
2024-01-08 11:33:28 +01:00
Archi
12c4b7e924 Apply frozen collections optimizations 2024-01-03 13:46:54 +01:00
Archi
40ab1d848c .NET 8 code enhancements 2023-12-11 23:55:13 +01:00
Archi
a7b1e01161 Revert "Disable server-side functionality in custom ASF builds"
This reverts commit 42ceb6d413.
2023-12-04 23:06:11 +01:00
Archi
42ceb6d413 Disable server-side functionality in custom ASF builds 2023-12-02 18:37:40 +01:00
Archi
fac8cb2c9a Misc 2023-12-02 15:16:26 +01:00
Łukasz Domeradzki
36ae066c65 Closes #3073 (#3077)
* Initial implementation of announce with diff

* Add missing logic pieces

* Change in logic

* Fix checksums

* Add deduplication logic

* Update SetPart.cs

* Use standalone endpoint for diff

* Use different hashcode impl

* Update AssetForListing.cs

* Misc

* Push all the changes for this to finally work

* Use original index rather than self-calculated

ASFB makes some calculations based on index, it's better for us to have holes rather than hiding skipped items.

* Handle edge case of no assets after deduplication

* Remove dead code

* Address trim warnings

* Misc optimization
2023-11-29 00:08:16 +01:00
Archi
3f04144e41 Use cancellation in more places 2023-11-14 21:20:51 +01:00
Archi
adbf0748f8 Closes #3066 2023-11-14 21:10:35 +01:00
Archi
0ae03c7cd5 Syntax improvements 2023-11-14 20:21:02 +01:00
Archi
f2ff2f4929 Closes #3060 2023-11-14 20:01:29 +01:00
Łukasz Domeradzki
b34f18497d .NET 8 (#3005)
* Initial .NET 8

* Make it compile in release mode ignoring warnings for now

* First round of improvements

* Second round of improvements

* Third round of improvements

* Use new throws

* Fix .NET Framework, YAY, thanks madness!

Madness devs are awesome

* Misc

* Misc

* AF_NETLINK might be required for some http calls

No clue why

* Fix service files

Doesn't do what it should

* Update CardsFarmer.cs

* New improvements

* Address feedback

* Misc

* Misc

* Misc refactor

* Misc
2023-11-14 19:12:33 +01:00
Leet
17796c3466 Use gender neutral language (#3057) 2023-10-31 18:21:34 +01:00
Łukasz Domeradzki
d571cd9580 Closes #3043 (#3044)
* Implement support for access tokens

A bit more work and testing is needed

* Make ValidUntil computed, fix netf, among others

* netf fixes as always

* Allow AWH to forcefully refresh session

* Unify access token lifetime
2023-10-19 13:38:39 +02:00
Łukasz Domeradzki
af4a64b99e Closes #3007 (#3008) 2023-09-20 13:53:15 +02:00
Archi
c84366f9ba Misc syntax improvements 2023-08-10 21:36:17 +02:00
Archi
556e1282a3 Misc fix 2023-07-25 11:26:22 +02:00
Archi
d7722fae84 Misc code cleanup 2023-06-29 21:56:05 +02:00
Chr_
7882f709d9 add checkout.steampowered.com to known service (#2934) 2023-06-28 13:22:35 +02:00
Archi
067d478a76 Closes #2873 2023-04-10 14:55:35 +02:00
Archi
731b5909d1 Closes #2854 2023-04-02 21:26:56 +02:00
Łukasz Domeradzki
dd663f43b9 Closes #2840 (#2843)
* Initial login flow changes

* I hate windows

* Make it compile

* Hehe, you bet

* Another approach

* Misc

* Misc

* Final touches

* Misc

* Okay xpaw

* xPaw update

* Keep set input for reconnection

* Unify login errors

* Add missing registry entry

* Final touches before I lose my sanity
2023-03-17 23:59:46 +01:00
Archi
d7e8710333 Do not announce/match with limited accounts, lockdowns and trade bans, improve ArchiCacheable
We can totally make use of success previously more often
2023-02-11 15:58:15 +01:00
Archi
8008a04354 Code cleanups and improvements
- Make use of new UnixFileMode, always one native method we need to maintain less
- Add madness support for it, because new feature of course
- Add optional netstandard target and required compatibility for it, so I can test netf-oriented changes easier
2023-02-09 02:25:11 +01:00
Archi
b2c34694ae Misc code improvements 2023-02-08 21:18:20 +01:00
Łukasz Domeradzki
d3490b4e92 Add --minimized command-line argument (#2817)
* Add experimental support for --minimized on Windows

* Simplify the code
2023-02-08 16:11:50 +01:00
Archi
dc97558ad5 Misc 2023-02-04 16:02:28 +01:00
Sebastian Göls
0c125db118 Happy new year! (#2809) 2023-01-25 15:43:12 +01:00
Archi
ebd8cbf270 Remove no longer needed debugging leftover
Since interactive console is much more convenient to debug with, this no longer serves any purpose
2023-01-24 23:25:39 +01:00
Archi
6d0fa9bd2f Wait up to 10 seconds for mutex 2022-12-29 23:41:51 +01:00
Archi
d0fc189fa4 Make cleanup of old version after update more robuts 2022-12-29 22:57:20 +01:00
Archi
b28fcf46a0 Misc 2022-12-23 22:43:55 +01:00
Archi
8fd5f2e883 Fix Archi fuckup
Who would have thought?
2022-12-23 22:42:41 +01:00
Archi
8d5653b41e Add target channel to update command and public API 2022-12-23 22:12:18 +01:00
Vita Chumakova
8897c1d405 Support thousands separator for parsing playtime (#2773) 2022-12-21 17:42:38 +01:00
Archi
defc1bf80f Add support for full OpenID procedure against ArchiNet 2022-12-17 17:23:20 +01:00
Archi
fc63c28b05 Use local cache for BadBots in case server is unavailable
Bad actors might attempt to DDoS the server in order to refuse the service, fallback to local cache if that happens.
2022-12-17 03:11:07 +01:00
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
Archi
c9cae6e258 I wonder if netf understands nint 2022-12-15 19:17:48 +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
JustArchi
e994dca817 Remove inventory count that no longer does anything anyway 2022-12-03 00:09:33 +01:00
JustArchi
32a2c1b232 Misc improvements to OnRenamed() 2022-11-28 22:57:02 +01:00
JustArchi
4816cd006d Fix possible InvalidOperationException on OldName
I don't know how it's possible, MSDN docs don't mention it, but since it's nullable, this should help.
2022-11-27 14:25:03 +01:00