Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/conf/char_athena.conf b/conf/char_athena.conf
- index a99d616..219fd2d 100644
- --- a/conf/char_athena.conf
- +++ b/conf/char_athena.conf
- @@ -284,4 +284,8 @@ mail_return_days: 15
- // Default: 15
- mail_delete_days: 15
- +//Discord @request integration
- +gm_whisp_webhook: on
- +gm_whisp_webhook_url:
- +
- import: conf/import/char_conf.txt
- diff --git a/configure b/configure
- index 672d335..9144184 100755
- --- a/configure
- +++ b/configure
- @@ -630,6 +630,9 @@ PCRE_CFLAGS
- PCRE_LIBS
- PCRE_VERSION
- HAVE_PCRE
- +LCURL_CFLAGS
- +LCURL_LIBS
- +HAVE_LCURL
- MYSQL_LIBS
- MYSQL_CFLAGS
- MYSQL_VERSION
- @@ -715,6 +718,7 @@ with_mysql
- with_MYSQL_CFLAGS
- with_MYSQL_LIBS
- with_pcre
- +with_lcurl
- with_zlib
- '
- ac_precious_vars='build_alias
- @@ -1386,6 +1390,7 @@ Optional Packages:
- to /usr/local or /usr if not found in /usr/local).
- Assumes that the header files are in DIR/include and
- the library files are in DIR/lib
- + --with-lcurl Compile with libcurl? Default no
- Some influential environment variables:
- CXX C++ compiler command
- @@ -3557,6 +3562,15 @@ else
- fi
- +#
- +# enable libcurl
- +#
- +if test "${with_lcurl+set}" = set; then :
- + want_lcurl="yes"
- +else
- + want_lcurl="no"
- +
- +
- #
- # Specify the path of the zlib library (required library)
- @@ -6821,7 +6835,20 @@ fi
- -
- +#
- +# Libcurl Library (optional)
- +#
- +LCURL_LIBS=""
- +LCURL_CFLAGS=""
- +if test "$want_lcurl" = "no"; then
- + { $as_echo "$as_me:${as_lineno-$LINENO}: ignoring Libcurl (optional)" >&5
- +$as_echo "$as_me: ignoring Libcurl (optional)" >&6;}
- +else
- + { $as_echo "$as_me:${as_lineno-$LINENO}: assuming you have libcurl" >&5
- +$as_echo "assuming you have libcurl... " >&6; }
- + LCURL_LIBS="-lcurl"
- + HAVE_LCURL="yes"
- +fi
- diff --git a/src/char/Makefile.in b/src/char/Makefile.in
- index 3fddf5e..50af922 100644
- --- a/src/char/Makefile.in
- +++ b/src/char/Makefile.in
- @@ -32,6 +32,13 @@ else
- endif
- ALL_DEPENDS=server
- +HAVE_LCURL=@HAVE_LCURL@
- +ifeq ($(HAVE_LCURL),yes)
- + LCURL_CFLAGS=-DHAVE_LIBCURL -DCURL_STATICLIB @LCURL_CFLAGS@
- +else
- + LCURL_CFLAGS=
- +endif
- +
- @SET_MAKE@
- #####################################################################
- @@ -57,7 +64,7 @@ help:
- char-server: obj $(CHAR_DIR_OBJ) $(LIBCONFIG_AR) $(COMMON_AR) $(YAML_CPP_AR)
- @echo " LD @OCHR@@EXEEXT@"
- - @@CXX@ @LDFLAGS@ -o ../../@OCHR@@EXEEXT@ $(CHAR_DIR_OBJ) $(LIBCONFIG_AR) $(COMMON_AR) $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(YAML_CPP_AR) @LIBS@ @MYSQL_LIBS@
- + @@CXX@ @LDFLAGS@ -o ../../@OCHR@@EXEEXT@ $(CHAR_DIR_OBJ) $(LIBCONFIG_AR) $(COMMON_AR) $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(YAML_CPP_AR) @LIBS@ @MYSQL_LIBS@ @LCURL_LIBS@
- needs_mysql:
- @echo "MySQL not found or disabled by the configure script"
- @@ -69,11 +76,11 @@ obj:
- obj/%.o: %.c $(CHAR_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H)
- @echo " CC $<"
- - @@CC@ @CFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
- + @@CC@ @CFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(LCURL_CFLAGS) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
- obj/%.o: %.cpp $(CHAR_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H)
- @echo " CXX $<"
- - @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
- + @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(LCURL_CFLAGS) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
- # missing object files
- $(COMMON_AR):
- diff --git a/src/char/char.cpp b/src/char/char.cpp
- index 407e07b..59694ef 100644
- --- a/src/char/char.cpp
- +++ b/src/char/char.cpp
- @@ -2781,6 +2781,9 @@ void char_set_defaults(){
- charserv_config.mail_return_days = 14;
- charserv_config.mail_delete_days = 14;
- + charserv_config.gm_whisp_webhook = 0;
- + charserv_config.gm_whisp_webhook_url[0] = '\0';
- +
- #if defined(RENEWAL) && PACKETVER >= 20151001
- charserv_config.allowed_job_flag = 3;
- #else
- @@ -3066,6 +3069,10 @@ bool char_config_read(const char* cfgName, bool normal){
- charserv_config.mail_delete_days = atoi(w2);
- } else if (strcmpi(w1, "allowed_job_flag") == 0) {
- charserv_config.allowed_job_flag = atoi(w2);
- + } else if (strcmpi(w1, "gm_whisp_webhook") == 0) {
- + charserv_config.gm_whisp_webhook = config_switch(w2);
- + } else if (strcmpi(w1, "gm_whisp_webhook_url") == 0) {
- + safestrncpy(charserv_config.gm_whisp_webhook_url, w2, 1024);
- } else if (strcmpi(w1, "import") == 0) {
- char_config_read(w2, normal);
- }
- diff --git a/src/char/char.hpp b/src/char/char.hpp
- index ab76e89..53142d4 100644
- --- a/src/char/char.hpp
- +++ b/src/char/char.hpp
- @@ -186,6 +186,9 @@ struct CharServ_Config {
- int mail_return_days;
- int mail_delete_days;
- + int gm_whisp_webhook;
- + char gm_whisp_webhook_url[1024];
- +
- int allowed_job_flag;
- };
- extern struct CharServ_Config charserv_config;
- diff --git a/src/char/inter.cpp b/src/char/inter.cpp
- index cf9b4b2..92e7204 100644
- --- a/src/char/inter.cpp
- +++ b/src/char/inter.cpp
- @@ -10,6 +10,9 @@
- #include <string>
- #include <vector>
- #include <stdlib.h>
- +#ifdef HAVE_LIBCURL
- +#include <curl/curl.h>
- +#endif
- #include "../common/cbasetypes.h"
- #include "../common/malloc.h"
- @@ -1245,7 +1248,6 @@ int mapif_parse_WisReply(int fd)
- mapif_wis_reply(wd->fd, wd->src, flag); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
- idb_remove(wis_db, id);
- }
- -
- return 0;
- }
- @@ -1258,6 +1260,34 @@ int mapif_parse_WisToGM(int fd)
- WBUFW(buf, 0) = 0x3803;
- chmapif_sendall(buf, RFIFOW(fd,2));
- +#ifdef HAVE_LIBCURL
- + if (charserv_config.gm_whisp_webhook != 0 && charserv_config.gm_whisp_webhook_url[0] != 0) {
- + CURL *curl;
- + CURLcode res;
- + curl = curl_easy_init();
- + if (curl) {
- + char buf2[300]; //just the message
- + char * bp = buf2;
- + char * c = RFIFOCP(fd, 8 + NAME_LENGTH);
- + memset(buf, 0, sizeof(buf));
- + while (*c != '\0') {
- + if (*c == '"' || *c == '\\') {
- + *bp = '\\';
- + bp++;
- + }
- + *bp = *c;
- + c++;
- + bp++;
- + }
- + *bp = '\0';
- + snprintf((char *)buf, sizeof(buf), "{\"content\": \"[%s] %s\", \"username\": \"%s\"}", RFIFOCP(fd, 4), buf2, server_name);
- + curl_easy_setopt(curl, CURLOPT_URL, charserv_config.gm_whisp_webhook_url);
- + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, buf);
- + res = curl_easy_perform(curl);
- + curl_easy_cleanup(curl);
- + }
- + }
- +#endif
- return 0;
- }
Add Comment
Please, Sign In to add comment