Changeset a199d33 for irc_commands.c


Ignore:
Timestamp:
2008-03-29T22:19:17Z (11 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
18ff38f
Parents:
8968133
Message:

Closing bug #209: The PASS command can now be used to identify yourself
to BitlBee. The advantage: No more messing with NickServ hooks. Just set
a server password.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • irc_commands.c

    r8968133 ra199d33  
    3030static void irc_cmd_pass( irc_t *irc, char **cmd )
    3131{
    32         if( global.conf->auth_pass &&
     32        if( irc->status & USTATUS_LOGGED_IN )
     33        {
     34                char *send_cmd[] = { "identify", cmd[1], NULL };
     35               
     36                /* We're already logged in, this client seems to send the PASS
     37                   command last. (Possibly it won't send it at all if it turns
     38                   out we don't require it, which will break this feature.)
     39                   Try to identify using the given password. */
     40                return root_command( irc, send_cmd );
     41        }
     42        /* Handling in pre-logged-in state, first see if this server is
     43           password-protected: */
     44        else if( global.conf->auth_pass &&
    3345            ( strncmp( global.conf->auth_pass, "md5:", 4 ) == 0 ?
    3446                md5_verify_password( cmd[1], global.conf->auth_pass + 4 ) == 0 :
     
    3850                irc_check_login( irc );
    3951        }
    40         else
     52        else if( global.conf->auth_pass )
    4153        {
    4254                irc_reply( irc, 464, ":Incorrect password" );
     55        }
     56        else
     57        {
     58                /* Remember the password and try to identify after USER/NICK. */
     59                irc_setpass( irc, cmd[1] );
     60                irc_check_login( irc );
    4361        }
    4462}
     
    581599
    582600static const command_t irc_commands[] = {
    583         { "pass",        1, irc_cmd_pass,        IRC_CMD_PRE_LOGIN },
     601        { "pass",        1, irc_cmd_pass,        0 },
    584602        { "user",        4, irc_cmd_user,        IRC_CMD_PRE_LOGIN },
    585603        { "nick",        1, irc_cmd_nick,        0 },
Note: See TracChangeset for help on using the changeset viewer.