X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/9c2f9ec9a2520a74f4878370a18e55fe34414e0a..03d18a46b12cab6358d58033569ab2302ad9a543:/modules/core/m_server.c diff --git a/modules/core/m_server.c b/modules/core/m_server.c index bc64f3b..dfcf18e 100644 --- a/modules/core/m_server.c +++ b/modules/core/m_server.c @@ -25,20 +25,18 @@ */ #include "stdinc.h" -#include "tools.h" #include "client.h" /* client struct */ #include "common.h" /* TRUE bleah */ -#include "event.h" #include "hash.h" /* add_to_client_hash */ #include "irc_string.h" #include "ircd.h" /* me */ #include "numeric.h" /* ERR_xxx */ #include "s_conf.h" /* struct ConfItem */ #include "s_newconf.h" -#include "s_log.h" /* log level defines */ +#include "logger.h" /* log level defines */ #include "s_serv.h" /* server_estab, check_server */ #include "s_stats.h" /* ServerStats */ -#include "scache.h" /* find_or_add */ +#include "scache.h" #include "send.h" /* sendto_one */ #include "msg.h" #include "parse.h" @@ -134,7 +132,7 @@ mr_server(struct Client *client_p, struct Client *source_p, int parc, const char break; case -2: - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_GENERAL, is_remote_connect(client_p) ? L_NETWIDE : L_ALL, "Unauthorised server connection attempt from %s: " "Bad password for server %s", get_server_name(client_p, HIDE_IP), name); @@ -175,6 +173,15 @@ mr_server(struct Client *client_p, struct Client *source_p, int parc, const char return 0; /* NOT REACHED */ break; + case -5: + sendto_realops_snomask(SNO_GENERAL, L_ALL, + "Connection from servername %s requires SSL/TLS but is plaintext", + name); + ilog(L_SERVER, "Access denied, requires SSL/TLS but is plaintext from %s", + log_client_name(client_p, SHOW_IP)); + + exit_client(client_p, client_p, client_p, "Access denied, requires SSL/TLS but is plaintext"); + return 0; } if((target_p = find_server(NULL, name))) @@ -203,7 +210,7 @@ mr_server(struct Client *client_p, struct Client *source_p, int parc, const char if(has_id(client_p) && (target_p = find_id(client_p->id)) != NULL) { - sendto_realops_snomask(SNO_GENERAL, L_ALL, + sendto_realops_snomask(SNO_GENERAL, is_remote_connect(client_p) ? L_NETWIDE : L_ALL, "Attempt to re-introduce SID %s from %s%s", client_p->id, EmptyString(client_p->name) ? name : "", @@ -250,7 +257,7 @@ ms_server(struct Client *client_p, struct Client *source_p, int parc, const char int hop; int hlined = 0; int llined = 0; - dlink_node *ptr; + rb_dlink_node *ptr; name = parv[1]; hop = atoi(parv[2]); @@ -333,7 +340,7 @@ ms_server(struct Client *client_p, struct Client *source_p, int parc, const char * leaf. If so, close the link. * */ - DLINK_FOREACH(ptr, hubleaf_conf_list.head) + RB_DLINK_FOREACH(ptr, hubleaf_conf_list.head) { hub_p = ptr->data; @@ -418,19 +425,16 @@ ms_server(struct Client *client_p, struct Client *source_p, int parc, const char set_server_gecos(target_p, info); - target_p->serv->up = find_or_add(source_p->name); - - if(has_id(source_p)) - target_p->serv->upid = source_p->id; - target_p->servptr = source_p; SetServer(target_p); - dlinkAddTail(target_p, &target_p->node, &global_client_list); - dlinkAddTailAlloc(target_p, &global_serv_list); + rb_dlinkAddTail(target_p, &target_p->node, &global_client_list); + rb_dlinkAddTailAlloc(target_p, &global_serv_list); add_to_client_hash(target_p->name, target_p); - dlinkAdd(target_p, &target_p->lnode, &target_p->servptr->serv->servers); + rb_dlinkAdd(target_p, &target_p->lnode, &target_p->servptr->serv->servers); + + target_p->serv->nameinfo = scache_connect(target_p->name, target_p->info, IsHidden(target_p)); sendto_server(client_p, NULL, NOCAPS, NOCAPS, ":%s SERVER %s %d :%s%s", @@ -456,7 +460,7 @@ ms_sid(struct Client *client_p, struct Client *source_p, int parc, const char *p struct Client *target_p; struct remote_conf *hub_p; hook_data_client hdata; - dlink_node *ptr; + rb_dlink_node *ptr; int hop; int hlined = 0; int llined = 0; @@ -487,7 +491,7 @@ ms_sid(struct Client *client_p, struct Client *source_p, int parc, const char *p ilog(L_SERVER, "Link %s cancelled, SID %s already exists", client_p->name, parv[3]); - exit_client(NULL, client_p, &me, "Server Exists"); + exit_client(NULL, client_p, &me, "SID Exists"); return 0; } @@ -522,7 +526,7 @@ ms_sid(struct Client *client_p, struct Client *source_p, int parc, const char *p * H: allows it to introduce a server matching that mask * L: disallows it introducing a server matching that mask */ - DLINK_FOREACH(ptr, hubleaf_conf_list.head) + RB_DLINK_FOREACH(ptr, hubleaf_conf_list.head) { hub_p = ptr->data; @@ -570,19 +574,16 @@ ms_sid(struct Client *client_p, struct Client *source_p, int parc, const char *p strcpy(target_p->id, parv[3]); set_server_gecos(target_p, parv[4]); - target_p->serv->up = find_or_add(source_p->name); - - if(has_id(source_p)) - target_p->serv->upid = source_p->id; - target_p->servptr = source_p; SetServer(target_p); - dlinkAddTail(target_p, &target_p->node, &global_client_list); - dlinkAddTailAlloc(target_p, &global_serv_list); + rb_dlinkAddTail(target_p, &target_p->node, &global_client_list); + rb_dlinkAddTailAlloc(target_p, &global_serv_list); add_to_client_hash(target_p->name, target_p); add_to_id_hash(target_p->id, target_p); - dlinkAdd(target_p, &target_p->lnode, &target_p->servptr->serv->servers); + rb_dlinkAdd(target_p, &target_p->lnode, &target_p->servptr->serv->servers); + + target_p->serv->nameinfo = scache_connect(target_p->name, target_p->info, IsHidden(target_p)); sendto_server(client_p, NULL, CAP_TS6, NOCAPS, ":%s SID %s %d %s :%s%s",