mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 11:09:04 -04:00
Added /stats T
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1280 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
e786e52f6a
commit
e06a27ff0c
@ -125,7 +125,7 @@ chanrec::chanrec()
|
||||
void chanrec::SetCustomMode(char mode,bool mode_on)
|
||||
{
|
||||
if (mode_on) {
|
||||
char m[3];
|
||||
static char m[3];
|
||||
m[0] = mode;
|
||||
m[1] = '\0';
|
||||
if (!strchr(this->custom_modes,mode))
|
||||
|
@ -203,6 +203,8 @@ extern std::vector<userrec*> all_opers;
|
||||
// by an integer, meaning there is no need for a scan/search operation.
|
||||
extern userrec* fd_ref_table[65536];
|
||||
|
||||
extern int statsAccept,statsRefused,statsUnknown,statsCollisions,statsDns,statsDnsGood,statsDnsBad,statsConnects,statsSent,statsRecv;
|
||||
|
||||
|
||||
void handle_join(char **parameters, int pcnt, userrec *user)
|
||||
{
|
||||
@ -976,11 +978,11 @@ void handle_who(char **parameters, int pcnt, userrec *user)
|
||||
// Bug Fix #29
|
||||
strcpy(tmp, "");
|
||||
if (strcmp(i->second->awaymsg, "")) {
|
||||
strncat(tmp, "G", 9);
|
||||
strlcat(tmp, "G", 9);
|
||||
} else {
|
||||
strncat(tmp, "H", 9);
|
||||
strlcat(tmp, "H", 9);
|
||||
}
|
||||
if (strchr(i->second->modes,'o')) { strncat(tmp, "*", 9); }
|
||||
if (strchr(i->second->modes,'o')) { strlcat(tmp, "*", 9); }
|
||||
WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, Ptr ? Ptr->name : "*", i->second->ident, i->second->dhost, i->second->server, i->second->nick, tmp, i->second->fullname);
|
||||
n_list++;
|
||||
if (n_list > MaxWhoResults)
|
||||
@ -1010,12 +1012,12 @@ void handle_who(char **parameters, int pcnt, userrec *user)
|
||||
// Fix Bug #29 - Part 2..
|
||||
strcpy(tmp, "");
|
||||
if (strcmp(i->second->awaymsg, "")) {
|
||||
strncat(tmp, "G", 9);
|
||||
strlcat(tmp, "G", 9);
|
||||
} else {
|
||||
strncat(tmp, "H", 9);
|
||||
strlcat(tmp, "H", 9);
|
||||
}
|
||||
if (strchr(i->second->modes,'o')) { strncat(tmp, "*", 9); }
|
||||
strcat(tmp, cmode(i->second, Ptr));
|
||||
if (strchr(i->second->modes,'o')) { strlcat(tmp, "*", 9); }
|
||||
strlcat(tmp, cmode(i->second, Ptr),5);
|
||||
WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, Ptr->name, i->second->ident, i->second->dhost, i->second->server, i->second->nick, tmp, i->second->fullname);
|
||||
}
|
||||
}
|
||||
@ -1034,11 +1036,11 @@ void handle_who(char **parameters, int pcnt, userrec *user)
|
||||
// Bug Fix #29 -- Part 29..
|
||||
strcpy(tmp, "");
|
||||
if (strcmp(u->awaymsg, "")) {
|
||||
strncat(tmp, "G" ,9);
|
||||
strlcat(tmp, "G" ,9);
|
||||
} else {
|
||||
strncat(tmp, "H" ,9);
|
||||
strlcat(tmp, "H" ,9);
|
||||
}
|
||||
if (strchr(u->modes,'o')) { strncat(tmp, "*" ,9); }
|
||||
if (strchr(u->modes,'o')) { strlcat(tmp, "*" ,9); }
|
||||
WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, u->chans[0].channel ? u->chans[0].channel->name
|
||||
: "*", u->ident, u->dhost, u->server, u->nick, tmp, u->fullname);
|
||||
}
|
||||
@ -1056,9 +1058,9 @@ void handle_who(char **parameters, int pcnt, userrec *user)
|
||||
userrec* oper = *i;
|
||||
strcpy(tmp, "");
|
||||
if (strcmp(oper->awaymsg, "")) {
|
||||
strncat(tmp, "G" ,9);
|
||||
strlcat(tmp, "G" ,9);
|
||||
} else {
|
||||
strncat(tmp, "H" ,9);
|
||||
strlcat(tmp, "H" ,9);
|
||||
}
|
||||
WriteServ(user->fd,"352 %s %s %s %s %s %s %s* :0 %s", user->nick, oper->chans[0].channel ? oper->chans[0].channel->name
|
||||
: "*", oper->ident, oper->dhost, oper->server, oper->nick, tmp, oper->fullname);
|
||||
@ -1428,6 +1430,16 @@ void handle_stats(char **parameters, int pcnt, userrec *user)
|
||||
WriteServ(user->fd,"249 %s :ClassFactories(VECTOR) %d (%d)",user->nick,factory.size(),factory.size()*sizeof(ircd_module));
|
||||
WriteServ(user->fd,"249 %s :Ports(STATIC_ARRAY) %d",user->nick,boundPortCount);
|
||||
}
|
||||
|
||||
if (*parameters[0] == 'T')
|
||||
{
|
||||
WriteServ(user->fd,"249 Brain :accepts %d refused %d",statsAccept,statsRefused);
|
||||
WriteServ(user->fd,"249 Brain :unknown commands %d",statsUnknown);
|
||||
WriteServ(user->fd,"249 Brain :nick collisions %d",statsCollisions);
|
||||
WriteServ(user->fd,"249 Brain :dns requests %d succeeded %d failed %d",statsDns,statsDnsGood,statsDnsBad);
|
||||
WriteServ(user->fd,"249 Brain :connections %d",statsConnects);
|
||||
WriteServ(user->fd,"249 Brain :bytes sent %dK recv %dK",(statsSent / 1024),(statsRecv / 1024));
|
||||
}
|
||||
|
||||
/* stats o */
|
||||
if (*parameters[0] == 'o')
|
||||
@ -2160,11 +2172,13 @@ void handle_n(char token,char* params,serverrec* source,serverrec* reply, char*
|
||||
FOREACH_RESULT(OnUserPreNick(user,newnick));
|
||||
if (MOD_RESULT) {
|
||||
// if a module returns true, the nick change couldnt be allowed
|
||||
statsCollisions++;
|
||||
kill_link(user,"Nickname collision");
|
||||
return;
|
||||
}
|
||||
if (matches_qline(newnick))
|
||||
{
|
||||
statsCollisions++;
|
||||
kill_link(user,"Nickname collision");
|
||||
return;
|
||||
}
|
||||
@ -2265,6 +2279,7 @@ void handle_N(char token,char* params,serverrec* source,serverrec* reply, char*
|
||||
if (iter != clientlist.end())
|
||||
{
|
||||
// nick collision
|
||||
statsCollisions++;
|
||||
WriteOpers("Nickname collision: %s@%s != %s@%s",nick,server,iter->second->nick,iter->second->server);
|
||||
char str[MAXBUF];
|
||||
snprintf(str,MAXBUF,"Killed (Nick Collision (%s@%s < %s@%s))",nick,server,iter->second->nick,iter->second->server);
|
||||
@ -3112,7 +3127,7 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
|
||||
{
|
||||
WriteOpers("CONNECT aborted: Could not link to %s, is an incompatible version %s, our version is %d",servername,revision,GetRevision());
|
||||
char buffer[MAXBUF];
|
||||
sprintf(buffer,"E :Version number mismatch");
|
||||
snprintf(buffer,MAXBUF,"E :Version number mismatch");
|
||||
serv->SendPacket(buffer,tcp_host);
|
||||
RemoveServer(tcp_host);
|
||||
RemoveServer(servername);
|
||||
@ -3166,7 +3181,7 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
|
||||
}
|
||||
}
|
||||
char buffer[MAXBUF];
|
||||
sprintf(buffer,"E :Access is denied (no matching link block)");
|
||||
snprintf(buffer,MAXBUF,"E :Access is denied (no matching link block)");
|
||||
serv->SendPacket(buffer,tcp_host);
|
||||
WriteOpers("CONNECT from %s denied, no matching link block",servername);
|
||||
RemoveServer(tcp_host);
|
||||
@ -3223,7 +3238,7 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
|
||||
char buffer[MAXBUF];
|
||||
me[j]->connectors[k].SetDescription(serverdesc);
|
||||
me[j]->connectors[k].SetState(STATE_CONNECTED);
|
||||
sprintf(buffer,"X 0");
|
||||
snprintf(buffer,MAXBUF,"X 0");
|
||||
serv->SendPacket(buffer,tcp_host);
|
||||
DoSync(me[j],tcp_host);
|
||||
NetSendMyRoutingTable();
|
||||
@ -3238,7 +3253,7 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
|
||||
}
|
||||
}
|
||||
char buffer[MAXBUF];
|
||||
sprintf(buffer,"E :Access is denied (no matching link block)");
|
||||
snprintf(buffer,MAXBUF,"E :Access is denied (no matching link block)");
|
||||
serv->SendPacket(buffer,tcp_host);
|
||||
WriteOpers("CONNECT from %s denied, no matching link block",servername);
|
||||
RemoveServer(tcp_host);
|
||||
@ -3273,7 +3288,7 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
|
||||
if (!strcasecmp(me[j]->connectors[k].GetServerName().c_str(),servername))
|
||||
{
|
||||
char buffer[MAXBUF];
|
||||
sprintf(buffer,"E :Access is denied (Server exists in the mesh)");
|
||||
snprintf(buffer,MAXBUF,"E :Access is denied (Server exists in the mesh)");
|
||||
serv->SendPacket(buffer,tcp_host);
|
||||
WriteOpers("CONNECT from %s denied, \"%s\" already exists!",tcp_host,servername);
|
||||
RemoveServer(tcp_host);
|
||||
@ -3311,9 +3326,9 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
|
||||
me[j]->connectors[k].SetDescription(serverdesc);
|
||||
me[j]->connectors[k].SetServerName(servername);
|
||||
me[j]->connectors[k].SetState(STATE_SERVICES);
|
||||
sprintf(buffer,"X 0");
|
||||
snprintf(buffer,MAXBUF,"X 0");
|
||||
serv->SendPacket(buffer,servername);
|
||||
sprintf(buffer,"s %s %s %lu :%s",ServerName,Link_SendPass,LinkPort,ServerDesc);
|
||||
snprintf(buffer,MAXBUF,"s %s %s %lu :%s",ServerName,Link_SendPass,LinkPort,ServerDesc);
|
||||
serv->SendPacket(buffer,servername);
|
||||
DoSync(me[j],servername);
|
||||
snprintf(buffer,MAXBUF,"H %s",servername);
|
||||
@ -3333,7 +3348,7 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
|
||||
}
|
||||
log(DEBUG,"No matching link block found");
|
||||
char buffer[MAXBUF];
|
||||
sprintf(buffer,"E :Access is denied (no matching link block)");
|
||||
snprintf(buffer,MAXBUF,"E :Access is denied (no matching link block)");
|
||||
serv->SendPacket(buffer,tcp_host);
|
||||
WriteOpers("CONNECT from %s denied, no matching link block",servername);
|
||||
RemoveServer(tcp_host);
|
||||
|
@ -31,7 +31,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include <poll.h>
|
||||
#include "dns.h"
|
||||
|
||||
static const char tagstring[] = "$Id$";
|
||||
extern int statsAccept,statsRefused,statsUnknown,statsCollisions,statsDns,statsDnsGood,statsDnsBad,statsConnects,statsSent,statsRecv;
|
||||
|
||||
#define max(a,b) (a > b ? a : b)
|
||||
#define DNS_MAX 8 /* max number of nameservers used */
|
||||
@ -691,6 +691,7 @@ DNS::~DNS()
|
||||
|
||||
bool DNS::ReverseLookup(std::string ip)
|
||||
{
|
||||
statsDns++;
|
||||
binip = dns_aton4(ip.c_str());
|
||||
if (binip == NULL) {
|
||||
return false;
|
||||
@ -723,9 +724,11 @@ std::string DNS::GetResult()
|
||||
{
|
||||
result = dns_getresult(this->fd);
|
||||
if (result) {
|
||||
statsDnsGood++;
|
||||
dns_close(this->fd);
|
||||
return result;
|
||||
} else {
|
||||
statsDnsBad++;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
@ -181,6 +181,8 @@ typedef std::deque<command_t> command_table;
|
||||
// by an integer, meaning there is no need for a scan/search operation.
|
||||
userrec* fd_ref_table[65536];
|
||||
|
||||
int statsAccept = 0, statsRefused = 0, statsUnknown = 0, statsCollisions = 0, statsDns = 0, statsDnsGood = 0, statsDnsBad = 0, statsConnects = 0, statsSent= 0, statsRecv = 0;
|
||||
|
||||
serverrec* me[32];
|
||||
|
||||
FILE *log_file;
|
||||
@ -598,6 +600,7 @@ void Write(int sock,char *text, ...)
|
||||
fd_ref_table[sock]->bytes_out += (bytes > 512 ? 512 : bytes);
|
||||
fd_ref_table[sock]->cmds_out++;
|
||||
}
|
||||
statsSent += (bytes > 512 ? 512 : bytes);
|
||||
}
|
||||
}
|
||||
|
||||
@ -631,6 +634,7 @@ void WriteServ(int sock, char* text, ...)
|
||||
fd_ref_table[sock]->bytes_out += (bytes > 512 ? 512 : bytes);
|
||||
fd_ref_table[sock]->cmds_out++;
|
||||
}
|
||||
statsSent += (bytes > 512 ? 512 : bytes);
|
||||
}
|
||||
}
|
||||
|
||||
@ -664,6 +668,7 @@ void WriteFrom(int sock, userrec *user,char* text, ...)
|
||||
fd_ref_table[sock]->bytes_out += (bytes > 512 ? 512 : bytes);
|
||||
fd_ref_table[sock]->cmds_out++;
|
||||
}
|
||||
statsSent += (bytes > 512 ? 512 : bytes);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2709,6 +2714,7 @@ void ShowRULES(userrec *user)
|
||||
/* shows the message of the day, and any other on-logon stuff */
|
||||
void FullConnectUser(userrec* user)
|
||||
{
|
||||
statsConnects++;
|
||||
user->registered = 7;
|
||||
user->idle_lastmsg = TIME;
|
||||
log(DEBUG,"ConnectUser: %s",user->nick);
|
||||
@ -2982,11 +2988,13 @@ void force_nickchange(userrec* user,const char* newnick)
|
||||
|
||||
FOREACH_RESULT(OnUserPreNick(user,newnick));
|
||||
if (MOD_RESULT) {
|
||||
statsCollisions++;
|
||||
kill_link(user,"Nickname collision");
|
||||
return;
|
||||
}
|
||||
if (matches_qline(newnick))
|
||||
{
|
||||
statsCollisions++;
|
||||
kill_link(user,"Nickname collision");
|
||||
return;
|
||||
}
|
||||
@ -3193,6 +3201,7 @@ void process_command(userrec *user, char* cmd)
|
||||
{
|
||||
if (strchr("@!\"$%^&*(){}[]_=+;:'#~,<>/?\\|`",command[x]))
|
||||
{
|
||||
statsUnknown++;
|
||||
WriteServ(user->fd,"421 %s %s :Unknown command",user->nick,command);
|
||||
return;
|
||||
}
|
||||
@ -3315,6 +3324,7 @@ void process_command(userrec *user, char* cmd)
|
||||
}
|
||||
if ((!cmd_found) && (user))
|
||||
{
|
||||
statsUnknown++;
|
||||
WriteServ(user->fd,"421 %s %s :Unknown command",user->nick,command);
|
||||
}
|
||||
}
|
||||
@ -4155,6 +4165,7 @@ int InspIRCd(void)
|
||||
{
|
||||
log(DEBUG,"signon exceed, registered=3, and modules ready, OK");
|
||||
curr->dns_done = true;
|
||||
statsDnsBad++;
|
||||
FullConnectUser(curr);
|
||||
goto label;
|
||||
}
|
||||
@ -4219,6 +4230,7 @@ int InspIRCd(void)
|
||||
|
||||
if (result)
|
||||
{
|
||||
statsRecv += result;
|
||||
// perform a check on the raw buffer as an array (not a string!) to remove
|
||||
// characters 0 and 7 which are illegal in the RFC - replace them with spaces.
|
||||
// hopefully this should stop even more people whining about "Unknown command: *"
|
||||
@ -4391,10 +4403,12 @@ int InspIRCd(void)
|
||||
{
|
||||
WriteOpers("*** WARNING: Accept failed on port %lu (%s)",(unsigned long)ports[count],target);
|
||||
log(DEBUG,"InspIRCd: accept failed: %lu",(unsigned long)ports[count]);
|
||||
statsRefused++;
|
||||
}
|
||||
else
|
||||
{
|
||||
FOREACH_MOD OnRawSocketAccept(incomingSockfd, resolved, ports[count]);
|
||||
statsAccept++;
|
||||
AddClient(incomingSockfd, resolved, ports[count], false, inet_ntoa (client.sin_addr));
|
||||
log(DEBUG,"InspIRCd: adding client on port %lu fd=%lu",(unsigned long)ports[count],(unsigned long)incomingSockfd);
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ void Rehash(int status)
|
||||
|
||||
void Start (void)
|
||||
{
|
||||
printf("\033[1;32mInspire Internet Relay Chat Server, compiled " __DATE__ " at " __TIME__ "\n");
|
||||
printf("\033[1;32mInspire Internet Relay Chat Server, compiled %s at %s\n",__DATE__,__TIME__);
|
||||
printf("(C) ChatSpike Development team.\033[0m\n\n");
|
||||
printf("Developers:\033[1;32m Brain, FrostyCoolSlug\033[0m\n");
|
||||
printf("Documentation:\033[1;32m FrostyCoolSlug, w00t\033[0m\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user