diff --git a/ChangeLog b/ChangeLog
index 344d75fd..6e249277 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,8 @@ Anything we add/remove/fix/change is in here (even our rants)
Fish (F), Mark (M), DeadNotBuried (D)
===============================================================================
* NeoStats * Version 3.0.a3-dev
+ - StatServ: Add FLATMAP option to prevent display of network layout in MAP
+ command and HTML output (Bug 220). (M)
- Add support for IRCd protocol modules to make server version requests. (M)
- Add support for IRCd protocol modules to call core numeric reply
handlers. (M)
diff --git a/modules/statserv/htmlstats.c b/modules/statserv/htmlstats.c
index fd70de34..5ce10bd6 100644
--- a/modules/statserv/htmlstats.c
+++ b/modules/statserv/htmlstats.c
@@ -409,13 +409,22 @@ void get_map( char *uplink, int level )
get_map( s->name, level );
}
/* its not the root server */
- buf[0]='\0';
- for( i = 1; i < level; i++ ) {
- ircsnprintf( buf, MAPBUFSIZE, "%s     |", buf );
+ if( StatServ.flatmap )
+ {
+ os_fprintf( opf, "
%s | %d/%d | %d/%d | %d/%d |
\n",
+ ss->name, s->server->users, ss->users.alltime.max, ss->opers.current, ss->opers.alltime.max,
+ s->server->ping,( int )ss->highest_ping );
+ }
+ else
+ {
+ buf[0]='\0';
+ for( i = 1; i < level; i++ ) {
+ ircsnprintf( buf, MAPBUFSIZE, "%s     |", buf );
+ }
+ os_fprintf( opf, "%s\\_%s | %d/%d | %d/%d | %d/%d |
\n",
+ buf, ss->name, s->server->users, ss->users.alltime.max, ss->opers.current, ss->opers.alltime.max,
+ s->server->ping,( int )ss->highest_ping );
}
- os_fprintf( opf, "%s\\_%s | %d/%d | %d/%d | %d/%d |
\n",
- buf, ss->name, s->server->users, ss->users.alltime.max, ss->opers.current, ss->opers.alltime.max,
- s->server->ping,( int )ss->highest_ping );
get_map( s->name, level + 1 );
}
}
diff --git a/modules/statserv/server.c b/modules/statserv/server.c
index fdf1fa55..65142b4d 100644
--- a/modules/statserv/server.c
+++ b/modules/statserv/server.c
@@ -222,14 +222,24 @@ static void makemap(char *uplink, Client * u, int level)
makemap(s->name, u, level);
}
/* its not the root server */
- buf[0]='\0';
- for (i = 1; i < level; i++) {
- strlcat (buf, " |", 256);
+ if( StatServ.flatmap )
+ {
+ irc_prefmsg (ss_bot, u,
+ "\2%-40s [ %d/%d ] [ %d/%d ] [ %d/%ld ]",
+ ss->name, s->server->users, (int)ss->users.alltime.max,
+ ss->opers.current, ss->opers.alltime.max, s->server->ping, ss->highest_ping);
+ }
+ else
+ {
+ buf[0]='\0';
+ for (i = 1; i < level; i++) {
+ strlcat (buf, " |", 256);
+ }
+ irc_prefmsg (ss_bot, u,
+ "%s \\_\2%-40s [ %d/%d ] [ %d/%d ] [ %d/%ld ]",
+ buf, ss->name, s->server->users, (int)ss->users.alltime.max,
+ ss->opers.current, ss->opers.alltime.max, s->server->ping, ss->highest_ping);
}
- irc_prefmsg (ss_bot, u,
- "%s \\_\2%-40s [ %d/%d ] [ %d/%d ] [ %d/%ld ]",
- buf, ss->name, s->server->users, (int)ss->users.alltime.max,
- ss->opers.current, ss->opers.alltime.max, s->server->ping, ss->highest_ping);
makemap(s->name, u, level + 1);
}
}
diff --git a/modules/statserv/ss_help.c b/modules/statserv/ss_help.c
index 85a4cb10..b88494a7 100644
--- a/modules/statserv/ss_help.c
+++ b/modules/statserv/ss_help.c
@@ -63,6 +63,12 @@ const char *ss_help_set_exclusions[] = {
NULL
};
+const char *ss_help_set_flatmap[] = {
+ "\2FLATMAP \2",
+ "Whether StatServ shows map with links or as flat list",
+ NULL
+};
+
const char *ss_help_set_html[] = {
"\2HTML \2",
"Enable or disable HTML statistics generation.",
diff --git a/modules/statserv/statserv.c b/modules/statserv/statserv.c
index dbc23a84..0c138cfa 100644
--- a/modules/statserv/statserv.c
+++ b/modules/statserv/statserv.c
@@ -118,6 +118,7 @@ static bot_setting ss_settings[]=
{"LAGALERT", &StatServ.lagalert, SET_TYPE_INT, 0, 3, NS_ULEVEL_ADMIN, NULL, ss_help_set_lagalert, NULL, (void *)1},
{"RECORDALERT", &StatServ.recordalert, SET_TYPE_INT, 0, 3, NS_ULEVEL_ADMIN, NULL, ss_help_set_recordalert, NULL, (void *)1},
{"EXCLUSIONS", &StatServ.exclusions, SET_TYPE_BOOLEAN, 0, 0, NS_ULEVEL_ADMIN, NULL, ss_help_set_exclusions, ss_set_exclusions_cb, (void *)0},
+ {"FLATMAP", &StatServ.flatmap, SET_TYPE_BOOLEAN, 0, 0, NS_ULEVEL_ADMIN, NULL, ss_help_set_flatmap, NULL, (void *)0},
{NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL, (void *)0},
};
diff --git a/modules/statserv/statserv.h b/modules/statserv/statserv.h
index 6b89e9da..ada31e94 100644
--- a/modules/statserv/statserv.h
+++ b/modules/statserv/statserv.h
@@ -48,6 +48,7 @@ struct StatServ {
int msglimit;
int shutdown;
int exclusions;
+ int flatmap;
} StatServ;
/* ss_help.c */
@@ -65,6 +66,7 @@ extern const char *ss_help_channel[];
extern const char *ss_help_set_htmlpath[];
extern const char *ss_help_set_html[];
extern const char *ss_help_set_exclusions[];
+extern const char *ss_help_set_flatmap[];
extern const char *ss_help_set_msginterval[];
extern const char *ss_help_set_msglimit[];
extern const char *ss_help_set_lagtime[];