diff options
-rw-r--r-- | protocols/jabber/jabber.c | 8 | ||||
-rw-r--r-- | protocols/twitter/twitter.c | 4 | ||||
-rw-r--r-- | root_commands.c | 24 | ||||
-rw-r--r-- | set.c | 28 | ||||
-rw-r--r-- | set.h | 4 |
5 files changed, 37 insertions, 31 deletions
diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c index 11980d13..71287842 100644 --- a/protocols/jabber/jabber.c +++ b/protocols/jabber/jabber.c @@ -60,7 +60,7 @@ static void jabber_init( account_t *acc ) s = set_add( &acc->set, "activity_timeout", "600", set_eval_int, acc ); - s = set_add( &acc->set, "oauth", "false", set_eval_bool, acc ); + s = set_add( &acc->set, "oauth", "false", set_eval_oauth, acc ); g_snprintf( str, sizeof( str ), "%d", jabber_port_list[0] ); s = set_add( &acc->set, "port", str, set_eval_int, acc ); @@ -75,6 +75,9 @@ static void jabber_init( account_t *acc ) s = set_add( &acc->set, "resource_select", "activity", NULL, acc ); + s = set_add( &acc->set, "sasl", "true", set_eval_bool, acc ); + s->flags |= ACC_SET_OFFLINE_ONLY | SET_HIDDEN_DEFAULT; + s = set_add( &acc->set, "server", NULL, set_eval_account, acc ); s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY | SET_NULL_OK; @@ -83,9 +86,6 @@ static void jabber_init( account_t *acc ) s = set_add( &acc->set, "tls", "try", set_eval_tls, acc ); s->flags |= ACC_SET_OFFLINE_ONLY; - - s = set_add( &acc->set, "sasl", "true", set_eval_bool, acc ); - s->flags |= ACC_SET_OFFLINE_ONLY | SET_HIDDEN_DEFAULT; s = set_add( &acc->set, "user_agent", "BitlBee", NULL, acc ); diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 76ccc3eb..1cf0b0b5 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -239,12 +239,12 @@ static void twitter_init(account_t * acc) s = set_add(&acc->set, "mode", "chat", set_eval_mode, acc); s->flags |= ACC_SET_OFFLINE_ONLY; + s = set_add(&acc->set, "oauth", def_oauth, set_eval_oauth, acc); + s = set_add(&acc->set, "show_ids", "false", set_eval_bool, acc); s->flags |= ACC_SET_OFFLINE_ONLY; s = set_add(&acc->set, "show_old_mentions", "true", set_eval_bool, acc); - - s = set_add(&acc->set, "oauth", def_oauth, set_eval_bool, acc); } /** diff --git a/root_commands.c b/root_commands.c index 734cb0e8..f8f2e578 100644 --- a/root_commands.c +++ b/root_commands.c @@ -442,9 +442,27 @@ static void cmd_account( irc_t *irc, char **cmd ) set_setstr( &a->set, "server", cmd[5] ); } - irc_rootmsg( irc, "Account successfully added with tag %s%s", - a->tag, cmd[4] ? "" : - ", now use /OPER to enter the password" ); + irc_rootmsg( irc, "Account successfully added with tag %s", a->tag ); + + if( cmd[4] == NULL ) + { + set_t *oauth = set_find( &a->set, "oauth" ); + if( oauth && bool2int( set_value( oauth ) ) ) + { + *a->pass = '\0'; + irc_rootmsg( irc, "No need to enter a password for this " + "account since it's using OAuth" ); + } + else + { + irc_rootmsg( irc, "You can now use the /OPER command to " + "enter the password" ); + if( oauth ) + irc_rootmsg( irc, "Alternatively, enable oauth if " + "the account supports it: account %s " + "set oauth on", a->tag ); + } + } return; } @@ -84,7 +84,7 @@ char *set_getstr( set_t **head, const char *key ) if( !s || ( !s->value && !s->def ) ) return NULL; - return s->value ? s->value : s->def; + return set_value( s ); } int set_getint( set_t **head, const char *key ) @@ -249,26 +249,12 @@ char *set_eval_to_char( set_t *set, char *value ) return s; } -/* -char *set_eval_ops( set_t *set, char *value ) +char *set_eval_oauth( set_t *set, char *value ) { - irc_t *irc = set->data; - - if( g_strcasecmp( value, "user" ) == 0 ) - irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost, - irc->channel, "+o-o", irc->nick, irc->mynick ); - else if( g_strcasecmp( value, "root" ) == 0 ) - irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost, - irc->channel, "-o+o", irc->nick, irc->mynick ); - else if( g_strcasecmp( value, "both" ) == 0 ) - irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost, - irc->channel, "+oo", irc->nick, irc->mynick ); - else if( g_strcasecmp( value, "none" ) == 0 ) - irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost, - irc->channel, "-oo", irc->nick, irc->mynick ); - else - return SET_INVALID; + account_t *acc = set->data; - return value; + if( bool2int( value ) && strcmp( acc->pass, PASSWORD_PENDING ) == 0 ) + *acc->pass = '\0'; + + return set_eval_bool( set, value ); } -*/ @@ -76,6 +76,8 @@ typedef struct set struct set *next; } set_t; +#define set_value( set ) ((set)->value) ? ((set)->value) : ((set)->def) + /* Should be pretty clear. */ set_t *set_add( set_t **head, const char *key, const char *def, set_eval eval, void *data ); @@ -110,6 +112,6 @@ char *set_eval_list( set_t *set, char *value ); /* Some not very generic evaluators that really shouldn't be here... */ char *set_eval_to_char( set_t *set, char *value ); -char *set_eval_ops( set_t *set, char *value ); +char *set_eval_oauth( set_t *set, char *value ); #endif /* __SET_H__ */ |