1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-07 13:03:13 +02:00

- Services coders: Added support for ESVID. Instead of a number you can

now store a string (of max NICKLEN size) as service stamp. See
  protoctl.txt and serverprotocol.html in doc/technical for more
  information.
  Patch from nenotopia (#3966).
This commit is contained in:
Bram Matthys
2011-12-25 14:26:53 +01:00
parent e8244902f8
commit d272d2d6a0
11 changed files with 61 additions and 43 deletions
+1 -1
View File
@@ -1170,7 +1170,7 @@ int _register_user(aClient *cptr, aClient *sptr, char *nick, char *username, cha
/* NICKv2 Servers ! */
sendto_serv_butone_nickcmd(cptr, sptr, nick,
sptr->hopcount + 1, sptr->lastnick, user->username, user->realhost,
user->server, user->servicestamp, sptr->info,
user->server, user->svid, sptr->info,
(!buf || *buf == '\0' ? "+" : buf),
sptr->umodes & UMODE_SETHOST ? sptr->user->virthost : NULL);
+10 -10
View File
@@ -886,13 +886,13 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
if (!SupportNICKv2(cptr))
{
sendto_one(cptr,
"%s %s %d %ld %s %s %s %lu :%s",
"%s %s %d %ld %s %s %s %s :%s",
(IsToken(cptr) ? TOK_NICK : MSG_NICK),
acptr->name, acptr->hopcount + 1,
acptr->lastnick, acptr->user->username,
acptr->user->realhost,
acptr->user->server,
(unsigned long)acptr->user->servicestamp, acptr->info);
acptr->user->svid, acptr->info);
send_umode(cptr, acptr, 0, SEND_UMODES, buf);
if (IsHidden(acptr) && acptr->user->virthost)
sendto_one(cptr, ":%s %s %s",
@@ -912,9 +912,9 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
{
sendto_one(cptr,
((cptr->proto & PROTO_SJB64) ?
"%s %s %d %B %s %s %b %lu %s %s %s%s%s%s:%s"
"%s %s %d %B %s %s %b %s %s %s %s%s%s%s:%s"
:
"%s %s %d %lu %s %s %b %lu %s %s %s%s%s%s:%s"),
"%s %s %d %lu %s %s %b %s %s %s %s%s%s%s:%s"),
(IsToken(cptr) ? TOK_NICK : MSG_NICK),
acptr->name,
acptr->hopcount + 1,
@@ -922,7 +922,7 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
acptr->user->username,
acptr->user->realhost,
(long)(acptr->srvptr->serv->numeric),
(unsigned long)acptr->user->servicestamp,
acptr->user->svid,
(!buf || *buf == '\0' ? "+" : buf),
((IsHidden(acptr) && (acptr->umodes & UMODE_SETHOST)) ? acptr->user->virthost : "*"),
SupportCLK(cptr) ? getcloak(acptr) : "",
@@ -935,9 +935,9 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
{
sendto_one(cptr,
(cptr->proto & PROTO_SJB64 ?
"%s %s %d %B %s %s %s %lu %s %s %s%s%s%s:%s"
"%s %s %d %B %s %s %s %s %s %s %s%s%s%s:%s"
:
"%s %s %d %lu %s %s %s %lu %s %s %s%s%s%s:%s"),
"%s %s %d %lu %s %s %s %s %s %s %s%s%s%s:%s"),
(IsToken(cptr) ? TOK_NICK : MSG_NICK),
acptr->name,
acptr->hopcount + 1,
@@ -945,7 +945,7 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
acptr->user->username,
acptr->user->realhost,
acptr->user->server,
(unsigned long)acptr->user->servicestamp,
acptr->user->svid,
(!buf || *buf == '\0' ? "+" : buf),
((IsHidden(acptr) && (acptr->umodes & UMODE_SETHOST)) ? acptr->user->virthost : "*"),
SupportCLK(cptr) ? getcloak(acptr) : "",
@@ -957,7 +957,7 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
}
else
sendto_one(cptr,
"%s %s %d %ld %s %s %s %lu %s %s %s%s:%s",
"%s %s %d %ld %s %s %s %s %s %s %s%s:%s",
(IsToken(cptr) ? TOK_NICK :
MSG_NICK), acptr->name,
acptr->hopcount + 1,
@@ -969,7 +969,7 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
base64enc(acptr->srvptr->
serv->numeric) : acptr->
user->server) : acptr->user->
server), (unsigned long)acptr->user->servicestamp,
server), acptr->user->svid,
(!buf
|| *buf == '\0' ? "+" : buf),
GetHost(acptr),
+7 -8
View File
@@ -91,7 +91,7 @@ DLLFUNC CMD_FUNC(m_user)
#define UFLAGS (UMODE_INVISIBLE|UMODE_WALLOP|UMODE_SERVNOTICE)
char *username, *host, *server, *realname, *umodex = NULL, *virthost =
NULL, *ip = NULL;
u_int32_t sstamp = 0;
char *sstamp = NULL;
anUser *user;
aClient *acptr;
@@ -129,23 +129,20 @@ DLLFUNC CMD_FUNC(m_user)
if (parc == 6 && IsServer(cptr))
{
if (isdigit(*parv[4]))
sstamp = strtoul(parv[4], NULL, 10);
sstamp = (BadPtr(parv[4])) ? "*" : parv[4];
realname = (BadPtr(parv[5])) ? "<bad-realname>" : parv[5];
umodex = NULL;
}
else if (parc == 8 && IsServer(cptr))
{
if (isdigit(*parv[4]))
sstamp = strtoul(parv[4], NULL, 10);
sstamp = (BadPtr(parv[4])) ? "*" : parv[4];
realname = (BadPtr(parv[7])) ? "<bad-realname>" : parv[7];
umodex = parv[5];
virthost = parv[6];
}
else if (parc == 9 && IsServer(cptr))
{
if (isdigit(*parv[4]))
sstamp = strtoul(parv[4], NULL, 10);
sstamp = (BadPtr(parv[4])) ? "*" : parv[4];
realname = (BadPtr(parv[8])) ? "<bad-realname>" : parv[8];
umodex = parv[5];
virthost = parv[6];
@@ -202,7 +199,9 @@ DLLFUNC CMD_FUNC(m_user)
user->ip_str = strdup(Inet_ia2p(&sptr->ip));
user->server = me_hash;
user_finish:
user->servicestamp = sstamp;
if (sstamp != NULL)
strlcpy(user->svid, sstamp, sizeof(user->svid));
strlcpy(sptr->info, realname, sizeof(sptr->info));
if (sptr->name[0] && (IsServer(cptr) ? 1 : IsNotSpoof(sptr)))
/* NICK and no-spoof already received, now we have USER... */