-*- coding: utf-8 -*- 2010-03-20: Rüdiger Kuhlmann * 0.7.1 2010-03-18: Rüdiger Kuhlmann * fix another valgrind illegal read 2010-03-16: Rüdiger Kuhlmann * invalidate contact group cache when contact group becomes invalid * make sure server's contact is initialized (causes segfault on initial setup) * ignore duplicated status changes with identical message * properly free up gnutls ressources * avoid freeing xml parser inside of its hooks * avoid reconnect on wrong password * gnutls_credentials_set takes a pointer, not a pointer to a pointer (fixes ssl related crashes #59) * update copyright years to 2010 for all files changed there 2010-03-16: Sebastian Rasmussen * i18n: se 2010-03-07: Rüdiger Kuhlmann * add define for OS X resolver * new connection option 'privacylist' to automatically select given list as active * rework i18n regarding privacy lists somewhat * options are per server, not per connection, so rename ConnectionPref{Str,Val} to ServerPref{Str,Val} and update documentation accordingly * i18n: C, de, en * man: en, de * fix svn properties to get correct svn id * update reference in de climmcmds accordingly 2010-03-02: Rüdiger Kuhlmann * apply patch to remove duplicate entries * return matched string from s_parseint_s() and add flags to disallow negative integers, hex digits resp leading hash signs * add 'priv' command to handle xmpp privacy lists 2010-02-21: Rüdiger Kuhlmann * with removal of bogus @IKS_LIB@ libixemel.a wasn't build anymore; make dependacy. related: #60 * compiler warning and C98 fixes * use correct config tool for cross-compiling (upstream bug in GnuTLS) 2010-02-17: Rüdiger Kuhlmann * if ressource conflict happens, set a flag before reconnect to append random digits to the ressource * add savable flag for the same * change default ressource from "iks" to "climm" * open a _listening_ connection when we want to listen * remove bogus @IKS_LIBS@; fixes: #60 2009-11-23: Rüdiger Kuhlmann * add iksemel 1.4 sources, as distributions mostly ship ancient versions * fix compile error if XMPP was disabled * use our libiksemel copy if no suitable version is found * remove BETA markers for XMPP * enable XMPP by default (not: auto; as too many distributions had it disabled) * ... and fix missing dependancy 2009-11-14: Rüdiger Kuhlmann * change xmpp logging (all xml on one line now) * react to incoming roster set iq to better sync contact list 2009-09-03: Rüdiger Kuhlmann * make conn open do the same as conn login would do with the corresponding server 2009-08-20: Rüdiger Kuhlmann * add auth unsub to unsubscribe from other's presence * extend ui to show subscription status for xmpp and get it from roster responses 2009-08-16: Rüdiger Kuhlmann * remove obeysbl option - we necessarily do so in any case now * add UI for S10N in xmpp * add undocumented _iq command to send arbitrary set and get iq requests * Fix sender of acks. Fixes: #54 * prefer pkg-config over obsolete libgnutls-config; fixes: #56 * ignore families 36 and 37 - whatever service they may provide * fix abort() due to connecting to ip 0 * ignore SNAC(1,0x15) and SNAC(1,0x21) 2009-05-25: Rüdiger Kuhlmann * fix compiler warning * remove some now unused close functions * remove types matching modified libiksemel that nobody has (-> go back to void and its type-unsafetyness) * ... and free packet * drop packets to be sent when we're not connected * detect Android * add pkg-config to chroot for karmic 2009-05-19: Sebastian Rasmussen * i18n: se 2009-05-17: Rüdiger Kuhlmann * i18n: en, de. * 0.7. 2009-05-06: Rüdiger Kuhlmann * io: make sure A flag is not set after close as it would cause the dispatch function to be called without anything to dispatch on (fixes: #53) * i18n: automatic lang update 2009-04-11: Rüdiger Kuhlmann * io: fix value of replacement macros for ssl functions * io: avoid code duplication of buffering function * io: merge all kind of dispatcher flags into one enum * io: note connecting function into i/o function table * io: avoid code duplication by handling non-finished connecting centrally * io: set FLAG_OPEN and not only ssl status * io: add functions to handle chained reads/writes/accepts, and define NULL pointer to just use next chain element * io: bring in libresolv if needed for res_query() * io: if server name contains :, interpret following characters as port number to use instead * io: if several servers are listed, display only first in error message * io: add simple RR DNS resolver * compile: check for resolv.h * compile: ... io_dns.c * xmpp: use RR DNS if no server is specified (or is the one in the screen name) * xmpp: several cosmetic changes * xmpp: re-connect automatically * xmpp: fix XMPP over SSL * i18n: update i18n strings 2009-04-08: Rüdiger Kuhlmann * io: add extra check to make sure no segfaults happens for IO after close * xmpp: remove failing assert 2009-04-01: Rüdiger Kuhlmann * io: disable SSL over proxy for openssl because our proxy code would not be called (->helpneeded) * xmpp: advertise support of XEP85 * xmpp: drop [iksemel] tag, we're only using libiksemel now * xmpp: drop type='chat' attribute for acknowledge messages, Google's server doesn't like them there * oscar: rename CAP_ISICQ to CQP_REVCONNREQ * oscar: only send reverse connection request if peer has CAP_REVCONNREQ * oscar: try to send it only once per peer * oscar: print incoming reverse connection request if verbose * oscar: actually _do_ the reverse connection * oscar: fixes to output 2009-03-27: Rüdiger Kuhlmann * compile: fix path to prepare * core: fix md5 code for openssl 2009-03-24: Rüdiger Kuhlmann * compile: fix error where depending on configure option code was effectively not compiled in * io: add #defined away logging code * io: if is_client is 2, a possibly non-anonymous client connection is tried * xmpp: if port is 443 or 5223, immediately start SSL * xmpp: use our own starttls stuff 2009-03-23: Rüdiger Kuhlmann * xmpp: fix recv function return value * xmpp: don't segfault due to logging out twice * xmpp: copy code fixed in libiksemel 1.3 if we use 1.2 * xmpp: allow version 1.2 of libiksemel * xmpp: don't use code from libiksemel 1.3 - work around results of broken base64() function instead * io: join io_openssl_err_t and io_gnutls_err_t to one io_ssl_err_t * io: abstract away to util_io.c which ssl lib is used * io: finish pending writes when connection succeeds * io: check for pending writes by their size, not by a writable flag which might get re-set elsewhere * io: cope with connection not already been connected when starting SSL on it * io: add lots of debug statements (#dfeined out) * io: move select() to single function to make sure we don't think we're connected when we're not 2009-03-21: Rüdiger Kuhlmann * core: if a connection signals to be scheduled unconditionally, then do so immediately after queue run (so not to wait until select() timeout has passed) * io: rc=0 means closed also when writing out buffer * io: wrong length was used for buffer * io: select R when select didn't find anything readable in _both_ cases * io: properly handle GNUTLS_E_AGAIN and GNUTLS_E_INTERRUPTED also in regular read/write * io: clear ->connection when closing * io: select R when handshake succeeded * io: fix pull function return code translation 2009-03-17: Rüdiger Kuhlmann * tcl: move defines for disabled tcl to include file instead of having to duplicate them * tcl: also allow to compile against tcl 8.5 * scripting: move scripting to new i/o scheme * scripting: rename Remote*() to Scripting*() 2009-03-12: Rüdiger Kuhlmann * io: do not use a sequence number - in case conn->ip changes (i.e. socks5) * io: do not check for server or ip - listening connections won't have one * io: merge UtilIOShowDisconnect() into UtilIOShowError() * io: fix an failed assertions * io: don't dequeue events that we didn't enqueue * core: add configure command line to version string * io: if stuff is written before the connection is established, simply append it to the buffer, otherwise data may get lost * oscar: fix retry with internal ip * oscar: if SSL handshake failed, close connection * core: remove unused defines * xmpp: rename jabber_base.h to xmpp_base.h * io: drop conn->close hook as we don't need two ways of closing a connection * core: add IMMLogout() 2009-03-11: Rüdiger Kuhlmann * io: consolidate several ->dispatcher->funcs->f_close calls into a new UtilIOClose() function * io: remove reconnect hook - handled while noting i/o error in protocol specific code * io: remove utilio hook - not used anymore * io: remove outgoing paket pointer - unsused since there now is a generic output buffer * io: move dispatcher structure to private io/io_private.h, provide wrapper functions in util_io.c and use * io: let err function return const * io: remove some unneeded includes * io: remove unused member * io: make function pointer table private as well * io: let all connection request go throu util_io.c again to prepare for socks5 * io: re-add socks5 support 2009-03-10: Rüdiger Kuhlmann * io: also display connection timeout error here * io: do not update IP unless it is neither 0 nor -1 * oscar: add function to send IP update (aka reverse connection request) if a message is to be sent and no direct connection info is availables * oscar: change oscar direct connections to use new i/o scheme as well * oscar: enable use of new i/o scheme for GnuTLS secured direct connections * oscar: comment out / assert(0) code that should not be used anymore * io: make functions more typesafe by taking enums as parameters / use as return values * io: gnutls: remove unused timeout function * io: first shot at copying openssl code to new i/o scheme * io: set ssl_status to fail unless it was ok when closing (like in openssl) * io: remove now unused member * compile: add building with both OpenSSL and GnuTLS (useful for autopackage) * compile: remove building of msn * compile: remove building with libgloox * compile: small fixes to conditional building * io: move funcs pointer to dispatcher structure * io: tiny fixes and debug statements re-added * oscar: remove handling of CANCEL packets (useless) * core: add TCL calls after SSL handshake finished or failed * io: remove all code now in io/io_gnutls and io/io_openssl * core: move md5 functions to src/util_md5 and rename (they're not related to SSL except they use SSL libs for the implementation), as they were done by me and not Roman (who did the actual SSL code)) * core: move remaining two functions from util_ssl.c (remove) to oscar_dc.c and clean up includes 2009-03-09: Rüdiger Kuhlmann * io: add accept (listening connections) to new i/o scheme * io: change accept() function signature to also contain new connection * io: make sure io_tcp.c only changes the CONNECT_SELECT* flags in ->connect * io: fix push/poll function return value * io: rename UtilIOFinishConnect() to UtilIOShowError() and pass error code instead of doing an empty read on its own * io: add some more calls to ->f_close() in error situations * io: hide declarations of functions I want to remove ASAP 2009-03-08: Rüdiger Kuhlmann * io: use new io/io_tcp also for Oscar server connection * io: code simplification in preparation for changes to i/o functions * io: first version of new GnuTLS i/o layer 2009-03-07: Rüdiger Kuhlmann * io: refactor networking code to make them wrappable for s5/ssl/... * xmpp: ... and use for XMPP * io: CONNECT_SELECT_A = flag to make the main loop call the dispatch function (used to signal error codes in callbacks that do not return an error code and to move error code handling to just one place) * io: convenience functions UtilIOShowDisconnect() and UtilIOFinishConnect() to handle/display error codes 2009-03-04: Rüdiger Kuhlmann * core: rename members in Connection: our_seq->oscar_dc_seq/Server.oscar_seq/Server.xmpp_sequence our_session->oscar_our_session * core: remove stat_real_pak_{sent,rcvd} (no definable difference to stat_pak_*) * io: remove UDP io functions (no use anymore) * core: merge three FooCallBackReconn?() to one IMCallBackreconn() * io: use UtilIOSendTCP() instead of sockwrite in oscar_base.c * io: remove reconnect hooks that cannot be called * io: remove one hook call that is never used * io: remove error hooks that cannot be called * io: remove last user of conn->error() by making UtilIOSendTCP cope with EAGAIN, then remove ->error alltogether; side-effect: network buffer full will not break the connection (as long as it is at most one more packet) * io: get rid of conn->c_open similarly, new function IMConnOpen() instead 2009-03-03: Rüdiger Kuhlmann * xmpp: fix possible null pointer dereference in gmail notification * xmpp: remove usage of void * and set defines for hacked libixemel * xmpp: provide transport to work-around hanging-in-recv()-bug in libiksemel (Debian#511808) * compile: move stuff to build-aux subdirectory * core: remove Server->c_open() member and just provide one function to call the correct function in one place 2009-03-02: Rüdiger Kuhlmann * xmpp: iksemel updates, 'eat your own dogfood' style * xmpp: implement XEP12 and XEP92 * xmpp: re-enable XEP115 and XEP91 processing * xmpp: bring back XEP22 and XEP85 message acks and chat states * xmpp: add gloox tag to version id * compile: also relay iksemel 2009-03-01: Rüdiger Kuhlmann * debug: put debug info into per server directory * xmpp: add XMPP implementation based on libiksemel * compile: fix warning if some options are not enabled * compile: --enable-xmpp=iksemel will now create a second binary * xmpp: use (new) member xmpp_parser instead of xmpp_private for more type safety * xmpp: bring back all basic stuff, at least superficially * buildsystem: little update: AmigaOS is now also handled by chroot 2009-02-23 Rüdiger Kuhlmann * clean up man page references, fix broken Id: strings and add comment about EN: line where missing 2009-02-22 Rüdiger Kuhlmann * 0.6.4 2009-02-22 Rüdiger Kuhlmann * ignore all error stanzas until we do something useful with them * fix more typos in english texts * fix some compiler warnings in newer compilers * updates to my release script * update man page descriptions of options changed recently * fix duplicate #define * i18n updates (more or less automatic) 2009-02-18 Rüdiger Kuhlmann * add TalkGadget as known client * request roster upon login - even if we do not do anything with this yet * initialize GMail timestamps properly (caused email not to bo shown) * remember text given with e.g. xmpp status messages + show in 's' + show shortened to current line in 'eg' etc + shorten to one line when status change is shown + hide even status changes with text during login as it is now not lost otherwise * send time requests every 5 minutes to prevent timeouts * preserve status and text between reconnects * save client capability in contact to only show it using 's' instead of in 'eg' and upon login * improve handling of XML namespaces 2009-02-09 Rüdiger Kuhlmann * unfuck ICQ for RU/UK users * actually save dc port into config * move socks 5 settings to connection specific options * add Telepathy as known client * fix failed assertion related to GoogleMail * avoid expanding nick size for own screen names 2008-11-24 Rüdiger Kuhlmann * also execute eg after login command * remove warnings where strings were used in place of format strings 2008-11-18 Rüdiger Kuhlmann * add se web translation from Sebastian Rasmussen * en doc updates by Sebastian Rasmussen * missing interpreter (thanks Sebastian Rasmussen) * update se translation from Sebastian Rasmussen * ... and use i18n-template to mark changed strings * work around other client's errors in sequence numbering (patch from rtc) 2008-08-18 Rüdiger Kuhlmann * 0.6.3 2008-08-18 Rüdiger Kuhlmann * add queue type for gmail mail checks * limit to 25 contacts during contact upload to reduce rate limit exceeds * automatically add auth req flag for newly added contacts * add support for Gmail queries and results * add gmail command to query emails on GoogleMail * do not add a contact twice to a group while loading status file * climm-6.2.1-fix-lost-not-auto-serv.patch - thanks komar * ICQ server doesn't have a problem with duplicated ids as long as the tags differ, so allow that too, as otherwise contacts will be shown as local only that are, in fact, on the server * ignore roster type 27 (unknown) * update translations * make conn close sort of synonymous to conn logoff again * automatic i18n update, update de and en * do not try to interpret parameter as date unless it starts with a digit * show senders of unread email, or of all email returned due to an explicit search * do not compile gmail command unless XMPP is compiled in * ru/uk update * prevent use of uninitialized values when extending contact group array * gloox doesn't compile with -O4, so fall back to -O2 * fix compile error without CONTHIER * use Tag constructor available also in older versions * do not use 0.9.9 findChildren() method 2008-08-16 Rüdiger Kuhlmann * add function to get pref value of a contact assuming it's group would be the specified one * add function to determine another group a contact belongs to * add function to move contact between groups in one transaction * ... and use. * write XML residuals into debug log file instead of scrolling the user to death * add function to move contacts in bulk * add new id for iChat * use bulk move function in contact upload * fix variable re-usage that caused tog(in)vis with several arguments to loop until SIGPIPE from ICQ server * also update the group if it is (locally) already in the group to make it sync to the server if needed * ignore buddy icon requests as we do not support buddy icons * ignore roster type 32 (whatever it is) * when moving a single contact, only change the normal entry, do not touch visibility * increment sub-version * fix var used after free (-> segfault) on contact group remove 2008-08-05 Rüdiger Kuhlmann * fix missing limits.h include for HPUX * rem: try to also update server side list * get file transfer back to work 2008-06-12 Rüdiger Kuhlmann * OSCAR servers swamp us with rate exceeded messages that just update the rate info, so ignore those * allow AIM: keyword to force the following word to be interpreted as AIM screen name without further syntax check * modify parsing with AIM: once more. AIM:"..." skips the syntax check now. 2008-05-22 Rüdiger Kuhlmann * Fix failed assertion 2008-05-08 Rüdiger Kuhlmann * fix direct connections * add - try to also update server side list * properly re-set auth required flag * ignore http://jabber.org/protocol/address tags * fix compiler error, thanks rtc * another wrong port number 2008-04-01 Rüdiger Kuhlmann * another fix to eg et al display width * show contacts awaiting authorization as T resp t instead of S resp s * also get authreq status from returned contact list * another eg output fix * fix one failed assertion * ignore colon to be able to parse licq logs * make it properly detect ingoing/outgoing for licq dump * add separate flag to show SRV_ONLINE packets since the ICQ servers tend to flood one with them * always explicitly specify whether to start/end a roster transaction * use roster tag instead of group id as the former matches what the server has * fix segfault 2008-03-27 Rüdiger Kuhlmann * add functions to add or subtract one contact group from another * new flags for eg etc: multi, shadow, group, mine, long, online; discard sv command (functionally equivalent to s) * fix conn logoff * recognise iChat * fixes for too wide display of 'eg' et al * change Contact{Add,Rem}Alias to return 2 if the added alias caused the nick to change * rework roster change code somewhat 2008-03-16 Rüdiger Kuhlmann * Server vs Connection separation: final four members cleaned up, ready for real seperation * fix compilation without ENABLE_CONT_HIER * fix potentially uninitialized variable * don't set type to zero, as then the connection will not be saved and thus silently discarded * disable file transfer until I have a chance to fix it * Server/Connection split finished 2008-03-10 Rüdiger Kuhlmann * fixes to XMPP file transfer * fix connections loading * Server vs Connection separation: start deciding which member belongs to S vs C; renaming of some members * ... and set oscar_uin sufficiently early * save connection options on Server struct, not in the contact list contact group * save connection options on Server struct, not in the contact list contact group * NEW FILE FORMAT! change creation of scripting and oscar peer2peer connections into global resp. connection option, so that we only need to save real Server structs * fix missing closing bracket (hpux) * Server vs Connection separation: dc port must also be an option, more hiding of unused struct members * Server vs Connection separation: two more, one less connection flag * Server vs Connection separation: two more, the smoke is clearing 2008-03-08 Rüdiger Kuhlmann * fix a mem leak when removing aliases (removing the nick as alias should reset the nick to the screen name, not to nothing) * allow to return back the alias that was actually used (preparation for #38) * Rework rem* commands. Closes: #38 * Server vs Connection split missing in XMPP file transfer code * proper Replaces: and Conflicts: versioning; thanks kosh * Server vs Connection separation: ServerNr?() analogous to ConnectionNr?(); connection are now sorted server connections first. (23 fewer conversions) * Server vs Connection separation: ServerFindScreen?() instead of ConnectionFindScreen?); jabber file transfer sucks. (4 fewer conversions) * Server vs Connection separation: child connections are always childs of server connections (22 fewer conversions) * Server vs Connection separation: fill in ->serv pointer when creating Connection structure and use instead of Connection2Server (50 fewer conversions) * Server vs Connection separation: ServerC() ServerD() (7 fewer conversions) * Server vs Connection separation: link conn to serv instead of Server2Connection() (56 fewer conversions) 2008-03-05 Rüdiger Kuhlmann * update release script to my chroot builds * fix compiler warnings of 64bit platforms * prefer utmpx functions over utmp functions, prefer INT_MAX over MAXINT * Remove ICQ6 compatibility (it has bitrotted to death anyways) * get rid of remaining oldicq_* files * Renaming: tcp.c -> oscar_dc.c, peer_file.c -> oscar_dc_file.c, tabs.c -> util_tabs.c * Connection/Server split 2008-02-26 Rüdiger Kuhlmann * get distribution code name from /etc/lsb-release * restructure event script calls for less malloc() calls * fix logging for messages sent to specific ressources * Throw back protocol violations (HTML where only plain text is allowed) back to offender (i.e. Pidgin) 2008-02-25 Rüdiger Kuhlmann * do not call SnacCliAddcontact() ever until we have something better; closes #32 * consider error presences as offline, but also clear client version in that case * allow extended staus also for online - it doesn't seem to be in the standard, but everyone seems to use it * handle XEP22/85 better * 0.6.2 2008-02-22 Rüdiger Kuhlmann * update doc for historyd command by komar * stop referring to CVS version and refer to SVN instead, closes: #36 * add client id for Psi. Thanks LeSpocky. Closes #35 * apply fix to hopefully make it compile with newest and not only newer libgloox; thanks LeSpocky. Closes #34 2008-02-20 Rüdiger Kuhlmann * also set CO_WANTSBL for all contact groups for auto-update * fix compiler warnings * ignore server added and server deleted packets for now * two more client ids * update type of queue elements for debug display * properly ignore complete known XML subtrees * show extended status texts * keep uploading for auto-update until there has been no local contact at least once * ru/uk translation update from komar 2008-02-18 Rüdiger Kuhlmann * missing -I option for C++ source (i.e. Jabber code) * add last seen and online since time to s command * shorten names of known clients * i18n auto-update * Replace old #: by #_#: for english text * update i18n (numbers) 2008-02-11 Rüdiger Kuhlmann * get rid of those annoying false positives in contact diff by rewriting stuff completely * auto-update to set obeysql flag for all ICQv8 connections * add extra \xfe to make auth req work again 2008-01-27 Rüdiger Kuhlmann * Apply historyd fix and * patch; Closes: #28; Closes: #29 * Only sbl entries of type normal cause a contact to be marked as 'on server', otherwise if only the visible/invisible/ignore entry is already uploaded, the contact itself would never be considered for upload * change hidefrom/intimate flag always also in sbl * fix data dir if binreloc is on; thanks komar 2007-11-24 Rüdiger Kuhlmann * Apply file transfer patch. At least it compiles. Closes #21 * releases are done from tags dir * ignore xml:lang attribute * show cvs date during build 2007-10-30 Rüdiger Kuhlmann * make sure negative connection numbers are never found * change to more generally supported syntax * this fix for undefined UT_NAMESIZE might be more clever 2007-10-20 Rüdiger Kuhlmann * free opt as soon it is not needed anymore * add more w32 ANSI terminal links * fix compilation under w32 * allow climm to compile with libgloox >= 0.9; Closes #20 * add README about TCL usage by jmacloue * try to avoid sending roster packets before login is finished * XMPP: setInitialPririty() also belongs in the #else * and another misapplied change... * fix wrong type in argument * another missing free 2007-10-14 Rüdiger Kuhlmann * 0.6.1 2007-10-12 Rüdiger Kuhlmann * cleanup im_request.c also closing mem leaks * fix mem leak and even wrong code when receiving certain advanced messages * free connection's screen name * if parsing a list of contacts, allow to also consider all other connections * use for msg command only for now * convert 'more' info update to 'new' tlv based request; Closes: #16 * fix some more references to cvs into svn * ignore some more XMMP cruft sent by GoogleTalk * fix man page cross references * fix encoding for SMS * update last update time for two other updates as well 2007-10-10 Rüdiger Kuhlmann * ICQ8 auto messages: + move mime parsing into new function for #8 (get ICQ8 auto messages) + use UNICODE-2-0 for UCS-2BE as ICQ seems to use that * fix mICQ/climm client version 2007-10-06 Rüdiger Kuhlmann * reset prompt when a status change is ack'ed by the ICQ server; Closes: #4 * Don't request chat group change before we haven't send CliReady. Closes #7 * get idle times also from other terminals if possible; Closes #6 * remove some more autogenerated file from SVN * fix several mem leaks found by komar * first shot for getting away etc messages from ICQ8 * get .i18n files in line for SVN and (semi-)auto update 2007-10-03 Rüdiger Kuhlmann * rename Connection->open to c_open to avoid name clash with newer libc versions that define open as macro * Set umask to 077 at startup. Fixes #5 * fix possible memory corruption * Fixing login (#7), part I: force reqlists after reqbos is granted * icqprx: be less noisy and allow to send all client stuff to server at once * modify login structure. Closes #7 * leftover renames mICQ->climm CVS->SVN 2007-09-07 Rüdiger Kuhlmann * rename to climm - cli-based multi-messenger * 0.6