Server Help

ASSS Custom Projects - [Extra] ?qip enhancement

Siaon - Fri Apr 09, 2004 10:12 am
Post subject: [Extra] ?qip enhancement
Replace in aliasdb.c

Code: Show/Hide
local helptext_t qip_help =
"Targets: none or player\n"
"Args: -i<ip address or pattern> -l<limit>\n"
"Queries the alias database for players connecting from that ip.\n"
"Queries can be an exact address, ?qip -i216.34.65.%, or ?qip -i216.34.65.0/24.\n";

local void Cqip(const char *params, Player *p, const Target *target)
{
    char ip [256];
    unsigned int limit;

    if (target->type != T_ARENA && target->type != T_PLAYER)
        return;

    if (!strstr(params,"-i") && target->type != T_PLAYER)
        return;

    p->flags.during_query = 1;

    if (strstr(params,"-l"))
    {
        limit = atoi(strstr(params,"-l")+2);

        if ( limit < 1 )
            limit = 1;

        if ( limit > 500 )
            limit = 500;
    } else
    {
        limit = 50;
    }

    if (target->type == T_PLAYER)
    {
        db->Query(dbcb_nameipmac, p, 1,
            "select name, inet_ntoa(ip), macid, to_days(now()) - to_days(lastseen) as daysago "
            "from " TABLE_NAME " "
            "where ip = inet_aton(?) "
            "order by name "
            "limit # ",
            target->u.p->ipaddr, limit);
    }
    else
    {
        if (strchr(strstr(params,"-i")+2, ' '))
        {
            ip [strchr(strstr(params,"-i")+2, ' ')-params-2] = 0;

            strncpy ( ip, strstr(params,"-i")+2, strchr(strstr(params,"-i")+2, ' ')-params-2);
        }
        else
        {
            strcpy ( ip, strstr(params,"-i")+2);
        }

        if (strchr(params, '/'))
        {
            char baseip[16];
            const char *next;
            unsigned int bits;

            next = delimcpy(baseip, ip, sizeof(baseip), '/');
            if (!next) return;
            bits = atoi(next);

            db->Query(dbcb_nameipmac, p, 1,
                "select name, inet_ntoa(ip), macid, to_days(now()) - to_days(lastseen) as daysago "
                "from " TABLE_NAME " "
                "where (ip & ((~0) << (32-#))) = (inet_aton(?) & ((~0) << (32-#))) "
                "order by name "
                "limit # ",
                bits, baseip, bits, limit);
        }
        else if (strchr(ip, '%'))
        {
            /* this is going to be a really really slow query... */
            db->Query(dbcb_nameipmac, p, 1,
                "select name, inet_ntoa(ip), macid, to_days(now()) - to_days(lastseen) as daysago "
                "from " TABLE_NAME " "
                "where inet_ntoa(ip) like ? "
                "order by name "
                "limit #",
                ip, limit);
        }
        else /* try exact ip match */
        {
            db->Query(dbcb_nameipmac, p, 1,
                "select name, inet_ntoa(ip), macid, to_days(now()) - to_days(lastseen) as daysago "
                "from " TABLE_NAME " "
                "where ip = inet_aton(?) "
                "order by name "
                "limit # ",
                ip, limit);
        }
    }
}

Qndre - Tue Apr 13, 2004 2:02 pm
Post subject:
I don't understand why it's called ?qip
Mine GO BOOM - Tue Apr 13, 2004 5:13 pm
Post subject:
Q, for query, IP for what method to query. Thus, as a shorthand for queryip, you remove a bunch of letters to make it qip.
CypherJF - Tue Apr 13, 2004 7:08 pm
Post subject:
technically one could 'alias' the function though to have a ?queryip correct? icon_smile.gif
Dr Brain - Tue Apr 13, 2004 8:14 pm
Post subject:
I'm not sure ASSS has command aliases. A module itself could make them, but I don't think you can do it externally (at the moment).
Siaon - Sat Apr 24, 2004 10:54 am
Post subject:
I'm working on it, I'll post it here asap.
Anonymous - Thu Apr 29, 2004 5:11 pm
Post subject:
Stop nesting redundant str*** calls... this is a realistic language, you are supposed to actually think about what's going on when you issue a call. Not to mention that it makes your code harder to read.
All times are -5 GMT
View topic
Powered by phpBB 2.0 .0.11 © 2001 phpBB Group