]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conf.c
New configuration option "NoPAM" to disable PAM
[ngircd-alex.git] / src / ngircd / conf.c
index 43b07b73518614ef26886e4a52662024707d21c6..834a1da330e989300993d5377bf6c8b726119ce5 100644 (file)
@@ -39,7 +39,6 @@
 #include "array.h"
 #include "ngircd.h"
 #include "conn.h"
-#include "client.h"
 #include "channel.h"
 #include "defines.h"
 #include "log.h"
@@ -292,7 +291,9 @@ Conf_Test( void )
        puts( "[GLOBAL]" );
        printf("  Name = %s\n", Conf_ServerName);
        printf("  Info = %s\n", Conf_ServerInfo);
+#ifndef PAM
        printf("  Password = %s\n", Conf_ServerPwd);
+#endif
        printf("  WebircPassword = %s\n", Conf_WebircPwd);
        printf("  AdminInfo1 = %s\n", Conf_ServerAdmin1);
        printf("  AdminInfo2 = %s\n", Conf_ServerAdmin2);
@@ -330,6 +331,7 @@ Conf_Test( void )
        printf("  PredefChannelsOnly = %s\n", yesno_to_str(Conf_PredefChannelsOnly));
        printf("  NoDNS = %s\n", yesno_to_str(Conf_NoDNS));
        printf("  NoIdent = %s\n", yesno_to_str(Conf_NoIdent));
+       printf("  NoPAM = %s\n", yesno_to_str(Conf_NoPAM));
 
 #ifdef WANT_IPV6
        printf("  ConnectIPv4 = %s\n", yesno_to_str(Conf_ConnectIPv6));
@@ -579,6 +581,7 @@ Set_Defaults(bool InitServers)
        Conf_ConnectRetry = 60;
        Conf_NoDNS = false;
        Conf_NoIdent = false;
+       Conf_NoPAM = false;
 
        Conf_Oper_Count = 0;
        Conf_Channel_Count = 0;
@@ -985,6 +988,11 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
 #endif
                return;
        }
+       if(strcasecmp(Var, "NoPAM") == 0) {
+               /* don't use PAM library to authenticate users */
+               Conf_NoPAM = Check_ArgIsTrue(Arg);
+               return;
+       }
 #ifdef WANT_IPV6
        /* the default setting for all the WANT_IPV6 special options is 'true' */
        if( strcasecmp( Var, "ConnectIPv6" ) == 0 ) {
@@ -1402,6 +1410,12 @@ Validate_Config(bool Configtest, bool Rehash)
                             "No administrative information configured but required by RFC!");
        }
 
+#ifdef PAM
+       if (Conf_ServerPwd[0])
+               Config_Error(LOG_ERR,
+                            "This server uses PAM, \"Password\" will be ignored!");
+#endif
+
 #ifdef DEBUG
        servers = servers_once = 0;
        for (i = 0; i < MAX_SERVERS; i++) {