Commit Graph
100 Commits
Author SHA1 Message Date
Florent Le Coz eb9a201870 Implement the support for adhoc commands
We have two basic example commands. But it’s not entirely finished because
there are some error checks that we don’t do.

ref #2521
2014-05-30 03:58:17 +02:00
Florent Le Coz 1c93afc9a7 Change the way the namespaces are handled in the XmlNode class 2014-05-28 17:40:45 +02:00
Florent Le Coz a350caf6e0 Move the logging + config test on first position 2014-05-28 17:40:45 +02:00
Florent Le Coz d9d30dd782 Use a timed event to force the exit 2 seconds after an exit signal is received
fix #2469
2014-05-28 17:31:28 +02:00
Florent Le Coz 5999e6e0c3 Introduce the timed events 2014-05-28 17:31:28 +02:00
Florent Le Coz e033b6a3ae On connection in-progress, save the whole addrinfo struct, not just ai_addr 2014-05-28 02:03:36 +02:00
Florent Le Coz 6c2d03da4e Send an error presence when the connection to the IRC server fails 2014-05-28 01:27:41 +02:00
Florent Le Coz 7b31bea75b Only close/unmanage the socket if we are connected/connecting
Since the socket is now only created and managed whenever the connection is
being established, we only close the socket and if it was created (we use -1
to denote the fact that is not yet created, or has been closed) and we only
unmanage the socket if it is effectively managed.

fix #2529
2014-05-27 23:47:45 +02:00
Florent Le Coz 34739728f9 Fix a by-one error in the CHANTYPES parsing 2014-05-27 02:35:39 +02:00
Florent Le Coz aea923bcb9 Use the CHANTYPES values to differentiate channel or user notices
It also happens to fix #2517 because this used to create buggy channels
named "auth" and stuf like that.
2014-05-27 02:30:11 +02:00
Florent Le Coz 796af0531e Add support for CHANTYPES isupport element, to know the prefixes of channels 2014-05-27 02:17:58 +02:00
Florent Le Coz 23e8e32f84 Support IPv6 connections
fix #2522
2014-05-27 01:06:45 +02:00
Florent Le Coz 5507adbe94 SocketHandlers own the poller and add themself into it only when the socket is created
We want to call socket() with the parameters provided by getaddrinfo, so we
can’t addd the fd into the poller immediately. We need to wait the
connection attempt, and then the SocketHandler can call add_socket_handler
itself, if the connection succeeds, or is in progress.
2014-05-27 01:01:44 +02:00
Florent Le Coz 6b0ffb5fc2 If both write and read events are available on a socket, only do the read
Because the read handler may discover that the connection has been closed,
and then remove the socket from the poller. It that case it is no longer
valid to try to call the write handler (which may try to reconnect, but
since that socket is no longer managed, this is not OK).
2014-05-26 22:27:43 +02:00
Florent Le Coz 7fb0b671bb Also do that cut of message on \n for private messages, and handle /me 2014-05-25 17:50:03 +02:00
Florent Le Coz 01cd6eb516 Split the messages on \n when sending them back to the XMPP user 2014-05-25 17:49:58 +02:00
Florent Le Coz df765faab9 Only call get_last_child() if the node has children
Explain that the behaviour is otherwise undefined, in the comment.
2014-05-15 00:47:20 +02:00
Florent Le Coz 7c7da2cedb "Chat message" is not the same as "any kind of message" 2014-05-15 00:32:31 +02:00
Florent Le Coz bafde1af9f Stanza:get_name() only returns the name of the tag, without the namespace 2014-05-15 00:32:31 +02:00
Florent Le Coz 12c8b1ae0b Disconnect the user from all its IRC servers whenever he returns an error
fix #2524
2014-05-15 00:32:31 +02:00
Florent Le Coz 712b7bdfdf Correctly handle the usage of ! as a IRC user mode indicator
Since “!” is also the separator between the nickname and the user hostname,
having “!” as the user mode (e.g. !nick!~some@host.bla) would cause the nick
to be empty. Now we skip it if it is a valid user mode indicator.
2014-05-14 21:48:38 +02:00
Florent Le Coz 634e7cf125 mini reorder 2014-05-11 03:37:07 +02:00
Florent Le Coz 23db31cff1 [cmake] Do not print useless messages when an optional lib is not found 2014-05-11 03:36:42 +02:00
Florent Le Coz 579ca4bdb6 Forward iq version results to IRC 2014-05-07 02:02:47 +02:00
Florent Le Coz 04fe15a1e7 Correctly do the error handling when we receive an iq 2014-05-06 23:07:30 +02:00
Florent Le Coz 5ec05cb0ed Forward CTCP version request to XMPP 2014-05-06 22:50:37 +02:00
Florent Le Coz f35db5ceba Implement next_id() to 2014-05-06 22:39:09 +02:00
Florent Le Coz 18b27793de Use epoll on linux by default, poll otherwise 2014-04-30 02:30:19 +02:00
Florent Le Coz dd552b1e34 Link with systemd instead of systemd-daemon 2014-04-30 02:03:24 +02:00
Florent Le Coz 28d244631d Add missing std::string_literals 2014-04-29 23:51:32 +02:00
Florent Le Coz 65f219594d Fix a little indentation 2014-04-29 21:56:05 +02:00
Florent Le Coz f6e6b8905b Use C++14 string_literals 2014-04-29 21:50:13 +02:00
Florent Le Coz 594bac1e84 Remove binary.hpp and use the c++14 feature 0b 2014-04-28 19:44:09 +02:00
Florent Le Coz c6059e5a21 Upgrade to C++14 2014-04-28 18:46:25 +02:00
Florent Le Coz ae41c5dee4 Include the xhtml-im element in private messages too 2014-04-25 00:53:59 +02:00
Florent Le Coz 4e61b0d57e The author name from messages from the server are now nicely formated 2014-04-25 00:53:08 +02:00
Florent Le Coz 77a84fd2d9 NOTICE from channels are displayed in the channel, with a green "[notice]" 2014-04-25 00:35:57 +02:00
Florent Le Coz 6ebb586b6c Respond to a disco query the gateway jid itself 2014-04-24 19:36:14 +02:00
Florent Le Coz 98ef49e787 Fix the kick by correctly using the from and to attributes 2014-04-22 20:13:02 +02:00
Florent Le Coz 0b4f761e31 Fix the CMakeLists.txt to correctly have -Ibuild/src/ 2014-04-22 14:30:23 +02:00
Florent Le Coz bd8a5a505e The logging test is less ambiguous 2014-04-21 23:03:58 +02:00
Florent Le Coz e847084b00 Improve the test on jidprep 2014-04-21 22:59:16 +02:00
Florent Le Coz 4b5d2d11c5 test.cfg file is now created by the test suite 2014-04-21 22:56:22 +02:00
Florent Le Coz 848b50185f Remove unused action_prefix_len variable 2014-04-21 22:47:20 +02:00
Florent Le Coz b37fc70fb4 Little updates to the README and INSTALL files 2014-04-18 17:56:06 +02:00
Florent Le Coz 114007f10d Actually do the last commit, but completely this time 2014-04-18 10:46:25 +02:00
Florent Le Coz bd7936bdfe No more missing text when converting IRC colors to xhtml-im
fix #2496
2014-04-17 20:37:46 +02:00
Florent Le Coz 9683f0a0b2 s/optionnal/optional/ 2014-04-15 07:06:59 +02:00
Florent Le Coz 3468924a62 Document the systemd-daemon optional dependency 2014-04-15 07:06:00 +02:00
Florent Le Coz 9d8166f10d Add support for systemd-daemon 2014-04-15 07:02:09 +02:00
Florent Le Coz 58a2c00d44 Call on_connection_failed() when the connection fails to be established 2014-04-15 06:47:38 +02:00
Florent Le Coz f7b75d7eb4 Remove a useless debug log line 2014-04-15 06:42:00 +02:00
Florent Le Coz 996a827a52 Document the new dummy channel, and how biboumi creates and closes connections 2014-04-15 05:42:12 +02:00
Florent Le Coz fbcce3c112 Fix a wrong description of how addressing works in biboumi 2014-04-15 05:41:17 +02:00
Florent Le Coz 3bc6f18347 Add an explanatory topic on the dummy channel 2014-04-15 05:22:32 +02:00
Florent Le Coz 14b6793d7f Joining the dummy channel connects to the irc server 2014-04-15 05:11:36 +02:00
Florent Le Coz 28065d3d52 Do not disconnect from the IRC server if the dummy channel is joined 2014-04-15 05:08:07 +02:00
Florent Le Coz 5739d418e2 Better way to leave the dummy room 2014-04-15 04:56:50 +02:00
Florent Le Coz 0d9c1ba313 Merge branch 'master' into dummy_chan 2014-04-15 04:45:59 +02:00
Florent Le Coz 804b686f1c Fix the leave-muc presence stanza 2014-04-15 04:45:20 +02:00
Florent Le Coz cfca16bbec Ability to leave the dummy channel 2014-04-15 04:44:51 +02:00
Florent Le Coz 576fb3d132 Correctly use the dummy channel whenever we interract with an empty-string chan 2014-04-15 04:44:09 +02:00
Florent Le Coz 7f74f62e56 Merge branch 'master' into dummy_chan 2014-04-15 04:11:27 +02:00
Florent Le Coz c64bb0bde9 Improved doc rule in the cmake thing 2014-04-13 20:28:42 +02:00
Florent Le Coz 8246849fdf Do not link with pthread 2014-04-13 19:16:18 +02:00
Florent Le Coz 020325dbb0 [WIP] DummyIrcChannel 2014-04-13 15:37:56 +02:00
Florent Le Coz d2a7fd129a Do not print an error message from expat if the error was "parsing finished" 2014-04-11 23:34:42 +02:00
Florent Le Coz f00f5c3ffb Do not use exceptions for missing tags, improvement in code simplicity 2014-04-11 23:06:13 +02:00
Florent Le Coz a20c60a0d8 Messages coming from the IRC server are of type "chat" 2014-04-10 20:11:17 +02:00
Florent Le Coz 65601a96d2 The default type for message stanza is "normal" 2014-03-28 01:48:08 +01:00
Florent Le Coz e971f64f92 Catch all exception produced by a received message (irc or xmpp) 2014-03-28 01:47:48 +01:00
Florent Le Coz 44b72b743e The absence of a from attribute is an unrecoverable error, just ignore it 2014-03-28 01:47:05 +01:00
Florent Le Coz 3c5f823621 Send a stanza error when receiving bad stanzas
Whether this is a bad-request (missing XML attributes or elements) or an
internal server error.
2014-03-28 01:16:05 +01:00
Florent Le Coz 2ffbfb71dd Idem 2014-03-24 21:29:46 +01:00
Florent Le Coz 1208ba2524 Use the correct type of error 2014-03-24 21:29:12 +01:00
Florent Le Coz e47b164a43 Send an error presence whenever a user tries to join an invalid room 2014-03-24 21:08:09 +01:00
Florent Le Coz cdc3183d9e Introduce two new bool, to know if the xmpp component should try to reconnect
If we never succeeded our connection+auth process, means we should probably
not attempt any-more, and just give up.  If we ever did, this means a
reconnect is a good idea
2014-03-24 20:39:59 +01:00
Florent Le Coz ffc820e234 Reconnected immediately to the XMPP whenever it closes the connection 2014-03-24 20:31:02 +01:00
Florent Le Coz e196d2f1f4 Do not send data if we are connected, send it only once we actually are 2014-03-24 18:37:31 +01:00
Florent Le Coz 3b1bf740a3 Fix the CMakeLists.txt regarding ronn 2014-03-14 01:34:35 +01:00
Florent Le Coz 930696e48a Remove useless cast 2014-03-10 00:12:42 +01:00
Florent Le Coz 601159e8e2 Fix a bus error by not going above an array boundary 2014-03-03 21:02:55 +01:00
Florent Le Coz db6ea52b44 Provide details about what error the XML parser encountered 2014-02-28 01:18:21 +01:00
Florent Le Coz 86d4347af8 Avoid unnecessary copies by recv()ing data directly into the expat buffer 2014-02-28 01:14:38 +01:00
Florent Le Coz df774d45a9 Use scatter/gather io with sendmsg to avoid concataning strings all the time 2014-02-27 23:43:05 +01:00
Florent Le Coz e2b9e80244 Fix a wrong comment 2014-02-26 01:15:44 +01:00
Florent Le Coz 76b131e13a Do not try to connect to an irc server if we are connected or connecting 2014-02-25 02:10:45 +01:00
Florent Le Coz f6029d5bcf Add missing stdexcept includes 2014-02-24 21:03:51 +01:00
Florent Le Coz 5f82c93754 Use store() instead of operator=() for std::atomic<bool> objects 2014-02-24 21:02:21 +01:00
Florent Le Coz 541af5236e Consider that the connect() succeded if errno EISCONN
Apparently on some systems, subsquent connect() calls may fail with EISCONN
error, to indicate that the connection succeded in the background, instead
of returning 0.
2014-02-22 23:36:03 +01:00
Florent Le Coz 730cc6e1bd Save the addrinfo values for reuse on subsequent connect() call 2014-02-22 23:35:14 +01:00
Florent Le Coz 99aba5667d Connection to servers does not block the process anymore 2014-02-22 21:42:24 +01:00
Florent Le Coz 61ca40fa0e Delete empty bridges objects 2014-02-20 02:31:16 +01:00
Florent Le Coz 190c4ff176 QUIT the irc server when the last channel is left 2014-02-20 02:19:50 +01:00
Florent Le Coz e390b79a12 Do not receive SIGPIPE when send() is called on a closed socket
The error is handled using the return value
2014-02-20 00:00:05 +01:00
Florent Le Coz 16be9af3fc Send unavailable presence to all muc when the IRC server closes the connection 2014-02-19 23:59:43 +01:00
Florent Le Coz aeae88dd32 Move CMake’s config.h(.cmake) files into src/ 2014-02-19 02:49:22 +01:00
Florent Le Coz 6804f31546 Set sigaction.sa_flags to 0 2014-02-19 02:38:58 +01:00
Florent Le Coz 112197f6ab Fix the joined flag on channels, avoid sending the topic twice when joining 2014-02-19 02:38:22 +01:00
Florent Le Coz 8fd2746696 Reload the conf on SIGUSR1/2 2014-02-19 02:24:00 +01:00