X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fngircd.c;h=74a998800f364376a87efb290cd2d0dc030a2ab4;hp=63fc64bf2ef2ac6a34ff847bb9f59ad7d1b036d8;hb=162433398e320c45f3c8a523814518aa6b78372e;hpb=6d11fb149707194e986b0d64af3d44f21e158fcc diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index 63fc64bf..74a99880 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -9,7 +9,6 @@ * Please read the file COPYING, README and AUTHORS for more information. */ - #include "portab.h" /** @@ -49,10 +48,6 @@ #include "io.h" #include "irc.h" -#ifdef ZEROCONF -#include "rendezvous.h" -#endif - #include "exp.h" #include "ngircd.h" @@ -72,11 +67,13 @@ static bool NGIRCd_Init PARAMS(( bool )); /** * The main() function of ngIRCd. + * * Here all starts: this function is called by the operating system loader, * it is the first portion of code executed of ngIRCd. - * @param argc The number of arguments passed to ngIRCd on the command line. - * @param argv An array containing all the arguments passed to ngIRCd. - * @return Global exit code of ngIRCd, zero on success. + * + * @param argc The number of arguments passed to ngIRCd on the command line. + * @param argv An array containing all the arguments passed to ngIRCd. + * @return Global exit code of ngIRCd, zero on success. */ GLOBAL int main( int argc, const char *argv[] ) @@ -237,7 +234,7 @@ main( int argc, const char *argv[] ) } } - /* Debug-Level (for IRCs "VERSION" command) */ + /* Debug level for "VERSION" command */ NGIRCd_DebugLevel[0] = '\0'; #ifdef DEBUG if( NGIRCd_Debug ) strcpy( NGIRCd_DebugLevel, "1" ); @@ -280,9 +277,6 @@ main( int argc, const char *argv[] ) * called with already dropped privileges ... */ Channel_Init( ); Client_Init( ); -#ifdef ZEROCONF - Rendezvous_Init( ); -#endif Conn_Init( ); if (!io_library_init(CONNECTION_POOL)) { @@ -295,11 +289,11 @@ main( int argc, const char *argv[] ) exit(1); } - /* - * create protocol and server identification. - * The syntax used by ngIRCd in PASS commands and the extended flags - * are described in doc/Protocol.txt - */ + srandom(getpid()); + + /* Create protocol and server identification. The syntax + * used by ngIRCd in PASS commands and the known "extended + * flags" are described in doc/Protocol.txt. */ #ifdef IRCPLUS snprintf( NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s:%s", PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION, IRCPLUSFLAGS ); #ifdef ZLIB @@ -324,15 +318,11 @@ main( int argc, const char *argv[] ) Pidfile_Delete( ); exit( 1 ); } - - /* Hauptschleife */ + + /* Main Run Loop */ Conn_Handler( ); - /* Alles abmelden */ Conn_Exit( ); -#ifdef ZEROCONF - Rendezvous_Exit( ); -#endif Client_Exit( ); Channel_Exit( ); Log_Exit( ); @@ -344,10 +334,12 @@ main( int argc, const char *argv[] ) /** - * Generate ngIRCd "version string". - * This string is generated once and then stored in NGIRCd_Version for - * further usage, for example by the IRC command VERSION and the --version - * command line switch. + * Generate ngIRCd "version strings". + * + * The ngIRCd version information is generated once and then stored in the + * NGIRCd_Version and NGIRCd_VersionAddition string variables for further + * usage, for example by the IRC command "VERSION" and the --version command + * line switch. */ static void Fill_Version( void ) @@ -371,11 +363,6 @@ Fill_Version( void ) strlcat( NGIRCd_VersionAddition, "+", sizeof NGIRCd_VersionAddition ); strlcat( NGIRCd_VersionAddition, "TCPWRAP", sizeof NGIRCd_VersionAddition ); #endif -#ifdef ZEROCONF - if( NGIRCd_VersionAddition[0] ) - strlcat( NGIRCd_VersionAddition, "+", sizeof NGIRCd_VersionAddition ); - strlcat( NGIRCd_VersionAddition, "ZEROCONF", sizeof NGIRCd_VersionAddition ); -#endif #ifdef IDENTAUTH if( NGIRCd_VersionAddition[0] ) strlcat( NGIRCd_VersionAddition, "+", sizeof NGIRCd_VersionAddition ); @@ -422,7 +409,7 @@ Fill_Version( void ) snprintf(NGIRCd_Version, sizeof NGIRCd_Version, "%s %s-%s", PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_VersionAddition); - } /* Fill_Version */ +} /* Fill_Version */ /** @@ -482,7 +469,8 @@ Pidfile_Delete( void ) /** * Create the file containing the process ID of ngIRCd ("PID file"). - * @param pid The process ID to be stored in this file. + * + * @param pid The process ID to be stored in this file. */ static void Pidfile_Create(pid_t pid) @@ -520,6 +508,8 @@ Pidfile_Create(pid_t pid) /** * Redirect stdin, stdout and stderr to apropriate file handles. + * + * @param fd The file handle stdin, stdout and stderr should be redirected to. */ static void Setup_FDStreams(int fd) @@ -535,6 +525,13 @@ Setup_FDStreams(int fd) } /* Setup_FDStreams */ +/** + * Get user and group ID of unprivileged "nobody" user. + * + * @param uid User ID + * @param gid Group ID + * @return true on success. + */ static bool NGIRCd_getNobodyID(uid_t *uid, gid_t *gid ) { @@ -559,14 +556,21 @@ NGIRCd_getNobodyID(uid_t *uid, gid_t *gid ) if ( !pwd->pw_uid || !pwd->pw_gid) return false; - *uid = pwd->pw_uid; + *uid = pwd->pw_uid; *gid = pwd->pw_gid; endpwent(); - return true; -} + return true; +} /* NGIRCd_getNobodyID */ +/** + * Initialize ngIRCd daemon. + * + * @param NGIRCd_NoDaemon Set to true if ngIRCd should run in the + * foreground and not as a daemon. + * @return true on success. + */ static bool NGIRCd_Init( bool NGIRCd_NoDaemon ) { @@ -717,7 +721,7 @@ NGIRCd_Init( bool NGIRCd_NoDaemon ) if (fd > 2) close(fd); return false; -} +} /* NGIRCd_Init */ /* -eof- */