Changeset 73dd021


Ignore:
Timestamp:
2015-07-04T21:25:16Z (5 years ago)
Author:
dequis <dx@…>
Branches:
master
Children:
3ddbd23c, adec749
Parents:
632a232
Message:

jabber: Add SASL ANONYMOUS support (XEP-0175)

Use "account jabber set anonymous on" to have bitlbee try that method

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • doc/user-guide/commands.xml

    r632a232 r73dd021  
    11861186        </bitlbee-setting>
    11871187
     1188        <bitlbee-setting name="anonymous" type="boolean" scope="account">
     1189                <default>false</default>
     1190
     1191                <description>
     1192                        <para>
     1193                                This enables SASL ANONYMOUS login for jabber accounts, as specified by XEP-0175.
     1194                        </para>
     1195
     1196                        <para>
     1197                                With this setting enabled, if the server allows this method, a password isn't required and the username part of the JID is ignored (you can use anonymous@jabber.example.com). Servers will usually assign you a random numeric username instead.
     1198                        </para>
     1199                </description>
     1200
     1201        </bitlbee-setting>
     1202
    11881203        <bitlbee-setting name="ops" type="string" scope="global">
    11891204                <default>both</default>
  • protocols/jabber/jabber.c

    r632a232 r73dd021  
    8585                set_setstr(&acc->set, "server", "chat.hipchat.com");
    8686        } else {
    87                 s = set_add(&acc->set, "oauth", "false", set_eval_oauth, acc);
     87                set_add(&acc->set, "oauth", "false", set_eval_oauth, acc);
     88
     89                /* this reuses set_eval_oauth, which clears the password */
     90                set_add(&acc->set, "anonymous", "false", set_eval_oauth, acc);
    8891        }
    8992
  • protocols/jabber/sasl.c

    r632a232 r73dd021  
    5454        struct xt_node *c, *reply;
    5555        char *s;
    56         int sup_plain = 0, sup_digest = 0, sup_gtalk = 0, sup_fb = 0;
    57         int want_oauth = FALSE, want_hipchat = FALSE;
     56        int sup_plain = 0, sup_digest = 0, sup_gtalk = 0, sup_fb = 0, sup_anonymous = 0;
     57        int want_oauth = FALSE, want_hipchat = FALSE, want_anonymous = FALSE;
    5858        GString *mechs;
    5959
     
    7474        }
    7575
     76        want_anonymous = set_getbool(&ic->acc->set, "anonymous");
    7677        want_oauth = set_getbool(&ic->acc->set, "oauth");
    7778        want_hipchat = (jd->flags & JFLAG_HIPCHAT);
     
    8485                } else if (c->text && g_strcasecmp(c->text, "DIGEST-MD5") == 0) {
    8586                        sup_digest = 1;
     87                } else if (c->text && g_strcasecmp(c->text, "ANONYMOUS") == 0) {
     88                        sup_anonymous = 1;
    8689                } else if (c->text && g_strcasecmp(c->text, "X-OAUTH2") == 0) {
    8790                        sup_gtalk = 1;
     
    139142        } else if (want_oauth) {
    140143                imcb_error(ic, "OAuth requested, but not supported by server");
     144                imc_logout(ic, FALSE);
     145                xt_free_node(reply);
     146                return XT_ABORT;
     147        } else if (want_anonymous && sup_anonymous) {
     148                xt_add_attr(reply, "mechanism", "ANONYMOUS");
     149
     150                /* Well, that was easy. */
     151        } else if (want_anonymous) {
     152                imcb_error(ic, "Anonymous login requested, but not supported by server");
    141153                imc_logout(ic, FALSE);
    142154                xt_free_node(reply);
Note: See TracChangeset for help on using the changeset viewer.