Changeset 96863f6


Ignore:
Timestamp:
2006-07-02T09:49:31Z (18 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
911f2eb
Parents:
fef6116
Message:

Added protocol-specific settings, made the server setting specific to only
OSCAR and Jabber.

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • account.c

    rfef6116 r96863f6  
    2828#include "account.h"
    2929
    30 char *set_eval_account( set_t *set, char *value );
    31 
    3230account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass )
    3331{
     
    5149        a->irc = irc;
    5250       
    53         s = set_add( &a->set, "auto_connect", NULL, set_eval_account, a );
     51        s = set_add( &a->set, "auto_connect", "true", set_eval_account, a );
    5452        s->flags |= ACC_SET_NOSAVE;
    5553       
    5654        s = set_add( &a->set, "password", NULL, set_eval_account, a );
    5755        s->flags |= ACC_SET_NOSAVE;
    58        
    59         s = set_add( &a->set, "server", NULL, set_eval_account, a );
    60         s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
    6156       
    6257        s = set_add( &a->set, "username", NULL, set_eval_account, a );
    6358        s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
    6459        set_setstr( &a->set, "username", user );
     60       
     61        /* This function adds some more settings (and might want to do more
     62           things that have to be done now, although I can't think of anything. */
     63        if( prpl->acc_init )
     64                prpl->acc_init( a );
    6565       
    6666        return( a );
  • account.h

    rfef6116 r96863f6  
    5050void account_off( irc_t *irc, account_t *a );
    5151
     52char *set_eval_account( set_t *set, char *value );
     53
    5254#define ACC_SET_NOSAVE          1
    5355#define ACC_SET_OFFLINE_ONLY    2
  • protocols/jabber/jabber.c

    rfef6116 r96863f6  
    563563        account_t *acc;
    564564        int port = -1, ssl = 0;
    565         char *server = NULL, *s;
     565        char *server = NULL;
    566566
    567567        if (!gjc || gjc->state != JCONN_STATE_OFF)
     
    569569
    570570        acc = GJ_GC(gjc)->acc;
    571         if (acc->server) {
    572                 /* If there's a dot, assume there's a hostname in the beginning */
    573                 if (strchr(acc->server, '.')) {
    574                         server = g_strdup(acc->server);
    575                         if ((s = strchr(server, ':')))
    576                                 *s = 0;
    577                 }
    578                
    579                 /* After the hostname, there can be a port number */
    580                 s = strchr(acc->server, ':');
    581                 if (s && isdigit(s[1]))
    582                         sscanf(s + 1, "%d", &port);
    583                
    584                 /* And if there's the string ssl, the user wants an SSL-connection */
    585                 if (strstr(acc->server, ":ssl") || g_strcasecmp(acc->server, "ssl") == 0)
    586                         ssl = 1;
    587         }
    588        
    589         if (port == -1 && !ssl)
    590                 port = DEFAULT_PORT;
    591         else if (port == -1 && ssl)
    592                 port = DEFAULT_PORT_SSL;
    593         else if (port < JABBER_PORT_MIN || port > JABBER_PORT_MAX) {
     571        server = acc->server;
     572        port = set_getint(&acc->set, "port");
     573        ssl = set_getbool(&acc->set, "ssl");
     574       
     575        if (port < JABBER_PORT_MIN || port > JABBER_PORT_MAX) {
    594576                serv_got_crap(GJ_GC(gjc), "For security reasons, the Jabber port number must be in the %d-%d range.", JABBER_PORT_MIN, JABBER_PORT_MAX);
    595577                STATE_EVT(JCONN_STATE_OFF)
     
    613595                gjc->fd = proxy_connect(server, port, gjab_connected, GJ_GC(gjc));
    614596        }
    615        
    616         g_free(server);
    617597       
    618598        if (!acc->gc || (gjc->fd < 0)) {
     
    15161496}
    15171497
     1498static void jabber_acc_init(account_t *acc)
     1499{
     1500        set_t *s;
     1501       
     1502        s = set_add( &acc->set, "port", "5222", set_eval_int, acc );
     1503        s->flags |= ACC_SET_OFFLINE_ONLY;
     1504       
     1505        s = set_add( &acc->set, "resource", "BitlBee", NULL, acc );
     1506        s->flags |= ACC_SET_OFFLINE_ONLY;
     1507       
     1508        s = set_add( &acc->set, "server", NULL, set_eval_account, acc );
     1509        s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
     1510       
     1511        s = set_add( &acc->set, "ssl", "false", set_eval_bool, acc );
     1512        s->flags |= ACC_SET_OFFLINE_ONLY;
     1513}
     1514
    15181515static void jabber_login(account_t *acc)
    15191516{
    1520         struct gaim_connection *gc = new_gaim_conn(acc);
    1521         struct jabber_data *jd = gc->proto_data = g_new0(struct jabber_data, 1);
    1522         char *loginname = create_valid_jid(acc->user, DEFAULT_SERVER, "BitlBee");
    1523 
     1517        struct gaim_connection *gc;
     1518        struct jabber_data *jd;
     1519        char *resource, *loginname;
     1520       
     1521        /* Time to move some data/things from the old syntax to the new one: */
     1522        if (acc->server) {
     1523                char *s, *tmp_server;
     1524                int port;
     1525               
     1526                if (g_strcasecmp(acc->server, "ssl") == 0) {
     1527                        set_setstr(&acc->set, "server", "");
     1528                        set_setint(&acc->set, "port", DEFAULT_PORT_SSL);
     1529                        set_setstr(&acc->set, "ssl", "true");
     1530                       
     1531                        g_free(acc->server);
     1532                        acc->server = NULL;
     1533                } else if ((s = strchr(acc->server, ':'))) {
     1534                        if (strstr(acc->server, ":ssl")) {
     1535                                set_setint(&acc->set, "port", DEFAULT_PORT_SSL);
     1536                                set_setstr(&acc->set, "ssl", "true");
     1537                        }
     1538                        if (isdigit(s[1])) {
     1539                                if (sscanf(s + 1, "%d", &port) == 1)
     1540                                        set_setint(&acc->set, "port", port);
     1541                        }
     1542                        tmp_server = g_strndup(acc->server, s - acc->server);
     1543                        set_setstr(&acc->set, "server", tmp_server);
     1544                        g_free(tmp_server);
     1545                }
     1546        }
     1547       
     1548        gc = new_gaim_conn(acc);
     1549        jd = gc->proto_data = g_new0(struct jabber_data, 1);
     1550       
     1551        resource = set_getstr(&acc->set, "resource");
     1552        loginname = create_valid_jid(acc->user, DEFAULT_SERVER, resource);
     1553       
    15241554        jd->hash = g_hash_table_new(g_str_hash, g_str_equal);
    15251555        jd->chats = NULL;       /* we have no chats yet */
     
    23372367        ret->name = "jabber";
    23382368        ret->away_states = jabber_away_states;
     2369        ret->acc_init = jabber_acc_init;
    23392370        ret->login = jabber_login;
    23402371        ret->close = jabber_close;
  • protocols/nogaim.h

    rfef6116 r96863f6  
    129129        const char *name;
    130130
     131        void (* acc_init)       (account_t *);
    131132        void (* login)          (account_t *);
    132133        void (* keepalive)      (struct gaim_connection *);
  • protocols/oscar/oscar.c

    rfef6116 r96863f6  
    356356}
    357357
     358static void oscar_acc_init(account_t *acc)
     359{
     360        set_t *s;
     361       
     362        s = set_add( &acc->set, "server", NULL, set_eval_account, acc );
     363        s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
     364}
     365
    358366static void oscar_login(account_t *acc) {
    359367        aim_session_t *sess;
     
    386394        if (conn == NULL) {
    387395                hide_login_progress(gc, _("Unable to login to AIM"));
     396                signoff(gc);
     397                return;
     398        }
     399       
     400        if (acc->server == NULL) {
     401                hide_login_progress(gc, "No servername specified");
    388402                signoff(gc);
    389403                return;
     
    26492663        ret->away_states = oscar_away_states;
    26502664        ret->login = oscar_login;
     2665        ret->acc_init = oscar_acc_init;
    26512666        ret->close = oscar_close;
    26522667        ret->send_im = oscar_send_im;
Note: See TracChangeset for help on using the changeset viewer.