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:
@@ -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
@@ -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),
|
||||
|
||||
@@ -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... */
|
||||
|
||||
Reference in New Issue
Block a user