#include <stdarg.h>
#include "connection.h"
#include "users.h"
-#include "servers.h"
#include "ctables.h"
#include "globals.h"
#include "modules.h"
extern std::stringstream config_f;
-extern serverrec* me[32];
+
extern FILE *log_file;
extern userrec* fd_ref_table[65536];
std::string GetServerDescription(char* servername)
{
- for (int j = 0; j < 32; j++)
- {
- if (me[j] != NULL)
- {
- for (unsigned int k = 0; k < me[j]->connectors.size(); k++)
- {
- if (!strcasecmp(me[j]->connectors[k].GetServerName().c_str(),servername))
- {
- return me[j]->connectors[k].GetDescription();
- }
- }
- }
- }
- return ServerDesc; // not a remote server that can be found, it must be me.
+ std::string description = "";
+ FOREACH_MOD OnGetServerDescription(servername,description);
+ if (description != "")
+ {
+ return description;
+ }
+ else
+ {
+ return ServerDesc; // not a remote server that can be found, it must be me.
+ }
}
/* write a formatted string to all users who share at least one common
}
}
+void ServerNoticeAll(char* text, ...)
+{
+ if (!text)
+ return;
+
+ char textbuffer[MAXBUF];
+ va_list argsPtr;
+ va_start (argsPtr, text);
+ vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+ va_end(argsPtr);
+
+ for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++)
+ {
+ if ((i->second) && (i->second->fd != FD_MAGIC_NUMBER))
+ {
+ WriteServ(i->second->fd,"NOTICE $%s :%s",ServerName,textbuffer);
+ }
+ }
+}
+
+void ServerPrivmsgAll(char* text, ...)
+{
+ if (!text)
+ return;
+
+ char textbuffer[MAXBUF];
+ va_list argsPtr;
+ va_start (argsPtr, text);
+ vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+ va_end(argsPtr);
+
+ for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++)
+ {
+ if ((i->second) && (i->second->fd != FD_MAGIC_NUMBER))
+ {
+ WriteServ(i->second->fd,"PRIVMSG $%s :%s",ServerName,textbuffer);
+ }
+ }
+}
+
void NoticeAllOpers(userrec *source, bool local_only, char* text, ...)
{
if ((!text) || (!source))
int c = 0;
for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++)
{
- if ((i->second->fd) && (isnick(i->second->nick))) c++;
+ if (i->second->registered == 7) c++;
}
return c;
}
int usercount_invisible(void)
{
int c = 0;
-
for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++)
{
- if ((i->second->fd) && (isnick(i->second->nick)) && (strchr(i->second->modes,'i'))) c++;
+ if ((isnick(i->second->nick)) && (strchr(i->second->modes,'i'))) c++;
}
return c;
}
int usercount_opers(void)
{
int c = 0;
-
for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++)
{
- if ((i->second->fd) && (isnick(i->second->nick)) && (strchr(i->second->modes,'o'))) c++;
+ if ((isnick(i->second->nick)) && (strchr(i->second->modes,'o'))) c++;
}
return c;
}
long count_servs(void)
{
- int c = 0;
- for (int i = 0; i < 32; i++)
- {
- if (me[i] != NULL)
- {
- for (vector<ircd_connector>::iterator j = me[i]->connectors.begin(); j != me[i]->connectors.end(); j++)
- {
- if (strcasecmp(j->GetServerName().c_str(),ServerName))
- {
- c++;
- }
- }
- }
- }
- return c;
+ return 0;
}
long servercount(void)
char islast(const char* s)
{
- char c = '`';
- for (int j = 0; j < 32; j++)
- {
- if (me[j] != NULL)
- {
- for (unsigned int k = 0; k < me[j]->connectors.size(); k++)
- {
- if (strcasecmp(me[j]->connectors[k].GetServerName().c_str(),s))
- {
- c = '|';
- }
- if (!strcasecmp(me[j]->connectors[k].GetServerName().c_str(),s))
- {
- c = '`';
- }
- }
- }
- }
- return c;
+ return '+';
}
long map_count(const char* s)