mirror of
https://github.com/SWG-Source/src.git
synced 2026-01-17 00:04:25 -05:00
this needs autoformatted, but otherwise should work :)
This commit is contained in:
1
external/3rd/library/webAPI/CMakeLists.txt
vendored
1
external/3rd/library/webAPI/CMakeLists.txt
vendored
@@ -8,6 +8,7 @@ add_library(webAPI
|
||||
json.hpp
|
||||
webAPIHeartbeat.h
|
||||
webAPIHeartbeat.cpp
|
||||
${OPENSSL_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
include_directories(
|
||||
|
||||
59
external/3rd/library/webAPI/webAPI.cpp
vendored
59
external/3rd/library/webAPI/webAPI.cpp
vendored
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Version: 1.6
|
||||
* Version: 1.7
|
||||
*
|
||||
* This code is just a simple wrapper around nlohmann's wonderful json lib
|
||||
* (https://github.com/nlohmann/json) and libcurl. While originally included directly,
|
||||
@@ -26,57 +26,6 @@ webAPI::~webAPI() {
|
||||
this->responseData.clear();
|
||||
}
|
||||
|
||||
CURLcode* webAPI::sslctx_function(CURL *curl, void *sslctx, void *parm) {
|
||||
X509_STORE *store;
|
||||
X509 *cert = NULL;
|
||||
BIO *bio;
|
||||
char *mypem = /* this is the cloudflare self signed for stellabellum.net, good for 30 years */
|
||||
"-----BEGIN CERTIFICATE-----\n"\
|
||||
"MIIEojCCA4qgAwIBAgIUJ88p38SKi9SeyVOF0AQne1O6Vs4wDQYJKoZIhvcNAQEL\n"\
|
||||
"BQAwgYsxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTQw\n"\
|
||||
"MgYDVQQLEytDbG91ZEZsYXJlIE9yaWdpbiBTU0wgQ2VydGlmaWNhdGUgQXV0aG9y\n"\
|
||||
"aXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlh\n"\
|
||||
"MB4XDTE2MTIzMTA1MDcwMFoXDTMxMTIyODA1MDcwMFowYjEZMBcGA1UEChMQQ2xv\n"\
|
||||
"dWRGbGFyZSwgSW5jLjEdMBsGA1UECxMUQ2xvdWRGbGFyZSBPcmlnaW4gQ0ExJjAk\n"\
|
||||
"BgNVBAMTHUNsb3VkRmxhcmUgT3JpZ2luIENlcnRpZmljYXRlMIIBIjANBgkqhkiG\n"\
|
||||
"9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwv0X8DT+AvVAWeLZvBZ+uQXFA5SEmY3w47uT\n"\
|
||||
"cwR/KCIrty7JLlswDv7iGV4f58vDAcNZq3Rs85eBY2kEatYZUBEFw+FhQDw76R9r\n"\
|
||||
"ZRj/gRfKyjkoHmmJ9ItP6YEIGHW5GGvSsB0PqV52pAESfIc4ABSUQVghLCmXCHPv\n"\
|
||||
"vMQjnTgAxgRQ0tvy52At9E39qClk+4uofMHzwk4bOKRUA9aLHLdZJQDEKR7EdZY1\n"\
|
||||
"qPIh3Rkari0aTVBf+0mnXQJ0xnIvVPc+GPYVotQ0tutISUtVPzpia0PmmbhHN4uE\n"\
|
||||
"ZVS53gOjgPz1dT/yivrsKw5i0vBqRcwMZ4dU+yfAL4uibJqwOwIDAQABo4IBJDCC\n"\
|
||||
"ASAwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB\n"\
|
||||
"/wQCMAAwHQYDVR0OBBYEFCjf0EvN/w5pDVLXf4dk4yfU5A02MB8GA1UdIwQYMBaA\n"\
|
||||
"FCToU1ddfDRAh6nrlNu64RZ4/CmkMEAGCCsGAQUFBwEBBDQwMjAwBggrBgEFBQcw\n"\
|
||||
"AYYkaHR0cDovL29jc3AuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2NhMC8GA1UdEQQo\n"\
|
||||
"MCaCEiouc3RlbGxhYmVsbHVtLm5ldIIQc3RlbGxhYmVsbHVtLm5ldDA4BgNVHR8E\n"\
|
||||
"MTAvMC2gK6AphidodHRwOi8vY3JsLmNsb3VkZmxhcmUuY29tL29yaWdpbl9jYS5j\n"\
|
||||
"cmwwDQYJKoZIhvcNAQELBQADggEBAGXNQW26rnr4k+2hfOxkuGGMXBuYAzLcCwbg\n"\
|
||||
"H5KRH3HoJg1FmkjGC07nptDk2EAkqp6DphwTangyw0oREEIU/l2k8AvkX0WVFXdx\n"\
|
||||
"FnVWq5IenZF8dX0m9oQyH/CsF89dkvU+zksP4wzJAMvGiB8Tmc8bKWmIfBnusj3D\n"\
|
||||
"npbKvZL2ch+hwY4SZspJLoKJ4iz5wWSHihwNYxm+KGsJpt2moV15gAuObmDg7nu6\n"\
|
||||
"owOLXtbf62tQOXnXee2peBN1JX/mCHKUSL1mu+wJXjitBEgXJRGSnZl4IGv/m8Q5\n"\
|
||||
"KDeA44tJg2f/le+MertWN/+aTYhK8exu4v/7SaEJHNCwbXCJICg=\n"\
|
||||
"-----END CERTIFICATE-----\n";
|
||||
|
||||
bio = BIO_new_mem_buf(mypem, -1);
|
||||
PEM_read_bio_X509(bio, &cert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
printf("PEM_read_bio_X509 failed...\n");
|
||||
}
|
||||
|
||||
store = SSL_CTX_get_cert_store((SSL_CTX *) sslctx);
|
||||
|
||||
if (X509_STORE_add_cert(store, cert) == 0) {
|
||||
printf("error adding certificate\n");
|
||||
}
|
||||
|
||||
X509_free(cert);
|
||||
BIO_free(bio);
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
bool webAPI::setEndpoint(const std::string endpoint) {
|
||||
this->uri = endpoint;
|
||||
|
||||
@@ -174,9 +123,9 @@ bool webAPI::fetch(const int &getPost, const int &mimeType) // 0 for json 1 for
|
||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
|
||||
|
||||
if (this->uri.find("login.stellabellum.net") != std::string::npos) {
|
||||
curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
|
||||
curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
|
||||
curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, this->sslctx_function);
|
||||
curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, *webAPI::sslctx_function);
|
||||
}
|
||||
|
||||
switch (getPost) {
|
||||
|
||||
56
external/3rd/library/webAPI/webAPI.h
vendored
56
external/3rd/library/webAPI/webAPI.h
vendored
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Version: 1.6
|
||||
* Version: 1.7
|
||||
*
|
||||
* This code is just a simple wrapper around nlohmann's wonderful json lib
|
||||
* (https://github.com/nlohmann/json) and libcurl. While originally included directly,
|
||||
@@ -48,9 +48,6 @@ namespace StellaBellum {
|
||||
|
||||
~webAPI();
|
||||
|
||||
// pin our key
|
||||
CURLcode* sslctx_function(CURL *curl, void *sslctx, void *parm);
|
||||
|
||||
// submits the request
|
||||
bool
|
||||
submit(const int &reqType = DTYPE::JSON, const int &getPost = HTTP::POST, const int &respType = DTYPE::JSON);
|
||||
@@ -118,6 +115,57 @@ namespace StellaBellum {
|
||||
// json processor - string to json
|
||||
bool processJSON();
|
||||
|
||||
inline static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm) {
|
||||
X509_STORE *store;
|
||||
X509 *cert = NULL;
|
||||
BIO *bio;
|
||||
char *mypem = /* this is the cloudflare self signed for stellabellum.net, good for 30 years */
|
||||
"-----BEGIN CERTIFICATE-----\n"\
|
||||
"MIIEojCCA4qgAwIBAgIUJ88p38SKi9SeyVOF0AQne1O6Vs4wDQYJKoZIhvcNAQEL\n"\
|
||||
"BQAwgYsxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTQw\n"\
|
||||
"MgYDVQQLEytDbG91ZEZsYXJlIE9yaWdpbiBTU0wgQ2VydGlmaWNhdGUgQXV0aG9y\n"\
|
||||
"aXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlh\n"\
|
||||
"MB4XDTE2MTIzMTA1MDcwMFoXDTMxMTIyODA1MDcwMFowYjEZMBcGA1UEChMQQ2xv\n"\
|
||||
"dWRGbGFyZSwgSW5jLjEdMBsGA1UECxMUQ2xvdWRGbGFyZSBPcmlnaW4gQ0ExJjAk\n"\
|
||||
"BgNVBAMTHUNsb3VkRmxhcmUgT3JpZ2luIENlcnRpZmljYXRlMIIBIjANBgkqhkiG\n"\
|
||||
"9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwv0X8DT+AvVAWeLZvBZ+uQXFA5SEmY3w47uT\n"\
|
||||
"cwR/KCIrty7JLlswDv7iGV4f58vDAcNZq3Rs85eBY2kEatYZUBEFw+FhQDw76R9r\n"\
|
||||
"ZRj/gRfKyjkoHmmJ9ItP6YEIGHW5GGvSsB0PqV52pAESfIc4ABSUQVghLCmXCHPv\n"\
|
||||
"vMQjnTgAxgRQ0tvy52At9E39qClk+4uofMHzwk4bOKRUA9aLHLdZJQDEKR7EdZY1\n"\
|
||||
"qPIh3Rkari0aTVBf+0mnXQJ0xnIvVPc+GPYVotQ0tutISUtVPzpia0PmmbhHN4uE\n"\
|
||||
"ZVS53gOjgPz1dT/yivrsKw5i0vBqRcwMZ4dU+yfAL4uibJqwOwIDAQABo4IBJDCC\n"\
|
||||
"ASAwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB\n"\
|
||||
"/wQCMAAwHQYDVR0OBBYEFCjf0EvN/w5pDVLXf4dk4yfU5A02MB8GA1UdIwQYMBaA\n"\
|
||||
"FCToU1ddfDRAh6nrlNu64RZ4/CmkMEAGCCsGAQUFBwEBBDQwMjAwBggrBgEFBQcw\n"\
|
||||
"AYYkaHR0cDovL29jc3AuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2NhMC8GA1UdEQQo\n"\
|
||||
"MCaCEiouc3RlbGxhYmVsbHVtLm5ldIIQc3RlbGxhYmVsbHVtLm5ldDA4BgNVHR8E\n"\
|
||||
"MTAvMC2gK6AphidodHRwOi8vY3JsLmNsb3VkZmxhcmUuY29tL29yaWdpbl9jYS5j\n"\
|
||||
"cmwwDQYJKoZIhvcNAQELBQADggEBAGXNQW26rnr4k+2hfOxkuGGMXBuYAzLcCwbg\n"\
|
||||
"H5KRH3HoJg1FmkjGC07nptDk2EAkqp6DphwTangyw0oREEIU/l2k8AvkX0WVFXdx\n"\
|
||||
"FnVWq5IenZF8dX0m9oQyH/CsF89dkvU+zksP4wzJAMvGiB8Tmc8bKWmIfBnusj3D\n"\
|
||||
"npbKvZL2ch+hwY4SZspJLoKJ4iz5wWSHihwNYxm+KGsJpt2moV15gAuObmDg7nu6\n"\
|
||||
"owOLXtbf62tQOXnXee2peBN1JX/mCHKUSL1mu+wJXjitBEgXJRGSnZl4IGv/m8Q5\n"\
|
||||
"KDeA44tJg2f/le+MertWN/+aTYhK8exu4v/7SaEJHNCwbXCJICg=\n"\
|
||||
"-----END CERTIFICATE-----\n";
|
||||
|
||||
bio = BIO_new_mem_buf(mypem, -1);
|
||||
PEM_read_bio_X509(bio, &cert, 0, NULL);
|
||||
if (cert == NULL) {
|
||||
printf("PEM_read_bio_X509 failed...\n");
|
||||
}
|
||||
|
||||
store = SSL_CTX_get_cert_store((SSL_CTX *) sslctx);
|
||||
|
||||
if (X509_STORE_add_cert(store, cert) == 0) {
|
||||
printf("error adding certificate\n");
|
||||
}
|
||||
|
||||
X509_free(cert);
|
||||
BIO_free(bio);
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
protected:
|
||||
// http response code (200, 404, etc)
|
||||
long statusCode;
|
||||
|
||||
Reference in New Issue
Block a user