X-Git-Url: http://git.pk910.de/?p=srvx.git;a=blobdiff_plain;f=src%2Fproto-p10.c;h=91247e251606f974d96be9bbb3755d4de2ed645b;hp=dc0829d07e9ca6dc8776bf924441e38e0c979fed;hb=093f707afd62edb079b5f64d165ee128f912e71f;hpb=455b2a8b15ea97be4bffe3a8ac8b5a3ac8ce39c5 diff --git a/src/proto-p10.c b/src/proto-p10.c index dc0829d..91247e2 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -1786,41 +1786,41 @@ static CMD_FUNC(cmd_relay) //ok someone relayed something to us! if(strcmp("LQ", argv[2]) == 0) { //oooh thats exciting - we've got a LOC Query! :D - //LQ !ABADE pk910 80.153.5.212 server.zoelle1.de ~watchcat :test //ok let's check the login datas struct handle_info *hi; char tmp[MAXLEN], tmp2[MAXLEN]; sprintf(tmp, "%s@%s",argv[7],argv[6]); sprintf(tmp2, "%s@%s",argv[7],argv[5]); if((hi = checklogin(argv[4],argv[argc-1],&argv[3][1],tmp,tmp2))) { - //login ok - struct devnull_class *th; - char devnull[512]; - if(hi->devnull && (th = devnull_get(hi->devnull))) { - const char *devnull_modes = DEVNULL_MODES; - int ii, flen; - char flags[50]; - for (ii=flen=0; devnull_modes[ii]; ++ii) - if (th->modes & (1 << ii)) - flags[flen++] = devnull_modes[ii]; - flags[flen] = 0; - sprintf(devnull, "+%s %s %lu %lu",flags,th->name,th->maxchan,th->maxsendq); - } else { - devnull[0] = 0; - } - if(!HANDLE_FLAGGED(hi, AUTOHIDE)) { - sprintf(tmp,"%s LA %s 0 %s\n",argv[3],hi->handle,devnull); - } else if(getfakehost(argv[4])) { - sprintf(tmp,"%s LA %s %s %s\n",argv[3],hi->handle,getfakehost(argv[4]),devnull); - } else { - extern const char *hidden_host_suffix; - sprintf(tmp,"%s LA %s %s.%s %s\n",argv[3],hi->handle,hi->handle,hidden_host_suffix,devnull); - } - irc_relay(tmp); + //login ok + struct devnull_class th = devnull_user_get_class(hi); + char devnull[MAXLEN]; + + if(th.modes) { + const char *devnull_modes = DEVNULL_MODES; + int ii, flen = 0; + char flags[50]; + for (ii = 0; devnull_modes[ii]; ++ii) + if(th.modes & (1 << ii)) + flags[flen++] = devnull_modes[ii]; + flags[flen] = 0; + sprintf(devnull, "+%s %s %lu %lu", flags, (th.name ? th.name : "custom"), (DEVNULL_HAS_PRIV(&th, CHANLIMIT) ? th.maxchan : 0), (DEVNULL_HAS_PRIV(&th, MAXSENDQ) ? th.maxsendq : 0)); + } else + devnull[0] = 0; + + if(!HANDLE_FLAGGED(hi, AUTOHIDE)) + sprintf(tmp,"%s LA %s 0 %s\n",argv[3],hi->handle,devnull); + else if(getfakehost(argv[4])) + sprintf(tmp,"%s LA %s %s %s\n",argv[3],hi->handle,getfakehost(argv[4]),devnull); + else { + extern const char *hidden_host_suffix; + sprintf(tmp,"%s LA %s %s.%s %s\n",argv[3],hi->handle,hi->handle,hidden_host_suffix,devnull); + } + irc_relay(tmp); } else { - //login rejected - sprintf(tmp,"%s LR\n",argv[3]); - irc_relay(tmp); + //login rejected + sprintf(tmp,"%s LR\n",argv[3]); + irc_relay(tmp); } } else if(strcmp("UC", argv[2]) == 0) { char tmp[MAXLEN];