]> jfr.im git - irc/quakenet/newserv.git/commitdiff
request: Make RQ_* settings configurable.
authorGunnar Beutner <redacted>
Mon, 12 Aug 2013 02:28:33 +0000 (04:28 +0200)
committerGunnar Beutner <redacted>
Mon, 12 Aug 2013 02:28:33 +0000 (04:28 +0200)
MODULES
request/lrequest.c
request/request.c
request/request.h
request/sqrequest.c

diff --git a/MODULES b/MODULES
index eadce43e598ad497b5850d63d68dd76f60326cef..64ed5a786dc3a5a55f3b77ea26911a62cfe09e95 100644 (file)
--- a/MODULES
+++ b/MODULES
@@ -169,9 +169,19 @@ Does on-connect proxy scans and glines open proxies.
 request
 ~~~~~~
 
-This is QuakeNet's channel service request bot (R). Some of the module
-parameters are not configurable - instead you will have to modify the
-request/request.h header file and recompile the module.
+This is QuakeNet's channel service request bot (R).
+
+Configuration:
+
+[request]
+#nick=R
+#user=request
+#host=request.quakenet.org
+#real=Service Request v0.23
+#snick=S
+#sserver=spamscan.quakenet.org
+#qnick=Q
+#qserver=cserve.quakenet.org
 
 serverlist
 ~~~~~~~~~
index 51d7ebd86008606c395d05d250131dffd09ae557..feed150ac033790cd7925e2fdc4dbc4e360651cb 100644 (file)
@@ -54,7 +54,7 @@ int lr_requestl(nick *svc, nick *np, channel *cp, nick *qnick) {
   /* treat blocked users as if they're out of targets */
   if(rq_findblock(np->authname) || !rq_tryfasttrack(np)) {
     sendnoticetouser(svc, np, "Sorry, you may not request %s for another "
-      "channel at this time. Please try again in an hour.", RQ_QNICK);
+      "channel at this time. Please try again in an hour.", rq_qnick->content);
 
     lr_notargets++;
 
@@ -66,7 +66,7 @@ int lr_requestl(nick *svc, nick *np, channel *cp, nick *qnick) {
 
   sendnoticetouser(svc, np, "Success! %s has been added to '%s' "
         "(contact #help if you require further assistance).", 
-        RQ_QNICK, cp->index->name->content);
+        rq_qnick->content, cp->index->name->content);
 
   return RQ_OK;
 }
index 7c192909432666277f3c50ea014321d9b016ea79..45d8ec762af507cf3f64cc88f42f3dca5cd1e487 100644 (file)
@@ -4,6 +4,7 @@
 #include <string.h>
 #include "../localuser/localuser.h"
 #include "../localuser/localuserchannel.h"
+#include "../core/config.h"
 #include "../core/schedule.h"
 #include "../lib/irc_string.h"
 #include "../lib/splitline.h"
@@ -44,9 +45,16 @@ int rq_blocked = 0;
 /* log fd */
 FILE *rq_logfd;
 
+/* config */
+sstring *rq_qserver, *rq_qnick, *rq_sserver, *rq_snick;
+sstring *rq_nick, *rq_user, *rq_host, *rq_real, *rq_auth;
+int rq_authid;
+
 static int extloaded = 0;
 
 void _init(void) {
+  sstring *m;
+
   if(!rq_initblocks())
     return;
 
@@ -55,6 +63,22 @@ void _init(void) {
 
   extloaded = 1;
 
+  rq_nick = getcopyconfigitem("request", "nick", "R", BUFSIZE);
+  rq_user = getcopyconfigitem("request", "user", "request", BUFSIZE);
+  rq_host = getcopyconfigitem("request", "host", "request.quakenet.org", BUFSIZE);
+  rq_real = getcopyconfigitem("request", "real", "Service Request v0.23", BUFSIZE);
+  rq_auth = getcopyconfigitem("request", "auth", "R", BUFSIZE);
+  rq_qnick = getcopyconfigitem("request", "qnick", "Q", BUFSIZE);
+  rq_qserver = getcopyconfigitem("request", "qserver", "CServe.quakenet.org", BUFSIZE);
+  rq_snick = getcopyconfigitem("request", "snick", "S", BUFSIZE);
+  rq_sserver = getcopyconfigitem("request", "sserver", "services2.uk.quakenet.org", BUFSIZE);
+
+  m = getconfigitem("request", "authid");
+  if (!m)
+    rq_authid = 1780711;
+  else
+    rq_authid = atoi(m->content);
+
   rqcommands = newcommandtree();
 
   addcommandtotree(rqcommands, "showcommands", RQU_ANY, 1, &rqcmd_showcommands);
@@ -69,7 +93,7 @@ void _init(void) {
   
   qr_initrequest();
 
-  rq_logfd = fopen(RQ_LOGFILE, "a");
+  rq_logfd = fopen("logs/request.log", "a");
   
   scheduleoneshot(time(NULL) + 1, (ScheduleCallback)&rq_registeruser, NULL);
 }
@@ -96,6 +120,12 @@ void _fini(void) {
   rq_finifasttrack();
   qr_finirequest();
 
+  freesstring(rq_nick);
+  freesstring(rq_user);
+  freesstring(rq_host);
+  freesstring(rq_real);
+  freesstring(rq_auth);
+
   if (rq_logfd != NULL)
     fclose(rq_logfd);
 
@@ -105,15 +135,15 @@ void _fini(void) {
 void rq_registeruser(void) {
   channel *cp;
 
-  rqnick = registerlocaluserflags(RQ_REQUEST_NICK, RQ_REQUEST_USER, RQ_REQUEST_HOST,
-                             RQ_REQUEST_REAL, RQ_REQUEST_AUTH, RQ_REQUEST_AUTHID, 0,
+  rqnick = registerlocaluserflags(rq_nick->content, rq_user->content, rq_host->content,
+                             rq_real->content, rq_auth->content, rq_authid, 0,
                              UMODE_ACCOUNT | UMODE_SERVICE | UMODE_OPER,
                              rq_handler);
 
-  cp = findchannel(RQ_TLZ);
+  cp = findchannel("#twilightzone");
 
   if (cp == NULL)
-    localcreatechannel(rqnick, RQ_TLZ);
+    localcreatechannel(rqnick, "#twilightzone");
   else
     localjoinchannel(rqnick, cp);
 }
@@ -221,11 +251,11 @@ int rq_genericrequestcheck(nick *np, char *channelname, channel **cp, nick **qni
     return RQ_ERROR;
   }
 
-  *qnick = getnickbynick(RQ_QNICK);
+  *qnick = getnickbynick(rq_qnick->content);
 
-  if (*qnick == NULL || findserver(RQ_QSERVER) < 0) {
+  if (*qnick == NULL || findserver(rq_qserver->content) < 0) {
     sendnoticetouser(rqnick, np, "Error: %s does not seem to be online. "
-          "Please try again later.", RQ_QNICK);
+          "Please try again later.", rq_qnick->content);
 
     return RQ_ERROR;
   }
@@ -317,7 +347,7 @@ int rqcmd_request(void *user, int cargc, char **cargv) {
   qhand = getnumerichandlefromchanhash(cp->users, qnick->numeric);
 
   if (qhand != NULL) {
-    sendnoticetouser(rqnick, np, "Error: %s is already on that channel.", RQ_QNICK);
+    sendnoticetouser(rqnick, np, "Error: %s is already on that channel.", rq_qnick->content);
 
     rq_failed++;
 
@@ -332,7 +362,7 @@ int rqcmd_request(void *user, int cargc, char **cargv) {
     strftime(now, sizeof(now), "%c", localtime(&now_ts));
 
     fprintf(rq_logfd, "%s: request (%s) for %s from %s!%s@%s%s%s: Request was %s.\n",
-      now, RQ_QNICK, cp->index->name->content,
+      now, rq_qnick->content, cp->index->name->content,
       np->nick, np->ident, np->host->name->content, IsAccount(np)?"/":"", IsAccount(np)?np->authname:"",
       (retval == RQ_OK) ? "accepted" : "denied");
     fflush(rq_logfd);
@@ -367,11 +397,11 @@ int rqcmd_requestspamscan(void *user, int cargc, char **cargv) {
     return RQ_ERROR;
   }
 
-  snick = getnickbynick(RQ_SNICK);
+  snick = getnickbynick(rq_snick->content);
 
-  if (snick == NULL || findserver(RQ_SSERVER) < 0) {
+  if (snick == NULL || findserver(rq_sserver->content) < 0) {
     sendnoticetouser(rqnick, np, "Error: %s does not seem to be online. "
-            "Please try again later.", RQ_SNICK);
+            "Please try again later.", rq_snick->content);
 
     rq_failed++;
 
@@ -382,7 +412,7 @@ int rqcmd_requestspamscan(void *user, int cargc, char **cargv) {
   shand = getnumerichandlefromchanhash(cp->users, snick->numeric);
 
   if (shand != NULL) {
-    sendnoticetouser(rqnick, np, "Error: %s is already on that channel.", RQ_SNICK);
+    sendnoticetouser(rqnick, np, "Error: %s is already on that channel.", rq_snick->content);
 
     rq_failed++;
 
@@ -406,7 +436,7 @@ int rqcmd_requestspamscan(void *user, int cargc, char **cargv) {
     /* channel apparently doesn't have Q */
     
    sendnoticetouser(rqnick, np, "Error: You need %s in order to be "
-        "able to request %s.", RQ_QNICK, RQ_SNICK);
+        "able to request %s.", rq_qnick->content, rq_snick->content);
 
     rq_failed++;
 
index c962fa63a2ac9420209c982ac20e0d033ac9ff0e..7ead343e94e0fb8058254f580b8121999268c55e 100644 (file)
@@ -1,23 +1,8 @@
-#define RQ_TLZ "#twilightzone"
-
-#define RQ_QSERVER "CServe.quakenet.org"
-#define RQ_QNICK "Q"
-
-#define RQ_SSERVER "services2.uk.quakenet.org"
-#define RQ_SNICK "S"
-
-#define RQ_REQUEST_NICK "R"
-#define RQ_REQUEST_USER "request"
-#define RQ_REQUEST_HOST "request.quakenet.org"
-#define RQ_REQUEST_REAL "Service Request v0.23"
-#define RQ_REQUEST_AUTH "R"
-#define RQ_REQUEST_AUTHID 1780711
+#include "../lib/sstring.h"
 
 #define RQU_ANY 0
 #define RQU_OPER 1
 
-#define RQ_LOGFILE "logs/request.log"
-
 #define RQ_OK 0
 #define RQ_ERROR 1
 #define RQ_UNKNOWN 2
@@ -27,4 +12,9 @@ extern int rq_success;
 
 extern FILE *rq_logfd;
 
+/* config */
+extern sstring *rq_qserver, *rq_qnick, *rq_sserver, *rq_snick;
+extern sstring *rq_nick, *rq_user, *rq_host, *rq_real, *rq_auth;
+extern int rq_authid;
+
 char *rq_longtoduration(unsigned long interval);
index 1857b575a3c36b9c24a4658b27f77a5c9b87b004..f2e069889fcac4c0f2f9b630e3c481955bc5b916 100644 (file)
@@ -171,7 +171,7 @@ static void qr_result(requestrec *req, int outcome, char failcode, char *message
     strftime(now, sizeof(now), "%c", localtime(&now_ts));
     fprintf(rq_logfd, "%s: request (%s) for %s (%d unique users, "
             "%d total users) from %s!%s@%s%s%s: Request was %s (%c).\n", now,
-            (req->what == QR_CSERVE) ? RQ_QNICK : RQ_SNICK,
+            (req->what == QR_CSERVE) ? rq_qnick->content : rq_snick->content,
             req->cip->name->content, unique, total,
             tnp->nick, tnp->ident, tnp->host->name->content, IsAccount(tnp)?"/":"", IsAccount(tnp)?tnp->authname:"",
             (outcome == QR_OK) ? "accepted" : "denied", failcode);
@@ -182,10 +182,10 @@ static void qr_result(requestrec *req, int outcome, char failcode, char *message
     if (req->what == QR_SPAMSCAN) {
       /* Add S */
 
-      if (!(snp=getnickbynick(RQ_SNICK))) {
+      if (!(snp=getnickbynick(rq_snick->content))) {
         sendnoticetouser(rqnick, tnp,
                          "Cannot find %s on the network. "
-                         "Please try your request again later.", RQ_SNICK);
+                         "Please try your request again later.", rq_snick->content);
 
         free(req);
         return;
@@ -193,7 +193,7 @@ static void qr_result(requestrec *req, int outcome, char failcode, char *message
 
       sendnoticetouser(rqnick, tnp, "Success! %s has been added to '%s' "
                         "(contact #help if you require further assistance).",
-                        RQ_SNICK, req->cip->name->content);
+                        rq_snick->content, req->cip->name->content);
 
       /* auth */
       user = (sstring *)getcopyconfigitem("request", "user", "R", 30);
@@ -298,7 +298,7 @@ static int qr_checksize(chanindex *cip, int what, char *failcode) {
 
   /* make sure we can actually add Q */
   if (what == QR_CSERVE) {
-    qbot = getnickbynick(RQ_QNICK);
+    qbot = getnickbynick(rq_qnick->content);
 
     if (!qbot)
       return 0;
@@ -405,7 +405,7 @@ void qr_handle_notice(nick *sender, char *message) {
   int delrequest = 0, state, who;
   requestrec *nextreq;
 
-  if (!ircd_strcmp(sender->nick, RQ_QNICK) && nextqreq) {
+  if (!ircd_strcmp(sender->nick, rq_qnick->content) && nextqreq) {
     /* Message from Q */
     if (!ircd_strcmp(message,"Done.")) {
       /* Q added the channel: delete from L and tell the user. */
@@ -431,7 +431,7 @@ void qr_handle_notice(nick *sender, char *message) {
     }
   }
 
-  if (!ircd_strcmp(sender->nick, RQ_QNICK)) {
+  if (!ircd_strcmp(sender->nick, rq_qnick->content)) {
     who = QR_Q;
     state = (who == QR_Q) ? rqstate : rlstate;
     nextreq = (who == QR_Q) ? nextreqq : nextreql;
@@ -616,7 +616,7 @@ void qr_handle_notice(nick *sender, char *message) {
               qr_result(nextreq, QR_OK, '-', "OK");
             } else {
                 qr_result(nextreq, QR_FAILED, failcode,
-                          "Error: Sorry, Your channel '%s' does not require %s. Please try again in a few days.", nextreq->cip->name->content, RQ_SNICK);
+                          "Error: Sorry, Your channel '%s' does not require %s. Please try again in a few days.", nextreq->cip->name->content, rq_snick->content);
        
               qr_toosmall++;
             }
@@ -763,7 +763,7 @@ int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *qnick) {
   sendnoticetouser(rqnick, sender,
                    "Checking your %s access in '%s'. "
                    "This may take a while, please be patient...",
-                   RQ_QNICK, cip->name->content);
+                   rq_qnick->content, cip->name->content);
 
   return RQ_UNKNOWN;
 }