ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/src/conf.c
(Generate patch)

Comparing ircd-hybrid/trunk/src/conf.c (file contents):
Revision 1618 by michael, Tue Oct 30 21:04:38 2012 UTC vs.
Revision 1622 by michael, Thu Nov 1 13:16:37 2012 UTC

# Line 51 | Line 51
51   #include "channel_mode.h"
52   #include "parse.h"
53   #include "s_misc.h"
54 + #include "conf_db.h"
55  
56   struct Callback *client_check_cb = NULL;
57   struct config_server_hide ConfigServerHide;
# Line 87 | Line 88 | static int hash_ip(struct irc_ssaddr *);
88   static int verify_access(struct Client *, const char *);
89   static int attach_iline(struct Client *, struct ConfItem *);
90   static struct ip_entry *find_or_add_ip(struct irc_ssaddr *);
90 static void parse_conf_file(int, int);
91   static dlink_list *map_to_list(ConfType);
92   static struct AccessItem *find_regexp_kline(const char *[]);
93   static int find_user_host(struct Client *, char *, char *, char *, unsigned int);
# Line 355 | Line 355 | delete_conf_item(struct ConfItem *conf)
355      MyFree(aconf->passwd);
356      MyFree(aconf->spasswd);
357      MyFree(aconf->reason);
358    MyFree(aconf->oper_reason);
358      MyFree(aconf->user);
359      MyFree(aconf->host);
360   #ifdef HAVE_LIBCRYPTO
# Line 414 | Line 413 | delete_conf_item(struct ConfItem *conf)
413      MyFree(match_item->user);
414      MyFree(match_item->host);
415      MyFree(match_item->reason);
417    MyFree(match_item->oper_reason);
416      dlinkDelete(&conf->node, &uconf_items);
417      MyFree(conf);
418      break;
# Line 424 | Line 422 | delete_conf_item(struct ConfItem *conf)
422      MyFree(match_item->user);
423      MyFree(match_item->host);
424      MyFree(match_item->reason);
427    MyFree(match_item->oper_reason);
425      dlinkDelete(&conf->node, &xconf_items);
426      MyFree(conf);
427      break;
# Line 436 | Line 433 | delete_conf_item(struct ConfItem *conf)
433      MyFree(aconf->user);
434      MyFree(aconf->host);
435      MyFree(aconf->reason);
439    MyFree(aconf->oper_reason);
436      dlinkDelete(&conf->node, &rkconf_items);
437      MyFree(conf);
438      break;
# Line 447 | Line 443 | delete_conf_item(struct ConfItem *conf)
443      MyFree(match_item->user);
444      MyFree(match_item->host);
445      MyFree(match_item->reason);
450    MyFree(match_item->oper_reason);
446      dlinkDelete(&conf->node, &rxconf_items);
447      MyFree(conf);
448      break;
# Line 457 | Line 452 | delete_conf_item(struct ConfItem *conf)
452      MyFree(match_item->user);
453      MyFree(match_item->host);
454      MyFree(match_item->reason);
460    MyFree(match_item->oper_reason);
455      dlinkDelete(&conf->node, &nresv_items);
456  
457      if (conf->flags & CONF_FLAGS_TEMPORARY)
# Line 569 | Line 563 | report_confitem_types(struct Client *sou
563  
564        sendto_one(source_p, form_str(RPL_STATSKLINE), me.name,
565                   source_p->name, "KR", aconf->host, aconf->user,
566 <                 aconf->reason, aconf->oper_reason ? aconf->oper_reason : "");
566 >                 aconf->reason);
567      }
568      break;
569   #endif
# Line 2025 | Line 2019 | find_gline(struct Client *client_p)
2019   void
2020   add_temp_line(struct ConfItem *conf)
2021   {
2022 <  if (conf->type == XLINE_TYPE)
2029 <  {
2030 <    conf->flags |= CONF_FLAGS_TEMPORARY;
2031 <    dlinkAdd(conf, make_dlink_node(), &temporary_xlines);
2032 <  }
2033 <  else if ((conf->type == NRESV_TYPE) || (conf->type == CRESV_TYPE))
2022 >  if ((conf->type == NRESV_TYPE) || (conf->type == CRESV_TYPE))
2023    {
2024      conf->flags |= CONF_FLAGS_TEMPORARY;
2025      dlinkAdd(conf, make_dlink_node(), &temporary_resv);
# Line 2048 | Line 2037 | void
2037   cleanup_tklines(void *notused)
2038   {
2039    hostmask_expire_temporary();
2040 <  expire_tklines(&temporary_xlines);
2040 >  expire_tklines(&xconf_items);
2041    expire_tklines(&temporary_resv);
2042   }
2043  
# Line 2074 | Line 2063 | expire_tklines(dlink_list *tklist)
2063  
2064      if (conf->type == XLINE_TYPE)
2065      {
2066 +      if (!IsConfTemporary(conf))
2067 +        continue;
2068 +
2069        xconf = (struct MatchItem *)map_to_conf(conf);
2070        if (xconf->hold <= CurrentTime)
2071        {
2072          if (ConfigFileEntry.tkline_expire_notices)
2073            sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
2074                                 "Temporary X-line for [%s] expired", conf->name);
2083        dlinkDelete(ptr, tklist);
2084        free_dlink_node(ptr);
2075          delete_conf_item(conf);
2076        }
2077      }
# Line 2212 | Line 2202 | read_conf_files(int cold)
2202    char chanlimit[32];
2203  
2204    conf_parser_ctx.boot = cold;
2205 <  filename = get_conf_name(CONF_TYPE);
2205 >  filename = ConfigFileEntry.configfile;
2206  
2207    /* We need to know the initial filename for the yyerror() to report
2208       FIXME: The full path is in conffilenamebuf first time since we
# Line 2269 | Line 2259 | read_conf_files(int cold)
2259     * on strlen(form_str(RPL_ISUPPORT))
2260     */
2261    rebuild_isupport_message_line();
2272
2273  parse_conf_file(KLINE_TYPE, cold);
2274  parse_conf_file(DLINE_TYPE, cold);
2275  parse_conf_file(XLINE_TYPE, cold);
2276  parse_conf_file(NRESV_TYPE, cold);
2277  parse_conf_file(CRESV_TYPE, cold);
2278 }
2279
2280 /* parse_conf_file()
2281 *
2282 * inputs       - type of conf file to parse
2283 * output       - none
2284 * side effects - conf file for givenconf type is opened and read then parsed
2285 */
2286 static void
2287 parse_conf_file(int type, int cold)
2288 {
2289  FILE *file = NULL;
2290  const char *filename = get_conf_name(type);
2291
2292  if ((file = fopen(filename, "r")) == NULL)
2293  {
2294    if (cold)
2295      ilog(LOG_TYPE_IRCD, "Unable to read configuration file '%s': %s",
2296           filename, strerror(errno));
2297    else
2298      sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
2299                    "Unable to read configuration file '%s': %s",
2300                           filename, strerror(errno));
2301  }
2302  else
2303  {
2304    parse_csv_file(file, type);
2305    fclose(file);
2306  }
2262   }
2263  
2264   /* clear_out_old_conf()
# Line 2495 | Line 2450 | flush_deleted_I_P(void)
2450    }
2451   }
2452  
2498 /* get_conf_name()
2499 *
2500 * inputs       - type of conf file to return name of file for
2501 * output       - pointer to filename for type of conf
2502 * side effects - none
2503 */
2504 const char *
2505 get_conf_name(ConfType type)
2506 {
2507  switch (type)
2508  {
2509    case CONF_TYPE:
2510      return ConfigFileEntry.configfile;
2511      break;
2512    case KLINE_TYPE:
2513      return ConfigFileEntry.klinefile;
2514      break;
2515    case DLINE_TYPE:
2516      return ConfigFileEntry.dlinefile;
2517      break;
2518    case XLINE_TYPE:
2519      return ConfigFileEntry.xlinefile;
2520      break;
2521    case CRESV_TYPE:
2522      return ConfigFileEntry.cresvfile;
2523      break;
2524    case NRESV_TYPE:
2525      return ConfigFileEntry.nresvfile;
2526      break;
2527    default:
2528      return NULL;  /* This should NEVER HAPPEN since we call this function
2529                       only with the above values, this will cause us to core
2530                       at some point if this happens so we know where it was */
2531  }
2532 }
2533
2453   #define BAD_PING (-1)
2454  
2455   /* get_conf_ping()

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines