| View previous topic :: View next topic |
| Author |
Message |
honeybee Halfop
Joined: 01 Jan 2006 Posts: 80
|
Posted: Wed Aug 19, 2009 10:31 am Post subject: statsmod host issue |
|
|
Stats.mod works fine but when it comes to hidden quakenet host it adds hosts with wildcard and sometimes it matches with different user's host here is an example.
| Code: | | *!?user@*.Quakenet.org |
I want to change it to *!*@user.Quakenet instead of *!?ident@QUake but same pattern (*!?ident@host) if user is not logged in.
All help appreciated. |
|
| Back to top |
|
 |
while Voice
Joined: 11 Jul 2009 Posts: 34 Location: beat mort
|
Posted: Mon Jun 16, 2014 5:51 am Post subject: |
|
|
hello. i know it's an old topic but i'm interested in this to, tried to look where the bot adds the hostmask but ... if the user is logged to add it's host (*!*@user.undernet.org) if not to add the host as it is *!*@host, not wildcards.
i managed to do this with perplexa's stats tcl but can't seem to find where is this mod.
thanks.
edit: no luck so far _________________
 |
|
| Back to top |
|
 |
while Voice
Joined: 11 Jul 2009 Posts: 34 Location: beat mort
|
Posted: Thu Jun 19, 2014 1:04 pm Post subject: |
|
|
after much trial and error i found that the file which to modify is misc.c(maybe not the only one)
so if you have any idea what to do here to take the host of an user logged in or not like the eggdrop does, you're more then welcome to give a hint.
version v1.3.3.dev1
part to be modified:
| Code: |
/* maskstricthost():
* basically the same as maskhost() from src/misc.c, but _never_ stripts
* "~+-^=" off the host
* maskhost() version: * $Id: misc.c,v 1.30 2000/10/27 19:27:32 fabian Exp $
*/
static void maskstricthost(const char *s, char *nw)
{
register const char *p, *q, *e, *f;
int i;
*nw++ = '*';
*nw++ = '!';
p = (q = strchr(s, '!')) ? q + 1 : s;
/* Strip of any nick, if a username is found, use last 8 chars */
if ((q = strchr(p, '@'))) {
int fl = 0;
if ((q - p) > 9) {
nw[0] = '*';
p = q - 7;
i = 1;
} else
i = 0;
while (*p != '@') {
if (!fl && strchr("~+-^=", *p)) {
// if (strict_host)
nw[i] = '?';
// else
// i--;
} else
nw[i] = *p;
fl++;
p++;
i++;
}
nw[i++] = '@';
q++;
} else {
nw[0] = '*';
nw[1] = '@';
i = 2;
q = s;
}
nw += i;
e = NULL;
/* Now q points to the hostname, i point to where to put the mask */
if ((!(p = strchr(q, '.')) || !(e = strchr(p + 1, '.'))) && !strchr(q, ':'))
/* TLD or 2 part host */
strcpy(nw, q);
else {
if (e == NULL) { /* IPv6 address? */
const char *mask_str;
f = strrchr(q, ':');
if (strchr(f, '.')) { /* IPv4 wrapped in an IPv6? */
f = strrchr(f, '.');
mask_str = ".*";
} else /* ... no, true IPv6. */
mask_str = ":*";
strncpy(nw, q, f - q);
/* No need to nw[f-q] = 0 here, as the strcpy below will
* terminate the string for us.
*/
nw += (f - q);
strcpy(nw, mask_str);
} else {
for (f = e; *f; f++);
f--;
if (*f >= '0' && *f <= '9') { /* Numeric IP address */
while (*f != '.')
f--;
strncpy(nw, q, f - q);
/* No need to nw[f-q] = 0 here, as the strcpy below will
* terminate the string for us.
*/
nw += (f - q);
strcpy(nw, ".*");
} else { /* Normal host >= 3 parts */
/* a.b.c -> *.b.c
* a.b.c.d -> *.b.c.d if tld is a country (2 chars)
* OR *.c.d if tld is com/edu/etc (3 chars)
* a.b.c.d.e -> *.c.d.e etc
*/
const char *x = strchr(e + 1, '.');
if (!x)
x = p;
else if (strchr(x + 1, '.'))
x = e;
else if (strlen(x) == 3)
x = p;
else
x = e;
sprintf(nw, "*%s", x);
}
}
}
}
|
_________________
 |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|