From ae39724a63171b011e58b27f2754256ecba70a12 Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Fri, 8 Nov 2002 23:09:26 +0000 Subject: [PATCH] - in ServerUID und ServerGID kann nun jeweils auch der Name (und nicht nur die numerische ID) verwendet werden. --- doc/sample-ngircd.conf | 12 +++++++----- src/ngircd/conf.c | 25 ++++++++++++++++++++----- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/doc/sample-ngircd.conf b/doc/sample-ngircd.conf index db886ad6..4220c552 100644 --- a/doc/sample-ngircd.conf +++ b/doc/sample-ngircd.conf @@ -1,4 +1,4 @@ -# $Id: sample-ngircd.conf,v 1.12 2002/11/02 23:13:18 alex Exp $ +# $Id: sample-ngircd.conf,v 1.13 2002/11/08 23:09:26 alex Exp $ # # Das ist eine Beispiel-Konfiguration fuer den ngIRCd, die an die @@ -42,14 +42,16 @@ ;MotdFile = /usr/local/etc/ngircd.motd # User-ID, unter der der Daemon laufen soll (dazu muss der Server - # jedoch mit root-Rechten gestartet werden). + # jedoch mit root-Rechten gestartet werden). Es kann der Name oder + # die numerische ID angegeben werden. # ACHTUNG: Die Konfigurations- und MOTD-Datei muessen fuer diesen # Benutzer lesbar sein, ansonsten schlaegt ein RESTART fehl! - ;ServerUID = 65534 + ;ServerUID = ircd # Group-ID, zu der der Daemon wechseln soll (hierzu muss der Server - # jedoch mit root-Rechten gestartet werden) - ;ServerGID = 65534 + # jedoch mit root-Rechten gestartet werden). Es kann der Name oder + # die numerische ID angegeben werden. + ;ServerGID = daemon # Nach Sekunden verschickt der Server bei Inaktivitaet # von einem Client diesem ein PING. diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index cf8b2684..d87db500 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: conf.c,v 1.35 2002/11/02 22:59:01 alex Exp $ + * $Id: conf.c,v 1.36 2002/11/08 23:09:26 alex Exp $ * * conf.h: Konfiguration des ngircd */ @@ -25,6 +25,9 @@ #include #include #include +#include +#include +#include #include "ngircd.h" #include "conn.h" @@ -67,6 +70,8 @@ Conf_Test( VOID ) { /* Konfiguration einlesen, ueberpruefen und ausgeben. */ + struct passwd *pwd; + struct group *grp; INT i; Use_Log = FALSE; @@ -98,8 +103,12 @@ Conf_Test( VOID ) printf( "%u", Conf_ListenPorts[i] ); } puts( "" ); - printf( " ServerUID = %ld\n", (LONG)Conf_UID ); - printf( " ServerGID = %ld\n", (LONG)Conf_GID ); + pwd = getpwuid( Conf_UID ); + if( pwd ) printf( " ServerUID = %s\n", pwd->pw_name ); + else printf( " ServerUID = %ld\n", (LONG)Conf_UID ); + grp = getgrgid( Conf_GID ); + if( grp ) printf( " ServerGID = %s\n", grp->gr_name ); + else printf( " ServerGID = %ld\n", (LONG)Conf_GID ); printf( " PingTimeout = %d\n", Conf_PingTimeout ); printf( " PongTimeout = %d\n", Conf_PongTimeout ); printf( " ConnectRetry = %d\n", Conf_ConnectRetry ); @@ -298,6 +307,8 @@ Read_Config( VOID ) LOCAL VOID Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) { + struct passwd *pwd; + struct group *grp; CHAR *ptr; LONG port; @@ -376,13 +387,17 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) if( strcasecmp( Var, "ServerUID" ) == 0 ) { /* UID, mit der der Daemon laufen soll */ - Conf_UID = (UINT)atoi( Arg ); + pwd = getpwnam( Arg ); + if( pwd ) Conf_UID = pwd->pw_uid; + else Conf_UID = (UINT)atoi( Arg ); return; } if( strcasecmp( Var, "ServerGID" ) == 0 ) { /* GID, mit der der Daemon laufen soll */ - Conf_GID = (UINT)atoi( Arg ); + grp = getgrnam( Arg ); + if( grp ) Conf_GID = grp->gr_gid; + else Conf_GID = (UINT)atoi( Arg ); return; } if( strcasecmp( Var, "PingTimeout" ) == 0 ) -- 2.39.2