Commit Graph
100 Commits
Author SHA1 Message Date
Florent Le Coz c20bdd6879 Add utils::revstr 2014-11-12 08:13:02 +01:00
Florent Le Coz d8da7984b2 Implement PING, user to user only (XMPP and IRC side, using CTCP PING)
ref #2757
2014-11-12 08:12:43 +01:00
Florent Le Coz e1d69806ed Rename iq_responder_callback_t to irc_… and add the equivalent to wait for iqs 2014-11-12 06:17:25 +01:00
Florent Le Coz dccd8039ad Merge branch 'v1' 2014-08-29 03:51:51 +02:00
Florent Le Coz 3d254281af [spec] Update the URL, and do not hardcode the version in it 2014-08-29 03:50:24 +02:00
Florent Le Coz 546f3536ee Escape a # in biboumi.1.md 2014-08-18 02:23:15 +02:00
Florent Le Coz 940c037a17 Wrap a paragraph from INSTALL file to 79 chars 2014-08-18 02:17:32 +02:00
Florent Le Coz 017f69a03b Merge branch 'v1'
Conflicts:
	CMakeLists.txt
2014-08-18 02:08:30 +02:00
Florent Le Coz f4c08242fb Update spec file to 1.1 2014-08-18 02:07:25 +02:00
Florent Le Coz 41e8a3ba9b Send a proper error on IRC message 438 (nickname change too fast)
fix #2576
2014-08-08 00:47:05 +02:00
Florent Le Coz e3ea0d62c7 Use generic send_presence_error() instead of almost identical specializations 2014-08-08 00:46:27 +02:00
Florent Le Coz 7d99ba8dd9 Run the service with the nobody user 2014-07-31 15:27:11 +02:00
Florent Le Coz 8030e5096e Do not create a useless biboumi unix user with the RPM package 2014-07-31 15:26:47 +02:00
Florent Le Coz b39ed80dbb Add two missing type="error" in some presence errors 2014-07-21 22:05:15 +02:00
Florent Le Coz cf32446d0a Release version 1.1 2014-07-16 00:38:38 +02:00
Florent Le Coz 609722b4e7 Merge branch 'v1'
Conflicts:
	src/network/socket_handler.hpp
2014-07-15 15:56:37 +02:00
Florent Le Coz 6a4e17cb0a Fix IPv6 support (sockaddr size)
Since struct sockaddr is too small to contain an IPv6, we use struct
sockaddr_in6 instead, and we cast it where needed
2014-07-15 15:50:35 +02:00
Florent Le Coz b94247813b Provide WITHOUT_BOTAN and WITHOUT_SYSTEMD cmake flags
Use them to build without linking to them, even if they are on your system
2014-07-15 15:44:19 +02:00
Florent Le Coz 11a31db2d5 Send the reason of the connection close to the user 2014-07-15 15:39:25 +02:00
Florent Le Coz 4582f10797 Bump master version to 2.0~dev 2014-07-12 14:30:27 +02:00
Florent Le Coz 812f99ba70 Merge branch 'v1' 2014-07-12 14:29:59 +02:00
Florent Le Coz b578aebc03 Release version 1.0 2014-07-12 14:17:23 +02:00
Florent Le Coz fa74493c40 Add a CHANGELOG file describing a general view of 1.0 features 2014-07-12 14:17:02 +02:00
Florent Le Coz 8c34576ea0 Move some members of TCPSocketHandler into the SocketHandler class 2014-07-03 03:31:50 +02:00
Florent Le Coz 04d999168a Add a level of inheritance above SocketHandler
SocketHandler has been renamed to TCPSocketHandler
SocketHandler is now a simple interface with a few methods, used only by
Poller.

This way we can inherite from the new SocketHandler class, to handle other
types of sockets, and still make them manageable by the poller without any
change in the Poller class.
2014-07-02 03:01:09 +02:00
Florent Le Coz b0ae8c66e3 Also remove that from the spec file 2014-06-30 02:45:15 +02:00
Florent Le Coz d64626648e Remove biboumi_logdir from the spec file 2014-06-30 01:41:04 +02:00
Florent Le Coz eb76171aa0 Run the test_suite in the spec %check section 2014-06-30 01:40:26 +02:00
Florent Le Coz cec9fed1f4 Fix a typo 2014-06-30 01:33:45 +02:00
Florent Le Coz 735ae278f3 Enable assert() even in release mode, in the test_suite 2014-06-30 01:27:41 +02:00
Florent Le Coz 7fcc77f52e Provide a spec file to build a Fedora RPM 2014-06-30 01:11:11 +02:00
Florent Le Coz 01c1ea14f7 Use systemd-daemon logging prefix if available 2014-06-30 01:04:03 +02:00
Florent Le Coz e01e34db22 Provide an example unit file for systemd 2014-06-30 01:04:02 +02:00
Florent Le Coz 5a43ac9a0d Provide an example configuration file 2014-06-30 01:04:02 +02:00
Florent Le Coz 70ebbae15e Regularly send a notification for the systemd watchdog 2014-06-30 01:03:07 +02:00
Florent Le Coz a165e59240 Fix some cmake issues
fix #2551
2014-06-30 01:02:59 +02:00
Florent Le Coz 48ed47207c Add missing <string> include in timed_events.hpp
fix #2552
2014-06-28 18:38:50 +02:00
Florent Le Coz 6f181acc65 Fix ad-hoc “disconnect user” command. Do not add the <error/> on success 2014-06-25 15:36:06 +02:00
Florent Le Coz 524f7925c4 Add some details in the INSTALL file 2014-06-25 01:02:03 +02:00
Florent Le Coz 2cf64e10b5 Provide a make dist target 2014-06-24 17:48:31 +02:00
Florent Le Coz 39175e1ad6 Little documentation update 2014-06-24 13:56:44 +02:00
Florent Le Coz a2d55e4bea Rename cmake target test->test_suite for cmake 3.0
See CMP0037
2014-06-23 01:00:21 +02:00
Florent Le Coz 7b785cf552 Delete the timeout event using the correct socket number, instead of -1
Was causing the event to not be removed in case of connection failure, which
lead to a dangling timed event named “timeout-1”, which was called later, by
some other SocketHandler for which even the socket creation failed (so, its
socket is -1), with a pointer to the previous SocketHandler which has
disappeared for a long time: segmentation fault etc.
2014-06-22 23:56:51 +02:00
Florent Le Coz 545ab11ff3 Support version request to IRC users 2014-06-20 11:51:49 +02:00
Florent Le Coz b747f2825c Respond to IQ version on the gateway, a server or a chan with biboumi version
ref #2455
2014-06-20 10:45:42 +02:00
Florent Le Coz aaf7177413 Write the software version, including the git hash, in config.h using cmake 2014-06-20 10:45:38 +02:00
Florent Le Coz 2117838cf9 Return a proper iq when the IRC server responds to our kick
A result or an error, depending on the type of message
2014-06-19 22:22:29 +02:00
Florent Le Coz 26ffc8fe12 Implement a way to add callbacks, waiting for an IRC event to return an iq 2014-06-19 22:21:49 +02:00
Florent Le Coz a705b9af7b Remove a duplicate “connection closed” message 2014-06-19 01:10:13 +02:00
Florent Le Coz 77fe8b89a3 Make the Botan rng, credential_manager etc be static
This actually makes the session_manager be useful, and saves a few octets of
memory for the other ones
2014-06-19 01:04:40 +02:00
Florent Le Coz 386ac4186a Document the new way to send private messages 2014-06-18 22:55:18 +02:00
Florent Le Coz 04de62a4e0 Messages to room participants are forwarded to the IRC user
For example, both JID #chan%server@biboumi/Toto and toto!server@biboumi are
equivalent, except that if you send a message to the first one, subsequent
messages coming from the user toto will come from that same JID. This is
done to be consistent for the XMPP user, and respond from the same JID than
the 'to' of the first message.

fix #2468
2014-06-18 22:42:58 +02:00
Florent Le Coz 56eb5df28a Mini comment fix 2014-06-18 18:46:41 +02:00
Florent Le Coz 9757c2c695 includes from cmake BINARY_DIR should be included before considering SOURCE_DIR 2014-06-18 11:45:09 +02:00
Florent Le Coz 6cbaa2c669 Document the encryption, and a few documentation issues are fixed 2014-06-13 01:46:12 +02:00
Florent Le Coz 7c1a38999c Rewrite the whole IID usage
IRC users and channels are now distinguished by the separator used in the
IID (% or !).

ref #2468
2014-06-11 02:37:11 +02:00
Florent Le Coz 6210a9d50b Add an <error/> element when the provided form is wrong, in two ad-hoc commands 2014-06-11 01:00:02 +02:00
Florent Le Coz 5d1a567ea5 Handle the 'cancel' ad-hoc action, and return an error for unsupported actions
ref #2521
2014-06-11 00:49:42 +02:00
Florent Le Coz 3ea029dd98 Remove inactive ad-hoc sessions after a given time
ref #2521
2014-06-11 00:49:39 +02:00
Florent Le Coz 1604320a23 Make the XMPP component port configurable
fix #2541
2014-06-08 23:30:17 +02:00
Florent Le Coz 8b30e312bb Add a TimedEvent to cancel the connection to a server after 5 seconds 2014-06-08 15:13:08 +02:00
Florent Le Coz 349dc06e91 Silence warnings coming from Botan headers 2014-06-08 13:03:05 +02:00
Florent Le Coz 800d7df9aa Properly search for libbotan even in a botan-1.11 subdirectory 2014-06-08 12:59:50 +02:00
Florent Le Coz 2d5e2fdcf6 Give two supported compilers, as examples 2014-06-08 05:15:17 +02:00
Florent Le Coz 198b0fa6da Document the new optional libbotan dependency 2014-06-08 05:14:55 +02:00
Florent Le Coz 23f32ba39e Implement TLS support using Botan
For now, it tries two TLS ports and then connects to the non-tls port.  In
the future we would like the user to be able to configure that.

fix #2435
2014-06-08 05:07:54 +02:00
Florent Le Coz fa07130991 Little doc fix 2014-06-06 02:15:35 +02:00
Florent Le Coz be6265544a Make the destructor of the SocketHandler class protected non-virtual 2014-06-05 02:24:03 +02:00
Florent Le Coz 1706a92f0c Update the documentation 2014-06-03 02:11:29 +02:00
Florent Le Coz c530fb9156 Do not send an item-not-found presence from an invalid JID 2014-05-31 17:24:18 +02:00
Florent Le Coz 4a9beff74d Remove some unused function parameters names 2014-05-31 17:10:22 +02:00
Florent Le Coz a593d806dd Document the admin configuration option 2014-05-31 17:08:49 +02:00
Florent Le Coz 4e27298b3a Add an ad-hoc command to disconnect some users 2014-05-31 17:06:36 +02:00
Florent Le Coz f5b61f0feb Add the libuuid dependency to the INSTALL file 2014-05-30 16:16:18 +02:00
Florent Le Coz c2311b2893 Send (every 240s) a PING command to all connected irc servers
fix #2452
2014-05-30 16:08:23 +02:00
Florent Le Coz 5c9d2c23ba TimedEventsManager is now a singleton 2014-05-30 15:51:43 +02:00
Florent Le Coz 5cca518c2d Timed events can have a name, and can be canceled based on their name 2014-05-30 15:42:01 +02:00
Florent Le Coz a63faf6fa9 Use libuuid to generate unique IDs for iq and adhoc sessions 2014-05-30 13:39:00 +02:00
Florent Le Coz 8eb9e535a3 Use pkg-config first to find libraries 2014-05-30 13:15:13 +02:00
Florent Le Coz 86c6f36fae Add missing files (for adhoc command support) 2014-05-30 04:03:36 +02:00
Florent Le Coz d33a3b7d35 XmlNode::get_children, to get a list of matching children instead of the first 2014-05-30 04:00:29 +02:00
Florent Le Coz 6bde78b574 XmlNode’s copy constructor now recursively copies the children nodes as well 2014-05-30 04:00:23 +02:00
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