⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_stats.c

📁 Unreal irc 服务器源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
		sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, sptr->name);		return 0;	}	sendto_one(sptr, ":%s %i %s :*** Configuration Report ***",	    me.name, RPL_TEXT, sptr->name);	sendto_one(sptr, ":%s %i %s :network-name: %s", me.name, RPL_TEXT,	    sptr->name, ircnetwork);	sendto_one(sptr, ":%s %i %s :default-server: %s", me.name, RPL_TEXT,	    sptr->name, defserv);	sendto_one(sptr, ":%s %i %s :services-server: %s", me.name, RPL_TEXT,	    sptr->name, SERVICES_NAME);	sendto_one(sptr, ":%s %i %s :stats-server: %s", me.name, RPL_TEXT,	    sptr->name, STATS_SERVER);	sendto_one(sptr, ":%s %i %s :hiddenhost-prefix: %s", me.name, RPL_TEXT,	    sptr->name, hidden_host);	sendto_one(sptr, ":%s %i %s :help-channel: %s", me.name, RPL_TEXT,	    sptr->name, helpchan);	sendto_one(sptr, ":%s %i %s :cloak-keys: %s", me.name, RPL_TEXT, sptr->name,		CLOAK_KEYCRC);	sendto_one(sptr, ":%s %i %s :kline-address: %s", me.name, RPL_TEXT,	    sptr->name, KLINE_ADDRESS);	if (GLINE_ADDRESS)		sendto_one(sptr, ":%s %i %s :gline-address: %s", me.name, RPL_TEXT,		    sptr->name, GLINE_ADDRESS);	sendto_one(sptr, ":%s %i %s :modes-on-connect: %s", me.name, RPL_TEXT,	    sptr->name, get_modestr(CONN_MODES));	sendto_one(sptr, ":%s %i %s :modes-on-oper: %s", me.name, RPL_TEXT,	    sptr->name, get_modestr(OPER_MODES));	*modebuf = *parabuf = 0;	chmode_str(iConf.modes_on_join, modebuf, parabuf);	sendto_one(sptr, ":%s %i %s :modes-on-join: %s %s", me.name, RPL_TEXT,		sptr->name, modebuf, parabuf);	sendto_one(sptr, ":%s %i %s :snomask-on-oper: %s", me.name, RPL_TEXT,	    sptr->name, OPER_SNOMASK);	sendto_one(sptr, ":%s %i %s :snomask-on-connect: %s", me.name, RPL_TEXT,	    sptr->name, CONNECT_SNOMASK ? CONNECT_SNOMASK : "+");	if (OPER_ONLY_STATS)	{		char *longflags = stats_operonly_long_to_short();		sendto_one(sptr, ":%s %i %s :oper-only-stats: %s%s", me.name, RPL_TEXT,			sptr->name, OPER_ONLY_STATS, longflags ? longflags : "");	}	if (RESTRICT_USERMODES)		sendto_one(sptr, ":%s %i %s :restrict-usermodes: %s", me.name, RPL_TEXT,			sptr->name, RESTRICT_USERMODES);	if (RESTRICT_CHANNELMODES)		sendto_one(sptr, ":%s %i %s :restrict-channelmodes: %s", me.name, RPL_TEXT,			sptr->name, RESTRICT_CHANNELMODES);	if (RESTRICT_EXTENDEDBANS)		sendto_one(sptr, ":%s %i %s :restrict-extendedbans: %s", me.name, RPL_TEXT,			sptr->name, RESTRICT_EXTENDEDBANS);	switch (UHOST_ALLOWED)	{		case UHALLOW_ALWAYS:			uhallow = "always";			break;		case UHALLOW_NEVER:			uhallow = "never";			break;		case UHALLOW_NOCHANS:			uhallow = "not-on-channels";			break;		case UHALLOW_REJOIN:			uhallow = "force-rejoin";			break;	}	sendto_one(sptr, ":%s %i %s :anti-spam-quit-message-time: %s", me.name, RPL_TEXT, 		sptr->name, pretty_time_val(ANTI_SPAM_QUIT_MSG_TIME));	sendto_one(sptr, ":%s %i %s :channel-command-prefix: %s", me.name, RPL_TEXT, sptr->name, CHANCMDPFX ? CHANCMDPFX : "`");#ifdef USE_SSL	sendto_one(sptr, ":%s %i %s :ssl::egd: %s", me.name, RPL_TEXT,		sptr->name, EGD_PATH ? EGD_PATH : (USE_EGD ? "1" : "0"));	sendto_one(sptr, ":%s %i %s :ssl::certificate: %s", me.name, RPL_TEXT,		sptr->name, SSL_SERVER_CERT_PEM);	sendto_one(sptr, ":%s %i %s :ssl::key: %s", me.name, RPL_TEXT,		sptr->name, SSL_SERVER_KEY_PEM);	sendto_one(sptr, ":%s %i %s :ssl::trusted-ca-file: %s", me.name, RPL_TEXT, sptr->name,	 iConf.trusted_ca_file ? iConf.trusted_ca_file : "<none>");	sendto_one(sptr, ":%s %i %s :ssl::options: %s %s %s", me.name, RPL_TEXT, sptr->name,		iConf.ssl_options & SSLFLAG_FAILIFNOCERT ? "FAILIFNOCERT" : "",		iConf.ssl_options & SSLFLAG_VERIFYCERT ? "VERIFYCERT" : "",		iConf.ssl_options & SSLFLAG_DONOTACCEPTSELFSIGNED ? "DONOTACCEPTSELFSIGNED" : "");#endif	sendto_one(sptr, ":%s %i %s :options::show-opermotd: %d", me.name, RPL_TEXT,	    sptr->name, SHOWOPERMOTD);	sendto_one(sptr, ":%s %i %s :options::hide-ulines: %d", me.name, RPL_TEXT,	    sptr->name, HIDE_ULINES);	sendto_one(sptr, ":%s %i %s :options::webtv-support: %d", me.name, RPL_TEXT,	    sptr->name, WEBTV_SUPPORT);	sendto_one(sptr, ":%s %i %s :options::identd-check: %d", me.name, RPL_TEXT,	    sptr->name, IDENT_CHECK);	sendto_one(sptr, ":%s %i %s :options::fail-oper-warn: %d", me.name, RPL_TEXT,	    sptr->name, FAILOPER_WARN);	sendto_one(sptr, ":%s %i %s :options::show-connect-info: %d", me.name, RPL_TEXT,	    sptr->name, SHOWCONNECTINFO);	sendto_one(sptr, ":%s %i %s :options::dont-resolve: %d", me.name, RPL_TEXT,	    sptr->name, DONT_RESOLVE);	sendto_one(sptr, ":%s %i %s :options::mkpasswd-for-everyone: %d", me.name, RPL_TEXT,	    sptr->name, MKPASSWD_FOR_EVERYONE);	sendto_one(sptr, ":%s %i %s :options::allow-part-if-shunned: %d", me.name, RPL_TEXT,	    sptr->name, ALLOW_PART_IF_SHUNNED);	sendto_one(sptr, ":%s %i %s :maxchannelsperuser: %i", me.name, RPL_TEXT,	    sptr->name, MAXCHANNELSPERUSER);	sendto_one(sptr, ":%s %i %s :auto-join: %s", me.name, RPL_TEXT,	    sptr->name, AUTO_JOIN_CHANS ? AUTO_JOIN_CHANS : "0");	sendto_one(sptr, ":%s %i %s :oper-auto-join: %s", me.name,	    RPL_TEXT, sptr->name, OPER_AUTO_JOIN_CHANS ? OPER_AUTO_JOIN_CHANS : "0");	sendto_one(sptr, ":%s %i %s :static-quit: %s", me.name, 		RPL_TEXT, sptr->name, STATIC_QUIT ? STATIC_QUIT : "<none>");		sendto_one(sptr, ":%s %i %s :static-part: %s", me.name, 		RPL_TEXT, sptr->name, STATIC_PART ? STATIC_PART : "<none>");		sendto_one(sptr, ":%s %i %s :who-limit: %d", me.name, RPL_TEXT,		sptr->name, WHOLIMIT);	sendto_one(sptr, ":%s %i %s :silence-limit: %d", me.name, RPL_TEXT,		sptr->name, SILENCE_LIMIT);	sendto_one(sptr, ":%s %i %s :dns::timeout: %s", me.name, RPL_TEXT,	    sptr->name, pretty_time_val(HOST_TIMEOUT));	sendto_one(sptr, ":%s %i %s :dns::retries: %d", me.name, RPL_TEXT,	    sptr->name, HOST_RETRIES);	sendto_one(sptr, ":%s %i %s :dns::nameserver: %s", me.name, RPL_TEXT,	    sptr->name, NAME_SERVER);	if (DNS_BINDIP)		sendto_one(sptr, ":%s %i %s :dns::bind-ip: %s", me.name, RPL_TEXT,		    sptr->name, DNS_BINDIP);	sendto_one(sptr, ":%s %i %s :ban-version-tkl-time: %s", me.name, RPL_TEXT,	    sptr->name, pretty_time_val(BAN_VERSION_TKL_TIME));#ifdef THROTTLING	sendto_one(sptr, ":%s %i %s :throttle::period: %s", me.name, RPL_TEXT,			sptr->name, THROTTLING_PERIOD ? pretty_time_val(THROTTLING_PERIOD) : "disabled");	sendto_one(sptr, ":%s %i %s :throttle::connections: %d", me.name, RPL_TEXT,			sptr->name, THROTTLING_COUNT ? THROTTLING_COUNT : -1);#endif	sendto_one(sptr, ":%s %i %s :anti-flood::unknown-flood-bantime: %s", me.name, RPL_TEXT,			sptr->name, pretty_time_val(UNKNOWN_FLOOD_BANTIME));	sendto_one(sptr, ":%s %i %s :anti-flood::unknown-flood-amount: %ldKB", me.name, RPL_TEXT,			sptr->name, UNKNOWN_FLOOD_AMOUNT);#ifdef NO_FLOOD_AWAY	if (AWAY_PERIOD)	{		sendto_one(sptr, ":%s %i %s :anti-flood::away-flood: %d per %s", me.name, RPL_TEXT, 			sptr->name, AWAY_COUNT, pretty_time_val(AWAY_PERIOD));	}#endif	sendto_one(sptr, ":%s %i %s :anti-flood::nick-flood: %d per %s", me.name, RPL_TEXT, 		sptr->name, NICK_COUNT, pretty_time_val(NICK_PERIOD));	sendto_one(sptr, ":%s %i %s :ident::connect-timeout: %s", me.name, RPL_TEXT,			sptr->name, pretty_time_val(IDENT_CONNECT_TIMEOUT));	sendto_one(sptr, ":%s %i %s :ident::read-timeout: %s", me.name, RPL_TEXT,			sptr->name, pretty_time_val(IDENT_READ_TIMEOUT));#ifdef NEWCHFLOODPROT	sendto_one(sptr, ":%s %i %s :modef-default-unsettime: %hd", me.name, RPL_TEXT,			sptr->name, (unsigned short)MODEF_DEFAULT_UNSETTIME);	sendto_one(sptr, ":%s %i %s :modef-max-unsettime: %hd", me.name, RPL_TEXT,			sptr->name, (unsigned short)MODEF_MAX_UNSETTIME);#endif	sendto_one(sptr, ":%s %i %s :spamfilter::ban-time: %s", me.name, RPL_TEXT,		sptr->name, pretty_time_val(SPAMFILTER_BAN_TIME));	sendto_one(sptr, ":%s %i %s :spamfilter::ban-reason: %s", me.name, RPL_TEXT,		sptr->name, SPAMFILTER_BAN_REASON);	sendto_one(sptr, ":%s %i %s :spamfilter::virus-help-channel: %s", me.name, RPL_TEXT,		sptr->name, SPAMFILTER_VIRUSCHAN);	if (SPAMFILTER_EXCEPT)		sendto_one(sptr, ":%s %i %s :spamfilter::except: %s", me.name, RPL_TEXT,			sptr->name, SPAMFILTER_EXCEPT);	sendto_one(sptr, ":%s %i %s :check-target-nick-bans: %s", me.name, RPL_TEXT,		sptr->name, CHECK_TARGET_NICK_BANS ? "yes" : "no");	sendto_one(sptr, ":%s %i %s :hosts::global: %s", me.name, RPL_TEXT,	    sptr->name, oper_host);	sendto_one(sptr, ":%s %i %s :hosts::admin: %s", me.name, RPL_TEXT,	    sptr->name, admin_host);	sendto_one(sptr, ":%s %i %s :hosts::local: %s", me.name, RPL_TEXT,	    sptr->name, locop_host);	sendto_one(sptr, ":%s %i %s :hosts::servicesadmin: %s", me.name, RPL_TEXT,	    sptr->name, sadmin_host);	sendto_one(sptr, ":%s %i %s :hosts::netadmin: %s", me.name, RPL_TEXT,	    sptr->name, netadmin_host);	sendto_one(sptr, ":%s %i %s :hosts::coadmin: %s", me.name, RPL_TEXT,	    sptr->name, coadmin_host);	sendto_one(sptr, ":%s %i %s :hosts::host-on-oper-up: %i", me.name, RPL_TEXT, sptr->name,	    iNAH);	RunHook2(HOOKTYPE_STATS, sptr, "S");	return 1;}int stats_tld(aClient *sptr, char *para){	ConfigItem_tld *tld;	for (tld = conf_tld; tld; tld = (ConfigItem_tld *) tld->next)		sendto_one(sptr, rpl_str(RPL_STATSTLINE), me.name, sptr->name, 			tld->mask, tld->motd_file, tld->rules_file ? 			tld->rules_file : "none");	return 0;}int stats_uptime(aClient *sptr, char *para){	time_t tmpnow;	tmpnow = TStime() - me.since;	sendto_one(sptr, rpl_str(RPL_STATSUPTIME), me.name, sptr->name,	    tmpnow / 86400, (tmpnow / 3600) % 24, (tmpnow / 60) % 60,	    tmpnow % 60);	sendto_one(sptr, rpl_str(RPL_STATSCONN), me.name, sptr->name,	    max_connection_count, IRCstats.me_max);	return 0;}int stats_denyver(aClient *sptr, char *para){	ConfigItem_deny_version *versions;	for (versions = conf_deny_version; versions; versions = (ConfigItem_deny_version *) versions->next) 		sendto_one(sptr, rpl_str(RPL_STATSVLINE), me.name, sptr->name,			versions->version, versions->flags, versions->mask);	return 0;}int stats_notlink(aClient *sptr, char *para){	ConfigItem_link *link_p;	for (link_p = conf_link; link_p; link_p = (ConfigItem_link *) link_p->next)	{		if (!find_server_quick(link_p->servername))			sendto_one(sptr, rpl_str(RPL_STATSXLINE),				me.name, sptr->name, link_p->servername,				link_p->port);	}	return 0;}int stats_class(aClient *sptr, char *para){	ConfigItem_class *classes;	for (classes = conf_class; classes; classes = (ConfigItem_class *) classes->next) 	{		sendto_one(sptr, rpl_str(RPL_STATSYLINE),			me.name, sptr->name, classes->name, classes->pingfreq, classes->connfreq,			classes->maxclients, classes->sendq, classes->recvq ? classes->recvq : CLIENT_FLOOD);#ifdef DEBUGMODE		sendnotice(sptr, "class '%s' has clients=%d, xrefcount=%d",			classes->name, classes->clients, classes->xrefcount);#endif	}	return 0;}int stats_zip(aClient *sptr, char *para){#ifdef ZIP_LINKS	int i;	aClient *acptr;	for (i=0; i <= LastSlot; i++)	{		if (!(acptr = local[i]))			continue;		if (!IsServer(acptr) || !IsZipped(acptr))			continue;		if (acptr->zip->in->total_out && acptr->zip->out->total_in)		{			sendto_one(sptr,				":%s %i %s :Zipstats for link to %s (compresslevel %d): decompressed (in): %01lu=>%01lu (%3.1f%%), compressed (out): %01lu=>%01lu (%3.1f%%)",				me.name, RPL_TEXT, sptr->name,				IsAnOper(sptr) ? get_client_name(acptr, TRUE) : acptr->name,				acptr->serv->conf->compression_level ? 				acptr->serv->conf->compression_level : ZIP_DEFAULT_LEVEL,				acptr->zip->in->total_in, acptr->zip->in->total_out,				(100.0*(float)acptr->zip->in->total_in) /(float)acptr->zip->in->total_out,				acptr->zip->out->total_in, acptr->zip->out->total_out,				(100.0*(float)acptr->zip->out->total_out) /(float)acptr->zip->out->total_in);		} 		else 			sendto_one(sptr, ":%s %i %s :Zipstats for link to %s: unavailable", 				me.name, RPL_TEXT, sptr->name, acptr->name);	}#endif	return 0;}int stats_linkinfo(aClient *sptr, char *para){	return stats_linkinfoint(sptr, para, 0);}int stats_linkinfoall(aClient *sptr, char *para){	return stats_linkinfoint(sptr, para, 1);}int stats_linkinfoint(aClient *sptr, char *para, int all){#ifndef DEBUGMODE	static char Sformat[] =	    ":%s %d %s SendQ SendM SendBytes RcveM RcveBytes Open_since :Idle";	static char Lformat[] = ":%s %d %s %s%s %u %u %u %u %u %u :%u";#else	static char Sformat[] =	    ":%s %d %s SendQ SendM SendBytes RcveM RcveBytes Open_since CPU :Idle";	static char Lformat[] = ":%s %d %s %s%s %u %u %u %u %u %u %s";	char pbuf[96];		/* Should be enough for to ints */#endif	int remote = 0;	int wilds = 0;	int doall = 0;	int showports = IsAnOper(sptr);	int i;	aClient *acptr;	/*	 * send info about connections which match, or all if the	 * mask matches me.name.  Only restrictions are on those who	 * are invisible not being visible to 'foreigners' who use	 * a wild card based search to list it.	 */	if (para)	{		if (!mycmp(para, me.name))			doall = 2;		else if (match(para, me.name) == 0)			doall = 1;		if (index(para, '*') || index(para, '?'))			wilds = 1;	}	else		para = me.name;	sendto_one(sptr, Sformat, me.name, RPL_STATSLINKINFO, sptr->name);	if (!MyClient(sptr))	{		remote = 1;		wilds = 0;	}	for (i = 0; i <= LastSlot; i++)	{		if (!(acptr = local[i]))			continue;		if (IsInvisible(acptr) && (doall || wilds) &&			!(MyConnect(sptr) && IsOper(sptr)) &&			!IsAnOper(acptr) && (acptr != sptr))			continue;		if (remote && doall && !IsServer(acptr) && !IsMe(acptr))			continue;		if (remote && !doall && IsServer(acptr))			continue;		if (!doall && wilds && match(para, acptr->name))			continue;		if (!(para && (IsServer(acptr)			|| (acptr->flags & FLAGS_LISTEN))) && !(doall			|| wilds) && mycmp(para, acptr->name))			continue;#ifdef DEBUGMODE		ircsprintf(pbuf, "%ld :%ld", (long)acptr->cputime,		      (long)(acptr->user && MyConnect(acptr)) ? TStime() - acptr->last : 0);#endif		if (IsOper(sptr))		{			sendto_one(sptr, Lformat, me.name,				RPL_STATSLINKINFO, sptr->name, 				all ?				(get_client_name2(acptr, showports)) :				(get_client_name(acptr, FALSE)),				get_cptr_status(acptr),				(int)DBufLength(&acptr->sendQ),				(int)acptr->sendM, (int)acptr->sendK,				(int)acptr->receiveM,				(int)acptr->receiveK,			 	TStime() - acptr->firsttime,#ifndef DEBUGMODE				(acptr->user && MyConnect(acptr)) ?				TStime() - acptr->last : 0);#else				pbuf);#endif			if (!IsServer(acptr) && !IsMe(acptr) && IsAnOper(acptr) && sptr != acptr)				sendto_one(acptr,					":%s %s %s :*** %s did a /stats L on you! IP may have been shown",					me.name, IsWebTV(acptr) ? "PRIVMSG" : "NOTICE", 					acptr->name, sptr->name);		}		else if (!strchr(acptr->name, '.'))			sendto_one(sptr, Lformat, me.name,				RPL_STATSLINKINFO, sptr->name,				IsHidden(acptr) ? acptr->name :				all ?	/* Potvin - PreZ */				get_client_name2(acptr, showports) :				get_client_name(acptr, FALSE),				get_cptr_status(acptr),				(int)DBufLength(&acptr->sendQ),				(int)acptr->sendM, (int)acptr->sendK,				(int)acptr->receiveM,				(int)acptr->receiveK,				TStime() - acptr->firsttime,#ifndef DEBUGMODE				(acptr->user && MyConnect(acptr)) ?				TStime() - acptr->last : 0);#else				pbuf);#endif	}#ifdef DEBUGMODE	for (acptr = client; acptr; acptr = acptr->next)	{		if (IsServer(acptr))			sendto_one(sptr, ":%s NOTICE %s :Server %s is %s",				me.name, sptr->name, acptr->name, acptr->serv->flags.synced ? "SYNCED" : "NOT SYNCED!!");	}#endif	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -