[NeoStats-Devel] [Commits] r23 - trunk
[email protected] Sat, 13 Aug 2005 01:03:55 +1000
| Newsgroups | gmane.comp.neostats.devel |
|---|---|
| Message-ID | <[email protected]> |
Author: Fish
Date: Fri Aug 12 23:03:48 2005
New Revision: 23
Modified:
trunk/blsb.c
trunk/blsb.h
Log:
fix up some BLSB stuff
Modified: trunk/blsb.c
==============================================================================
--- trunk/blsb.c (original)
+++ trunk/blsb.c Fri Aug 12 23:03:48 2005
@@ -53,9 +53,9 @@
static dom_list stddomlist[] =
{
- {"Blitzed OPM", "opm.blitzed.org", BL_LOOKUP_TXT_RECORD},
- {"Secure IRC", "bl.irc-chat.net", BL_LOOKUP_TXT_RECORD},
- {"Tor Exit Server", "tor.dnsbl.sectoor.de", BL_LOOKUP_TXT_RECORD},
+ {"Blitzed_OPM", "opm.blitzed.org", BL_LOOKUP_TXT_RECORD, "Open proxy - see http://opm.blitzed.org/%s"},
+ {"Secure-IRC", "bl.irc-chat.net", BL_LOOKUP_TXT_RECORD, "Insecure Host - See http://secure.irc-chat.net/ipinfo.php?ip=%s"},
+ {"Tor_Exit_Server", "tor.dnsbl.sectoor.de", BL_LOOKUP_TXT_RECORD, "Your Host is a Tor Exit Server"},
{"", "", 0}
};
@@ -88,7 +88,7 @@
static bot_cmd blsb_commands[]=
{
- {"ADD", blsb_cmd_add, 3, NS_ULEVEL_ADMIN, blsb_help_add},
+ {"ADD", blsb_cmd_add, 4, NS_ULEVEL_ADMIN, blsb_help_add},
{"DEL", blsb_cmd_del, 1, NS_ULEVEL_ADMIN, blsb_help_del},
{"LIST", blsb_cmd_list, 0, NS_ULEVEL_ADMIN, blsb_help_list},
{"CHECK", blsb_cmd_check, 1, NS_ULEVEL_OPER, blsb_help_check},
@@ -139,13 +139,14 @@
* @return pointer to newly allocated entry
*/
-static dom_list *new_bldomain( char *name, char *domain, BL_LOOKUP_TYPE type )
+static dom_list *new_bldomain( char *name, char *domain, BL_LOOKUP_TYPE type, char *msg )
{
dom_list *dl;
dl = ns_calloc( sizeof( dom_list ) );
strlcpy( dl->name, name, BUFSIZE );
strlcpy( dl->domain, domain, BUFSIZE );
+ strlcpy( dl->msg, msg, BUFSIZE );
dl->type = type;
lnode_create_append( blsb.domains, dl );
DBAStore( "domains", dl->name, (void *)dl, sizeof( dom_list ) );
@@ -165,33 +166,42 @@
void dnsbl_callback(void *data, adns_answer *a)
{
scanclient *sc = (scanclient *)data;
- int len, i, ri;
+ int i;
char *show;
+ struct in_addr inp;
- if (a && a->nrrs > 0) {
- adns_rr_info(a->type, 0, 0, &len, 0, 0);
- for(i = 0; i < a->nrrs; i++) {
- ri = adns_rr_info(a->type, 0, 0, 0, a->rrs.bytes +i*len, &show);
- if (!ri) {
- if (blsb.verbose)
- irc_chanalert( blsb_bot, "%s exists in %s blacklist: %s", sc->user->name, sc->domain->name, show );
+ if (a && (a->nrrs > 0) && (a->status == adns_s_ok)) {
+ for (i = 0; i < a->nrrs; i++) {
+ if (a->type == adns_r_a) {
+ /* here we should actually check the return IP address and see if we really want to do something with it */
+ inp = *((struct in_addr*)&a->rrs.inaddr[i]);
+ show = ns_malloc(BUFSIZE);
+ ircsnprintf(show, BUFSIZE, sc->domain->msg, sc->ip);
+ } if (a->type == adns_r_txt) {
+ show = a->rrs.manyistr[i]->str;
+ }
+ if (blsb.verbose)
+ irc_chanalert( blsb_bot, "%s (%s) exists in %s blacklist: %s", sc->user->name, sc->ip, sc->domain->name, show );
if (sc->check)
- irc_prefmsg(blsb_bot, sc->check, "%s exists in %s blacklist: %s", sc->user->name, sc->domain->name, show);
- irc_prefmsg(blsb_bot, sc->user, "Your Host is listed as a Open Proxy in %s: %s", sc->domain->name, show);
- if (blsb.doakill)
- irc_akill (blsb_bot, sc->ip, "*", blsb.akilltime, "Your Host is listed as a Open Proxy in %s: %s", sc->domain->name, show);
- } else {
- nlog(LOG_WARNING, "DNS error %s", adns_strerror(ri));
+ irc_prefmsg(blsb_bot, sc->check, "%s (%s) exists in %s blacklist: %s", sc->user->name, sc->ip, sc->domain->name, show);
+ if (sc->banned == 0 && sc->user) {
+ sc->banned = 1;
+ /* only ban/msg the user once */
+ irc_prefmsg(blsb_bot, sc->user, "Your Host is listed as a inscure host at %s: %s", sc->domain->name, show);
+ if (blsb.doakill) {
+ irc_akill (blsb_bot, sc->ip, "*", blsb.akilltime, "Your Host is listed as a insecure host at %s: %s", sc->domain->name, show);
+ }
}
- ns_free(show);
- return;
+ if (a->type == adns_r_a) ns_free(show);
}
- }
- if (blsb.verbose)
- irc_chanalert( blsb_bot, "%s does not exist in %s blacklist", sc->user->name, sc->domain->name );
- if (sc->check)
- irc_prefmsg(blsb_bot, sc->check, "%s does not exist in %s blacklist", sc->user->name, sc->domain->name);
- dlog(DEBUG3, "No Record for %s", sc->lookup);
+ } else if (a && (a->status == adns_s_nxdomain)) {
+ if (blsb.verbose)
+ irc_chanalert( blsb_bot, "%s (%s) does not exist in %s blacklist", sc->user->name, sc->ip, sc->domain->name);
+ if (sc->check)
+ irc_prefmsg(blsb_bot, sc->check, "%s (%s) does not exist in %s blacklist", sc->user->name, sc->ip, sc->domain->name);
+ } else if (a->status != adns_s_ok) {
+ nlog(LOG_WARNING, "DNS error %s", adns_strerror(a->status));
+ }
}
/** @brief do_lookup
@@ -213,13 +223,14 @@
scanclient *sc = NULL;
unsigned char a, b, c, d;
int buflen;
-
d = (unsigned char) ( lookupuser->ip.s_addr >> 24 ) & 0xFF;
c = (unsigned char) ( lookupuser->ip.s_addr >> 16 ) & 0xFF;
b = (unsigned char) ( lookupuser->ip.s_addr >> 8 ) & 0xFF;
a = (unsigned char) ( lookupuser->ip.s_addr & 0xFF );
ircsnprintf( ip, HOSTIPLEN, "%d.%d.%d.%d", a, b, c, d );
ircsnprintf( reverseip, HOSTIPLEN, "%d.%d.%d.%d", d, c, b, a );
+ ircsnprintf( ip, HOSTIPLEN, "127.0.0.2");
+ ircsnprintf( reverseip, HOSTIPLEN, "2.0.0.127");
node = list_first( blsb.domains );
while( node )
{
@@ -230,6 +241,7 @@
sc->check = reportuser;
sc->user = lookupuser;
sc->domain = dl;
+ sc->banned = 0;
sc->lookup = ns_malloc( buflen );
strlcpy( sc->ip, ip, HOSTIPLEN );
strlcpy( sc->reverseip, reverseip, HOSTIPLEN );
@@ -297,7 +309,8 @@
lnode_t *lnode;
int type;
char *name;
-
+ char *msg;
+
if( list_isfull( blsb.domains ) )
{
irc_prefmsg( blsb_bot, cmdparams->source, "Error, domain list is full" );
@@ -309,7 +322,7 @@
irc_prefmsg( blsb_bot, cmdparams->source, "type field does not contain a valid type" );
return NS_FAILURE;
}
- name = joinbuf( cmdparams->av, cmdparams->ac, 2 );
+ msg = joinbuf( cmdparams->av, cmdparams->ac, 3 );
/* XXX do a initial lookup on the domain to check it exists? */
/* check for duplicates */
@@ -317,7 +330,7 @@
while( lnode )
{
dl = lnode_get( lnode );
- if( ( !ircstrcasecmp( dl->name, name ) ) || ( !ircstrcasecmp(dl->domain, cmdparams->av[0] ) ) )
+ if( ( !ircstrcasecmp( dl->name, cmdparams->av[2] ) ) || ( !ircstrcasecmp(dl->domain, cmdparams->av[0] ) ) )
{
irc_prefmsg( blsb_bot, cmdparams->source, "%s %s already has an entry", cmdparams->av[0], name );
ns_free( name );
@@ -325,7 +338,7 @@
}
lnode = list_next(blsb.domains, lnode);
}
- dl = new_bldomain( name, cmdparams->av[0], type );
+ dl = new_bldomain( cmdparams->av[2], cmdparams->av[0], type, msg );
irc_prefmsg( blsb_bot, cmdparams->source, "Added domain %s (%s) as type %d", dl->name, dl->domain, dl->type );
CommandReport( blsb_bot, "%s added domain %s (%s) as type %d", cmdparams->source->name, dl->name, dl->domain, dl->type );
ns_free( name );
@@ -468,7 +481,7 @@
default_domains = stddomlist;
while( default_domains->type != BL_LOOKUP_TYPE_MIN )
{
- dl = new_bldomain( default_domains->name, default_domains->domain, default_domains->type );
+ dl = new_bldomain( default_domains->name, default_domains->domain, default_domains->type, default_domains->msg );
default_domains++;
}
}
@@ -486,6 +499,7 @@
{
ModuleConfig( blsb_settings );
blsb.domains = list_create( -1 );
+ me.want_nickip = 1;
if( !blsb.domains ) {
nlog( LOG_CRITICAL, "Unable to create domain list" );
return NS_FAILURE;
Modified: trunk/blsb.h
==============================================================================
--- trunk/blsb.h (original)
+++ trunk/blsb.h Fri Aug 12 23:03:48 2005
@@ -54,6 +54,7 @@
char name[BUFSIZE];
char domain[BUFSIZE];
BL_LOOKUP_TYPE type;
+ char msg[BUFSIZE];
} dom_list;
typedef struct scanclient {
@@ -63,6 +64,7 @@
char reverseip[HOSTIPLEN];
char ip[HOSTIPLEN];
char *lookup;
+ int banned;
} scanclient;
/* blsb_help.c */