steamutils 1.4.53 → 1.4.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/codeStyles/Project.xml +1 -0
- package/.idea/deployment.xml +14 -0
- package/.prettierrc.json +3 -3
- package/SteamClient.js +9 -42
- package/_steamproto.js +33 -33
- package/axios.js +84 -84
- package/bufferHelpers.js +115 -115
- package/cheerio.js +103 -103
- package/const.js +458 -458
- package/create_proto.js +96 -96
- package/create_remote_file.js +66 -66
- package/full_steamproto.js +35 -0
- package/helpers/protos.js +48 -48
- package/index.js +7753 -7753
- package/package.json +1 -1
- package/protos/csgo/base_gcmessages.proto +553 -553
- package/protos/csgo/base_gcmessages_csgo.proto +547 -547
- package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
- package/protos/csgo/clientmessages.proto +48 -48
- package/protos/csgo/connectionless_netmessages.proto +17 -17
- package/protos/csgo/cs_gameevents.proto +35 -35
- package/protos/csgo/cs_usercmd.proto +34 -34
- package/protos/csgo/cstrike15_gcmessages.proto +1431 -1431
- package/protos/csgo/cstrike15_usermessages.proto +592 -592
- package/protos/csgo/demo.proto +165 -165
- package/protos/csgo/econ_gcmessages.proto +219 -219
- package/protos/csgo/enums_clientserver.proto +1529 -1529
- package/protos/csgo/fatdemo.proto +125 -125
- package/protos/csgo/gameevents.proto +120 -120
- package/protos/csgo/gcsdk_gcmessages.proto +323 -323
- package/protos/csgo/gcsystemmsgs.proto +243 -243
- package/protos/csgo/netmessages.proto +618 -618
- package/protos/csgo/networkbasetypes.proto +246 -246
- package/protos/csgo/networksystem_protomessages.proto +17 -17
- package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
- package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
- package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
- package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
- package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
- package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
- package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
- package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
- package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
- package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/csgo/te.proto +259 -259
- package/protos/csgo/uifontfile_format.proto +13 -13
- package/protos/csgo/usercmd.proto +39 -39
- package/protos/csgo/usermessages.proto +752 -752
- package/protos/google/protobuf/descriptor.proto +281 -281
- package/protos/steam/clientmetrics.proto +45 -45
- package/protos/steam/content_manifest.proto +62 -62
- package/protos/steam/contenthubs.proto +41 -41
- package/protos/steam/encrypted_app_ticket.proto +10 -10
- package/protos/steam/enums.proto +501 -501
- package/protos/steam/enums_clientserver.proto +1508 -1508
- package/protos/steam/enums_productinfo.proto +14 -14
- package/protos/steam/htmlmessages.proto +1039 -1039
- package/protos/steam/offline_ticket.proto +8 -8
- package/protos/steam/steamdatagram_messages_auth.proto +65 -65
- package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
- package/protos/steam/steammessages_accounthardware.steamclient.proto +167 -167
- package/protos/steam/steammessages_appoverview.proto +204 -204
- package/protos/steam/steammessages_auth.steamclient.proto +375 -375
- package/protos/steam/steammessages_broadcast.steamclient.proto +618 -618
- package/protos/steam/steammessages_chat.steamclient.proto +1070 -1070
- package/protos/steam/steammessages_client_objects.proto +649 -649
- package/protos/steam/steammessages_clientlanp2p.proto +43 -43
- package/protos/steam/steammessages_clientmetrics.steamclient.proto +192 -192
- package/protos/steam/steammessages_clientnotificationtypes.proto +250 -250
- package/protos/steam/steammessages_clientserver.proto +392 -392
- package/protos/steam/steammessages_clientserver_2.proto +771 -771
- package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
- package/protos/steam/steammessages_clientserver_friends.proto +260 -260
- package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
- package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
- package/protos/steam/steammessages_clientserver_login.proto +167 -167
- package/protos/steam/steammessages_clientserver_mms.proto +233 -233
- package/protos/steam/steammessages_clientserver_ucm.proto +207 -207
- package/protos/steam/steammessages_clientserver_uds.proto +125 -125
- package/protos/steam/steammessages_clientserver_ufs.proto +45 -45
- package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
- package/protos/steam/steammessages_cloud.steamclient.proto +422 -422
- package/protos/steam/steammessages_contentsystem.steamclient.proto +123 -123
- package/protos/steam/steammessages_credentials.steamclient.proto +96 -96
- package/protos/steam/steammessages_datapublisher.steamclient.proto +102 -102
- package/protos/steam/steammessages_depotbuilder.steamclient.proto +99 -99
- package/protos/steam/steammessages_deviceauth.steamclient.proto +169 -169
- package/protos/steam/steammessages_econ.steamclient.proto +137 -137
- package/protos/steam/steammessages_familygroups.steamclient.proto +441 -441
- package/protos/steam/steammessages_friendmessages.steamclient.proto +141 -141
- package/protos/steam/steammessages_gamenetworking.steamclient.proto +25 -25
- package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
- package/protos/steam/steammessages_gamenotifications.steamclient.proto +131 -131
- package/protos/steam/steammessages_gameservers.steamclient.proto +136 -136
- package/protos/steam/steammessages_hiddevices.proto +157 -157
- package/protos/steam/steammessages_inventory.steamclient.proto +172 -172
- package/protos/steam/steammessages_linkfilter.steamclient.proto +39 -39
- package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -29
- package/protos/steam/steammessages_market.steamclient.proto +22 -22
- package/protos/steam/steammessages_marketingmessages.steamclient.proto +273 -273
- package/protos/steam/steammessages_offline.steamclient.proto +33 -33
- package/protos/steam/steammessages_parental.steamclient.proto +262 -262
- package/protos/steam/steammessages_parties.steamclient.proto +75 -75
- package/protos/steam/steammessages_partnerapps.steamclient.proto +106 -106
- package/protos/steam/steammessages_player.steamclient.proto +915 -915
- package/protos/steam/steammessages_publishedfile.steamclient.proto +737 -737
- package/protos/steam/steammessages_qms.steamclient.proto +111 -111
- package/protos/steam/steammessages_remoteclient.proto +100 -100
- package/protos/steam/steammessages_remoteclient_discovery.proto +244 -244
- package/protos/steam/steammessages_remoteclient_service.steamclient.proto +31 -31
- package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
- package/protos/steam/steammessages_remoteplay.proto +975 -975
- package/protos/steam/steammessages_secrets.steamclient.proto +35 -35
- package/protos/steam/steammessages_shader.steamclient.proto +89 -89
- package/protos/steam/steammessages_site_license.steamclient.proto +103 -103
- package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
- package/protos/steam/steammessages_siteserverui.proto +130 -130
- package/protos/steam/steammessages_steamtv.steamclient.proto +533 -533
- package/protos/steam/steammessages_store.steamclient.proto +404 -404
- package/protos/steam/steammessages_storebrowse.steamclient.proto +457 -457
- package/protos/steam/steammessages_timedtrial.steamclient.proto +40 -40
- package/protos/steam/steammessages_twofactor.steamclient.proto +157 -157
- package/protos/steam/steammessages_unified_test.steamclient.proto +51 -51
- package/protos/steam/steammessages_useraccount.steamclient.proto +211 -211
- package/protos/steam/steammessages_vac.steamclient.proto +37 -37
- package/protos/steam/steammessages_video.steamclient.proto +68 -68
- package/protos/steam/steammessages_virtualcontroller.proto +138 -138
- package/protos/steam/steammessages_workshop.steamclient.proto +19 -19
- package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
- package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/steam/webuimessages_achievements.proto +29 -29
- package/protos/steam/webuimessages_gamenotes.proto +21 -21
- package/protos/steam/webuimessages_gamescope.proto +57 -57
- package/protos/steam/webuimessages_steamengine.proto +41 -41
- package/protos/steam/webuimessages_steamos.proto +114 -114
- package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
- package/protos/steam/webuimessages_systemmanager.proto +17 -17
- package/protos/steam/webuimessages_transport.proto +22 -22
- package/protos/steam/webuimessages_transportvalidation.proto +111 -111
- package/protos/webui/common.proto +4024 -4024
- package/protos/webui/service_accountcart.proto +153 -153
- package/protos/webui/service_accountlinking.proto +27 -27
- package/protos/webui/service_accountprivacy.proto +42 -42
- package/protos/webui/service_accountprivateapps.proto +34 -34
- package/protos/webui/service_auction.proto +97 -97
- package/protos/webui/service_authentication.proto +222 -222
- package/protos/webui/service_authenticationsupport.proto +74 -74
- package/protos/webui/service_broadcast.proto +562 -562
- package/protos/webui/service_chat.proto +11 -11
- package/protos/webui/service_chatroom.proto +810 -810
- package/protos/webui/service_chatusability.proto +107 -107
- package/protos/webui/service_checkout.proto +84 -84
- package/protos/webui/service_clan.proto +41 -41
- package/protos/webui/service_clanchatrooms.proto +25 -25
- package/protos/webui/service_clanfaqs.proto +202 -202
- package/protos/webui/service_clientcomm.proto +151 -151
- package/protos/webui/service_clientmetrics.proto +22 -22
- package/protos/webui/service_cloud.proto +222 -222
- package/protos/webui/service_cloudconfigstore.proto +51 -51
- package/protos/webui/service_cloudgaming.proto +30 -30
- package/protos/webui/service_community.proto +365 -365
- package/protos/webui/service_dailydeal.proto +89 -89
- package/protos/webui/service_econ.proto +134 -134
- package/protos/webui/service_embedded.proto +24 -24
- package/protos/webui/service_experimentservice.proto +6 -6
- package/protos/webui/service_familygroups.proto +355 -355
- package/protos/webui/service_fovasvideo.proto +15 -15
- package/protos/webui/service_friendmessages.proto +133 -133
- package/protos/webui/service_friendslist.proto +70 -70
- package/protos/webui/service_gamenotes.proto +15 -15
- package/protos/webui/service_gamerecording.proto +265 -265
- package/protos/webui/service_gamerecordingclip.proto +85 -85
- package/protos/webui/service_gamerecordingdebug.proto +52 -52
- package/protos/webui/service_helprequestlogs.proto +16 -16
- package/protos/webui/service_loyaltyrewards.proto +252 -252
- package/protos/webui/service_marketingmessages.proto +215 -215
- package/protos/webui/service_mobileapp.proto +18 -18
- package/protos/webui/service_mobileauth.proto +24 -24
- package/protos/webui/service_mobiledevice.proto +26 -26
- package/protos/webui/service_mobileperaccount.proto +31 -31
- package/protos/webui/service_news.proto +110 -110
- package/protos/webui/service_parental.proto +258 -258
- package/protos/webui/service_partnermembershipinvite.proto +34 -34
- package/protos/webui/service_partnerstorebrowse.proto +28 -28
- package/protos/webui/service_phone.proto +51 -51
- package/protos/webui/service_physicalgoods.proto +15 -15
- package/protos/webui/service_player.proto +918 -918
- package/protos/webui/service_promotioneventinvites.proto +109 -109
- package/protos/webui/service_promotionplanning.proto +186 -186
- package/protos/webui/service_promotionstats.proto +23 -23
- package/protos/webui/service_publishedfile.proto +714 -714
- package/protos/webui/service_publishing.proto +200 -200
- package/protos/webui/service_quest.proto +127 -127
- package/protos/webui/service_salefeature.proto +373 -373
- package/protos/webui/service_saleitemrewards.proto +54 -54
- package/protos/webui/service_shoppingcart.proto +152 -152
- package/protos/webui/service_steamawards.proto +76 -76
- package/protos/webui/service_steamcharts.proto +75 -75
- package/protos/webui/service_steamengine.proto +36 -36
- package/protos/webui/service_steamlearn.proto +876 -876
- package/protos/webui/service_steamnotification.proto +73 -73
- package/protos/webui/service_steamtv.proto +495 -495
- package/protos/webui/service_steamvrvoicechat.proto +67 -67
- package/protos/webui/service_steamvrwebrtc.proto +48 -48
- package/protos/webui/service_storagedevicemanager.proto +104 -104
- package/protos/webui/service_store.proto +359 -359
- package/protos/webui/service_storeappsimilarity.proto +76 -76
- package/protos/webui/service_storebrowse.proto +103 -103
- package/protos/webui/service_storemarketing.proto +44 -44
- package/protos/webui/service_storequery.proto +103 -103
- package/protos/webui/service_storesales.proto +87 -87
- package/protos/webui/service_storetopsellers.proto +44 -44
- package/protos/webui/service_systemmanager.proto +11 -11
- package/protos/webui/service_test_transporterror.proto +6 -6
- package/protos/webui/service_transportauth.proto +17 -17
- package/protos/webui/service_transportvalidation.proto +69 -69
- package/protos/webui/service_twofactor.proto +170 -170
- package/protos/webui/service_useraccount.proto +142 -142
- package/protos/webui/service_usergameactivity.proto +34 -34
- package/protos/webui/service_usergamenotes.proto +70 -70
- package/protos/webui/service_usernews.proto +68 -68
- package/protos/webui/service_userreviews.proto +97 -97
- package/protos/webui/service_video.proto +50 -50
- package/protos/webui/service_videoclip.proto +62 -62
- package/protos/webui/service_voicechat.proto +139 -139
- package/protos/webui/service_webrtc.proto +52 -52
- package/remote.js +6784 -6784
- package/steamproto.js +34 -34
- package/utils.js +986 -986
- package/.idea/gbrowser_project.xml +0 -11
- package/.idea/git_toolbox_blame.xml +0 -6
- package/.idea/git_toolbox_prj.xml +0 -15
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
<code_scheme name="Project" version="173">
|
|
3
3
|
<HTMLCodeStyleSettings>
|
|
4
4
|
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
|
5
|
+
<option name="HTML_ENFORCE_QUOTES" value="true" />
|
|
5
6
|
</HTMLCodeStyleSettings>
|
|
6
7
|
<JSCodeStyleSettings version="0">
|
|
7
8
|
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
|
4
|
+
<serverData>
|
|
5
|
+
<paths name="botnatridiscord">
|
|
6
|
+
<serverdata>
|
|
7
|
+
<mappings>
|
|
8
|
+
<mapping local="$PROJECT_DIR$" web="/" />
|
|
9
|
+
</mappings>
|
|
10
|
+
</serverdata>
|
|
11
|
+
</paths>
|
|
12
|
+
</serverData>
|
|
13
|
+
</component>
|
|
14
|
+
</project>
|
package/.prettierrc.json
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
{
|
|
2
|
-
"printWidth": 1000
|
|
3
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"printWidth": 1000
|
|
3
|
+
}
|
package/SteamClient.js
CHANGED
|
@@ -1994,42 +1994,7 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
|
|
|
1994
1994
|
|
|
1995
1995
|
function doFakeGameScore() {
|
|
1996
1996
|
const maxRound = Math.random() > 0.7 ? 16 : 12;
|
|
1997
|
-
const maps = [
|
|
1998
|
-
"ar_baggage",
|
|
1999
|
-
"ar_dizzy",
|
|
2000
|
-
"ar_monastery",
|
|
2001
|
-
"ar_shoots",
|
|
2002
|
-
"cs_agency",
|
|
2003
|
-
"cs_assault",
|
|
2004
|
-
"cs_italy",
|
|
2005
|
-
"cs_militia",
|
|
2006
|
-
"cs_office",
|
|
2007
|
-
"de_ancient",
|
|
2008
|
-
"de_anubis",
|
|
2009
|
-
"de_bank",
|
|
2010
|
-
"de_boyard",
|
|
2011
|
-
"de_cache",
|
|
2012
|
-
"de_canals",
|
|
2013
|
-
"de_cbble",
|
|
2014
|
-
"de_chalice",
|
|
2015
|
-
"de_dust2",
|
|
2016
|
-
"de_inferno",
|
|
2017
|
-
"de_lake",
|
|
2018
|
-
"de_mirage",
|
|
2019
|
-
"de_nuke",
|
|
2020
|
-
"de_overpass",
|
|
2021
|
-
"de_safehouse",
|
|
2022
|
-
// "de_shortnuke",
|
|
2023
|
-
"de_stmarc",
|
|
2024
|
-
"de_sugarcane",
|
|
2025
|
-
"de_train",
|
|
2026
|
-
"de_tuscan",
|
|
2027
|
-
"de_vertigo",
|
|
2028
|
-
"dz_ember",
|
|
2029
|
-
"dz_vineyard",
|
|
2030
|
-
"gd_cbble",
|
|
2031
|
-
"training1",
|
|
2032
|
-
];
|
|
1997
|
+
const maps = ["cs_agency", "cs_assault", "cs_italy", "cs_militia", "cs_office", "de_ancient", "de_anubis", "de_bank", "de_boyard", "de_cache", "de_canals", "de_cbble", "de_chalice", "de_dust2", "de_inferno", "de_lake", "de_mirage", "de_nuke", "de_overpass", "de_safehouse", "de_sugarcane", "de_train", "de_tuscan", "de_vertigo", "de_thera", "de_mills", "de_memento", "de_assembly", "training1"];
|
|
2033
1998
|
|
|
2034
1999
|
if (richPresence.myScore === undefined) {
|
|
2035
2000
|
richPresence.myScore = _.random(0, maxRound);
|
|
@@ -2055,21 +2020,23 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
|
|
|
2055
2020
|
|
|
2056
2021
|
const score = richPresence.myScore === 0 && richPresence.theirScore === 0 ? "" : `[ ${richPresence.myScore} : ${richPresence.theirScore} ]`;
|
|
2057
2022
|
steamClient.uploadRichPresence(730, {
|
|
2058
|
-
"game:state": "game",
|
|
2059
|
-
steam_display: "#display_GameKnownMapScore",
|
|
2023
|
+
"game:state": "game", //lobby
|
|
2024
|
+
steam_display: "#display_GameKnownMapScore", //#DISPLAY_In_Lobby, #display_GameKnownMapScoreFlags
|
|
2060
2025
|
// connect: "+gcconnectG082AA752",
|
|
2061
2026
|
version: CSGO_VER.toString(),
|
|
2062
|
-
"game:mode": "competitive",
|
|
2027
|
+
"game:mode": "competitive", //competitive,deathmatch,casual
|
|
2063
2028
|
"game:map": richPresence.map,
|
|
2064
|
-
"game:server": "kv",
|
|
2029
|
+
"game:server": Math.random() > 0.7 ? "community" : "kv", //offline
|
|
2065
2030
|
// watch: Math.random() > 0.95 ? _.random(1, 5).toString() : null,
|
|
2066
|
-
"game:score": score,
|
|
2031
|
+
"game:score": score.toString(),
|
|
2032
|
+
"members:numPlayers": (Math.floor(Math.random() * 5) + 1).toString(), //generate a random number between 1 and 5
|
|
2033
|
+
"members:numSlots": "10",
|
|
2067
2034
|
});
|
|
2068
2035
|
}
|
|
2069
2036
|
|
|
2070
2037
|
function updateFakeGameScore() {
|
|
2071
2038
|
if (isFakeGameScore && getPlayingAppIds().some((a) => a == 730)) {
|
|
2072
|
-
doSetInterval(doFakeGameScore, [
|
|
2039
|
+
doSetInterval(doFakeGameScore, [120000, 180000], "uploadRichPresenceCSGO");
|
|
2073
2040
|
} else {
|
|
2074
2041
|
doClearInterval("uploadRichPresenceCSGO");
|
|
2075
2042
|
}
|
package/_steamproto.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { fileURLToPath } from "url";
|
|
3
|
-
import Protobuf from "protobufjs";
|
|
4
|
-
|
|
5
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
-
const __dirname = path.dirname(__filename);
|
|
7
|
-
|
|
8
|
-
export class SteamProto {
|
|
9
|
-
constructor(proto) {
|
|
10
|
-
this._proto = proto;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
toProto() {
|
|
14
|
-
const root = new Protobuf.Root().loadSync(path.join(`${__dirname}/protos/`, this._proto.filename), {
|
|
15
|
-
keepCase: true,
|
|
16
|
-
});
|
|
17
|
-
return root[this._proto.name];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
protoEncode(obj) {
|
|
21
|
-
const protobuf = this.toProto();
|
|
22
|
-
return protobuf.encode(protobuf.create(obj)).finish();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
protoEncodeBase64(obj) {
|
|
26
|
-
return this.protoEncode(obj).toString("base64");
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
protoDecode(obj) {
|
|
30
|
-
const protobuf = this.toProto();
|
|
31
|
-
return protobuf.toObject(protobuf.decode(obj), { defaults: true });
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
import Protobuf from "protobufjs";
|
|
4
|
+
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
|
|
8
|
+
export class SteamProto {
|
|
9
|
+
constructor(proto) {
|
|
10
|
+
this._proto = proto;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
toProto() {
|
|
14
|
+
const root = new Protobuf.Root().loadSync(path.join(`${__dirname}/protos/`, this._proto.filename), {
|
|
15
|
+
keepCase: true,
|
|
16
|
+
});
|
|
17
|
+
return root[this._proto.name];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
protoEncode(obj) {
|
|
21
|
+
const protobuf = this.toProto();
|
|
22
|
+
return protobuf.encode(protobuf.create(obj)).finish();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
protoEncodeBase64(obj) {
|
|
26
|
+
return this.protoEncode(obj).toString("base64");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
protoDecode(obj) {
|
|
30
|
+
const protobuf = this.toProto();
|
|
31
|
+
return protobuf.toObject(protobuf.decode(obj), { defaults: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
package/axios.js
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import * as _axios from "axios";
|
|
2
|
-
import * as cheerio from "cheerio";
|
|
3
|
-
|
|
4
|
-
export class Header {
|
|
5
|
-
headers = {};
|
|
6
|
-
|
|
7
|
-
constructor(headers) {
|
|
8
|
-
if (typeof headers === "object" && Object.keys(headers).length) {
|
|
9
|
-
this.headers = this.validate(headers);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
validate(headers) {
|
|
14
|
-
headers = Object.keys(headers).reduce(function (previousValue, currentValue, currentIndex, array) {
|
|
15
|
-
previousValue[currentValue.toLowerCase()] = headers[currentValue]?.trim();
|
|
16
|
-
return previousValue;
|
|
17
|
-
}, {});
|
|
18
|
-
if (headers.cookie === undefined || headers.cookie === null) {
|
|
19
|
-
headers.cookie = "";
|
|
20
|
-
}
|
|
21
|
-
return headers;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
get(key) {
|
|
25
|
-
if (key === undefined) {
|
|
26
|
-
return { ...this.headers };
|
|
27
|
-
} else {
|
|
28
|
-
return this.headers[key.toLowerCase()];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
set(key, value) {
|
|
33
|
-
if (typeof key === "string") {
|
|
34
|
-
this.headers[key.toLowerCase()] = value;
|
|
35
|
-
} else {
|
|
36
|
-
for (let _key in key) {
|
|
37
|
-
this.headers[_key.toLowerCase()] = key[_key];
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
this.headers = this.validate(this.headers);
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const axios = _axios.default.create({
|
|
46
|
-
baseURL: "/",
|
|
47
|
-
timeout: 60000,
|
|
48
|
-
headers: {
|
|
49
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
|
|
50
|
-
},
|
|
51
|
-
validateStatus: () => true,
|
|
52
|
-
withCredentials: true,
|
|
53
|
-
maxContentLength: Infinity,
|
|
54
|
-
maxBodyLength: Infinity,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
//debug
|
|
58
|
-
// axios.interceptors.request.use(function (config) {
|
|
59
|
-
// console_log(`[axios]`, config.method, config.url)
|
|
60
|
-
// return config
|
|
61
|
-
// }, function (error) {
|
|
62
|
-
// return Promise.reject(error)
|
|
63
|
-
// })
|
|
64
|
-
|
|
65
|
-
export async function request(config) {
|
|
66
|
-
try {
|
|
67
|
-
if (!config?.headers?.cookie) {
|
|
68
|
-
try {
|
|
69
|
-
delete config.headers.cookie;
|
|
70
|
-
} catch (e) {}
|
|
71
|
-
}
|
|
72
|
-
const result = await axios.request(config);
|
|
73
|
-
if (result.data && typeof result.data === "string") {
|
|
74
|
-
result._$ = function () {
|
|
75
|
-
return cheerio.load(result.data.replaceAll(/[\t\n\r]/gi, "").trim());
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
return result;
|
|
79
|
-
} catch (e) {
|
|
80
|
-
return {
|
|
81
|
-
error: e,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
}
|
|
1
|
+
import * as _axios from "axios";
|
|
2
|
+
import * as cheerio from "cheerio";
|
|
3
|
+
|
|
4
|
+
export class Header {
|
|
5
|
+
headers = {};
|
|
6
|
+
|
|
7
|
+
constructor(headers) {
|
|
8
|
+
if (typeof headers === "object" && Object.keys(headers).length) {
|
|
9
|
+
this.headers = this.validate(headers);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
validate(headers) {
|
|
14
|
+
headers = Object.keys(headers).reduce(function (previousValue, currentValue, currentIndex, array) {
|
|
15
|
+
previousValue[currentValue.toLowerCase()] = headers[currentValue]?.trim();
|
|
16
|
+
return previousValue;
|
|
17
|
+
}, {});
|
|
18
|
+
if (headers.cookie === undefined || headers.cookie === null) {
|
|
19
|
+
headers.cookie = "";
|
|
20
|
+
}
|
|
21
|
+
return headers;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get(key) {
|
|
25
|
+
if (key === undefined) {
|
|
26
|
+
return { ...this.headers };
|
|
27
|
+
} else {
|
|
28
|
+
return this.headers[key.toLowerCase()];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
set(key, value) {
|
|
33
|
+
if (typeof key === "string") {
|
|
34
|
+
this.headers[key.toLowerCase()] = value;
|
|
35
|
+
} else {
|
|
36
|
+
for (let _key in key) {
|
|
37
|
+
this.headers[_key.toLowerCase()] = key[_key];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
this.headers = this.validate(this.headers);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const axios = _axios.default.create({
|
|
46
|
+
baseURL: "/",
|
|
47
|
+
timeout: 60000,
|
|
48
|
+
headers: {
|
|
49
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
|
|
50
|
+
},
|
|
51
|
+
validateStatus: () => true,
|
|
52
|
+
withCredentials: true,
|
|
53
|
+
maxContentLength: Infinity,
|
|
54
|
+
maxBodyLength: Infinity,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
//debug
|
|
58
|
+
// axios.interceptors.request.use(function (config) {
|
|
59
|
+
// console_log(`[axios]`, config.method, config.url)
|
|
60
|
+
// return config
|
|
61
|
+
// }, function (error) {
|
|
62
|
+
// return Promise.reject(error)
|
|
63
|
+
// })
|
|
64
|
+
|
|
65
|
+
export async function request(config) {
|
|
66
|
+
try {
|
|
67
|
+
if (!config?.headers?.cookie) {
|
|
68
|
+
try {
|
|
69
|
+
delete config.headers.cookie;
|
|
70
|
+
} catch (e) {}
|
|
71
|
+
}
|
|
72
|
+
const result = await axios.request(config);
|
|
73
|
+
if (result.data && typeof result.data === "string") {
|
|
74
|
+
result._$ = function () {
|
|
75
|
+
return cheerio.load(result.data.replaceAll(/[\t\n\r]/gi, "").trim());
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
} catch (e) {
|
|
80
|
+
return {
|
|
81
|
+
error: e,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
package/bufferHelpers.js
CHANGED
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
import ByteBuffer from 'bytebuffer';
|
|
2
|
-
import SteamID from 'steamid';
|
|
3
|
-
|
|
4
|
-
const Type = {
|
|
5
|
-
None : 0,
|
|
6
|
-
String : 1,
|
|
7
|
-
Int32 : 2,
|
|
8
|
-
Float32 : 3,
|
|
9
|
-
Pointer : 4,
|
|
10
|
-
WideString : 5,
|
|
11
|
-
Color : 6,
|
|
12
|
-
UInt64 : 7,
|
|
13
|
-
End : 8
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Encodes an object into a ByteBuffer
|
|
17
|
-
export const encode = (
|
|
18
|
-
_object,
|
|
19
|
-
prefix = [0x00, 0x00],
|
|
20
|
-
suffix = [],
|
|
21
|
-
customEncodeFields = {}
|
|
22
|
-
) => {
|
|
23
|
-
// Create a copy of the input object to avoid modifying it
|
|
24
|
-
const object = { ..._object };
|
|
25
|
-
const buffer = new ByteBuffer();
|
|
26
|
-
|
|
27
|
-
// Write the prefix bytes to the buffer
|
|
28
|
-
for (let pre of prefix) {
|
|
29
|
-
buffer.writeByte(pre);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Iterate through the object's properties and encode them
|
|
33
|
-
for (let item in object) {
|
|
34
|
-
if (object.hasOwnProperty(item) === false) {
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// If a custom encoder function exists for the property, use it
|
|
39
|
-
if (typeof customEncodeFields[item] === 'function') {
|
|
40
|
-
object[item] = customEncodeFields[item](object[item]);
|
|
41
|
-
}
|
|
42
|
-
_encode(object[item], buffer, item);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Write the suffix bytes to the buffer
|
|
46
|
-
for (let suf of suffix) {
|
|
47
|
-
buffer.writeByte(suf);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Write an End marker to the buffer
|
|
51
|
-
buffer.writeByte(Type.End);
|
|
52
|
-
buffer.flip(); // Prepare the buffer for reading
|
|
53
|
-
return buffer;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// Encodes individual properties into the ByteBuffer
|
|
57
|
-
const _encode = (object, buffer, name) => {
|
|
58
|
-
if (object instanceof Buffer) {
|
|
59
|
-
// If the object is a Buffer
|
|
60
|
-
buffer.writeByte(Type.String);
|
|
61
|
-
buffer.writeCString(name);
|
|
62
|
-
|
|
63
|
-
// Convert the Buffer to a hexadecimal string, split into 2-character parts, and write each part as a byte
|
|
64
|
-
let parts = object
|
|
65
|
-
.toString('hex')
|
|
66
|
-
.toUpperCase()
|
|
67
|
-
.match(/.{1,2}/g);
|
|
68
|
-
|
|
69
|
-
for (let part of parts) {
|
|
70
|
-
buffer.writeByte(parseInt('0x' + part));
|
|
71
|
-
}
|
|
72
|
-
} else {
|
|
73
|
-
// If the object is not a Buffer, check its type
|
|
74
|
-
switch (typeof object) {
|
|
75
|
-
case 'object': {
|
|
76
|
-
buffer.writeByte(Type.None);
|
|
77
|
-
buffer.writeCString(name);
|
|
78
|
-
|
|
79
|
-
for (let index in object) {
|
|
80
|
-
_encode(object[index], buffer, index); // Recursively encode each property
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
buffer.writeByte(Type.End);
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
case 'string': {
|
|
87
|
-
buffer.writeByte(Type.String);
|
|
88
|
-
buffer.writeCString(name);
|
|
89
|
-
buffer.writeCString(object ? object : '');
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
case 'number': {
|
|
93
|
-
buffer.writeByte(Type.String);
|
|
94
|
-
buffer.writeCString(name);
|
|
95
|
-
buffer.writeCString(object.toString());
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// Encodes SteamIDs into a Buffer
|
|
103
|
-
export const encodeUids = (steamids) => {
|
|
104
|
-
const outputBuffer = [];
|
|
105
|
-
|
|
106
|
-
for (let id of steamids.map((s) => s.accountid)) {
|
|
107
|
-
while (id > 0x7f) {
|
|
108
|
-
outputBuffer.push((id | 0x80) & 0xff);
|
|
109
|
-
id >>= 7;
|
|
110
|
-
}
|
|
111
|
-
outputBuffer.push(id);
|
|
112
|
-
}
|
|
113
|
-
outputBuffer.push(0x00); // Null terminator
|
|
114
|
-
return Buffer.from(outputBuffer);
|
|
115
|
-
};
|
|
1
|
+
import ByteBuffer from 'bytebuffer';
|
|
2
|
+
import SteamID from 'steamid';
|
|
3
|
+
|
|
4
|
+
const Type = {
|
|
5
|
+
None : 0,
|
|
6
|
+
String : 1,
|
|
7
|
+
Int32 : 2,
|
|
8
|
+
Float32 : 3,
|
|
9
|
+
Pointer : 4,
|
|
10
|
+
WideString : 5,
|
|
11
|
+
Color : 6,
|
|
12
|
+
UInt64 : 7,
|
|
13
|
+
End : 8
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Encodes an object into a ByteBuffer
|
|
17
|
+
export const encode = (
|
|
18
|
+
_object,
|
|
19
|
+
prefix = [0x00, 0x00],
|
|
20
|
+
suffix = [],
|
|
21
|
+
customEncodeFields = {}
|
|
22
|
+
) => {
|
|
23
|
+
// Create a copy of the input object to avoid modifying it
|
|
24
|
+
const object = { ..._object };
|
|
25
|
+
const buffer = new ByteBuffer();
|
|
26
|
+
|
|
27
|
+
// Write the prefix bytes to the buffer
|
|
28
|
+
for (let pre of prefix) {
|
|
29
|
+
buffer.writeByte(pre);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Iterate through the object's properties and encode them
|
|
33
|
+
for (let item in object) {
|
|
34
|
+
if (object.hasOwnProperty(item) === false) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// If a custom encoder function exists for the property, use it
|
|
39
|
+
if (typeof customEncodeFields[item] === 'function') {
|
|
40
|
+
object[item] = customEncodeFields[item](object[item]);
|
|
41
|
+
}
|
|
42
|
+
_encode(object[item], buffer, item);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Write the suffix bytes to the buffer
|
|
46
|
+
for (let suf of suffix) {
|
|
47
|
+
buffer.writeByte(suf);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Write an End marker to the buffer
|
|
51
|
+
buffer.writeByte(Type.End);
|
|
52
|
+
buffer.flip(); // Prepare the buffer for reading
|
|
53
|
+
return buffer;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Encodes individual properties into the ByteBuffer
|
|
57
|
+
const _encode = (object, buffer, name) => {
|
|
58
|
+
if (object instanceof Buffer) {
|
|
59
|
+
// If the object is a Buffer
|
|
60
|
+
buffer.writeByte(Type.String);
|
|
61
|
+
buffer.writeCString(name);
|
|
62
|
+
|
|
63
|
+
// Convert the Buffer to a hexadecimal string, split into 2-character parts, and write each part as a byte
|
|
64
|
+
let parts = object
|
|
65
|
+
.toString('hex')
|
|
66
|
+
.toUpperCase()
|
|
67
|
+
.match(/.{1,2}/g);
|
|
68
|
+
|
|
69
|
+
for (let part of parts) {
|
|
70
|
+
buffer.writeByte(parseInt('0x' + part));
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
// If the object is not a Buffer, check its type
|
|
74
|
+
switch (typeof object) {
|
|
75
|
+
case 'object': {
|
|
76
|
+
buffer.writeByte(Type.None);
|
|
77
|
+
buffer.writeCString(name);
|
|
78
|
+
|
|
79
|
+
for (let index in object) {
|
|
80
|
+
_encode(object[index], buffer, index); // Recursively encode each property
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
buffer.writeByte(Type.End);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'string': {
|
|
87
|
+
buffer.writeByte(Type.String);
|
|
88
|
+
buffer.writeCString(name);
|
|
89
|
+
buffer.writeCString(object ? object : '');
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case 'number': {
|
|
93
|
+
buffer.writeByte(Type.String);
|
|
94
|
+
buffer.writeCString(name);
|
|
95
|
+
buffer.writeCString(object.toString());
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Encodes SteamIDs into a Buffer
|
|
103
|
+
export const encodeUids = (steamids) => {
|
|
104
|
+
const outputBuffer = [];
|
|
105
|
+
|
|
106
|
+
for (let id of steamids.map((s) => s.accountid)) {
|
|
107
|
+
while (id > 0x7f) {
|
|
108
|
+
outputBuffer.push((id | 0x80) & 0xff);
|
|
109
|
+
id >>= 7;
|
|
110
|
+
}
|
|
111
|
+
outputBuffer.push(id);
|
|
112
|
+
}
|
|
113
|
+
outputBuffer.push(0x00); // Null terminator
|
|
114
|
+
return Buffer.from(outputBuffer);
|
|
115
|
+
};
|