From: Paul Date: Fri, 30 May 2008 18:35:58 +0000 (+0100) Subject: sync R from D back into this branch X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/95440fe7b119e1745d135e0ef000dcfbfee36f40 sync R from D back into this branch --- diff --git a/request/lrequest.c b/request/lrequest.c index ac1d53a0..a82ab4ce 100644 --- a/request/lrequest.c +++ b/request/lrequest.c @@ -15,7 +15,7 @@ int lr_floodattempts = 0; #define min(a,b) ((a > b) ? b : a) -int lr_requestl(nick *svc, nick *np, channel *cp, nick *lnick) { +int lr_requestl(nick *svc, nick *np, channel *cp, nick *qnick) { chanfix *cf; regop *rolist[LR_TOPX], *ro; int i, rocount; @@ -70,26 +70,27 @@ int lr_requestl(nick *svc, nick *np, channel *cp, nick *lnick) { } sendnoticetouser(svc, np, "Sorry You do not meet the " - "requirements to request L. Please Try again in an hour. " - "(see http://www.quakenet.org/faq/faq.php?c=3&f=112 )"); + "requirements to request %s. Please Try again in an hour. " + "(see http://www.quakenet.org/faq/faq.php?c=1&f=239#239 )", RQ_QNICK); lr_scoretoolow++; return RQ_ERROR; } - sendmessagetouser(svc, lnick, "addchan %s #%s %s", cp->index->name->content, + + sendmessagetouser(svc, qnick, "addchan %s #%s +jp upgrade %s", cp->index->name->content, np->authname, np->nick); - sendnoticetouser(svc, np, "Requirements met, L should be added. Contact #help" - " should further assistance be required."); + sendnoticetouser(svc, np, "Requirements met, %s should be added. Contact #help" + " should further assistance be required.", RQ_QNICK); return RQ_OK; } void lr_requeststats(nick *rqnick, nick *np) { - sendnoticetouser(rqnick, np, "- No registered ops (L): %d", lr_noregops); - sendnoticetouser(rqnick, np, "- Score too low (L): %d", lr_scoretoolow); - sendnoticetouser(rqnick, np, "- Not in top%d (L): %d", LR_TOPX, lr_top5); - sendnoticetouser(rqnick, np, "- Floods (L): %d", lr_floodattempts); + sendnoticetouser(rqnick, np, "- No registered ops (Q): %d", lr_noregops); + sendnoticetouser(rqnick, np, "- Score too low (Q): %d", lr_scoretoolow); + sendnoticetouser(rqnick, np, "- Not in top%d (Q): %d", LR_TOPX, lr_top5); + sendnoticetouser(rqnick, np, "- Floods (Q): %d", lr_floodattempts); } diff --git a/request/lrequest.h b/request/lrequest.h index aa4a1eed..4f0c1f97 100644 --- a/request/lrequest.h +++ b/request/lrequest.h @@ -5,7 +5,7 @@ #define LR_TOPX 5 #define LR_CFSCORE 12 -#define LR_MAXCHANLEN 29 +#define LR_MAXCHANLEN 89 int lr_requestl(nick *svc, nick *np, channel *cp, nick *lnick); void lr_requeststats(nick *rqnick, nick *np); diff --git a/request/request.c b/request/request.c index 14cdcb49..425110b5 100644 --- a/request/request.c +++ b/request/request.c @@ -118,8 +118,8 @@ void _fini(void) { void rq_registeruser(void) { channel *cp; - rqnick = registerlocaluser(RQ_REQUEST_NICK, RQ_REQUEST_USER, RQ_REQUEST_HOST, - RQ_REQUEST_REAL, RQ_REQUEST_AUTH, + rqnick = registerlocaluserwithuserid(RQ_REQUEST_NICK, RQ_REQUEST_USER, RQ_REQUEST_HOST, + RQ_REQUEST_REAL, RQ_REQUEST_AUTH, 1780711, UMODE_ACCOUNT | UMODE_SERVICE | UMODE_OPER, rq_handler); @@ -225,7 +225,7 @@ int rqcmd_showcommands(void *user, int cargc, char **cargv) { return 0; } -int rq_genericrequestcheck(nick *np, char *channelname, channel **cp, nick **lnick, nick **qnick) { +int rq_genericrequestcheck(nick *np, char *channelname, channel **cp, nick **qnick) { unsigned long *userhand; rq_block *block; @@ -244,15 +244,6 @@ int rq_genericrequestcheck(nick *np, char *channelname, channel **cp, nick **lni return RQ_ERROR; } - *lnick = getnickbynick(RQ_LNICK); - - if (*lnick == NULL || findserver(RQ_LSERVER) < 0) { - sendnoticetouser(rqnick, np, "Error: %s does not seem to be online. " - "Try again later.", RQ_LNICK); - - return RQ_ERROR; - } - *qnick = getnickbynick(RQ_QNICK); if (*qnick == NULL || findserver(RQ_QSERVER) < 0) { @@ -325,8 +316,8 @@ int rq_genericrequestcheck(nick *np, char *channelname, channel **cp, nick **lni int rqcmd_request(void *user, int cargc, char **cargv) { nick *np = (nick*)user; - nick *lnick, *qnick; - unsigned long *lhand, *qhand; + nick *qnick; + unsigned long *qhand; channel *cp; int retval; time_t now_ts; @@ -340,14 +331,12 @@ int rqcmd_request(void *user, int cargc, char **cargv) { rq_count++; - if (rq_genericrequestcheck(np, cargv[0], &cp, &lnick, &qnick) == RQ_ERROR) { + if (rq_genericrequestcheck(np, cargv[0], &cp, &qnick) == RQ_ERROR) { rq_failed++; return RQ_ERROR; } - lhand = getnumerichandlefromchanhash(cp->users, lnick->numeric); - qhand = getnumerichandlefromchanhash(cp->users, qnick->numeric); if (qhand != NULL) { @@ -360,30 +349,15 @@ int rqcmd_request(void *user, int cargc, char **cargv) { retval = RQ_ERROR; - if (lhand == NULL && qhand == NULL) { - /* try 'instant' Q request */ - retval = qr_instantrequestq(np, cp); - } - - if (retval == RQ_ERROR) { - if (lhand == NULL) { - /* user 'wants' L */ - - retval = lr_requestl(rqnick, np, cp, lnick); + retval = lr_requestl(rqnick, np, cp, qnick); - if (rq_logfd != NULL) { - now[0] = '\0'; - now_ts = time(NULL); - strftime(now, sizeof(now), "%c", localtime(&now_ts)); + if (rq_logfd != NULL) { + now[0] = '\0'; + now_ts = time(NULL); + strftime(now, sizeof(now), "%c", localtime(&now_ts)); - fprintf(rq_logfd, "%s: request (%s) for %s from %s: Request was %s.\n", now, RQ_LNICK, cp->index->name->content, np->nick, (retval == RQ_OK) ? "accepted" : "denied"); - fflush(rq_logfd); - } - } else { - /* user 'wants' Q */ - - retval = qr_requestq(rqnick, np, cp, lnick, qnick); - } + fprintf(rq_logfd, "%s: request (%s) for %s from %s: Request was %s.\n", now, RQ_QNICK, cp->index->name->content, np->nick, (retval == RQ_OK) ? "accepted" : "denied"); + fflush(rq_logfd); } if (retval == RQ_ERROR) @@ -397,8 +371,8 @@ int rqcmd_request(void *user, int cargc, char **cargv) { int rqcmd_requestspamscan(void *user, int cargc, char **cargv) { nick *np = (nick*)user; channel *cp; - nick *lnick, *qnick, *snick; - unsigned long *lhand, *qhand, *shand; + nick *qnick, *snick; + unsigned long *qhand, *shand; int retval; if (cargc < 1) { @@ -409,7 +383,7 @@ int rqcmd_requestspamscan(void *user, int cargc, char **cargv) { rq_count++; - if (rq_genericrequestcheck(np, cargv[0], &cp, &lnick, &qnick) == RQ_ERROR) { + if (rq_genericrequestcheck(np, cargv[0], &cp, &qnick) == RQ_ERROR) { rq_failed++; return RQ_ERROR; @@ -437,13 +411,12 @@ int rqcmd_requestspamscan(void *user, int cargc, char **cargv) { return RQ_ERROR; } - /* we need either L or Q */ - lhand = getnumerichandlefromchanhash(cp->users, lnick->numeric); + /* we need Q */ qhand = getnumerichandlefromchanhash(cp->users, qnick->numeric); - if (lhand || qhand) { + if (qhand) { /* great, now try to request */ - retval = qr_requests(rqnick, np, cp, lnick, qnick); + retval = qr_requests(rqnick, np, cp, qnick); if (retval == RQ_OK) rq_success++; @@ -452,10 +425,10 @@ int rqcmd_requestspamscan(void *user, int cargc, char **cargv) { return retval; } else { - /* channel apparently doesn't have L or Q */ + /* channel apparently doesn't have Q */ - sendnoticetouser(rqnick, np, "Error: You need %s or %s in order to be " - "able to request %s.", RQ_LNICK, RQ_QNICK, RQ_SNICK); + sendnoticetouser(rqnick, np, "Error: You need %s in order to be " + "able to request %s.", RQ_QNICK, RQ_SNICK); rq_failed++; diff --git a/request/request.h b/request/request.h index eba96c2d..f1270749 100644 --- a/request/request.h +++ b/request/request.h @@ -1,12 +1,9 @@ #define RQ_TLZ "#twilightzone" -#define RQ_LSERVER "lightweight.quakenet.org" -#define RQ_LNICK "L" - #define RQ_QSERVER "CServe.quakenet.org" #define RQ_QNICK "Q" -#define RQ_SSERVER "services.no.quakenet.org" +#define RQ_SSERVER "services.de.quakenet.org" #define RQ_SNICK "S" #define RQ_REQUEST_NICK "R" diff --git a/request/sqrequest.c b/request/sqrequest.c index 902872e5..00ae73b4 100644 --- a/request/sqrequest.c +++ b/request/sqrequest.c @@ -175,31 +175,7 @@ static void qr_result(requestrec *req, int outcome, char failcode, char *message } if (outcome==QR_OK) { - if (req->what == QR_CSERVE) { - /* Delete L, add Q. Check that they both exist first, though. */ - - if (!(lnp=getnickbynick(RQ_LNICK)) || !(qnp=getnickbynick(RQ_QNICK))) { - sendnoticetouser(rqnick, tnp, - "Error: Cannot find %s and %s on the network. " - "Please request again later.", RQ_LNICK, RQ_QNICK); - free(req); - return; - } - - if ( !IsAccount(lnp) ) { - sendnoticetouser(rqnick, tnp, "Internal Error Occured: L is not authed. Contact #help"); - free(req); - return; - } - - /* /msg Q ADDCHAN */ - sendmessagetouser(rqnick, qnp, "ADDCHAN %s +ap #%s upgrade", - req->cip->name->content, - np->authname); - - sendnoticetouser(rqnick, tnp, "Adding %s to channel, please wait...", - RQ_QNICK); - } else if (req->what == QR_SPAMSCAN) { + if (req->what == QR_SPAMSCAN) { /* Add S */ if (!(snp=getnickbynick(RQ_SNICK))) { @@ -423,41 +399,17 @@ void qr_handle_notice(nick *sender, char *message) { int delrequest = 0, state, who; requestrec *nextreq; -/* logcp = findchannel("#qnet.request"); - - if (logcp) - sendmessagetochannel(rqnick, logcp, "%s: %s - %d %d %x %x", sender->nick, message, rlstate, rqstate, nextreql, nextreqq); -*/ if (!ircd_strcmp(sender->nick, RQ_QNICK) && nextqreq) { /* Message from Q */ if (!ircd_strcmp(message,"Done.")) { /* Q added the channel: delete from L and tell the user. */ /* If L has conspired to vanish between the request and the outcome, * we have a chan with Q and L... too bad. */ - - if ((np=getnickbynick(RQ_LNICK))) { - sendmessagetouser(rqnick, np, "SENDCHANLEV %s %s", - nextqreq->cip->name->content, RQ_QNICK); - - sendmessagetouser(rqnick, np, "DELCHAN %s", - nextqreq->cip->name->content); - } - - if ((np=getnickbynumeric(nextqreq->reqnumeric))) { - sendnoticetouser(rqnick, np, "Request completed. %s added.", RQ_QNICK); - } delrequest = 1; } else if (!ircd_strcmp(message,"That channel already exists.")) { - if ((np=getnickbynumeric(nextqreq->reqnumeric))) { - sendnoticetouser(rqnick, np, - "Your channel '%s' appears to have %s already " - "(it may be suspended).", nextqreq->cip->name->content, RQ_QNICK); - - qr_suspended++; delrequest = 1; - } } /* For either of the two messages above we want to delete the request @@ -473,8 +425,8 @@ void qr_handle_notice(nick *sender, char *message) { } } - if (!ircd_strcmp(sender->nick, RQ_LNICK) || !ircd_strcmp(sender->nick, RQ_QNICK)) { - who = !ircd_strcmp(sender->nick, RQ_LNICK) ? QR_L : QR_Q; + if (!ircd_strcmp(sender->nick, RQ_QNICK)) { + who = QR_Q; state = (who == QR_Q) ? rqstate : rlstate; nextreq = (who == QR_Q) ? nextreqq : nextreql; @@ -490,7 +442,6 @@ void qr_handle_notice(nick *sender, char *message) { (!ircd_strncmp(message,"Known users on",14) && who == QR_Q) ) { /* Looks like the right message. Let's find a channel name */ - for (ch=message;*ch;ch++) if (*ch=='#') break; @@ -504,12 +455,11 @@ void qr_handle_notice(nick *sender, char *message) { /* chop off any remaining words */ chop = ch; while (*(chop++)) { - if (*chop == ' ') { + if (*chop == ' ' || *chop == ':') { *chop = '\0'; break; } } - if (!(cip=findchanindex(ch))) { Error("qrequest",ERR_WARNING, "Unable to find channel from L/Q message: %s",ch); @@ -523,7 +473,6 @@ void qr_handle_notice(nick *sender, char *message) { rlstate = QRLstate_AWAITINGUSER; else rqstate = QRLstate_AWAITINGUSER; - return; } else { /* Uh-oh, not the channel we wanted. Something is fucked @@ -587,7 +536,6 @@ void qr_handle_notice(nick *sender, char *message) { /* Oh dear, we got to the end of the chanlev in this state. * This means that we didn't find the user. */ - qr_result(nextreq, QR_FAILED, 'X', "Error: You are not known on %s.", nextreq->cip->name->content); @@ -632,13 +580,28 @@ void qr_handle_notice(nick *sender, char *message) { /* This is not the user you are looking for */ return; } - /* Check for owner flag. Both branches of this if will * take the request off the list, one way or the other. */ - if (strchr(ch, 'n')) { + + /* chop off any remaining words */ + chop = ch; + while (*(chop++)) { + if (*chop != ' ' ) { + break; + } + } + /* chop off any remaining words */ + ch = chop; + while (*(chop++)) { + if (*chop == ' ' || *chop == ':') { + *chop = '\0'; + break; + } + } + + if (strchr(ch, 'n')) { char failcode; /* They iz teh +n! */ - /* Note: We're checking for blocks kind of late, so the request system gets a chance to send other error messages first (like 'no chanstats', 'not known on channel', etc.). This is required @@ -646,15 +609,9 @@ void qr_handle_notice(nick *sender, char *message) { if (qr_checksize(nextreq->cip, nextreq->what, &failcode) && !qr_blockcheck(nextreq)) { qr_result(nextreq, QR_OK, '-', "OK"); } else { - if (nextreq->what == QR_CSERVE) { - qr_result(nextreq, QR_FAILED, failcode, - "Error: Sorry, Your channel '%s' does not meet the requirements " - "for %s. Please continue to use %s.", nextreq->cip->name->content, RQ_QNICK, RQ_LNICK); - } 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); - } - + qr_toosmall++; } } else { @@ -706,57 +663,6 @@ void qr_handle_notice(nick *sender, char *message) { */ int qr_requestq(nick *rqnick, nick *sender, channel *cp, nick *lnick, nick *qnick) { - chanindex *cip = cp->index; - - /* Check: - * - we have some form of channel stats for the channel - * - * Note that the actual channel stats will not be checked - * until we're sure the user has +n on the channel. - */ - - if (rq_isspam(sender)) { - sendnoticetouser(rqnick, sender, "Error: Do not flood the request system." - " Try again in %s.", rq_longtoduration(rq_blocktime(sender))); - - return RQ_ERROR; - } - - if (!cip->exts[csext]) { - sendnoticetouser(rqnick, sender, - "Error: No historical record exists for %s.", - cip->name->content); - - qr_nohist++; - - return RQ_ERROR; - } - - /* Request stats from L */ - sendmessagetouser(rqnick, lnick, "CHANLEV %s", cip->name->content); - - /* Sort out a request record */ - if (lastreql) { - lastreql->next = (requestrec *)malloc(sizeof(requestrec)); - lastreql=lastreql->next; - } else { - lastreql=nextreql=(requestrec *)malloc(sizeof(requestrec)); - } - - lastreql->next = NULL; - lastreql->cip = cip; - lastreql->what = QR_CSERVE; - lastreql->who = QR_L; - lastreql->reqnumeric = sender->numeric; - - if (rlstate == QRLstate_IDLE) - rlstate = QRLstate_AWAITINGCHAN; - - sendnoticetouser(rqnick, sender, - "Checking your %s access. " - "This may take a while, please be patient...", RQ_LNICK); - - /* we don't know yet whether the request was successful */ return RQ_UNKNOWN; } @@ -816,7 +722,7 @@ int qr_instantrequestq(nick *sender, channel *cp) { return RQ_OK; } -int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *lnick, nick *qnick) { +int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *qnick) { chanindex *cip = cp->index; int who = 0; requestrec *nextreq, *lastreq; @@ -829,16 +735,7 @@ int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *lnick, nick *qnic } /* check which service is on the channel */ - if (getnumerichandlefromchanhash(cp->users, lnick->numeric) != NULL) { - /* we've found L */ - who = QR_L; - - /* Request stats from L */ - sendmessagetouser(rqnick, lnick, "CHANLEV %s", cip->name->content); - - if (rlstate == QRLstate_IDLE) - rlstate = QRLstate_AWAITINGCHAN; - } else if (getnumerichandlefromchanhash(cp->users, qnick->numeric) != NULL) { + if (getnumerichandlefromchanhash(cp->users, qnick->numeric) != NULL) { /* we've found Q */ who = QR_Q; @@ -849,8 +746,8 @@ int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *lnick, nick *qnic rqstate = QRLstate_AWAITINGCHAN; } /* 'else' cannot happen as R has already checked whether the user has L or Q */ - lastreq = (who == QR_Q) ? lastreqq : lastreql; - nextreq = (who == QR_Q) ? nextreqq : nextreql; + lastreq = lastreqq; + nextreq = nextreqq; /* Sort out a request record */ if (lastreq) { @@ -865,18 +762,13 @@ int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *lnick, nick *qnic lastreq->what = QR_SPAMSCAN; lastreq->reqnumeric = sender->numeric; - if (who == QR_Q) { - nextreqq = nextreq; - lastreqq = lastreq; - } else { - nextreql = nextreq; - lastreql = lastreq; - } + nextreqq = nextreq; + lastreqq = lastreq; - sendnoticetouser(rqnick, sender, + sendnoticetouser(rqnick, sender, "Checking your %s access. " "This may take a while, please be patient...", - who == QR_Q ? RQ_QNICK : RQ_LNICK); + RQ_QNICK); return RQ_UNKNOWN; } @@ -910,11 +802,11 @@ void qr_finirequest(void) { } void qr_requeststats(nick *rqnick, nick *np) { - sendnoticetouser(rqnick, np, "- Suspended (Q): %d", qr_suspended); - sendnoticetouser(rqnick, np, "- No chanstats (Q/S): %d", qr_nohist); - sendnoticetouser(rqnick, np, "- Too small (Q/S): %d", qr_toosmall); - sendnoticetouser(rqnick, np, "- User was not on chanlev (Q/S): %d", qr_nochanlev); - sendnoticetouser(rqnick, np, "- User was not the owner (Q/S): %d", qr_notowner); + sendnoticetouser(rqnick, np, "- Suspended (S): %d", qr_suspended); + sendnoticetouser(rqnick, np, "- No chanstats (S): %d", qr_nohist); + sendnoticetouser(rqnick, np, "- Too small (S): %d", qr_toosmall); + sendnoticetouser(rqnick, np, "- User was not on chanlev (S): %d", qr_nochanlev); + sendnoticetouser(rqnick, np, "- User was not the owner (S): %d", qr_notowner); sendnoticetouser(rqnick, np, "- A: %d", qr_a); sendnoticetouser(rqnick, np, "- B: %d", qr_b); sendnoticetouser(rqnick, np, "- C: %d", qr_c); diff --git a/request/sqrequest.h b/request/sqrequest.h index afe7b362..100b25bb 100644 --- a/request/sqrequest.h +++ b/request/sqrequest.h @@ -2,7 +2,7 @@ #include "../channel/channel.h" #define QR_REQUIREDSIZE_CSERVE 15 -#define QR_REQUIREDSIZE_SPAMSCAN 120 +#define QR_REQUIREDSIZE_SPAMSCAN 75 #define QR_TOPX 5 #define QR_AUTHEDPCT_SPAMSCANMIN 25 #define QR_AUTHEDPCT_SCALE 35 @@ -21,6 +21,6 @@ void qr_initrequest(void); void qr_finirequest(void); int qr_requestq(nick *rqnick, nick *sender, channel *cp, nick *lnick, nick *qnick); int qr_instantrequestq(nick *sender, channel *cp); -int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *lnick, nick *qnick); +int qr_requests(nick *rqnick, nick *sender, channel *cp, nick *qnick); void qr_requeststats(nick *rqnick, nick *np); void qr_handle_notice(nick *sender, char *message);