201 |
|
Count.invisi, dlink_list_length(&global_serv_list)); |
202 |
|
else |
203 |
|
sendto_one(source_p, form_str(RPL_LUSERCLIENT), from, to, |
204 |
< |
(Count.total-Count.invisi), Count.invisi, 1); |
204 |
> |
(Count.total-Count.invisi), Count.invisi, 1); |
205 |
|
|
206 |
|
if (Count.oper > 0) |
207 |
|
sendto_one(source_p, form_str(RPL_LUSEROP), |
208 |
< |
from, to, Count.oper); |
208 |
> |
from, to, Count.oper); |
209 |
|
|
210 |
|
if (dlink_list_length(&unknown_list) > 0) |
211 |
|
sendto_one(source_p, form_str(RPL_LUSERUNKNOWN), |
212 |
< |
from, to, dlink_list_length(&unknown_list)); |
212 |
> |
from, to, dlink_list_length(&unknown_list)); |
213 |
|
|
214 |
|
if (dlink_list_length(&global_channel_list) > 0) |
215 |
|
sendto_one(source_p, form_str(RPL_LUSERCHANNELS), |
216 |
< |
from, to, |
217 |
< |
dlink_list_length(&global_channel_list)); |
216 |
> |
from, to, dlink_list_length(&global_channel_list)); |
217 |
|
|
218 |
|
if (!ConfigServerHide.hide_servers || IsOper(source_p)) |
219 |
|
{ |
220 |
|
sendto_one(source_p, form_str(RPL_LUSERME), |
221 |
< |
from, to, |
223 |
< |
Count.local, Count.myserver); |
221 |
> |
from, to, Count.local, Count.myserver); |
222 |
|
sendto_one(source_p, form_str(RPL_LOCALUSERS), |
223 |
< |
from, to, Count.local, Count.max_loc, |
224 |
< |
Count.local, Count.max_loc); |
223 |
> |
from, to, Count.local, Count.max_loc, |
224 |
> |
Count.local, Count.max_loc); |
225 |
|
} |
226 |
|
else |
227 |
|
{ |
228 |
|
sendto_one(source_p, form_str(RPL_LUSERME), |
229 |
< |
from, to, Count.total, 0); |
229 |
> |
from, to, Count.total, 0); |
230 |
|
sendto_one(source_p, form_str(RPL_LOCALUSERS), |
231 |
< |
from, to, Count.total, Count.max_tot, |
231 |
> |
from, to, Count.total, Count.max_tot, |
232 |
|
Count.total, Count.max_tot); |
233 |
|
} |
234 |
|
|
238 |
|
|
239 |
|
if (!ConfigServerHide.hide_servers || IsOper(source_p)) |
240 |
|
sendto_one(source_p, form_str(RPL_STATSCONN), from, to, |
241 |
< |
MaxConnectionCount, MaxClientCount, Count.totalrestartcount); |
241 |
> |
MaxConnectionCount, MaxClientCount, Count.totalrestartcount); |
242 |
|
|
243 |
|
if (Count.local > MaxClientCount) |
244 |
|
MaxClientCount = Count.local; |
288 |
|
{ |
289 |
|
const struct AccessItem *aconf = NULL; |
290 |
|
char ipaddr[HOSTIPLEN]; |
291 |
< |
dlink_node *ptr; |
292 |
< |
dlink_node *m; |
291 |
> |
dlink_node *ptr = NULL; |
292 |
> |
dlink_node *m = NULL; |
293 |
|
|
294 |
|
assert(source_p != NULL); |
295 |
|
assert(MyConnect(source_p)); |
500 |
|
*/ |
501 |
|
void |
502 |
|
register_remote_user(struct Client *client_p, struct Client *source_p, |
503 |
< |
const char *username, const char *host, const char *server, |
504 |
< |
const char *realname) |
503 |
> |
const char *username, const char *host, const char *server, |
504 |
> |
const char *realname) |
505 |
|
{ |
506 |
< |
struct Client *target_p; |
506 |
> |
struct Client *target_p = NULL; |
507 |
|
|
508 |
|
assert(source_p != NULL); |
509 |
|
assert(source_p->username != username); |
576 |
|
static void |
577 |
|
introduce_client(struct Client *client_p, struct Client *source_p) |
578 |
|
{ |
579 |
< |
dlink_node *server_node; |
579 |
> |
dlink_node *server_node = NULL; |
580 |
|
static char ubuf[12]; |
581 |
|
|
582 |
|
if (MyClient(source_p)) |
675 |
|
|
676 |
|
assert(p != NULL); |
677 |
|
|
678 |
< |
if (('.' == *p) || (':' == *p)) |
679 |
< |
return (0); |
678 |
> |
if ('.' == *p || ':' == *p) |
679 |
> |
return 0; |
680 |
|
|
681 |
|
while (*p) |
682 |
|
{ |
683 |
|
if (!IsHostChar(*p)) |
684 |
< |
return (0); |
684 |
> |
return 0; |
685 |
|
p++; |
686 |
|
} |
687 |
|
|
688 |
< |
return (1); |
688 |
> |
return 1; |
689 |
|
} |
690 |
|
|
691 |
|
/* valid_username() |
715 |
|
* or "-hi-@somehost", "h-----@somehost" would still be accepted. |
716 |
|
*/ |
717 |
|
if (!IsAlNum(*p)) |
718 |
< |
return (0); |
718 |
> |
return 0; |
719 |
|
|
720 |
|
while (*++p) |
721 |
|
{ |
724 |
|
dots++; |
725 |
|
|
726 |
|
if (dots > ConfigFileEntry.dots_in_ident) |
727 |
< |
return (0); |
727 |
> |
return 0; |
728 |
|
if (!IsUserChar(p[1])) |
729 |
< |
return (0); |
729 |
> |
return 0; |
730 |
|
} |
731 |
|
else if (!IsUserChar(*p)) |
732 |
< |
return (0); |
732 |
> |
return 0; |
733 |
|
} |
734 |
|
|
735 |
< |
return (1); |
735 |
> |
return 1; |
736 |
|
} |
737 |
|
|
738 |
|
/* report_and_set_user_flags() |
895 |
|
char **p, *m, buf[IRCD_BUFSIZE]; |
896 |
|
struct Client *target_p; |
897 |
|
int what = MODE_ADD, badflag = 0, i; |
898 |
< |
#if 0 |
899 |
< |
/* already covered by m_mode */ |
900 |
< |
if (parc < 2) |
903 |
< |
{ |
904 |
< |
sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS), |
905 |
< |
me.name, source_p->name, "MODE"); |
906 |
< |
return; |
907 |
< |
} |
908 |
< |
#endif |
898 |
> |
|
899 |
> |
assert(!(parc < 2)); |
900 |
> |
|
901 |
|
if ((target_p = find_person(client_p, parv[1])) == NULL) |
902 |
|
{ |
903 |
|
if (MyConnect(source_p)) |
906 |
|
return; |
907 |
|
} |
908 |
|
|
917 |
– |
/* Dont know why these were commented out.. |
918 |
– |
* put them back using new sendto() funcs |
919 |
– |
*/ |
909 |
|
if (IsServer(source_p)) |
910 |
|
{ |
911 |
|
sendto_realops_flags(UMODE_ALL, L_ADMIN, "*** Mode for User %s from %s", |
1006 |
|
badflag = 1; |
1007 |
|
} |
1008 |
|
else |
1009 |
< |
execute_callback(umode_cb, client_p, source_p, what, flag); |
1009 |
> |
execute_callback(umode_cb, client_p, source_p, what, flag); |
1010 |
|
} |
1011 |
|
else |
1012 |
|
{ |
1043 |
|
if ((setflags & UMODE_INVISIBLE) && !IsInvisible(source_p)) |
1044 |
|
--Count.invisi; |
1045 |
|
|
1046 |
< |
/* compare new flags with old flags and send string which |
1046 |
> |
/* |
1047 |
> |
* compare new flags with old flags and send string which |
1048 |
|
* will cause servers to update correctly. |
1049 |
|
*/ |
1050 |
|
send_umode_out(client_p, source_p, setflags); |
1063 |
|
unsigned int flag; |
1064 |
|
char *m = umode_buf; |
1065 |
|
|
1066 |
< |
/* build a string in umode_buf to represent the change in the user's |
1066 |
> |
/* |
1067 |
> |
* build a string in umode_buf to represent the change in the user's |
1068 |
|
* mode between the new (source_p->umodes) and 'old'. |
1069 |
|
*/ |
1070 |
|
for (i = 0; i < 128; i++) |
1170 |
|
sendto_one(source_p, form_str(RPL_WELCOME), me.name, source_p->name, |
1171 |
|
ServerInfo.network_name, source_p->name); |
1172 |
|
sendto_one(source_p, form_str(RPL_YOURHOST), me.name, source_p->name, |
1173 |
< |
get_listener_name(source_p->localClient->listener), ircd_version); |
1173 |
> |
get_listener_name(source_p->localClient->listener), ircd_version); |
1174 |
|
sendto_one(source_p, form_str(RPL_CREATED), |
1175 |
< |
me.name, source_p->name, built_date); |
1175 |
> |
me.name, source_p->name, built_date); |
1176 |
|
sendto_one(source_p, form_str(RPL_MYINFO), |
1177 |
|
me.name, source_p->name, me.name, ircd_version, umode_buffer); |
1178 |
|
show_isupport(source_p); |
1227 |
|
reason = "No Reason"; |
1228 |
|
|
1229 |
|
sendto_realops_flags(UMODE_REJ, L_ALL, |
1230 |
< |
"X-line Rejecting [%s] [%s], user %s [%s]", |
1231 |
< |
source_p->info, reason, |
1232 |
< |
get_client_name(source_p, HIDE_IP), |
1233 |
< |
source_p->sockhost); |
1230 |
> |
"X-line Rejecting [%s] [%s], user %s [%s]", |
1231 |
> |
source_p->info, reason, |
1232 |
> |
get_client_name(source_p, HIDE_IP), |
1233 |
> |
source_p->sockhost); |
1234 |
|
|
1235 |
|
ServerStats->is_ref++; |
1236 |
< |
if(REJECT_HOLD_TIME > 0) |
1236 |
> |
if (REJECT_HOLD_TIME > 0) |
1237 |
|
{ |
1238 |
|
sendto_one(source_p, ":%s NOTICE %s :Bad user info", |
1239 |
< |
me.name, source_p->name); |
1239 |
> |
me.name, source_p->name); |
1240 |
|
source_p->localClient->reject_delay = CurrentTime + REJECT_HOLD_TIME; |
1241 |
|
SetCaptured(source_p); |
1242 |
|
} |
1292 |
|
{ |
1293 |
|
unsigned int old = source_p->umodes; |
1294 |
|
const char *operprivs = ""; |
1295 |
< |
struct AccessItem *oconf; |
1295 |
> |
const struct AccessItem *oconf = NULL; |
1296 |
|
|
1297 |
+ |
assert(source_p->localClient->confs.head); |
1298 |
+ |
oconf = map_to_conf((source_p->localClient->confs.head)->data); |
1299 |
+ |
|
1300 |
+ |
++Count.oper; |
1301 |
|
SetOper(source_p); |
1302 |
|
|
1303 |
< |
if (ConfigFileEntry.oper_umodes) |
1303 |
> |
if (oconf->modes) |
1304 |
> |
source_p->umodes |= oconf->modes; |
1305 |
> |
else if (ConfigFileEntry.oper_umodes) |
1306 |
|
source_p->umodes |= ConfigFileEntry.oper_umodes; |
1307 |
|
else |
1308 |
|
source_p->umodes |= (UMODE_SERVNOTICE|UMODE_OPERWALL| |
1309 |
< |
UMODE_WALLOP|UMODE_LOCOPS); |
1313 |
< |
|
1314 |
< |
Count.oper++; |
1309 |
> |
UMODE_WALLOP|UMODE_LOCOPS); |
1310 |
|
|
1311 |
|
assert(dlinkFind(&oper_list, source_p) == NULL); |
1312 |
|
dlinkAdd(source_p, make_dlink_node(), &oper_list); |
1313 |
|
|
1319 |
– |
assert(source_p->localClient->confs.head); |
1320 |
– |
oconf = map_to_conf((source_p->localClient->confs.head)->data); |
1314 |
|
operprivs = oper_privs_as_string(oconf->port); |
1315 |
|
|
1316 |
|
SetOFlag(source_p, oconf->port); |
1356 |
|
if (ServerInfo.sid != NULL) |
1357 |
|
{ |
1358 |
|
memcpy(new_uid, ServerInfo.sid, IRCD_MIN(strlen(ServerInfo.sid), |
1359 |
< |
IRC_MAXSID)); |
1359 |
> |
IRC_MAXSID)); |
1360 |
|
memcpy(&me.id, ServerInfo.sid, IRCD_MIN(strlen(ServerInfo.sid), |
1361 |
< |
IRC_MAXSID)); |
1361 |
> |
IRC_MAXSID)); |
1362 |
|
hash_add_id(&me); |
1363 |
|
} |
1364 |
|
|
1388 |
|
static void * |
1389 |
|
uid_get(va_list args) |
1390 |
|
{ |
1391 |
< |
add_one_to_uid(TOTALSIDUID-1); /* index from 0 */ |
1391 |
> |
add_one_to_uid(TOTALSIDUID-1); /* index from 0 */ |
1392 |
|
return ((void *) new_uid); |
1393 |
|
} |
1394 |
|
|
1403 |
|
static void |
1404 |
|
add_one_to_uid(int i) |
1405 |
|
{ |
1406 |
< |
if (i != IRC_MAXSID) /* Not reached server SID portion yet? */ |
1406 |
> |
if (i != IRC_MAXSID) /* Not reached server SID portion yet? */ |
1407 |
|
{ |
1408 |
|
if (new_uid[i] == 'Z') |
1409 |
|
new_uid[i] = '0'; |
1566 |
|
if (++tokens == (MAXPARA-2) || len >= (sizeof(isupportbuffer)-reserve)) |
1567 |
|
{ /* arbritrary for now */ |
1568 |
|
if (*--p == ' ') |
1569 |
< |
*p = '\0'; |
1569 |
> |
*p = '\0'; |
1570 |
|
|
1571 |
|
addto_MessageLine(isupportFile, isupportbuffer); |
1572 |
|
p = isupportbuffer; |