aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
...
* protocols/unknown: Fix format-security warningdequis2016-11-19-1/+1
| | | | Which is -Werror'd in debian builds
* ...of course, i had to forget to add unknown.cdequis2016-11-19-0/+75
|
* Remove yahoo (the old protocol). Use funyahoo++ instead.dequis2016-11-19-9021/+0
| | | | | | RIP The previous commit already handled the part of telling users.
* Improve handling of unknown protocols / missing pluginsdequis2016-11-19-12/+75
| | | | | | | | | | | | | | | Instead of failing to load the config, a fake prpl is created to load the account, keep its settings, and refuse to log in with a helpful error message. Also added a new explain_unknown_protocol() function which returns text which attempts to explain why a protocol is missing, handling several typical cases, including the future removal of several dead libpurple plugins. That message is shown when logging in to a loaded account with a missing protocol and when adding a new one with 'account add', with the difference that the latter doesn't leave a placeholder fake account.
* Improve support for protocols which don't require a passworddequis2016-11-13-3/+44
| | | | | | This adds a prpl_options_t enum with flags, which mostly just brings OPT_PROTO_{NO_PASSWORD,PASSWORD_OPTIONAL} from libpurple as PRPL_OPT_{NO_PASSWORD,PASSWORD_OPTIONAL}
* purple: fix file transfer memory managementdequis2016-11-13-11/+75
| | | | | | | | | | | | | | | | This means cancelling transfers on logout to avoid crashes, keeping track of timeouts, reffing and unreffing the xfers, listening to the callbacks from UI and purple more carefully and using the correct functions to free the correct things at the correct moments. Originally intended to fix a crash triggered when the dcc stall timeout kicks in after the account is offline, which is apparently very frequent with telegram (it sends file transfers while fetching history, and randomly disconnects a while later). Trying to fix that meant opening a can of worms, but after three days of work on this bug I'm pretty sure I've finished dealing with the resulting mess and tested all the typical edge cases.
* imcb_file_send_start: handle ft attempts from non-existing usersdequis2016-11-13-1/+1
|
* word_wrap: truncate utf8 safelydequis2016-11-12-3/+14
|
* tests: don't require pam and ldap to testdequis2016-11-12-1/+1
|
* otr: word_wrap long system messages ("unencrypted message received")dequis2016-11-11-3/+8
|
* purple: hack to pass server parameter to jabber's input requestdequis2016-11-04-2/+23
| | | | | | | | | | | | Because our purple module is all about hacks, adding more can't hurt. There's a string comparison for "Enter a Conference Server". It's gettexted in the source but in practice it isn't affected by locale (bitlbee disables localization). Worst case, if this stops working, it will open an input request like it did before this commit. It also does that in purple's jabber if you don't provide a server parameter.
* purple: fix icq login when the protocol name is "oscar"dequis2016-10-30-4/+17
| | | | | | | | | | | | | | | Which happens when moving from non-purple to purple. Fixes trac ticket 1269 Since "oscar" doesn't exist in purple, the old code called register_protocol() to associate oscar with prpl-aim, which meant that aim accounts migrated seamlessly to purple but icq accounts broke silently, throwing incorrect password errors. Now the oscar protocol is special-cased to return prpl-aim or prpl-icq depending on the first character of the username, which is the same thing the built-in oscar protocol does.
* oscar: remove some dead codedequis2016-10-18-26/+2
|
* Support motd.txt files bigger than 2048 charsdequis2016-10-18-9/+7
| | | | By using g_file_get_contents()
* chat list: Fix alignment/truncation when utf8 characters are presentdequis2016-10-17-5/+30
| | | | By using the str_pad_and_truncate() function I just added
* misc: Add str_pad_and_truncate() helper functiondequis2016-10-17-0/+27
| | | | Useful for tables. See following commit.
* jabber: Implement chat list commanddequis2016-10-16-0/+78
| | | | Also applies to hipchat.
* lib/sha1: Refactor sha1_hmac into a generic b_hmac functiondequis2016-10-16-15/+35
|
* Turn purple_chatlist_free() into a imcb_chat_list_free()dequis2016-10-16-17/+20
| | | | | I found myself copypasting this to jabber. Might as well make it part of the API.
* Rename bee_chat_list_finish() to imcb_chat_list_finish()dequis2016-10-16-3/+10
| | | | | | | | | bee_chat_list_finish is still available as a deprecated function but it will be removed before the next stable release It has never been part of any release, just keeping it for a while for the sake of being polite to the users of the discord plugin who may be using the experimental chat list branch.
* jabber: Don't pass a readonly empty string to imcb_chat_topic()dequis2016-10-12-1/+2
| | | | | | | | | Fixes crashes when a topic is unset and strip_html is set to always. Turns out that the strip_html() function does a strcpy at the end which may write a single null byte over the null byte of the empty string, and if it's not in writable memory, that blows up. Thanks to iamthemcmaster / mcm for pointing this out
* purple: Fix handling of empty, immediate roomlist resultsdequis2016-10-08-10/+22
| | | | | | | | | | | | | | | | | | | | Two issues here: 1. SIPE called in_progress(FALSE) immediately (which decreases refcount), before purple_roomlist_get_list() could return (which would normally increase refcount). The first refcount decrease steals it from the prpl, and bad things happen. Added an initialized flag to only do that decrease after it was increased first. This is similar to how pidgin sets a 'dialog' attribute after the purple_roomlist_get_list() call, and skips the unref if it's not set. 2. The code assumed that NULL return value means room listing not supported. That's not quite true, so now it checks in the prpl info to see if roomlist_get_list is defined. Also, made purple_roomlist_data more private.
* twitter: fix quoted tweet expansion in extended tweetsdequis2016-10-02-5/+14
| | | | | | | | | | | | The outermost entities object only contains the url of the compat tweet, the one linking to /i/web/status/[...] The inner entities object, inside the "extended_tweet", is the one that contains the quoted tweet url that we're supposed to replace. But expand_entities() assumed that the quoted_status object would be next to entities, which doesn't apply in the case of extended tweets. So now it gets an extra parameter to look for entities.
* ssl_openssl: Allow TLS versions newer than 1.0dequis2016-09-29-1/+2
| | | | | | | | | | | | Another victim of SSLv23_client_method's terrible name. At least we weren't forcing ssl 3.0. Thanks kl3 for pointing this out. Despite what this commit might suggest, using openssl is not recommended at all. Potential GPL incompatibility aside, that module doesn't have certificate verification code. Don't use it unless you have a good reason to do so.
* Fix crash when setting away in protocols with null away_states listdequis2016-09-28-0/+3
| | | | | | | Like funyahoo++, which has online and offline statuses, but bitlbee's purple filters those out, resulting in an empty list, and boom. It's ugly enough that I think I'll add a workaround to the plugin too.
* purple: Fix another issue where /join results in two channelsdequis2016-09-25-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow up to a3019499665384a3dcbbc11016d256e6d4dcd26c (which actually made things worse than before for this particular case - found it by bisecting) This affected skypeweb and hangouts, maybe others. Sometimes serv_join_chat() results in a call chain like this (outermost frame first) 1. purple_chat_join 2. serv_join_chat 3. (the join_chat function of the prpl) 4. serv_got_joined_chat 5. purple_conversation_new 6. prplcb_conv_new The last one tries to find a struct groupchat by name (that's the code from the referenced commit). If it doesn't exist, it creates a new one. This usually isn't an issue because the 4th step is done asynchronously, and a groupchat is created at the end of purple_chat_join. If it's not, you end up with two groupchats, which can lead to other nasty issues. This moves the creation of the groupchat right before serv_join_chat(). That way, it always exists even if the conversation is created immediately.
* twitter: don't count filter stream reply as valid pongsdequis2016-09-24-1/+4
| | | | | | | | | | | | | | | | | Twitter streams send newlines to indicate that they are alive. The twitter_http_stream() function processes those and sets the ponged flag so that the whole connection doesn't timeout. That function is used to handle both user stream and filter stream. If the user stream is dead (not sending whitespace) but the filter stream isn't, the latter keeps the connection alive while the main twitter channel is completely dead. This commit only sets the ponged flag for the user stream. This has the side effect of not detecting if the filter stream dies - but that didn't work before, anyway. In the future the whole stream connection management should be revamped - for example stream disconnections shouldn't take the whole account down, especially not filter streams.
* purple: support setting chat room topics (#84)Eion Robb2016-09-24-0/+16
|
* twitter: extended tweet support (AKA avoid showing truncated ones)dequis2016-09-21-13/+22
| | | | | | | | | | | | | Documentation over here: https://dev.twitter.com/overview/api/upcoming-changes-to-tweets This is already live in twitter, can be tested by including an attachment from twitter web and then fill 140 characters. Should be sanely backwards compatible with twitter clones - i'd expect them to ignore the tweet_mode=extended parameter in REST queries, and just not deliver extended_tweet objects / full_text strings at all.
* debian: check if sysv script exists before calling invoke-rc.ddequis2016-09-21-1/+1
| | | | | | | In the postinst script, the part that isn't handled by debhelper and i'm not really sure why i'm keeping. Thanks Raku for reporting/testing this.
* doc: some 'chat list' related help improvementsdequis2016-09-20-4/+18
|
* Do not try to list chatrooms if account is offlineMarius Halden2016-09-19-1/+7
|
* purple: added room listing supportjgeboski2016-09-19-0/+134
|
* Added an interface for the listing of existing chatroomsjgeboski2016-09-19-6/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several protocols can provide a list of existing chatrooms that a user is able join. This is crucial for the usage of several protocols, most notably Purple and Facebook. Plugins wishing to support this extended functionality must implement the new prpl->chat_list() function. This implemented function will in most cases send a remote request for the list of chatrooms. Once the list of chatrooms is obtained, a bee_chat_info_t GSList must be created and assigned to the im_connection->chatlist field. Then a call to the bee_chat_list_finish() is needed to display the list to the user. The chat list is maintained entirely by the plugin, so it is important to ensure all pointers related to the chat list remain valid until the chat list is set to NULL. This list is used internally by bitlbee to calculate indexes, which then allows the user to join a chat with an index, rather than some random identifier. It also important to ensure the list is properly freed whenever it is updated, or when the account is disconnect via the prpl->logout() function. On the user interface side of things, the 'chat list' subcommand was recommissioned. For a user to list the existing chat rooms: chat list <account id> Afterwards a user can join a chatroom in the list with its index. This extends the functionality of the 'chat add' subcommand by adding in support for the exclamation point operator to denote an index. chat add <account id> !<index> [channel]
* hipchat: Add basic support for personal oauth tokensdequis2016-08-30-34/+60
| | | | | | | | | | | | | | | | | Fixes trac ticket 1265 - see the comments on that ticket for reasons on why personal tokens and not the usual oauth flow. TL;DR hipchat doesn't allow third party apps to own oauth client secrets. Instead, those are generated when the "addon" is "installed" which requires a flow that is either impossible or too awkward to use in bitlbee. So, after giving up on the right way and telling the users to manage tokens the ugly way, what's left to do is easy, just a few tweaks in the sasl blob and short-circuit most of the actual oauth stuff. I didn't even bother changing the service struct from google. It's not used. This also updates the gtalk SASL X-OAUTH2 code to use GStrings instead of juggling with malloc/strlen/strcpy, and simplifies a bit the way GStrings are used in the equivalent SASL PLAIN code.
* jabber: handle nulls in jabber_compare_jiddequis2016-08-23-0/+6
| | | | | As far as I can see this isn't remotely exploitable (and if it were it would be just DoS of the child process), but i'm still looking into it
* help: Fix missing spaces due to genhelp parsingShane Synan2016-08-08-2/+2
| | | | | | | Add manual spaces to fix genhelp.py leaving out the space after <emphasis> tags when immediately followed by a new-line. Real fix may lie somewhere in the depths of the NORMALIZE_RE reg-ex.
* help: Briefly mention meaning of 'special'Shane Synan2016-08-08-2/+2
| | | | | | Add a small note to "show_users" explaining what's so special about special. Unfortunately, as it's protocol-specific, all we can really say is that it's protocol-specific.
* twitter: don't hard-fail with mutes or noretweets (for "identica")dequis2016-07-25-0/+10
| | | | | | Fixes trac ticket 1254 Kinda dirty but better than keeping it broken.
* purple: Don't try to init module if it's already initializeddequis2016-07-25-0/+6
| | | | | This only happens if the user has used / forced daemon mode (for example, when debugging with BITLBEE_DEBUG=1)
* configure: improve error message on missing pkg-configdequis2016-07-25-1/+7
|
* Merge branch 'develop'dequis2016-07-08-18/+28
|\
| * debian: add #DEBHELPER# tag to maintscriptsdequis2016-06-14-17/+10
| | | | | | | | | | So that the systemd debhelper stuff can do its job. Also fixes a lintian warning.
| * systemd: Stop murdering the whole control group on stopdequis2016-06-14-0/+1
| | | | | | | | | | | | | | | | With this change, restarting or upgrading bitlbee doesn't kill child processes anymore, keeping the behavior of sysv scripts. This is desirable in public servers, where you probably want to upgrade the master process without disconnecting everyone.
| * purple: add $plugindir/purple to the plugin search pathdequis2016-06-12-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows adding bitlbee-specific purple plugins in a directory controlled by the user who starts bitlbee (as it can be defined in bitlbee.conf, PluginDir). Pidgin and finch have something similar allowing users to place plugins in ~/.purple/plugins: path = g_build_filename(purple_user_dir(), "plugins", NULL); The direct equivalent would be to use our config dir, but i'd rather not put executable modules there.
| * debian: install systemd units and use dh_systemddequis2016-06-12-1/+13
| | | | | | | | | | | | I'm using the debhelper version (9.20131227) to avoid depending on dh_systemd for debian wheezy and ubuntu precise. If it's older than that, it's probably a distro without dh_systemd.
* | 3.4.2-1 as just uploaded.Wilmer van der Gaast2016-06-12-2/+6
|/
* Use correct error when no schemes are supported (#78)Marius Halden2016-06-11-1/+1
| | | | | | | | This will make bitlbee tell the user about the requirement for oauth when the server actually announces support for oauth. If the server does not announce oauth support bitlbee will tell the user it doesn't support any of the schemes provided by the server. These messages were reversed before.
* Use dh_prep rather than deprecated 'dh_clean -k'.Jelmer Vernooij2016-05-30-1/+2
|
* Unicodify my lastname.Jelmer Vernooij2016-05-30-1/+1
|