summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/globals.h2
-rw-r--r--include/inspircd.h2
-rw-r--r--src/InspIRCd.layout32
-rw-r--r--src/inspircd.cpp49
-rw-r--r--src/modules.cpp2
5 files changed, 61 insertions, 26 deletions
diff --git a/include/globals.h b/include/globals.h
index 4f5e035e2..4087ab00c 100644
--- a/include/globals.h
+++ b/include/globals.h
@@ -29,7 +29,7 @@ void ChanExceptSender(chanrec* Ptr, userrec* user, char* text, ...);
int common_channels(userrec *u, userrec *u2);
void WriteCommon(userrec *u, char* text, ...);
void WriteCommonExcept(userrec *u, char* text, ...);
-void WriteWallOps(userrec *source, char* text, ...);
+void WriteWallOps(userrec *source, bool local_only, char* text, ...);
int isnick(const char *n);
userrec* Find(std::string nick);
chanrec* FindChan(const char* chan);
diff --git a/include/inspircd.h b/include/inspircd.h
index 6da27ce3f..c81efb992 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -91,7 +91,7 @@ void ChanExceptSender(chanrec* Ptr, userrec* user, char* text, ...);
int common_channels(userrec *u, userrec *u2);
void WriteCommon(userrec *u, char* text, ...);
void WriteCommonExcept(userrec *u, char* text, ...);
-void WriteWallOps(userrec *source, char* text, ...);
+void WriteWallOps(userrec *source, bool local_only, char* text, ...);
int isnick(const char *n);
userrec* Find(std::string nick);
chanrec* FindChan(const char* chan);
diff --git a/src/InspIRCd.layout b/src/InspIRCd.layout
index b2fd8089a..d4d4bbaec 100644
--- a/src/InspIRCd.layout
+++ b/src/InspIRCd.layout
@@ -1,5 +1,5 @@
[Editors]
-Focused=24
+Focused=-1
Order=1,2,-1,4,6,3,7,25,5,24
[Editor_0]
@@ -13,9 +13,9 @@ LeftChar=1
[Editor_1]
Open=1
Top=0
-CursorCol=17
-CursorRow=6600
-TopLine=6573
+CursorCol=6
+CursorRow=952
+TopLine=952
LeftChar=1
[Editor_2]
@@ -37,9 +37,9 @@ LeftChar=1
[Editor_4]
Open=1
Top=0
-CursorCol=57
-CursorRow=180
-TopLine=145
+CursorCol=26
+CursorRow=258
+TopLine=204
LeftChar=1
[Editor_5]
@@ -132,17 +132,17 @@ LeftChar=1
[Editor_16]
Open=1
-Top=0
-CursorCol=34
-CursorRow=29
+Top=1
+CursorCol=6
+CursorRow=32
TopLine=1
LeftChar=1
[Editor_17]
Open=1
Top=0
-CursorCol=25
-CursorRow=115
+CursorCol=6
+CursorRow=94
TopLine=62
LeftChar=1
@@ -196,10 +196,10 @@ LeftChar=1
[Editor_24]
Open=1
-Top=1
-CursorCol=1
-CursorRow=220
-TopLine=212
+Top=0
+CursorCol=13
+CursorRow=83
+TopLine=56
LeftChar=1
[Editor_25]
Open=1
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 607c79b83..bd0198e5f 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -949,7 +949,7 @@ void WriteMode(const char* modes, int flags, const char* text, ...)
}
}
-void WriteWallOps(userrec *source, char* text, ...)
+void WriteWallOps(userrec *source, bool local_only, char* text, ...)
{
if ((!text) || (!source))
{
@@ -969,11 +969,28 @@ void WriteWallOps(userrec *source, char* text, ...)
if (i->second)
{
if (strchr(i->second->modes,'w'))
- {
+ {
WriteTo(source,i->second,"WALLOPS %s",textbuffer);
}
}
}
+
+ if (!local_only)
+ {
+ char buffer[MAXBUF];
+ snprintf(buffer,MAXBUF,"@ %s :%s",source->nick,textbuffer);
+ for (int j = 0; j < 255; j++)
+ {
+ if (servers[j] != NULL)
+ {
+ if (strcmp(servers[j]->name,ServerName))
+ {
+ me[defaultRoute]->SendPacket(buffer,servers[j]->internal_addr,servers[j]->internal_port,MyKey);
+ log(DEBUG,"Sent @ token");
+ }
+ }
+ }
+ }
}
/* convert a string to lowercase. Note following special circumstances
@@ -3914,7 +3931,7 @@ void handle_kill(char **parameters, int pcnt, userrec *user)
if (strcmp(ServerName,u->server))
{
// remote kill
- WriteOpers("*** Remote kill: %s!%s@%s (%s)",user->nick,u->nick,u->ident,u->host,parameters[1]);
+ WriteOpers("*** Remote kill by %s: %s!%s@%s (%s)",user->nick,u->nick,u->ident,u->host,parameters[1]);
sprintf(killreason,"[%s] Killed (%s (%s))",ServerName,user->nick,parameters[1]);
WriteCommonExcept(u,"QUIT :%s",killreason);
// K token must go to ALL servers!!!
@@ -4869,7 +4886,7 @@ void handle_who(char **parameters, int pcnt, userrec *user)
void handle_wallops(char **parameters, int pcnt, userrec *user)
{
- WriteWallOps(user,"%s",parameters[0]);
+ WriteWallOps(user,false,"%s",parameters[0]);
}
void handle_list(char **parameters, int pcnt, userrec *user)
@@ -6280,9 +6297,9 @@ void handle_K(char token,char* params,serverrec* source,serverrec* reply, char*
if ((user) && (u))
{
- WriteTo(user, u, "KILL %s :%s!%s!%s!%s (%s)", u->nick, ServerName, reply->name, user->dhost,user->nick,reason);
+ WriteTo(user, u, "KILL %s :%s!%s!%s!%s (%s)", u->nick, source->name, ServerName, user->dhost,user->nick,reason);
WriteOpers("*** Remote kill from %s by %s: %s!%s@%s (%s)",source->name,user->nick,u->nick,u->ident,u->host,reason);
- snprintf(kreason,MAXBUF,"[%s] Killed (%s (%s))",reply->name,user->nick,reason);
+ snprintf(kreason,MAXBUF,"[%s] Killed (%s (%s))",source->name,user->nick,reason);
kill_link(u,kreason);
}
}
@@ -6355,6 +6372,19 @@ void handle_k(char token,char* params,serverrec* source,serverrec* reply, char*
}
}
+void handle_AT(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port)
+{
+ char* who = strtok(params," :");
+ char* text = strtok(NULL,"\r\n");
+ text++;
+ userrec* s = Find(who);
+ if (s)
+ {
+ WriteWallOps(s,true,text);
+ }
+}
+
+
void handle_N(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port)
{
char* tm = strtok(params," ");
@@ -6555,11 +6585,16 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve
case 'Q':
handle_Q(token,params,source,reply,udp_host,udp_port);
break;
- // K <SOURCE> :<REASON>
+ // K <SOURCE> <DEST> :<REASON>
// remote kill
case 'K':
handle_K(token,params,source,reply,udp_host,udp_port);
break;
+ // @ <SOURCE> :<TEXT>
+ // wallops
+ case '@':
+ handle_AT(token,params,source,reply,udp_host,udp_port);
+ break;
// F <TS>
// end netburst
case 'F':
diff --git a/src/modules.cpp b/src/modules.cpp
index 548f6fdcb..1ff2f3f9d 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -255,7 +255,7 @@ void Server::SendCommon(userrec* User, std::string text,bool IncludeSender)
void Server::SendWallops(userrec* User, std::string text)
{
- WriteWallOps(User,"%s",text.c_str());
+ WriteWallOps(User,false,"%s",text.c_str());
}
bool Server::IsNick(std::string nick)