aboutsummaryrefslogtreecommitdiff
path: root/extension/define.h
diff options
context:
space:
mode:
Diffstat (limited to 'extension/define.h')
-rw-r--r--extension/define.h177
1 files changed, 177 insertions, 0 deletions
diff --git a/extension/define.h b/extension/define.h
new file mode 100644
index 0000000..f56ccda
--- /dev/null
+++ b/extension/define.h
@@ -0,0 +1,177 @@
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_DEFINE_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_DEFINE_H_
+
+#include <sh_list.h>
+#include <curl/curl.h>
+
+#ifdef PLATFORM_LINUX
+#define INVALID_SOCKET -1
+#endif
+
+class cURLThread;
+struct cURLHandle;
+
+
+enum SendRecv_Act {
+ SendRecv_Act_NOTHING = 0,
+
+ SendRecv_Act_GOTO_SEND,
+ SendRecv_Act_GOTO_RECV,
+ SendRecv_Act_GOTO_WAIT,
+ SendRecv_Act_GOTO_END,
+ SendRecv_Act_GOTO_SEND_NO_WAIT,
+ SendRecv_Act_GOTO_RECV_NO_WAIT,
+
+ SendRecv_Act_LAST,
+};
+
+enum cURLThread_Type {
+ cURLThread_Type_NOTHING = 0,
+
+ cURLThread_Type_PERFORM,
+ cURLThread_Type_SEND_RECV,
+
+ cURLThread_Type_LAST,
+};
+
+enum cURL_CallBack {
+ cURL_CallBack_NOTHING = 0,
+
+ cURL_CallBack_COMPLETE,
+ cURL_CallBack_SEND,
+ cURL_CallBack_RECV,
+
+ cURL_CallBack_WRITE_FUNCTION,
+ cURL_CallBack_READ_FUNCTION,
+
+ cURL_CallBack_LAST,
+};
+
+struct cURLOpt_string {
+ CURLoption opt;
+ char *value;
+};
+
+struct cURLOpt_int {
+ CURLoption opt;
+ int value;
+};
+
+struct cURLOpt_int64 {
+ CURLoption opt;
+ curl_off_t value;
+};
+
+struct cURLOpt_pointer {
+ CURLoption opt;
+ void *value;
+};
+
+enum UserData_Type
+{
+ UserData_Type_Complete = 0,
+ UserData_Type_Send_Recv,
+ UserData_Type_Write_Func,
+ UserData_Type_Read_Func,
+};
+
+struct cURLHandle {
+ cURLHandle():curl(NULL),running(false),lasterror(CURLE_OK),opt_loaded(false),
+ thread(NULL),is_udp(false),sockextr(INVALID_SOCKET),send_timeout(60000),recv_timeout(60000)
+ {
+ }
+ CURL *curl;
+ char errorBuffer[CURL_ERROR_SIZE];
+ SourceHook::List<cURLOpt_string *> opt_string_list;
+ SourceHook::List<cURLOpt_int *> opt_int_list;
+ SourceHook::List<cURLOpt_int64 *> opt_int64_list;
+ SourceHook::List<cURLOpt_pointer *> opt_pointer_list;
+ bool running;
+ CURLcode lasterror;
+ bool opt_loaded;
+ IPluginFunction *callback_Function[cURL_CallBack_LAST];
+ Handle_t hndl;
+ int UserData[4];
+ cURLThread *thread;
+ bool is_udp;
+
+ /* use for send & recv */
+ long sockextr;
+ long send_timeout;
+ long recv_timeout;
+
+ std::string send_buffer;
+};
+
+class ICloseHelper {
+public:
+ ICloseHelper():_handle(NULL),_marked_delete(false)
+ {
+ }
+ cURLHandle *_handle;
+ bool _marked_delete;
+ bool TryDelete();
+ virtual void Delete() =0;
+};
+
+class cURL_slist_pack : public ICloseHelper {
+public:
+ cURL_slist_pack():chunk(NULL)
+ {
+ }
+ curl_slist *chunk;
+ void Delete();
+};
+
+class WebForm : public ICloseHelper {
+public:
+ WebForm():first(NULL), last(NULL)
+ {
+ }
+ curl_httppost *first;
+ curl_httppost *last;
+ SourceHook::List<cURL_slist_pack *> slist_record;
+ void Delete();
+};
+
+class cURL_OpenFile : public ICloseHelper {
+public:
+ FILE *pFile;
+ void Delete();
+};
+
+
+enum OpensslThread_Type {
+ OpensslThread_Type_NOTHING = 0,
+
+ OpensslThread_Type_HASH_FILE,
+
+ OpensslThread_Type_LAST,
+};
+
+enum Openssl_Hash {
+ Openssl_Hash_MD5 = 0,
+ Openssl_Hash_MD4,
+ Openssl_Hash_MD2,
+ Openssl_Hash_SHA,
+ Openssl_Hash_SHA1,
+ Openssl_Hash_SHA224,
+ Openssl_Hash_SHA256,
+ Openssl_Hash_SHA384,
+ Openssl_Hash_SHA512,
+ Openssl_Hash_RIPEMD160,
+};
+
+struct Openssl_Hash_pack {
+ Openssl_Hash_pack():path(NULL), output(NULL)
+ {
+ }
+ IPluginFunction *hash_callback;
+ int UserData;
+ char *path;
+ Openssl_Hash algorithm;
+ bool success;
+ char *output;
+};
+
+#endif