diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2011-12-21 12:21:04 +0100 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2011-12-21 12:21:04 +0100 | 
| commit | ce199b726735374aca84b2111bb19ec103478ebc (patch) | |
| tree | d3fa4dcf151398b064a8aef9d7bdde8cbf3f329b | |
| parent | e14b47b826594772e4f3d0dbec1bf17153aa92b1 (diff) | |
Make it easier to add OAuth-authenticated accounts without having to type
a bogus password.
| -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__ */ | 
