[NeoStats-Devel] [Commits] r361 - branches/3.0

[email protected] Fri, 12 Aug 2005 22:34:47 +1000
Newsgroups gmane.comp.neostats.devel
Message-ID <[email protected]>
Author: Fish
Date: Fri Aug 12 20:34:40 2005
New Revision: 361

Modified:
   branches/3.0/SecureServ.c
Log:
fix version scanning for SecureServ

Modified: branches/3.0/SecureServ.c
==============================================================================
--- branches/3.0/SecureServ.c	(original)
+++ branches/3.0/SecureServ.c	Fri Aug 12 20:34:40 2005
@@ -89,7 +89,7 @@
 static bot_setting ss_settings[]=
 {
 	{"HELPERS",		&SecureServ.helpers,	SET_TYPE_BOOLEAN,	0,	0,			NS_ULEVEL_ADMIN,NULL,	ts_help_set_helpers, ss_cmd_set_helpers_cb, (void *)1 },
-	{"VERSION",		&SecureServ.doscan,		SET_TYPE_BOOLEAN,	0,	0,			NS_ULEVEL_ADMIN,NULL,	ts_help_set_version, NULL, (void *)0 },
+	{"VERSIONSCAN",		&SecureServ.doscan,		SET_TYPE_BOOLEAN,	0,	0,			NS_ULEVEL_ADMIN,NULL,	ts_help_set_version, NULL, (void *)1 },
 	{"HELPCHAN",	&SecureServ.HelpChan,	SET_TYPE_CHANNEL,	0,	MAXCHANLEN,	NS_ULEVEL_ADMIN,NULL,	ts_help_set_helpchan, NULL, (void *)"#nohack" },
 #ifdef HAVE_CRYPT_H
 	{"REPORT",		&SecureServ.report,		SET_TYPE_BOOLEAN,	0,	0,			NS_ULEVEL_ADMIN,NULL,	ts_help_set_report, NULL, (void *)1 },
@@ -328,11 +328,19 @@
 	return NS_SUCCESS;
 }
 
+static void ss_do_version(CmdParams *cmdparams)
+{
+	/* if NeoStats Version Check is disabled, but SecureServ Version check is enabled, send CTCP request */
+	if ((!me.versionscan) &&  (SecureServ.doscan)) {
+		irc_ctcp_version_req(ss_bot, cmdparams->source);
+	}
+}
+
 /* scan someone connecting */
 static int ss_event_signon(CmdParams *cmdparams) 
 {
 	SET_SEGV_LOCATION();
-	if (SecureServ.doscan == 0) 
+	if (SecureServ.doscan == 0)
 		return NS_SUCCESS;
 	if (IsNetSplit(cmdparams->source)) {
 		dlog (DEBUG1, "Ignoring netsplit nick %s", cmdparams->source->name);
@@ -347,14 +355,18 @@
 	}
 	/* check the nickname, ident, realname */
 	if (ScanNick(cmdparams->source) && SecureServ.breakorcont != 0) {
+		ss_do_version(cmdparams);
 		return NS_SUCCESS;
 	}
 	if (ScanIdent(cmdparams->source) && SecureServ.breakorcont != 0) {
+		ss_do_version(cmdparams);
 		return NS_SUCCESS;
 	}
 	if (ScanRealname(cmdparams->source) && SecureServ.breakorcont != 0) {
+		ss_do_version(cmdparams);
 		return NS_SUCCESS;
 	}
+	ss_do_version(cmdparams);
 	return NS_SUCCESS;
 }
 
@@ -364,6 +376,17 @@
 	static int versioncount = 0;
 
 	SET_SEGV_LOCATION();
+	/* because neostats doesn't check this when the version request comes from the core */
+	if (IsNetSplit(cmdparams->source)) {
+		dlog (DEBUG1, "Ignoring netsplit nick %s", cmdparams->source->name);
+		return NS_SUCCESS;
+	}
+	if (ModIsUserExcluded(cmdparams->source) == NS_TRUE) {
+		return NS_SUCCESS;
+	}
+	if (SecureServ.verbose) 
+		irc_chanalert(ss_bot, "Got Version Reply from %s: %s", cmdparams->source->name, cmdparams->param);
+
 	positive = ScanCTCPVersion(cmdparams->source, cmdparams->param);
 	versioncount++;
 	/* why do we only change the version reply every 23 entries? Why not? */