X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/88c478c2d2965bc37fbc08ee6f37db8e41208176..dd28e3f2a460597388a6ef6c9f5ed5de3acf6df1:/src/s_conf.c diff --git a/src/s_conf.c b/src/s_conf.c index 203e59f5..a329c7b7 100644 --- a/src/s_conf.c +++ b/src/s_conf.c @@ -184,10 +184,10 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern if((i = verify_access(source_p, username))) { - ilog(L_FUSER, "Access denied: %s[%s]", + ilog(L_FUSER, "Access denied: %s[%s]", source_p->name, source_p->sockhost); } - + switch (i) { case SOCKET_ERROR: @@ -207,7 +207,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern ilog(L_FUSER, "Too many local connections from %s!%s%s@%s", source_p->name, IsGotId(source_p) ? "" : "~", - source_p->username, source_p->sockhost); + source_p->username, source_p->sockhost); ServerStats.is_ref++; exit_client(client_p, source_p, &me, "Too many host connections (local)"); @@ -248,7 +248,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern source_p->username, source_p->host, show_ip(NULL, source_p) && !IsIPSpoof(source_p) ? source_p->sockhost : "255.255.255.255"); - ilog(L_FUSER, "Too many connections from %s!%s%s@%s.", + ilog(L_FUSER, "Too many connections from %s!%s%s@%s.", source_p->name, IsGotId(source_p) ? "" : "~", source_p->username, source_p->sockhost); @@ -266,7 +266,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern else #endif port = ntohs(((struct sockaddr_in *)&source_p->localClient->listener->addr)->sin_port); - + ServerStats.is_ref++; /* jdc - lists server name & port connections are on */ /* a purely cosmetical change */ @@ -321,7 +321,7 @@ verify_access(struct Client *client_p, const char *username) if(IsGotId(client_p)) { - aconf = find_address_conf(client_p->host, client_p->sockhost, + aconf = find_address_conf(client_p->host, client_p->sockhost, client_p->username, client_p->username, (struct sockaddr *) &client_p->localClient->ip, client_p->localClient->ip.ss_family, @@ -401,7 +401,7 @@ verify_access(struct Client *client_p, const char *username) /* * add_ip_limit - * + * * Returns 1 if successful 0 if not * * This checks if the user has exceed the limits for their class @@ -572,7 +572,7 @@ detach_conf(struct Client *client_p) /* * attach_conf - * + * * inputs - client pointer * - conf pointer * output - @@ -673,8 +673,8 @@ set_default_conf(void) /* ServerInfo.name is not rehashable */ /* ServerInfo.name = ServerInfo.name; */ ServerInfo.description = NULL; - ServerInfo.network_name = rb_strdup(NETWORK_NAME_DEFAULT); - ServerInfo.network_desc = rb_strdup(NETWORK_DESC_DEFAULT); + ServerInfo.network_name = NULL; + ServerInfo.network_desc = NULL; memset(&ServerInfo.ip, 0, sizeof(ServerInfo.ip)); ServerInfo.specific_ipv4_vhost = 0; @@ -689,11 +689,12 @@ set_default_conf(void) AdminInfo.email = NULL; AdminInfo.description = NULL; - ConfigFileEntry.default_operstring = rb_strdup("is an IRC operator"); - ConfigFileEntry.default_adminstring = rb_strdup("is a Server Administrator"); - ConfigFileEntry.servicestring = rb_strdup("is a Network Service"); + ConfigFileEntry.default_operstring = NULL; + ConfigFileEntry.default_adminstring = NULL; + ConfigFileEntry.servicestring = NULL; + ConfigFileEntry.sasl_service = NULL; - ConfigFileEntry.default_umodes = UMODE_INVISIBLE; + ConfigFileEntry.default_umodes = UMODE_INVISIBLE; ConfigFileEntry.failed_oper_notice = YES; ConfigFileEntry.anti_nick_flood = NO; ConfigFileEntry.disable_fake_channels = NO; @@ -732,6 +733,7 @@ set_default_conf(void) ConfigFileEntry.fname_operlog = NULL; ConfigFileEntry.fname_foperlog = NULL; ConfigFileEntry.fname_serverlog = NULL; + ConfigFileEntry.fname_killlog = NULL; ConfigFileEntry.fname_klinelog = NULL; ConfigFileEntry.fname_operspylog = NULL; ConfigFileEntry.fname_ioerrorlog = NULL; @@ -793,7 +795,7 @@ set_default_conf(void) ConfigFileEntry.tkline_expire_notices = 0; ConfigFileEntry.reject_after_count = 5; - ConfigFileEntry.reject_ban_time = 300; + ConfigFileEntry.reject_ban_time = 300; ConfigFileEntry.reject_duration = 120; ConfigFileEntry.throttle_count = 4; ConfigFileEntry.throttle_duration = 60; @@ -816,7 +818,7 @@ set_default_conf(void) #undef NO /* - * read_conf() + * read_conf() * * * inputs - file descriptor pointing to config file to use @@ -872,9 +874,22 @@ validate_conf(void) int start = ServerInfo.ssld_count - get_ssld_count(); /* start up additional ssld if needed */ start_ssldaemon(start, ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params); - + } + /* General conf */ + if (ConfigFileEntry.default_operstring == NULL) + ConfigFileEntry.default_operstring = rb_strdup("is an IRC operator"); + + if (ConfigFileEntry.default_adminstring == NULL) + ConfigFileEntry.default_adminstring = rb_strdup("is a Server Administrator"); + + if (ConfigFileEntry.servicestring == NULL) + ConfigFileEntry.servicestring = rb_strdup("is a Network Service"); + + if (ConfigFileEntry.sasl_service == NULL) + ConfigFileEntry.sasl_service = rb_strdup("SaslServ"); + /* RFC 1459 says 1 message per 2 seconds on average and bursts of * 5 messages are acceptable, so allow at least that. */ @@ -905,7 +920,7 @@ validate_conf(void) * * inputs - pointer to struct ConfItem * output - none - * Side effects - links in given struct ConfItem into + * Side effects - links in given struct ConfItem into * temporary kline link list */ void @@ -971,7 +986,7 @@ add_temp_dline(struct ConfItem *aconf) } /* valid_wild_card() - * + * * input - user buffer, host buffer * output - 0 if invalid, 1 if valid * side effects - @@ -1046,7 +1061,7 @@ find_prop_ban(unsigned int status, const char *user, const char *host) } void -deactivate_conf(struct ConfItem *aconf, rb_dlink_node *ptr) +deactivate_conf(struct ConfItem *aconf, rb_dlink_node *ptr, time_t now) { int i; @@ -1085,7 +1100,7 @@ deactivate_conf(struct ConfItem *aconf, rb_dlink_node *ptr) del_from_resv_hash(aconf->host, aconf); break; } - if (aconf->lifetime != 0 && rb_current_time() < aconf->lifetime) + if (aconf->lifetime != 0 && now < aconf->lifetime) aconf->status |= CONF_ILLEGAL; else { @@ -1121,7 +1136,7 @@ replace_old_ban(struct ConfItem *aconf) aconf->lifetime = aconf->hold; /* Tell deactivate_conf() to destroy it. */ oldconf->lifetime = rb_current_time(); - deactivate_conf(oldconf, ptr); + deactivate_conf(oldconf, ptr, oldconf->lifetime); } } @@ -1131,13 +1146,15 @@ expire_prop_bans(void *list) rb_dlink_node *ptr; rb_dlink_node *next_ptr; struct ConfItem *aconf; + time_t now; + now = rb_current_time(); RB_DLINK_FOREACH_SAFE(ptr, next_ptr, ((rb_dlink_list *) list)->head) { aconf = ptr->data; - if(aconf->lifetime <= rb_current_time() || - (aconf->hold <= rb_current_time() && + if(aconf->lifetime <= now || + (aconf->hold <= now && !(aconf->status & CONF_ILLEGAL))) { /* Alert opers that a TKline expired - Hwy */ @@ -1151,7 +1168,7 @@ expire_prop_bans(void *list) aconf->host ? aconf->host : "*"); /* will destroy or mark illegal */ - deactivate_conf(aconf, ptr); + deactivate_conf(aconf, ptr, now); } } } @@ -1201,7 +1218,7 @@ reorganise_temp_kd(void *list) if(aconf->hold < (rb_current_time() + (60 * 60))) { - rb_dlinkMoveNode(ptr, list, (aconf->status == CONF_KILL) ? + rb_dlinkMoveNode(ptr, list, (aconf->status == CONF_KILL) ? &temp_klines[TEMP_MIN] : &temp_dlines[TEMP_MIN]); aconf->port = TEMP_MIN; } @@ -1209,14 +1226,14 @@ reorganise_temp_kd(void *list) { if(aconf->hold < (rb_current_time() + (1440 * 60))) { - rb_dlinkMoveNode(ptr, list, (aconf->status == CONF_KILL) ? + rb_dlinkMoveNode(ptr, list, (aconf->status == CONF_KILL) ? &temp_klines[TEMP_HOUR] : &temp_dlines[TEMP_HOUR]); aconf->port = TEMP_HOUR; } - else if(aconf->port > TEMP_DAY && + else if(aconf->port > TEMP_DAY && (aconf->hold < (rb_current_time() + (10080 * 60)))) { - rb_dlinkMoveNode(ptr, list, (aconf->status == CONF_KILL) ? + rb_dlinkMoveNode(ptr, list, (aconf->status == CONF_KILL) ? &temp_klines[TEMP_DAY] : &temp_dlines[TEMP_DAY]); aconf->port = TEMP_DAY; } @@ -1246,7 +1263,7 @@ get_oper_name(struct Client *client_p) } rb_snprintf(buffer, sizeof(buffer), "%s!%s@%s{%s}", - client_p->name, client_p->username, + client_p->name, client_p->username, client_p->host, client_p->servptr->name); return buffer; } @@ -1256,7 +1273,7 @@ get_oper_name(struct Client *client_p) * * inputs - struct ConfItem * - * output - name + * output - name * - host * - pass * - user @@ -1310,7 +1327,7 @@ get_user_ban_reason(struct ConfItem *aconf) } void -get_printable_kline(struct Client *source_p, struct ConfItem *aconf, +get_printable_kline(struct Client *source_p, struct ConfItem *aconf, char **host, char **reason, char **user, char **oper_reason) { @@ -1353,7 +1370,7 @@ read_conf_files(int cold) FIXME: The full path is in conffilenamebuf first time since we dont know anything else - - Gozem 2002-07-21 + - Gozem 2002-07-21 */ @@ -1468,8 +1485,36 @@ clear_out_old_conf(void) */ /* clean out general */ + rb_free(ConfigFileEntry.default_operstring); + ConfigFileEntry.default_operstring = NULL; + rb_free(ConfigFileEntry.default_adminstring); + ConfigFileEntry.default_adminstring = NULL; + rb_free(ConfigFileEntry.servicestring); + ConfigFileEntry.servicestring = NULL; rb_free(ConfigFileEntry.kline_reason); ConfigFileEntry.kline_reason = NULL; + rb_free(ConfigFileEntry.sasl_service); + ConfigFileEntry.sasl_service = NULL; + + /* clean out log */ + rb_free(ConfigFileEntry.fname_userlog); + ConfigFileEntry.fname_userlog = NULL; + rb_free(ConfigFileEntry.fname_fuserlog); + ConfigFileEntry.fname_fuserlog = NULL; + rb_free(ConfigFileEntry.fname_operlog); + ConfigFileEntry.fname_operlog = NULL; + rb_free(ConfigFileEntry.fname_foperlog); + ConfigFileEntry.fname_foperlog = NULL; + rb_free(ConfigFileEntry.fname_serverlog); + ConfigFileEntry.fname_serverlog = NULL; + rb_free(ConfigFileEntry.fname_killlog); + ConfigFileEntry.fname_killlog = NULL; + rb_free(ConfigFileEntry.fname_klinelog); + ConfigFileEntry.fname_klinelog = NULL; + rb_free(ConfigFileEntry.fname_operspylog); + ConfigFileEntry.fname_operspylog = NULL; + rb_free(ConfigFileEntry.fname_ioerrorlog); + ConfigFileEntry.fname_ioerrorlog = NULL; RB_DLINK_FOREACH_SAFE(ptr, next_ptr, service_list.head) { @@ -1496,7 +1541,7 @@ clear_out_old_conf(void) * conf_add_class_to_conf * inputs - pointer to config item * output - NONE - * side effects - Add a class pointer to a conf + * side effects - Add a class pointer to a conf */ void