Commit Graph
240 Commits
Author SHA1 Message Date
Florent Le Coz 60d340be19 TIL std::string::end and std::string::begin… 2015-09-23 19:11:48 +02:00
Florent Le Coz 2380a84ba5 Make sure the user-provided username does not contain spaces 2015-09-23 19:08:18 +02:00
Florent Le Coz f904d57940 Provide username and realname IRC server options
Used in the USER command when connecting to the IRC server, instead of the
first nick.

fix #3028
2015-09-23 18:47:29 +02:00
Florent Le Coz f6d9b7d7a1 Fix two small warnings 2015-09-22 04:01:09 +02:00
Florent Le Coz ceec989077 Add a field (in the configure form) to specifiy an after-connect IRC command 2015-09-21 18:56:37 +02:00
Florent Le Coz 890cfe9099 Provide Ports and TLS Ports IRC-server ad-hoc options
This let any user choose which ports to use when connecting to the IRC
server. This also lets the user choose whether or not to force TLS usage (by
setting no non-TLS port).

fix #2731
2015-09-21 04:27:23 +02:00
Florent Le Coz 1691cf8f64 Introduce the configure ad-hoc command on irc servers
Provides two options for now, and they have no effect yet
2015-09-18 22:09:26 +02:00
Florent Le Coz 45e8fe56a6 Add an AdhocCommandsHandler to store commands specific to IRC servers 2015-09-18 22:09:26 +02:00
Florent Le Coz f3b3d937ae Use unique_ptr to store the XmlNode’s children
Also fix some constness things
2015-09-01 14:47:57 +02:00
Florent Le Coz e8f22efe34 XmlNodes are now always closed
Remove the close() method and closed attribute. Remove all the calls to
close().  (Save one bool per XmlNode, yay, and save a few ifs and some
useless function calls. At best it should be unnoticeably faster and lighter
and save a few keystrokes in the future)
2015-09-01 04:42:12 +02:00
Florent Le Coz 7f7c429ae4 Do not send the admin-only adhoc commands to non-admin users
They were not able to execute them anyway, so this was just a little
usability issue.
2015-06-09 14:52:46 +02:00
Florent Le Coz 8da03f9830 Remove a useless duplicate method 2015-06-09 14:51:55 +02:00
Florent Le Coz ad5bd99618 Properly send error response on presence stanzas 2015-05-11 05:03:09 +02:00
Florent Le Coz 5475d16b57 Return a stanza error whenever the IRCClient for a given server does not exist
Instead of ignoring the stanza, we send back an error of type
remote-server-not-found each time it's possible.

Also avoid having to do if (!irc) return; everytime.

fix #3045
2015-05-11 04:47:31 +02:00
Florent Le Coz 0a6b673b14 Support raw IRC messages
Messages received on an IRC server JID are forwarded as raw IRC messages.

fix #2486
2015-05-07 17:01:17 +02:00
Florent Le Coz d31619714b Move non-specific adhoc commands into louloulibs
Only keep some biboumi-specific commands into biboumi_adhoc_commands.hpp/cpp
2015-03-02 11:04:55 +01:00
Florent Le Coz f0e07beacb Forgot to remove some XMPP files that are now in louloulibs instead 2015-03-02 10:21:01 +01:00
Florent Le Coz d600a2843f Remove all the libs that are now in louloulibs 2015-02-27 12:26:48 +01:00
Florent Le Coz c01befb054 Implement room discovery using the LIST irc command
ref #2472
2015-02-26 05:02:08 +01:00
Florent Le Coz 6a2240f593 Properly sanitize everything in the XML we send to the XMPP server
in this order:
- Make sure it is utf-8 encoded
- Remove all chars that are invalid in XML
- Escape all XML special chars (&'"<>)
2015-02-26 04:58:07 +01:00
Florent Le Coz 53e6b1da69 Fix the systemd-conditional code
By using SYSTEMD_FOUND instead of SYSTEMDDAEMON_FOUND, where I forgot to
rename it…
2015-02-26 02:56:46 +01:00
Florent Le Coz 5db0637810 Remove an unused parameter 2015-02-26 02:30:23 +01:00
Florent Le Coz 7115aa3b7f Add a reload add-hoc command 2015-02-24 16:28:30 +01:00
Florent Le Coz b86547dc1e Implement async DNS resolution using c-ares
fix #2533
2015-02-23 13:56:08 +01:00
Florent Le Coz a50ca30e76 Use a timer to try reconnecting to the XMPP server only each 2 seconds
When the connection is lost, immediately try to reconnect, then try to
reconnect every 2 seconds.  This is much better than the previous “Try to
re-connect as fast as possible”.
2015-02-21 06:45:11 +01:00
Florent Le Coz 3032dc3580 Remove the XmppComponent::last_auth bool that was never used anywhere 2015-02-21 05:49:57 +01:00
Florent Le Coz 2c5d3d89b0 Change IRC modes when receiving an affiliation/role change request
fix #2946
2015-01-24 17:33:04 +01:00
Florent Le Coz f9e259c266 Fix a little bit of style stuf from previous commit 2015-01-14 13:36:42 +01:00
Emmanuel Gil Peyrot e4fcbd3030 Add support for password-protected IRC rooms. 2015-01-14 12:38:46 +01:00
Florent Le Coz f4fb961df5 And another trivial -Weffc++ warning 2014-12-17 13:55:41 +01:00
Florent Le Coz 720e31a511 Fix a few issues reported by static analyzers 2014-12-17 13:37:57 +01:00
Florent Le Coz 0ab5ecea13 Cache the result of jidprep()
Avoid doing repetitive calculations, if we call jidprep() on the same JID multiple times
2014-11-24 03:38:10 +01:00
Florent Le Coz 12eeb4d11e Implement the PING on a server or the gateway itself
fix #2575
2014-11-12 08:14:56 +01:00
Florent Le Coz 80789c2e92 send_iq_result can have a "from" with just the domain name 2014-11-12 08:13:09 +01:00
Florent Le Coz 4a8bcd3cbd Implement PING to in-room participant
ref #2575
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 e3ea0d62c7 Use generic send_presence_error() instead of almost identical specializations 2014-08-08 00:46:27 +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 11a31db2d5 Send the reason of the connection close to the user 2014-07-15 15:39:25 +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 70ebbae15e Regularly send a notification for the systemd watchdog 2014-06-30 01:03:07 +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 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 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 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 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