Changeset 280c56a for irc_commands.c


Ignore:
Timestamp:
2010-03-27T17:36:47Z (9 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
74f1cde
Parents:
2f53ada
Message:

Added privmsg handlers to users/channels. root commands are coming back.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • irc_commands.c

    r2f53ada r280c56a  
    7777                irc_send_num( irc, 438, ":The hand of the deity is upon thee, thy nick may not change" );
    7878        }
    79         else if( irc_user_find( irc, cmd[1] ) )
     79        else if( irc_user_by_name( irc, cmd[1] ) )
    8080        {
    8181                irc_send_num( irc, 433, ":This nick is already in use" );
     
    160160{
    161161        char *nick = cmd[1];
    162         irc_user_t *iu = irc_user_find( irc, nick );
     162        irc_user_t *iu = irc_user_by_name( irc, nick );
    163163       
    164164        if( iu )
     
    220220        char *channel = cmd[1];
    221221        irc_channel_t *ic;
    222         struct groupchat *c;
    223         GList *l;
    224222       
    225223        if( !channel || *channel == '0' || *channel == '*' || !*channel )
     
    231229}
    232230
     231static void irc_cmd_privmsg( irc_t *irc, char **cmd )
     232{
     233        irc_channel_t *ic;
     234        irc_user_t *iu;
     235       
     236        if( !cmd[2] )
     237        {
     238                irc_send_num( irc, 412, ":No text to send" );
     239        }
     240        else if( irc_channel_name_ok( cmd[1] ) &&
     241                 ( ic = irc_channel_by_name( irc, cmd[1] ) ) )
     242        {
     243                if( ic->f->privmsg )
     244                        ic->f->privmsg( ic, cmd[2] );
     245        }
     246        else if( ( iu = irc_user_by_name( irc, cmd[1] ) ) )
     247        {
     248                if( iu->f->privmsg )
     249                        iu->f->privmsg( iu, cmd[2] );
     250        }
     251        else
     252        {
     253                irc_send_num( irc, 401, "%s :No such nick/channel", cmd[1] );
     254        }
     255
     256
    233257#if 0
    234 //#if 0
    235 static void irc_cmd_oper( irc_t *irc, char **cmd )
    236 {
    237         if( global.conf->oper_pass &&
    238             ( strncmp( global.conf->oper_pass, "md5:", 4 ) == 0 ?
    239                 md5_verify_password( cmd[2], global.conf->oper_pass + 4 ) == 0 :
    240                 strcmp( cmd[2], global.conf->oper_pass ) == 0 ) )
    241         {
    242                 irc_umode_set( irc, "+o", 1 );
    243                 irc_send_num( irc, 381, ":Password accepted" );
    244         }
    245         else
    246         {
    247                 irc_send_num( irc, 432, ":Incorrect password" );
    248         }
    249 }
    250 
    251 static void irc_cmd_invite( irc_t *irc, char **cmd )
    252 {
    253         char *nick = cmd[1], *channel = cmd[2];
    254         struct groupchat *c = irc_chat_by_channel( irc, channel );
    255         user_t *u = user_find( irc, nick );
    256        
    257         if( u && c && ( u->ic == c->ic ) )
    258                 if( c->ic && c->ic->acc->prpl->chat_invite )
    259                 {
    260                         c->ic->acc->prpl->chat_invite( c, u->handle, NULL );
    261                         irc_send_num( irc, 341, "%s %s", nick, channel );
    262                         return;
    263                 }
    264        
    265         irc_send_num( irc, 482, "%s :Invite impossible; User/Channel non-existent or incompatible", channel );
    266 }
    267 
    268 static void irc_cmd_privmsg( irc_t *irc, char **cmd )
    269 {
    270         if( !cmd[2] )
    271         {
    272                 irc_send_num( irc, 412, ":No text to send" );
    273         }
    274258        else if( irc->nick && g_strcasecmp( cmd[1], irc->nick ) == 0 )
    275259        {
    276                 irc_write( irc, ":%s!%s@%s %s %s :%s", irc->nick, irc->user, irc->host, cmd[0], cmd[1], cmd[2] );
    277260        }
    278261        else
     
    315298                irc_send( irc, cmd[1], cmd[2], ( g_strcasecmp( cmd[0], "NOTICE" ) == 0 ) ? OPT_AWAY : 0 );
    316299        }
     300#endif
     301}
     302
     303
     304
     305#if 0
     306//#if 0
     307static void irc_cmd_oper( irc_t *irc, char **cmd )
     308{
     309        if( global.conf->oper_pass &&
     310            ( strncmp( global.conf->oper_pass, "md5:", 4 ) == 0 ?
     311                md5_verify_password( cmd[2], global.conf->oper_pass + 4 ) == 0 :
     312                strcmp( cmd[2], global.conf->oper_pass ) == 0 ) )
     313        {
     314                irc_umode_set( irc, "+o", 1 );
     315                irc_send_num( irc, 381, ":Password accepted" );
     316        }
     317        else
     318        {
     319                irc_send_num( irc, 432, ":Incorrect password" );
     320        }
     321}
     322
     323static void irc_cmd_invite( irc_t *irc, char **cmd )
     324{
     325        char *nick = cmd[1], *channel = cmd[2];
     326        struct groupchat *c = irc_chat_by_channel( irc, channel );
     327        user_t *u = user_find( irc, nick );
     328       
     329        if( u && c && ( u->ic == c->ic ) )
     330                if( c->ic && c->ic->acc->prpl->chat_invite )
     331                {
     332                        c->ic->acc->prpl->chat_invite( c, u->handle, NULL );
     333                        irc_send_num( irc, 341, "%s %s", nick, channel );
     334                        return;
     335                }
     336       
     337        irc_send_num( irc, 482, "%s :Invite impossible; User/Channel non-existent or incompatible", channel );
    317338}
    318339
     
    555576        { "mode",        1, irc_cmd_mode,        IRC_CMD_LOGGED_IN },
    556577        { "who",         0, irc_cmd_who,         IRC_CMD_LOGGED_IN },
     578        { "privmsg",     1, irc_cmd_privmsg,     IRC_CMD_LOGGED_IN },
    557579#if 0
    558580        { "oper",        2, irc_cmd_oper,        IRC_CMD_LOGGED_IN },
    559581        { "invite",      2, irc_cmd_invite,      IRC_CMD_LOGGED_IN },
    560         { "privmsg",     1, irc_cmd_privmsg,     IRC_CMD_LOGGED_IN },
    561582        { "notice",      1, irc_cmd_privmsg,     IRC_CMD_LOGGED_IN },
    562583        { "userhost",    1, irc_cmd_userhost,    IRC_CMD_LOGGED_IN },
Note: See TracChangeset for help on using the changeset viewer.