]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conf.c
Introduce new configuration option "CloakModeHost"
[ngircd-alex.git] / src / ngircd / conf.c
index 54269009d1ee433bb537fa1c4ef140f34ea2cb57..2a259eb43440d1c453190392ef890be49dfa9349 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -358,6 +358,7 @@ Conf_Test( void )
        printf("  AllowRemoteOper = %s\n", yesno_to_str(Conf_AllowRemoteOper));
        printf("  ChrootDir = %s\n", Conf_Chroot);
        printf("  CloakHost = %s\n", Conf_CloakHost);
+       printf("  CloakModeHost = %s\n", Conf_CloakModeHost);
        printf("  CloakUserToNick = %s\n", yesno_to_str(Conf_CloakUserToNick));
 #ifdef WANT_IPV6
        printf("  ConnectIPv4 = %s\n", yesno_to_str(Conf_ConnectIPv6));
@@ -492,6 +493,14 @@ Conf_SetServer( int ConfServer, CONN_ID Idx )
        assert( ConfServer > NONE );
        assert( Idx > NONE );
 
+       if (Conf_Server[ConfServer].conn_id > NONE &&
+           Conf_Server[ConfServer].conn_id != Idx) {
+               Log(LOG_ALERT,
+                       "Trying to update connection index for already registered server \"%s\": %d/%d - ignored.",
+                       Conf_Server[ConfServer].name,
+                       Conf_Server[ConfServer].conn_id, Idx);
+               return;
+       }
        Conf_Server[ConfServer].conn_id = Idx;
 }
 
@@ -676,6 +685,7 @@ Set_Defaults(bool InitServers)
 #endif
        strlcpy(Conf_Chroot, CHROOT_DIR, sizeof(Conf_Chroot));
        strcpy(Conf_CloakHost, "");
+       strcpy(Conf_CloakModeHost, "");
        Conf_CloakUserToNick = false;
        Conf_ConnectIPv4 = true;
 #ifdef WANT_IPV6
@@ -1469,6 +1479,12 @@ Handle_OPTIONS(int Line, char *Var, char *Arg)
                        Config_Error_TooLong(Line, Var);
                return;
        }
+       if (strcasecmp(Var, "CloakModeHost") == 0) {
+               len = strlcpy(Conf_CloakModeHost, Arg, sizeof(Conf_CloakModeHost));
+               if (len >= sizeof(Conf_CloakModeHost))
+                       Config_Error_TooLong(Line, Var);
+               return;
+       }
        if (strcasecmp(Var, "CloakUserToNick") == 0) {
                Conf_CloakUserToNick = Check_ArgIsTrue(Arg);
                return;