]> arthur.barton.de Git - ngircd.git/commitdiff
Merge branch 'bug152-AllowedChannelTypes'
authorAlexander Barton <alex@barton.de>
Sun, 4 Aug 2013 12:11:12 +0000 (14:11 +0200)
committerAlexander Barton <alex@barton.de>
Sun, 4 Aug 2013 12:11:12 +0000 (14:11 +0200)
* bug152-AllowedChannelTypes:
  Implement new configuration option "AllowedChannelTypes"
  Introduce "CHANTYPES" #define

26 files changed:
src/ngircd/client.c
src/ngircd/client.h
src/ngircd/conf.c
src/ngircd/conn-encoding.c
src/ngircd/conn-func.c
src/ngircd/conn-ssl.c
src/ngircd/conn-ssl.h
src/ngircd/conn.c
src/ngircd/conn.h
src/ngircd/irc-channel.c
src/ngircd/irc-info.c
src/ngircd/irc-login.c
src/ngircd/irc-metadata.c
src/ngircd/irc-mode.c
src/ngircd/irc-server.c
src/ngircd/irc-write.c
src/ngircd/irc.c
src/ngircd/log.c
src/ngircd/login.c
src/ngircd/match.c
src/ngircd/ngircd.c
src/ngircd/numeric.c
src/ngircd/pam.c
src/ngircd/pam.h
src/ngircd/parse.c
src/ngircd/sighandlers.c

index 37b168ff8d5dac07cb835b86eb37b366da6fcbe3..09bd6fdeaee8400ae3e5c75ee539fb230a607a09 100644 (file)
@@ -87,7 +87,7 @@ Client_Init( void )
                exit( 1 );
        }
 
-       /* Client-Struktur dieses Servers */
+       /* Client structure for this server */
        This_Server->next = NULL;
        This_Server->type = CLIENT_SERVER;
        This_Server->conn_id = NONE;
@@ -318,6 +318,8 @@ Client_Destroy( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool Sen
                                }
                        }
 
+                       if (c->cloaked)
+                               free(c->cloaked);
                        free( c );
                        break;
                }
@@ -513,7 +515,7 @@ GLOBAL bool
 Client_ModeAdd( CLIENT *Client, char Mode )
 {
        /* Set Mode.
-        * If Client already alread had Mode, return false.
+        * If Client already had Mode, return false.
         * If the Mode was newly set, return true.
         */
 
@@ -589,7 +591,7 @@ Client_Search( const char *Nick )
 
 
 /**
- * Serach first CLIENT structure matching a given mask of a server.
+ * Search first CLIENT structure matching a given mask of a server.
  *
  * The order of servers is arbitrary, but this function makes sure that the
  * local server is always returned if the mask matches it.
@@ -744,8 +746,6 @@ Client_HostnameCloaked(CLIENT *Client)
  * Get (potentially cloaked) hostname of a client to display it to other users.
  *
  * If the client has not enabled cloaking, the real hostname is used.
- * Please note that this function uses a global static buffer, so you can't
- * nest invocations without overwriting earlier results!
  *
  * @param Client Pointer to client structure
  * @return Pointer to client hostname
@@ -760,7 +760,7 @@ Client_HostnameDisplayed(CLIENT *Client)
                return Client_Hostname(Client);
 
        /* Use an already saved cloaked hostname, if there is one */
-       if (Client->cloaked[0])
+       if (Client->cloaked)
                return Client->cloaked;
 
        Client_UpdateCloakedHostname(Client, NULL, NULL);
@@ -781,25 +781,32 @@ GLOBAL void
 Client_UpdateCloakedHostname(CLIENT *Client, CLIENT *Origin,
                             const char *Hostname)
 {
-       static char Cloak_Buffer[CLIENT_HOST_LEN];
+       char Cloak_Buffer[CLIENT_HOST_LEN];
 
        assert(Client != NULL);
        if (!Origin)
                Origin = Client_ThisServer();
 
+       if (!Client->cloaked) {
+               Client->cloaked = malloc(CLIENT_HOST_LEN);
+               if (!Client->cloaked)
+                       return;
+       }
+
        if (!Hostname) {
                /* Generate new cloaked hostname */
                if (*Conf_CloakHostModeX) {
-                       strlcpy(Cloak_Buffer, Client->host, CLIENT_HOST_LEN);
+                       strlcpy(Cloak_Buffer, Client->host,
+                               sizeof(Cloak_Buffer));
                        strlcat(Cloak_Buffer, Conf_CloakHostSalt,
-                               CLIENT_HOST_LEN);
-                       snprintf(Client->cloaked, sizeof(Client->cloaked),
+                               sizeof(Cloak_Buffer));
+                       snprintf(Client->cloaked, CLIENT_HOST_LEN,
                                 Conf_CloakHostModeX, Hash(Cloak_Buffer));
                } else
                        strlcpy(Client->cloaked, Client_ID(Client->introducer),
-                               sizeof(Client->cloaked));
+                               CLIENT_HOST_LEN);
        } else
-               strlcpy(Client->cloaked, Hostname, sizeof(Client->cloaked));
+               strlcpy(Client->cloaked, Hostname, CLIENT_HOST_LEN);
        LogDebug("Cloaked hostname of \"%s\" updated to \"%s\"",
                 Client_ID(Client), Client->cloaked);
 
@@ -950,6 +957,14 @@ Client_HasMode( CLIENT *Client, char Mode )
 } /* Client_HasMode */
 
 
+GLOBAL bool
+Client_HasFlag( CLIENT *Client, char Flag )
+{
+       assert( Client != NULL );
+       return strchr( Client->flags, Flag ) != NULL;
+} /* Client_HasFlag */
+
+
 GLOBAL char *
 Client_Away( CLIENT *Client )
 {
@@ -1326,8 +1341,6 @@ MyCount( CLIENT_TYPE Type )
 static CLIENT *
 New_Client_Struct( void )
 {
-       /* Neue CLIENT-Struktur pre-initialisieren */
-
        CLIENT *c;
 
        c = (CLIENT *)malloc( sizeof( CLIENT ));
@@ -1362,7 +1375,7 @@ Generate_MyToken( CLIENT *Client )
        {
                if( c->mytoken == token )
                {
-                       /* Das Token wurde bereits vergeben */
+                       /* The token is already in use */
                        token++;
                        c = My_Clients;
                        continue;
@@ -1513,9 +1526,6 @@ Destroy_UserOrService(CLIENT *Client, const char *Txt, const char *FwdMsg, bool
 /**
  * Introduce a new user or service client to a remote server.
  *
- * This function differentiates between RFC1459 and RFC2813 server links and
- * generates the appropriate commands to register the new user or service.
- *
  * @param To           The remote server to inform.
  * @param Prefix       Prefix for the generated commands.
  * @param data         CLIENT structure of the new client.
@@ -1524,43 +1534,92 @@ static void
 cb_introduceClient(CLIENT *To, CLIENT *Prefix, void *data)
 {
        CLIENT *c = (CLIENT *)data;
+
+       (void)Client_Announce(To, Prefix, c);
+
+} /* cb_introduceClient */
+
+
+/**
+ * Announce an user or service to a server.
+ *
+ * This function differentiates between RFC1459 and RFC2813 server links and
+ * generates the appropriate commands to register the user or service.
+ *
+ * @param Client       Server
+ * @param Prefix       Prefix for the generated commands
+ * @param User         User to announce
+ */
+GLOBAL bool
+Client_Announce(CLIENT * Client, CLIENT * Prefix, CLIENT * User)
+{
        CONN_ID conn;
        char *modes, *user, *host;
 
-       modes = Client_Modes(c);
-       user = Client_User(c) ? Client_User(c) : "-";
-       host = Client_Hostname(c) ? Client_Hostname(c) : "-";
+       modes = Client_Modes(User);
+       user = Client_User(User) ? Client_User(User) : "-";
+       host = Client_Hostname(User) ? Client_Hostname(User) : "-";
 
-       conn = Client_Conn(To);
+       conn = Client_Conn(Client);
        if (Conn_Options(conn) & CONN_RFC1459) {
                /* RFC 1459 mode: separate NICK and USER commands */
-               Conn_WriteStr(conn, "NICK %s :%d", Client_ID(c),
-                             Client_Hops(c) + 1);
-               Conn_WriteStr(conn, ":%s USER %s %s %s :%s",
-                             Client_ID(c), user, host,
-                             Client_ID(Client_Introducer(c)), Client_Info(c));
-               if (modes[0])
-                       Conn_WriteStr(conn, ":%s MODE %s +%s",
-                                     Client_ID(c), Client_ID(c), modes);
+               if (! Conn_WriteStr(conn, "NICK %s :%d",
+                                   Client_ID(User), Client_Hops(User) + 1))
+                       return DISCONNECTED;
+               if (! Conn_WriteStr(conn, ":%s USER %s %s %s :%s",
+                                    Client_ID(User), user, host,
+                                    Client_ID(Client_Introducer(User)),
+                                    Client_Info(User)))
+                       return DISCONNECTED;
+               if (modes[0]) {
+                       if (! Conn_WriteStr(conn, ":%s MODE %s +%s",
+                                    Client_ID(User), Client_ID(User),
+                                    modes))
+                               return DISCONNECTED;
+               }
        } else {
                /* RFC 2813 mode: one combined NICK or SERVICE command */
-               if (Client_Type(c) == CLIENT_SERVICE
-                   && strchr(Client_Flags(To), 'S'))
-                       IRC_WriteStrClientPrefix(To, Prefix,
-                                                "SERVICE %s %d * +%s %d :%s",
-                                                Client_Mask(c),
-                                                Client_MyToken(Client_Introducer(c)),
-                                                Client_Modes(c), Client_Hops(c) + 1,
-                                                Client_Info(c));
-               else
-                       IRC_WriteStrClientPrefix(To, Prefix,
-                                                "NICK %s %d %s %s %d +%s :%s",
-                                                Client_ID(c), Client_Hops(c) + 1,
-                                                user, host,
-                                                Client_MyToken(Client_Introducer(c)),
-                                                modes, Client_Info(c));
+               if (Client_Type(User) == CLIENT_SERVICE
+                   && strchr(Client_Flags(Client), 'S')) {
+                       if (!IRC_WriteStrClientPrefix(Client, Prefix,
+                                       "SERVICE %s %d * +%s %d :%s",
+                                       Client_Mask(User),
+                                       Client_MyToken(Client_Introducer(User)),
+                                       modes, Client_Hops(User) + 1,
+                                       Client_Info(User)))
+                               return DISCONNECTED;
+               } else {
+                       if (!IRC_WriteStrClientPrefix(Client, Prefix,
+                                       "NICK %s %d %s %s %d +%s :%s",
+                                       Client_ID(User), Client_Hops(User) + 1,
+                                       user, host,
+                                       Client_MyToken(Client_Introducer(User)),
+                                       modes, Client_Info(User)))
+                               return DISCONNECTED;
+               }
        }
-} /* cb_introduceClient */
+
+       if (strchr(Client_Flags(Client), 'M')) {
+               /* Synchronize metadata */
+               if (Client_HostnameCloaked(User)) {
+                       if (!IRC_WriteStrClientPrefix(Client, Prefix,
+                                       "METADATA %s cloakhost :%s",
+                                       Client_ID(User),
+                                       Client_HostnameCloaked(User)))
+                               return DISCONNECTED;
+               }
+
+               if (Conn_GetCertFp(Client_Conn(User))) {
+                       if (!IRC_WriteStrClientPrefix(Client, Prefix,
+                                       "METADATA %s certfp :%s",
+                                       Client_ID(User),
+                                       Conn_GetCertFp(Client_Conn(User))))
+                               return DISCONNECTED;
+               }
+       }
+
+       return CONNECTED;
+} /* Client_Announce */
 
 
 #ifdef DEBUG
index c248d1ba39756a72a8d7065f6cf1d46349fccdae..6d5298fc174453af18cc59381b5c6926ed94b37b 100644 (file)
@@ -48,7 +48,7 @@ typedef struct _CLIENT
        struct _CLIENT *introducer;     /* ID of the servers which the client is connected to */
        struct _CLIENT *topserver;      /* toplevel servers (only valid if client is a server) */
        char host[CLIENT_HOST_LEN];     /* hostname of the client */
-       char cloaked[CLIENT_HOST_LEN];  /* cloaked hostname of the client */
+       char *cloaked;                  /* cloaked hostname of the client */
        char user[CLIENT_USER_LEN];     /* user name ("login") */
 #if defined(PAM) && defined(IDENTAUTH)
        char orig_user[CLIENT_USER_LEN];/* user name supplied by USER command */
@@ -93,6 +93,8 @@ GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
 
 GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
 
+GLOBAL bool Client_Announce PARAMS(( CLIENT *Client, CLIENT *Prefix, CLIENT *User ));
+
 GLOBAL CLIENT *Client_Search PARAMS(( const char *ID ));
 GLOBAL CLIENT *Client_SearchServer PARAMS(( const char *ID ));
 GLOBAL CLIENT *Client_First PARAMS(( void ));
@@ -124,6 +126,7 @@ GLOBAL char *Client_Away PARAMS(( CLIENT *Client ));
 GLOBAL time_t Client_StartTime PARAMS(( CLIENT *Client ));
 
 GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode ));
+GLOBAL bool Client_HasFlag PARAMS(( CLIENT *Client, char Flag ));
 
 GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, const char *Hostname ));
 GLOBAL void Client_SetID PARAMS(( CLIENT *Client, const char *Nick ));
index 70c96092a12912c7042d4d36226f3f6b099dcb64..79376b80ba8b7c33335a6f0ddc1c61aecfae29c2 100644 (file)
@@ -317,7 +317,7 @@ opers_puts(void)
  * This function waits for a keypress of the user when stdin/stdout are valid
  * tty's ("you can read our nice message and we can read in your keypress").
  *
- * @return     0 on succes, 1 on failure(s); therefore the result code can
+ * @return     0 on success, 1 on failure(s); therefore the result code can
  *             directly be used by exit() when running "ngircd --configtest".
  */
 GLOBAL int
@@ -2319,7 +2319,7 @@ Conf_DebugDump(void)
 #endif
 
 /**
- * Initialize server configuration structur to default values.
+ * Initialize server configuration structure to default values.
  *
  * @param Server       Pointer to server structure to initialize.
  */
index 71ab58848a5aa87d258f85156ab98021d5c0cd7a..98cd29a367047323d1633f57f2473443075215d9 100644 (file)
@@ -123,7 +123,7 @@ Convert_Message(iconv_t Handle, char *Message)
        out_left = sizeof(Encoding_Buffer) - 1;
 
        if (iconv(Handle, &Message, &in_left, &out, &out_left) == (size_t)(-1)) {
-               /* An error occured! */
+               /* An error occurred! */
                LogDebug("Error converting message encoding!");
                strlcpy(Encoding_Buffer, Message, sizeof(Encoding_Buffer));
                iconv(Handle, NULL, NULL, NULL, NULL);
index 964767442ce8dfb1b3bc70ee443a4ceec8b6579c..b56e0f0742fb5298f5d53bac0583c40a52b02873 100644 (file)
@@ -137,8 +137,6 @@ Conn_Flag( CONN_ID Idx )
 GLOBAL void
 Conn_SetFlag( CONN_ID Idx, int Flag )
 {
-       /* Connection markieren */
-
        assert( Idx > NONE );
        My_Connections[Idx].flag = Flag;
 } /* Conn_SetFlag */
@@ -147,9 +145,6 @@ Conn_SetFlag( CONN_ID Idx, int Flag )
 GLOBAL CONN_ID
 Conn_First( void )
 {
-       /* Connection-Struktur der ersten Verbindung liefern;
-        * Ist keine Verbindung vorhanden, wird NONE geliefert. */
-
        CONN_ID i;
        
        for( i = 0; i < Pool_Size; i++ )
@@ -163,9 +158,6 @@ Conn_First( void )
 GLOBAL CONN_ID
 Conn_Next( CONN_ID Idx )
 {
-       /* Naechste Verbindungs-Struktur liefern; existiert keine
-        * weitere, so wird NONE geliefert. */
-
        CONN_ID i = NONE;
 
        assert( Idx > NONE );
index 7141eaca6ebb4bf523459e7465075bb0a01ae207..0bca9335ef0b7e65fb9bf2863e4ea1949ae0b10b 100644 (file)
@@ -633,7 +633,7 @@ ConnSSL_Connect( CONNECTION *c )
 }
 
 static int
-ConnSSL_InitFingerprint( CONNECTION *c )
+ConnSSL_InitCertFp( CONNECTION *c )
 {
        const char hex[] = "0123456789abcdef";
        int i;
@@ -723,7 +723,7 @@ ConnectAccept( CONNECTION *c, bool connect)
        if (ret)
                return ConnSSL_HandleError(c, ret, "gnutls_handshake");
 #endif /* _GNUTLS */
-       (void)ConnSSL_InitFingerprint(c);
+       (void)ConnSSL_InitCertFp(c);
 
        Conn_OPTION_DEL(c, (CONN_SSL_WANT_WRITE|CONN_SSL_WANT_READ|CONN_SSL_CONNECT));
        ConnSSL_LogCertInfo(c);
@@ -817,13 +817,13 @@ ConnSSL_GetCipherInfo(CONNECTION *c, char *buf, size_t len)
 }
 
 char *
-ConnSSL_GetFingerprint(CONNECTION *c)
+ConnSSL_GetCertFp(CONNECTION *c)
 {
        return c->ssl_state.fingerprint;
 }
 
 bool
-ConnSSL_SetFingerprint(CONNECTION *c, const char *fingerprint)
+ConnSSL_SetCertFp(CONNECTION *c, const char *fingerprint)
 {
        assert (c != NULL);
        c->ssl_state.fingerprint = strdup(fingerprint);
index fc705f13b9e3b2c91a0a90c485decf04c06b5a5c..1e995fd73fc72000aaea10a0cea62456e7233ac3 100644 (file)
@@ -26,8 +26,8 @@ GLOBAL ssize_t ConnSSL_Write PARAMS(( CONNECTION *c, const void *buf, size_t cou
 GLOBAL ssize_t ConnSSL_Read PARAMS(( CONNECTION *c, void *buf, size_t count));
 
 GLOBAL bool ConnSSL_GetCipherInfo PARAMS(( CONNECTION *c, char *buf, size_t len ));
-GLOBAL char *ConnSSL_GetFingerprint PARAMS(( CONNECTION *c ));
-GLOBAL bool ConnSSL_SetFingerprint PARAMS(( CONNECTION *c, const char *fingerprint ));
+GLOBAL char *ConnSSL_GetCertFp PARAMS(( CONNECTION *c ));
+GLOBAL bool ConnSSL_SetCertFp PARAMS(( CONNECTION *c, const char *fingerprint ));
 
 #endif /* SSL_SUPPORT */
 #endif /* conn_ssl_h */
index 9c6baef2676dd35aab47eaca13b8bf3ef39946f5..01253a2a19dba746ead7a8edc8b1bca34985c263 100644 (file)
@@ -128,7 +128,7 @@ time_t idle_t = 0;
  * Get number of sockets available from systemd(8).
  *
  * ngIRCd needs to implement its own sd_listen_fds(3) function and can't
- * use the one provided by systemd itself, becaus the sockets will be
+ * use the one provided by systemd itself, because the sockets will be
  * used in a forked child process with a new PID, and this would trigger
  * an error in the standard implementation.
  *
@@ -402,14 +402,13 @@ cb_clientserver_ssl(int sock, UNUSED short what)
 
 
 /**
- * Initialize connecion module.
+ * Initialize connection module.
  */
 GLOBAL void
 Conn_Init( void )
 {
        CONN_ID i;
 
-       /* Speicher fuer Verbindungs-Pool anfordern */
        Pool_Size = CONNECTION_POOL;
        if ((Conf_MaxConnections > 0) &&
                (Pool_Size > Conf_MaxConnections))
@@ -923,7 +922,7 @@ Conn_Handler(void)
                 * which is the granularity with witch we handle "penalty
                 * times" for example.
                 * Note: tv_sec/usec are undefined(!) after io_dispatch()
-                * returns, so we have to set it beforce each call to it! */
+                * returns, so we have to set it before each call to it! */
                tv.tv_usec = 0;
                tv.tv_sec = 1;
 
@@ -1008,7 +1007,7 @@ va_dcl
                 *
                 * So we have a big problem here: we should send more bytes
                 * to the network than we are allowed to and we don't know
-                * the originator (any more). The "old" behaviour of blaming
+                * the originator (any more). The "old" behavior of blaming
                 * the receiver ("next hop") is a bad idea (it could be just
                 * an other server only routing the message!), so the only
                 * option left is to shorten the string and to hope that the
@@ -1709,7 +1708,7 @@ Socket2Index( int Sock )
 
 
 /**
- * Read data from the network to the read buffer. If an error occures,
+ * Read data from the network to the read buffer. If an error occurs,
  * the socket of this connection will be shut down.
  *
  * @param Idx  Connection index.
@@ -1858,7 +1857,7 @@ Handle_Buffer(CONN_ID Idx)
                maxcmd = (int)(Client_UserCount() / 5)
                       + MAX_COMMANDS_SERVER_MIN;
                /* Allow servers to handle even more commands while peering
-                * to speed up server login and network synchronisation. */
+                * to speed up server login and network synchronization. */
                if (Conn_LastPing(Idx) == 0)
                        maxcmd *= 5;
                break;
@@ -2352,7 +2351,7 @@ cb_Connect_to_Server(int fd, UNUSED short events)
 
 /**
  * Read results of a resolver sub-process from the pipe and update the
- * apropriate connection/client structure(s): hostname and/or IDENT user name.
+ * appropriate connection/client structure(s): hostname and/or IDENT user name.
  *
  * @param r_fd         File descriptor of the pipe to the sub-process.
  * @param events       (ignored IO specification)
@@ -2579,7 +2578,7 @@ Conn_SetAuthPing(CONN_ID Idx, long ID)
 #ifdef SSL_SUPPORT
 
 /**
- * Get information about used SSL chiper.
+ * Get information about used SSL cipher.
  *
  * @param Idx  Connection index number.
  * @param buf  Buffer for returned information text.
@@ -2613,22 +2612,22 @@ Conn_UsesSSL(CONN_ID Idx)
 
 
 GLOBAL char *
-Conn_GetFingerprint(CONN_ID Idx)
+Conn_GetCertFp(CONN_ID Idx)
 {
        if (Idx < 0)
                return NULL;
        assert(Idx < (int) array_length(&My_ConnArray, sizeof(CONNECTION)));
-       return ConnSSL_GetFingerprint(&My_Connections[Idx]);
+       return ConnSSL_GetCertFp(&My_Connections[Idx]);
 }
 
 
 GLOBAL bool
-Conn_SetFingerprint(CONN_ID Idx, const char *fingerprint)
+Conn_SetCertFp(CONN_ID Idx, const char *fingerprint)
 {
        if (Idx < 0)
                return false;
        assert(Idx < (int) array_length(&My_ConnArray, sizeof(CONNECTION)));
-       return ConnSSL_SetFingerprint(&My_Connections[Idx], fingerprint);
+       return ConnSSL_SetCertFp(&My_Connections[Idx], fingerprint);
 }
 #else
 GLOBAL bool
@@ -2639,14 +2638,14 @@ Conn_UsesSSL(UNUSED CONN_ID Idx)
 
 
 GLOBAL char *
-Conn_GetFingerprint(UNUSED CONN_ID Idx)
+Conn_GetCertFp(UNUSED CONN_ID Idx)
 {
        return NULL;
 }
 
 
 GLOBAL bool
-Conn_SetFingerprint(UNUSED CONN_ID Idx, UNUSED const char *fingerprint)
+Conn_SetCertFp(UNUSED CONN_ID Idx, UNUSED const char *fingerprint)
 {
        return true;
 }
index a6cf53a47be4f3695e66f9fd74c76fcf56480a31..c642541f07ce486b712f5a3b0e719a438d9ea8da 100644 (file)
@@ -139,8 +139,8 @@ GLOBAL CONN_ID Conn_GetFromProc PARAMS((int fd));
 GLOBAL CLIENT* Conn_GetClient PARAMS((CONN_ID i));
 GLOBAL PROC_STAT* Conn_GetProcStat PARAMS((CONN_ID i));
 
-GLOBAL char *Conn_GetFingerprint PARAMS((CONN_ID Idx));
-GLOBAL bool Conn_SetFingerprint PARAMS((CONN_ID Idx, const char *fingerprint));
+GLOBAL char *Conn_GetCertFp PARAMS((CONN_ID Idx));
+GLOBAL bool Conn_SetCertFp PARAMS((CONN_ID Idx, const char *fingerprint));
 GLOBAL bool Conn_UsesSSL PARAMS((CONN_ID Idx));
 
 #ifdef SSL_SUPPORT
index 16501becbaed1651625942c0c9f675bf33ce21e9..07a6e5a530b677684b9f713db5bc31d4cce28f5c 100644 (file)
@@ -175,7 +175,7 @@ join_set_channelmodes(CHANNEL *chan, CLIENT *target, const char *flags)
 /**
  * Forward JOIN command to a specific server
  *
- * This function diffentiates between servers using RFC 2813 mode that
+ * This function differentiates between servers using RFC 2813 mode that
  * support the JOIN command with appended ASCII 7 character and channel
  * modes, and servers using RFC 1459 protocol which require separate JOIN
  * and MODE commands.
@@ -253,7 +253,7 @@ join_forward(CLIENT *Client, CLIENT *target, CHANNEL *chan,
 } /* join_forward */
 
 /**
- * Aknowledge user JOIN request and send "channel info" numerics.
+ * Acknowledge user JOIN request and send "channel info" numerics.
  *
  * @param Client       Client used to prefix the genrated commands
  * @param target       Forward commands/numerics to this user
@@ -495,7 +495,7 @@ IRC_TOPIC( CLIENT *Client, REQUEST *Req )
                                          Client_ID(from), Req->argv[0]);
 
        /* Only remote servers and channel members are allowed to change the
-        * channel topic, and IRC opreators when the Conf_OperCanMode option
+        * channel topic, and IRC operators when the Conf_OperCanMode option
         * is set in the server configuration. */
        if (Client_Type(Client) != CLIENT_SERVER) {
                topic_power = Client_HasMode(from, 'o');
@@ -745,7 +745,7 @@ IRC_CHANINFO( CLIENT *Client, REQUEST *Req )
                }
        }
 
-       /* Forward CHANINFO to other serevrs */
+       /* Forward CHANINFO to other servers */
        if (Req->argc == 5)
                IRC_WriteStrServersPrefixFlag(Client, from, 'C',
                                              "CHANINFO %s %s %s %s :%s",
index bc27b8d0297fa639aec8bb98fc1b1ace67437b60..6fb2e31c9470c38703100983821759a5f1e7506c 100644 (file)
@@ -387,11 +387,11 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
                        return DISCONNECTED;
 
                /* Certificate fingerprint? */
-               if (Conn_GetFingerprint(Client_Conn(c)) &&
+               if (Conn_GetCertFp(Client_Conn(c)) &&
                    from == c &&
                    !IRC_WriteStrClient(from, RPL_WHOISCERTFP_MSG,
                                        Client_ID(from), Client_ID(c),
-                                       Conn_GetFingerprint(Client_Conn(c))))
+                                       Conn_GetCertFp(Client_Conn(c))))
                        return DISCONNECTED;
        }
 
@@ -462,10 +462,10 @@ Show_MOTD_SSLInfo(CLIENT *Client)
                        return false;
        }
 
-       if (Conn_GetFingerprint(Client_Conn(Client))) {
+       if (Conn_GetCertFp(Client_Conn(Client))) {
                snprintf(buf, sizeof(buf),
                         "Your client certificate fingerprint is: %s",
-                        Conn_GetFingerprint(Client_Conn(Client)));
+                        Conn_GetCertFp(Client_Conn(Client)));
                if (!IRC_WriteStrClient(Client, RPL_MOTD_MSG,
                                        Client_ID(Client), buf))
                        return false;
@@ -1404,7 +1404,7 @@ IRC_Send_LUSERS(CLIENT *Client)
 
        assert(Client != NULL);
 
-       /* Users, services and serevers in the network */
+       /* Users, services and servers in the network */
        if (!IRC_WriteStrClient(Client, RPL_LUSERCLIENT_MSG, Client_ID(Client),
                                Client_UserCount(), Client_ServiceCount(),
                                Client_ServerCount()))
index cfb94f60926f08b3dd9410e0d1f265958a52c9a9..1915a6d75a6d8f6b0edb622a8ac4ef282818e145 100644 (file)
@@ -544,7 +544,7 @@ IRC_SERVICE(CLIENT *Client, REQUEST *Req)
        /* Validate service name ("nickname") */
        c = Client_Search(nick);
        if(c) {
-               /* Nickname collission: disconnect (KILL) both clients! */
+               /* Nickname collision: disconnect (KILL) both clients! */
                Log(LOG_ERR, "Server %s introduces already registered service \"%s\"!",
                    Client_ID(Client), nick);
                Kill_Nick(nick, "Nick collision");
index d64ffb2178c8fff634e377a1c82964135cde9956..3c8a4a85623bc9c6ccaf53180e49a2170a38fa0f 100644 (file)
@@ -70,7 +70,7 @@ IRC_METADATA(CLIENT *Client, REQUEST *Req)
                 Req->argv[1], Req->argv[2]);
 
        /* Mark client: it has receiveda a METADATA command */
-       if (!strchr(Client_Flags(target), 'M')) {
+       if (!Client_HasFlag(target, 'M')) {
                snprintf(new_flags, sizeof new_flags, "%sM",
                         Client_Flags(target));
                Client_SetFlags(target, new_flags);
@@ -97,7 +97,7 @@ IRC_METADATA(CLIENT *Client, REQUEST *Req)
        else if (*Req->argv[2] && strcasecmp(Req->argv[1], "user") == 0)
                Client_SetUser(target, Req->argv[2], true);
        else if (*Req->argv[2] && strcasecmp(Req->argv[1], "certfp") == 0)
-               Conn_SetFingerprint(Client_Conn(target), Req->argv[2]);
+               Conn_SetCertFp(Client_Conn(target), Req->argv[2]);
        else
                Log(LOG_WARNING,
                    "Ignored metadata update from \"%s\" for client \"%s\": \"%s=%s\" - unknown key!",
index a51369f0086f189fba6f2ebf8a90db65a0f1ef26..cebddd22ef551dff43366b06f0ba50e0e38ff577 100644 (file)
@@ -54,7 +54,7 @@ static bool Send_ListChange PARAMS((const bool IsAdd, const char ModeChar,
  * Handler for the IRC "MODE" command.
  *
  * This function detects whether user or channel modes should be modified
- * and calls the apropriate sub-functions.
+ * and calls the appropriate sub-functions.
  *
  * @param Client The client from which this command has been received.
  * @param Req Request structure with prefix and all parameters.
@@ -354,7 +354,7 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target )
                }
 
                if (send_RPL_HOSTHIDDEN_MSG && Client_Conn(Target) > NONE) {
-                       /* A new (cloaked) hostname must be annoucned */
+                       /* A new (cloaked) hostname must be announced */
                        IRC_WriteStrClientPrefix(Target, Origin,
                                                 RPL_HOSTHIDDEN_MSG,
                                                 Client_ID(Target),
@@ -1035,7 +1035,7 @@ Add_To_List(char what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel,
 }
 
 /**
- * Delete entries from channel invite, ban and exeption lists.
+ * Delete entries from channel invite, ban and exception lists.
  *
  * @param what Can be 'I' for invite, 'b' for ban, and 'e' for exception list.
  * @param Prefix The originator of the command.
index a8b82c96047f5f1b99e40490f798c7ccea27da1b..7770be856cb0840aee2464633d1bd60344fb5e16 100644 (file)
@@ -82,7 +82,7 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
                        if (strcasecmp(Req->argv[0], Conf_Server[i].name) == 0)
                                break;
 
-               /* Makre sure the remote server is configured here */
+               /* Make sure the remote server is configured here */
                if (i >= MAX_SERVERS) {
                        Log(LOG_ERR,
                            "Connection %d: Server \"%s\" not configured here!",
@@ -152,17 +152,17 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
                Client_SetType(Client, CLIENT_UNKNOWNSERVER);
 
 #ifdef ZLIB
-               if (strchr(Client_Flags(Client), 'Z')
+               if (Client_HasFlag(Client, 'Z')
                    && !Zip_InitConn(Client_Conn(Client))) {
                        Conn_Close(Client_Conn(Client),
-                                  "Can't inizialize compression (zlib)!",
+                                  "Can't initialize compression (zlib)!",
                                   NULL, false );
                        return DISCONNECTED;
                }
 #endif
 
 #ifdef IRCPLUS
-               if (strchr(Client_Flags(Client), 'H')) {
+               if (Client_HasFlag(Client, 'H')) {
                        LogDebug("Peer supports IRC+ extended server handshake ...");
                        if (!IRC_Send_ISUPPORT(Client))
                                return DISCONNECTED;
index 16aac9a081859aa27904e116252d009ba02d3176..ea9b9a02836a0c8f5c617c6cf6f5b2f7c2a5ff79 100644 (file)
@@ -311,7 +311,7 @@ IRC_WriteStrServersPrefixFlag_CB(CLIENT *ExceptOf, CLIENT *Prefix, char Flag,
                if (Client_Type(c) == CLIENT_SERVER && Client_Conn(c) > NONE &&
                    c != Client_ThisServer() && c != ExceptOf) {
                        /* Found a target server, do the flags match? */
-                       if (Flag == '\0' || strchr(Client_Flags(c), Flag))
+                       if (Flag == '\0' || Client_HasFlag(c, Flag))
                                callback(c, Prefix, cb_data);
                }
                c = Client_Next(c);
@@ -321,7 +321,7 @@ IRC_WriteStrServersPrefixFlag_CB(CLIENT *ExceptOf, CLIENT *Prefix, char Flag,
 
 /**
  * send message to all clients that are in the same channels as the client sending this message.
- * only send message once per reote server.
+ * only send message once per remote server.
  */
 #ifdef PROTOTYPES
 GLOBAL bool
index dbce773b72810972a1f67f50a9f3a68eeda75115..ddef7d021ac3d8b03891062933408df4b0f2cae0 100644 (file)
@@ -111,7 +111,7 @@ IRC_ERROR(CLIENT *Client, REQUEST *Req)
 /**
  * Handler for the IRC "KILL" command.
  *
- * This function implements the IRC command "KILL" wich is used to selectively
+ * This function implements the IRC command "KILL" which is used to selectively
  * disconnect clients. It can be used by IRC operators and servers, for example
  * to "solve" nick collisions after netsplits. See RFC 2812 section 3.7.1.
  *
index e5bed7912f28401ab93884ee5e84ad4c0c5f7465..028f43532c7cb8778ad80ca3c3a58d795d533452 100644 (file)
@@ -160,7 +160,7 @@ va_dcl
  * suitable for the mode ngIRCd is running in (daemon vs. non-daemon).
  * If LOG_snotice is set, the log messages goes to all user with the mode +s
  * set and the local &SERVER channel, too.
- * Please note: you sould use LogDebug(...) for debug messages!
+ * Please note: you should use LogDebug(...) for debug messages!
  * @param Level syslog level (LOG_xxx)
  * @param Format Format string like printf().
  * @param ... Further arguments.
index d8c8c40a2d6c0d0bf9f510c8299cf8f11c160d6b..bbde6359d70434748779ba96a8868134a8e1aa19 100644 (file)
@@ -90,7 +90,7 @@ Login_User(CLIENT * Client)
 #ifdef PAM
        if (!Conf_PAM) {
                /* Don't do any PAM authentication at all, instead emulate
-                * the beahiour of the daemon compiled without PAM support:
+                * the behavior of the daemon compiled without PAM support:
                 * because there can't be any "server password", all
                 * passwords supplied are classified as "wrong". */
                if(Conn_Password(conn)[0] == '\0')
@@ -194,7 +194,7 @@ Login_User_PostAuth(CLIENT *Client)
 #ifdef PAM
 
 /**
- * Read result of the authenticatior sub-process from pipe
+ * Read result of the authenticator sub-process from pipe
  *
  * @param r_fd         File descriptor of the pipe.
  * @param events       (ignored IO specification)
index 75bf4358395d27fa21b8a9c213c307a82a2196d6..dad3e7bc455ac901c6879e3811a361c97cbeed85 100644 (file)
@@ -55,7 +55,6 @@ static int Matche_After_Star PARAMS(( const char *p, const char *t ));
 GLOBAL bool
 Match( const char *Pattern, const char *String )
 {
-       /* Pattern mit String vergleichen */
        if( Matche( Pattern, String ) == MATCH_VALID ) return true;
        else return false;
 } /* Match */
index e28c370b47af675ab000cf28bf9add9e0afc529d..e075e0a7355486c826497bd602cd64be7b1990ab 100644 (file)
@@ -551,7 +551,7 @@ Pidfile_Create(pid_t pid)
 
 
 /**
- * Redirect stdin, stdout and stderr to apropriate file handles.
+ * Redirect stdin, stdout and stderr to appropriate file handles.
  *
  * @param fd   The file handle stdin, stdout and stderr should be redirected to.
  */
index f7f3ac919b8c64e1061896fffacef6056dac3167..f2c61e8a8cb46ea0b7b7649ad73b76c7f9db438a 100644 (file)
@@ -52,7 +52,7 @@ Announce_Channel(CLIENT *Client, CHANNEL *Chan)
 
        /* Check features of remote server */
        njoin = Conn_Options(Client_Conn(Client)) & CONN_RFC1459 ? false : true;
-       xop = strchr(Client_Flags(Client), 'X') ? true : false;
+       xop = Client_HasFlag(Client, 'X') ? true : false;
 
        /* Get all the members of this channel */
        cl2chan = Channel_FirstMember(Chan);
@@ -150,80 +150,6 @@ Announce_Server(CLIENT * Client, CLIENT * Server)
 } /* Announce_Server */
 
 
-/**
- * Announce existing user to a new server
- * @param Client New server
- * @param User Existing user in the network
- */
-static bool
-Announce_User(CLIENT * Client, CLIENT * User)
-{
-       CONN_ID conn;
-       char *modes;
-
-       conn = Client_Conn(Client);
-       if (Conn_Options(conn) & CONN_RFC1459) {
-               /* RFC 1459 mode: separate NICK and USER commands */
-               if (! Conn_WriteStr(conn, "NICK %s :%d",
-                                   Client_ID(User), Client_Hops(User) + 1))
-                       return DISCONNECTED;
-               if (! Conn_WriteStr(conn, ":%s USER %s %s %s :%s",
-                                    Client_ID(User), Client_User(User),
-                                    Client_Hostname(User),
-                                    Client_ID(Client_Introducer(User)),
-                                    Client_Info(User)))
-                       return DISCONNECTED;
-               modes = Client_Modes(User);
-               if (modes[0]) {
-                       return Conn_WriteStr(conn, ":%s MODE %s +%s",
-                                    Client_ID(User), Client_ID(User),
-                                    modes);
-               }
-       } else {
-               /* RFC 2813 mode: one combined NICK or SERVICE command */
-               if (Client_Type(User) == CLIENT_SERVICE
-                   && strchr(Client_Flags(Client), 'S')) {
-                       if (!IRC_WriteStrClient(Client,
-                                       "SERVICE %s %d * +%s %d :%s",
-                                       Client_Mask(User),
-                                       Client_MyToken(Client_Introducer(User)),
-                                       Client_Modes(User), Client_Hops(User) + 1,
-                                       Client_Info(User)))
-                               return DISCONNECTED;
-               } else {
-                       if (!IRC_WriteStrClient(Client,
-                                       "NICK %s %d %s %s %d +%s :%s",
-                                       Client_ID(User), Client_Hops(User) + 1,
-                                       Client_User(User), Client_Hostname(User),
-                                       Client_MyToken(Client_Introducer(User)),
-                                       Client_Modes(User), Client_Info(User)))
-                               return DISCONNECTED;
-               }
-       }
-
-       if (strchr(Client_Flags(Client), 'M')) {
-               /* Synchronize metadata */
-               if (Client_HostnameCloaked(User)) {
-                       if (!IRC_WriteStrClient(Client,
-                                               "METADATA %s cloakhost :%s",
-                                               Client_ID(User),
-                                               Client_HostnameCloaked(User)))
-                               return DISCONNECTED;
-               }
-       }
-
-       if (Conn_GetFingerprint(conn)) {
-               if (!IRC_WriteStrClient(Client,
-                                       "METADATA %s certfp :%s",
-                                       Client_ID(User),
-                                       Conn_GetFingerprint(conn)))
-                       return DISCONNECTED;
-       }
-
-       return CONNECTED;
-} /* Announce_User */
-
-
 #ifdef IRCPLUS
 
 /**
@@ -380,7 +306,7 @@ IRC_Num_ENDOFMOTD(CLIENT * Client, UNUSED REQUEST * Req)
        while (c) {
                if (Client_Type(c) == CLIENT_USER ||
                    Client_Type(c) == CLIENT_SERVICE) {
-                       if (!Announce_User(Client, c))
+                       if (!Client_Announce(Client, Client_ThisServer(), c))
                                return DISCONNECTED;
                }
                c = Client_Next(c);
@@ -395,7 +321,7 @@ IRC_Num_ENDOFMOTD(CLIENT * Client, UNUSED REQUEST * Req)
                }
 #ifdef IRCPLUS
                /* Send CHANINFO if the peer supports it */
-               if (strchr(Client_Flags(Client), 'C')) {
+               if (Client_HasFlag(Client, 'C')) {
                        if (!Send_CHANINFO(Client, chan))
                                return DISCONNECTED;
                }
@@ -409,7 +335,7 @@ IRC_Num_ENDOFMOTD(CLIENT * Client, UNUSED REQUEST * Req)
        }
 
 #ifdef IRCPLUS
-       if (strchr(Client_Flags(Client), 'L')) {
+       if (Client_HasFlag(Client, 'L')) {
                LogDebug("Synchronizing INVITE- and BAN-lists ...");
                if (!Synchronize_Lists(Client))
                        return DISCONNECTED;
index 88872c47c5f841d9b008da5fdc59a39281f4f2bb..ed56497d77276f580d4607c9755348dfd8ae514f 100644 (file)
@@ -15,7 +15,7 @@
 
 /**
  * @file
- * PAM User Authentification
+ * PAM User Authentication
  */
 
 #include "imp.h"
index ba31d50abd893f9f8dea941df1311c9ae14bdee5..8c8e8f64e9c2462914e25c5fd43b7af07cfc5fd1 100644 (file)
@@ -16,7 +16,7 @@
 
 /**
  * @file
- * PAM User Authentification (header)
+ * PAM User Authentication (header)
  */
 
 GLOBAL bool PAM_Authenticate PARAMS((CLIENT *Client));
index 46164ce1515cb073ada9ffe92e75ade8d5cf207c..c92da4d2aa76b21d96bbc3dd9e2bd767c91b4190 100644 (file)
@@ -127,7 +127,7 @@ static COMMAND My_Commands[] =
        { "GET",  IRC_QUIT_HTTP, CLIENT_UNKNOWN, 0, 0, 0 },
        { "POST", IRC_QUIT_HTTP, CLIENT_UNKNOWN, 0, 0, 0 },
 #endif
-       { NULL, NULL, 0x0, 0, 0, 0 } /* Ende-Marke */
+       { NULL, NULL, 0x0, 0, 0, 0 } /* End-Mark */
 };
 
 static void Init_Request PARAMS(( REQUEST *Req ));
@@ -157,7 +157,7 @@ Parse_GetCommandStruct( void )
  * Parse a command ("request") received from a client.
  * 
  * This function is called after the connection layer received a valid CR+LF
- * terminated line of text: we asume that this is a valid IRC command and
+ * terminated line of text: we assume that this is a valid IRC command and
  * try to do something useful with it :-)
  *
  * All errors are reported to the client from which the command has been
@@ -169,7 +169,7 @@ Parse_GetCommandStruct( void )
  * @param Idx Index of the connection from which the command has been received.
  * @param Request NULL terminated line of text (the "command").
  * @return true on success (valid command or "regular" error), false if a
- *     fatal error occured and the connection has been shut down.
+ *     fatal error occurred and the connection has been shut down.
  */
 GLOBAL bool
 Parse_Request( CONN_ID Idx, char *Request )
@@ -271,8 +271,6 @@ Parse_Request( CONN_ID Idx, char *Request )
 static void
 Init_Request( REQUEST *Req )
 {
-       /* Neue Request-Struktur initialisieren */
-
        int i;
 
        assert( Req != NULL );
@@ -367,7 +365,7 @@ Validate_Command( UNUSED CONN_ID Idx, UNUSED REQUEST *Req, bool *Closed )
        *Closed = false;
 
        return true;
-} /* Validate_Comman */
+} /* Validate_Command */
 
 
 static bool
index 6d5ea8f83b9a97727727f39d0665e4be695cf241..effef44d8fb8b391e1b222eb2eaabee296632e48 100644 (file)
@@ -257,7 +257,7 @@ Signal_Callback(int fd, short UNUSED what)
 /**
  * Initialize the signal handlers, catch
  * those signals we are interested in and sets SIGPIPE to be ignored.
- * @return true if initialization was sucessful.
+ * @return true if initialization was successful.
  */
 bool
 Signals_Init(void)
@@ -304,7 +304,7 @@ Signals_Init(void)
 } /* Signals_Init */
 
 /**
- * Restores signals to their default behaviour.
+ * Restores signals to their default behavior.
  *
  * This should be called after a fork() in the new
  * child prodcess, especially when we are about to call