Commit Graph

522 Commits

Author SHA1 Message Date
Badlop 5a35405cd5 Update copyright dates to 2015 (EJAB-1733) 2015-01-08 17:34:43 +01:00
Holger Weiss a78a0a65fe Let CSI code add timestamp at later point in time
As a small optimization, make sure we won't add timestamps to presence
stanzas which end up being thrown away by the CSI code.
2014-12-07 16:27:51 +01:00
Holger Weiss ba8f38e2eb XEP-0198: Add timestamp to resent stanzas
When an unacknowledged stanza is resent from the Stream Management
queue, add a timestamp so that the receiving client can display the time
at which the stanza was originally sent.
2014-12-07 16:12:06 +01:00
Holger Weiss 9899935e42 Improve interface for adding timestamps
Provide a simpler interface for adding <delay/> and <x/> timestamps to
stanzas.  This also makes sure that only one <delay/> tag and one <x/>
tag is added to a given stanza.
2014-12-07 15:55:18 +01:00
Holger Weiss 2cb16bc509 Remove unused field from c2s #state 2014-11-26 00:15:19 +01:00
Evgeny Khramtsov e97e56d776 Merge pull request #363 from weiss/drop-pep-errors
Don't route PEP error messages to clients
2014-11-25 14:20:11 +03:00
Holger Weiss 16311b73c8 Add new hook: c2s_filter_packet_in
The c2s_filter_packet_in hook can be used to modify or drop incoming
packets before they are transmitted to the client.
2014-11-24 20:55:18 +01:00
Holger Weiss c566b1d01e Respect privacy lists for incoming PEP messages 2014-11-18 01:25:12 +01:00
Evgeny Khramtsov d5ecd32cec Merge pull request #345 from weiss/last-pep-items
Fix sending of last published PEP items to newly-available resources
2014-11-14 21:27:24 +03:00
Holger Weiss 2446b66016 Use correct type for initial c2s #state.user value 2014-11-14 15:32:48 +01:00
Holger Weiss 830fdccd21 Don't broadcast last published PEP items
When a client becomes available, don't send the last published PEP items
of all his peers to all his other peers, but only to that client.
2014-11-14 01:03:26 +01:00
Holger Weiss 2d748115ee Don't advertise auth mechanisms too early
If "starttls_required: true" is specified for c2s connections,
authentication mechanisms shouldn't be offered before negotiating the
TLS connection.
2014-10-23 10:04:14 +02:00
Holger Weiss 0c24e18b5e XEP-0198: Abort immediately on queue overflow
Terminate the ejabberd_c2s process immediately once stanza queue
overflow is detected.  This makes sure the FSM won't process additional
stanzas before terminating if the recipient is flooded.
2014-10-17 01:35:30 +02:00
Holger Weiss 1ccc0d8bcb XEP-0198: Set #state.conn field on session resume 2014-10-12 19:44:35 +02:00
Holger Weiss 7bdc1151b1 Make sure "starttls_required" can't be bypassed
Don't allow clients to circumvent the "starttls_required" option by
enabling XMPP stream compression.
2014-10-12 02:08:08 +02:00
Holger Weiss 277e1dc3ff Offer CSI stream feature only if configured
Don't offer the CSI stream feature when mod_client_state isn't actually
configured to filter stanzas.  This makes sure clients won't send CSI
tags that end up being ignored.
2014-09-25 18:28:20 +02:00
Holger Weiss 56175fef1b Add new hook: c2s_post_auth_features
The c2s_post_auth_features hook can be used to extend the list of stream
features offered after authentication.
2014-09-25 18:15:33 +02:00
Holger Weiss 7aec0337e1 Remove invisible presence fields from c2s #state
Invisible presence isn't supported anymore, so the corresponding
ejabberd_c2s #state fields were unused.
2014-09-25 00:08:56 +02:00
Holger Weiss 0a9212583d XEP-0198: Support "resend_on_timeout: if_offline"
If "resend_on_timeout" is set to "if_offline", resend unacknowledged
stanzas only if no other resource is online when the session times out.
In other words, allow for sending them to offline storage, but nowhere
else.
2014-09-16 22:42:34 +02:00
Holger Weiss b8c98232b8 Support XEP-0352: Client State Indication 2014-09-11 17:44:29 +02:00
Evgeny Khramtsov 7a48e30523 Merge pull request #296 from weiss/remove-unused-clause
XEP-0198: Remove unused function clause
2014-09-07 07:27:17 +04:00
Holger Weiss 2ca563e328 XEP-0198: Remove unused function clause
In the 'wait_for_resume' state, #state.mgmt_pending_since is always
initialized.  fsm_next_state/2 takes care of that.
2014-09-06 20:39:38 +02:00
Holger Weiss 2e169167d4 XEP-0198: Change state on gen_tcp:send/2 failure
When Stream Management is enabled and a gen_tcp:send/2 call fails, go
into the 'wait_for_resume' state immediately.  This makes sure that
gen_tcp:send/2 won't be called again, which might avoid an Erlang issue
where gen_tcp:send/2 apparently hangs despite 'send_timeout' (and
'send_timeout_close') being set.
2014-09-06 20:34:32 +02:00
Holger Weiss 11b2921971 XEP-0198: Let fsm_next_state/2 check timeout value
Don't force the fsm_next_state/2 caller to check for 'mgmt_timeout = 0'.
2014-09-06 20:29:02 +02:00
Evgeniy Khramtsov fda73c3d16 Fix privacy checks of presence probes 2014-09-01 16:39:02 +04:00
Evgeniy Khramtsov a1ce33ebf8 Automatically remove IPs from ban, add the documentation 2014-08-27 13:25:49 +04:00
Evgeniy Khramtsov 2430e6691b Add mod_fail2ban 2014-08-27 13:17:56 +04:00
Holger Weiss 2802b6cee2 Allow for "max_ack_queue: infinity", as documented 2014-08-20 12:53:26 +02:00
Holger Weiss 2d4c39cd54 XEP-0198: Create shorter resume IDs
Omit the user and server name from the 'previd' value.
2014-08-15 10:56:59 +02:00
Holger Weiss 848e1497d1 XEP-0198: Gracefully handle broken 'previd'
Produce a proper error message instead of crashing when the 'previd'
value of a <resume/> request has an unexpected format.
2014-08-15 01:54:41 +02:00
Holger Weiss 2daf95e93f XEP-0198: Gracefully handle wrong credentials
Produce a proper error message instead of crashing when the JID encoded
in the 'previd' value of a <resume/> request is different from the
authenticated JID.
2014-08-15 01:53:47 +02:00
Evgeniy Khramtsov 3d3a4f7543 Fix events broadcasting via C2S 2014-07-22 19:42:49 +04:00
Holger Weiss 0cb9ea3643 XEP-0198: Cosmetic change: Reuse event handler
On stanza queue overflow, pass a message to self() using the exclamation
mark operator instead of send_all_state_event/2.  This allows for
reusing the existing handler for 'kick' events.
2014-05-28 11:24:38 +02:00
Holger Weiss 99ca8281fa XEP-0198: Terminate session on queue overflow
On queue overflow, terminate the c2s session instead of just dropping
items from the queue.  This makes sure all stanzas are either delivered
or bounced.
2014-05-27 22:56:33 +02:00
Evgeny Khramtsov 3a27b1dd0c Merge pull request #226 from weiss/simplify-state-change
XEP-0198: Cosmetic change: Simplify state change
2014-05-27 23:30:30 +04:00
Holger Weiss 50a4c5a6ab XEP-0198: Cosmetic change: Simplify state change
When the FSM goes into the 'wait_for_resume' state, let fsm_next_state/2
take care of updating #state.mgmt_state and of writing the log line.
This doesn't change the behavior, but simplifies the code.
2014-05-27 21:14:49 +02:00
Holger Weiss ed0c89f876 Let ejabberd_c2s always use fsm_next_state/2
Make sure any logic implemented in ejabberd_c2s:fsm_next_state/2 is
always applied.
2014-05-27 21:07:53 +02:00
Evgeny Khramtsov 702cddd4ff Merge pull request #220 from weiss/handle-send-failure
XEP-0198: Don't exit on socket send failure
2014-05-27 15:44:04 +04:00
Evgeny Khramtsov 4d1332c30f Merge pull request #222 from weiss/keep-session-on-failed-resume
XEP-0198: Don't drop session on failed resume
2014-05-27 15:38:26 +04:00
Evgeny Khramtsov 402fb9665d Merge pull request #221 from weiss/omit-redundant-guard
XEP-0198: Cosmetic change: Omit redundant guard
2014-05-27 15:34:34 +04:00
Evgeny Khramtsov b2e84405c1 Merge pull request #218 from weiss/omit-iq-xmlns
Omit XML namespace declaration for <iq/> stanzas
2014-05-27 15:32:02 +04:00
Holger Weiss 59f6efeaf7 XEP-0198: Don't drop session on failed resume
The 'previd' value provided by the client during a session resume
request includes the client's JID and ejabberd's session ID.  If there
is a session for the requested JID but with a different session ID,
resumption should fail, but that session shouldn't be closed.  This
commit makes sure the latter won't happen.

In practice, this will only make a difference in odd corner cases.
2014-05-23 23:38:04 +02:00
Holger Weiss 737b0ae5dc XEP-0198: Cosmetic change: Omit redundant guard
The stream management state is never 'pending' when the c2s FSM is in
the 'session_established' state.
2014-05-23 20:46:17 +02:00
Holger Weiss ab9667f917 XEP-0198: Don't exit on socket send failure
If stream management is enabled, don't exit the c2s process when
ejabberd_socket:send/2 fails, but close the socket instead.  This gives
the client a chance to resume the session.

Thanks go to Matthias Rieber for reporting the issue, providing detailed
logs, and testing the fix.
2014-05-23 11:38:54 +02:00
Badlop 735bd95659 Merge branch 'check-packet-type' of git://github.com/weiss/ejabberd into weiss-check-packet-type
Conflicts:
	src/ejabberd_c2s.erl
2014-05-21 18:45:28 +02:00
Holger Weiss 6b996061a2 Omit XML namespace declaration for <iq/> stanzas
Only the child elements of <iq/> stanzas are qualified by the namespaces
in question, not the <iq/> stanzas themselves.

This change just clarifies the code.  It doesn't alter the behaviour, as
those <iq/> stanzas are handed over to jlib:iq_to_xml/1, and that
function ignores the 'xmlns' attribute anyway.
2014-05-21 00:07:57 +02:00
Radosław Szymczyszyn 5726636053 Fix check_from/2 formatting 2014-05-20 12:31:28 +01:00
Radosław Szymczyszyn b7a542e074 Sanitize copy-pasted get_statustag/1 2014-05-20 12:28:14 +01:00
Radosław Szymczyszyn 9c37450fe4 Fix formatting 2014-05-20 12:26:33 +01:00
Radosław Szymczyszyn c39ce133de Build proceed/compressed elements in a sane way 2014-05-20 11:52:02 +01:00
Holger Weiss 6e8dd5bdff Don't miss incoming presence updates 2014-05-14 01:04:38 +02:00
Holger Weiss f6da708b02 XEP-0198: Check whether routed packets are stanzas
Only stanzas are subject to stream management, so when XEP-0198 support
is enabled, we must distinguish them from non-stanza elements.  This
commit adds a send_packet/2 function that can be used in place of
send_stanza/2 or send_element/2 whenever a packet is delivered that
might or might not be a stanza.
2014-05-12 19:20:25 +02:00
Holger Weiss 9121ca14de Rename disconnect_user/2 command
The mod_admin_extra module provides a kick_session/4 command.  Rename
the disconnect_user/2 command to kick_user/2 for consistency.
2014-05-12 12:44:40 +02:00
Holger Weiss 6d5bfcfe9b XEP-0198: Improve handling of too large 'h' values
If the client says that it handled more stanzas than we sent (due to a
bug in the client's or in our code), increase our outgoing stanza count
accordingly.  There's no point in sticking to the old value even if it
was correct, as the client surely won't fix its count during the current
session.
2014-05-09 18:28:14 +02:00
Holger Weiss 15369ff9d7 XEP-0198: Reject <resume/> with negative 'h' value
Make sure the 'h' attribute sent with a <resume/> request is
nonnegative, as mandated by XEP-0198.

We already have this check for <a/> elements.
2014-05-09 18:01:31 +02:00
Holger Weiss a60fda7df4 XEP-0198: Don't warn on invalid ACK elements
Do not log a warning (but only a debug message) if the client sends an
invalid </a> packet.  Some clients do that occasionally, and there's
nothing server admininistrators could do about that.
2014-05-09 17:54:12 +02:00
Holger Weiss d343447cc9 Merge remote-tracking branch 'processone/master' into xep-0198
Conflicts:
	doc/guide.tex
	src/ejabberd_c2s.erl
2014-05-06 21:41:29 +02:00
Holger Weiss 8b1f92575a XEP-0198: Use "mgmt_" prefix for all #state fields
Prefix all ejabberd_c2s #state fields that are used for stream
management with "mgmt_".
2014-05-06 07:27:10 +02:00
Holger Weiss 3b3f3b9131 XEP-0198: Don't log protocol issues
There are corner cases where certain clients acknowledge more stanzas
than they received.  Nothing really bad will happen in those cases, and
server administrators can't do anything about such issues anyway.
2014-05-05 01:11:14 +02:00
Holger Weiss 32abcbca6c XEP-0198: Accept stream elements in pending state
Due to timing issues, ejabberd_c2s might receive stream elements from
the client while the session is waiting for stream resumption.  Those
elements are now accepted.
2014-05-05 00:02:55 +02:00
Holger Weiss a0917a8e9b XEP-0198: Log message when waiting for resumption
Log an informational message when a session goes into the pending state
(waiting for resumption) after the connection was lost.  Administrators
may well be interested in this state change when looking into issues.
2014-05-04 23:08:42 +02:00
Evgeny Khramtsov c545b3de6d Merge pull request #178 from hamano/devel
undefined ejabberd_socket:get_conn_type/1
2014-04-30 21:49:54 +04:00
Holger Weiss ebbceab93f Translate disconnect_user/2 string sent to client 2014-04-29 11:56:28 +02:00
Holger Weiss bb2c8b59f8 Avoid #state.lang type errors in corner cases
If #state.lang is used before being initialized to some binary string,
the translation code would crash.
2014-04-29 11:41:24 +02:00
Holger Weiss a21d2298af XEP-0198: Turn some warnings into info messages
Don't log warnings on events that will happen during normal operation.
2014-04-28 01:01:30 +02:00
HAMANO Tsukasa 219f9276d1 undefined ejabberd_socket:get_conn_type/1 2014-04-24 12:42:22 +09:00
Alexey Shchepin f93758a3cd Merge pull request #160 from runcom/protocol_options
Add option to specify openssl options
2014-04-15 19:01:21 +04:00
badlop 285c4c17cf Merge pull request #146 from jamielinux/master
Update FSF address
2014-04-11 13:35:46 +02:00
Antonio Murdaca fbf71f86f3 Add option to specify openssl options 2014-04-08 18:46:52 +02:00
Holger Weiss c114eb3736 XEP-0198: Don't bounce/resend forwarded messages
On connection timeout, drop any messages that were forwarded by some
encapsulating protocol, such as XEP-0280 carbon copies or XEP-0313
archive messages.  Bouncing or resending them could easily lead to
unexpected results.
2014-04-07 21:21:11 +02:00
Badlop ac0e199d36 Provide meaningful text to user when admin kicks session (EJAB-1455) 2014-03-26 16:01:37 +01:00
Holger Weiss a97c716352 XEP-0198: Bounce unacked stanzas by default
If the new "resend_on_timeout" option is set to false (which it is by
default), bounce any unacknowledged stanzas instead of re-routing them.
2014-03-25 23:23:38 +01:00
Holger Weiss 2da6933bb7 Remove "fun" element from c2s #state
Memory consumption wise, local "fun" references are quite expensive.
2014-03-22 20:25:43 +01:00
Holger Weiss e360c56f87 Support XEP-0198 session resumption
Implement the optional session resumption feature described in XEP-0198.
A client that supports this feature may now resume the previous session
(within a configurable number of seconds) if the connection was lost.
During resumption, ejabberd will retransmit any stanzas that hadn't been
acknowledged by the client.
2014-03-19 00:51:33 +01:00
Holger Weiss 88a200e100 Remove some commented out code
The code that had been commented out at some earlier point in time would
now break XEP-0198.
2014-03-16 00:12:47 +01:00
Badlop 633d47f784 Update copyright dates to 2014 (EJAB-1679) 2014-03-13 12:30:57 +01:00
Holger Weiss 7d594086c3 Add initial XEP-0198 support (EJAB-532)
Implement partial support for XEP-0198: Stream Management.  After
successful negotiation of this feature, the server requests an ACK for
each stanza transmitted to the client and responds to ACK requests
issued by the client.  On session termination, the server re-routes any
unacknowledged stanzas.  The length of the pending queue can be limited
by setting the "max_ack_queue" option to some integer value (default:
500).  XEP-0198 support can be disabled entirely by setting the
"stream_management" option to false (default: true).

So far, stream management is implemented only for c2s connections, and
the optional stream resumption feature also described in XEP-0198 is not
(yet) supported.

This addition was originally based on a patch provided by Magnus Henoch
and updated by Grzegorz Grasza.  Their code implements an early draft of
XEP-0198 for some previous version of ejabberd.  It has since been
rewritten almost entirely.
2014-03-12 23:34:14 +01:00
Jamie Nguyen 8538997d61 Update FSF address 2014-02-22 10:27:40 +00:00
Alexey Shchepin 9422164dda Clear SASL state after finishing auth 2014-01-21 13:44:29 +02:00
Alexey Shchepin cbbfd921b4 Fix for the previous commit 2014-01-21 11:54:18 +02:00
Alexey Shchepin d63be79df9 Use 'to' field only in the first client stream initialization 2014-01-20 16:06:05 +02:00
Badlop 5a1300bc70 Add access rule to mod_roster (EJAB-72) 2013-12-04 14:57:44 +01:00
Alexey Shchepin 1dd94ac0d0 Support for OpenSSL ciphers list in ejabberd_c2s, ejabberd_s2s_in and ejabberd_s2s_out 2013-11-28 19:39:11 +02:00
Evgeniy Khramtsov 91a74e3e27 Change configuration file format to YAML 2013-08-21 22:17:59 +10:00
Evgeniy Khramtsov a2ead99c83 Make it possible to enable/disable TLS compression 2013-07-17 22:46:18 +10:00
Evgeniy Khramtsov f9390f3e9a Fix some dialyzer warnings 2013-06-24 20:04:56 +10:00
Evgeniy Khramtsov 4dc80dddd4 Fix all calls to functions of p1_tls application 2013-06-20 18:40:44 +10:00
Alexey Shchepin 862a08e9eb Fixed conversion to ezlib 2013-06-17 16:33:25 +03:00
Evgeniy Khramtsov 7865c6a146 Don't include sub-elements in IQ results where it's not required
by the corresponding spec (RFC or XEP).
2013-06-17 16:09:54 +03:00
Evgeniy Khramtsov 4d8f770624 Switch to rebar build tool
Use dynamic Rebar configuration
Make iconv dependency optional
Disable transient_supervisors compile option
Add hipe compilation support
Only compile ibrowse and lhttpc when needed
Make it possible to generate an OTP application release
Add --enable-debug compile option
Add --enable-all compiler option
Add --enable-tools configure option
Add --with-erlang configure option.
Add --enable-erlang-version-check configure option.
Add lager support
Improve the test suite
2013-06-13 11:11:02 +02:00
Paul Donohue b33a482582 Fix error when generating random binary strings 2013-04-19 15:30:13 -04:00
Evgeniy Khramtsov 0d80e7e68a Get rid of references to non-existent module 2013-03-29 19:38:01 +10:00
Evgeniy Khramtsov 299a0f823a Fix several refactoring related bugs 2013-03-29 19:23:52 +10:00
Badlop 9deb294328 Accumulated patch to binarize and indent code 2013-03-14 10:33:02 +01:00
Alexey Shchepin 0ae400533c Update copyright dates 2013-01-24 16:25:13 +02:00
Badlop 2dc2769c92 Log IP address when auth attempt fails (thanks to Zach Calvert) 2012-08-27 17:40:01 +02:00
Alexey Shchepin b1e2538488 Update copyright dates 2012-02-23 17:52:34 +02:00
Evgeniy Khramtsov 944791e888 Fix presence problem after first unavailable (thanks to Christopher Faulet) (EJAB-1466) 2011-11-09 15:09:02 +10:00
Badlop a0f8a2c3a4 New option resource_conflict defines server action (thanks to Lee Boynton)(EJAB-650) 2011-08-17 19:44:39 +02:00
Badlop e80b92b481 Preliminary patch for SASL SCRAM-SHA-1 (thanks to Stephen Röttger)(EJAB-1196) 2011-08-16 00:25:03 +02:00
Badlop bfebcebeb7 Support XEP-0191 Simple Communications Blocking (thanks to Stephan Maka)(EJAB-695) 2011-05-27 11:47:22 +02:00
Christophe Romain fd52f2cb7d update copyright up to 2011 2011-02-14 13:50:55 +01:00
Badlop 36166aa40e Comment unused code 2011-01-28 12:11:34 +01:00
Mickaël Rémond bd43505db9 Use route instead of send_element to go through standard workflow Offline messages should thus be tracked for ack if needed (TEXTO-226).
Signed-off-by: Evgeniy Khramtsov <ekhramtsov@process-one.net>
2011-01-04 15:21:10 +01:00
Evgeniy Khramtsov 4c8b034874 Change c2s state before offline messages resending 2010-12-28 21:09:15 +09:00
Christophe Romain f0a848ef45 fix pubsub cross domain eventing (EJAB-1340) 2010-12-02 13:56:45 +01:00
Christopher tofu Zorn 3e24408710 add the ability to send raw xml packets over http bind 2010-11-29 20:05:37 +01:00
Evgeniy Khramtsov b8d6aee1ce Merge branch 'caps' into 2.1.x
Conflicts:
	src/ejabberd_c2s.erl
2010-11-24 16:45:05 +09:00
Badlop 9b88fd6646 Fix some English strings 2010-11-19 13:44:30 +01:00
Andreas Köhler 510fd8cf73 Before forwarding last activity requests to a user, check that the user's presence is visible for From
According to XEP-0012, 4. Online User Query, "if the requesting entity
is not authorized to view the user's presence information (normally via
a presence subscription as defined in XMPP IM), the user's server MUST
NOT deliver the IQ-get to an available resource but instead MUST return
a <forbidden/> error in response to the last activity request."

So check for a subscription of from of the jid and bare jid and whether
outgoing presences to From are allowed.

Fixes problem 3 of EJAB-1158.
2010-11-10 15:40:01 +01:00
Andreas Köhler 080922a3de Remove dead code for NS_VCARD iq packets from ejabberd_c2s
For EJAB-1045, the special NS_VCARD block for handling incoming vcard
iqs on behalf of clients has already been restricted to cases where the
user or resource part of the recipient is empty. But then the packets
should not have been routed to the c2s process anyway. This patch
completely removes it.
2010-11-10 15:40:00 +01:00
Andreas Köhler cb7d8c8ead Use ejabberd_c2s:privacy_check_packet/5 for all those hook folded runs in the c2s module 2010-11-10 15:39:59 +01:00
Andreas Köhler c47252aea1 Use c2s state data as user and server in ejabberd_c2s:is_privacy_allow
is_privacy_allow is only used in ejabberd_c2s:handle_info/3 to determine
for a few presence types whether the packet is allowed to be forwarded
to the user's client. This only makes sense if To#jid.user and
To#jid.server match StateData#state.user and StateData#state.server.

Also, add the atom in as parameter to a new argument Dir of
is_privacy_allow and extract from that function
privacy_check_packet(StateData, From, To, Packet, Dir) which runs the
privavcy check without converting allow/deny to true/false.
2010-11-10 15:39:57 +01:00
Evgeniy Khramtsov 1f16e4783c Take care of xml:lang attribute in unauthenticated stanzas as well 2010-11-06 13:58:52 +09:00
Evgeniy Khramtsov c4289095e0 Do not store long language tag to avoid possible DoS/flood attacks 2010-11-05 05:10:18 +09:00
Badlop 2d59efb515 Fix crash in ejabberd_c2s when blacklist hook returned true (thanks to Jonas Ådahl)
Cause of the crash jlib:ip_to_list/1 only supports IP tuples using the
form {N1,N2,N3,N4} which is not the case when IPv6 is enabled.
2010-11-02 13:51:36 +01:00
Badlop 91cf9194d8 When privacy list denies local user's outgoing stanza, try to return error (EJAB-1320)
See:
http://xmpp.org/extensions/xep-0016.html#example-51
Example 51. Error: contact is blocked
2010-10-16 22:53:12 +02:00
Badlop e2dbad6242 Check privacy of outgoing IQ stanzas (EJAB-1320) 2010-10-16 22:53:10 +02:00
Badlop 84d4a1619b Check privacy of incoming IQ stanzas (EJAB-1320) 2010-10-16 22:53:08 +02:00
Evgeniy Khramtsov c13940e1de new CAPS processing 2010-09-28 14:18:57 +10:00
Evgeniy Khramtsov 715cc5ea3b New configure option: --enable-nif 2010-07-01 20:54:01 +10:00
Evgeniy Khramtsov 58590cf08d full support for XEP-0115 v1.5 (EJAB-1223) (EJAB-1189) 2010-05-08 02:32:57 +10:00
Badlop 1c00a9713d Automatic vcard avatar addition in presence (thanks to Igor Goryachev)(EJAB-208) 2010-04-27 12:33:56 +02:00
Pablo Polvorin 41aa693896 Allow customizing the StateData in p1_fsm before error reporting.
A new callback is introduced on the p1_fsm behaviour:

print_error/1

If the module implements this function, it will be invoked
in case of process crash with the current state data *before*
printing the error in the log. The function must return the
desired State to print.

It is used in ejabberd_c2s to prune the presence sets that
can be large. Instead, the state is changed to include only
the # of elements on each set.

Change inspired in comming changes to gen_server on OTP, and
b01d15abc3 (diff-0)
2010-03-30 16:39:34 -03:00
Evgeniy Khramtsov 584fa98564 - pass jid into feature_check_packet hook;
- bounce messages when closing c2s session;
- implemented treap:to_list/1 and treap:from_list/1
2010-03-17 23:40:48 +09:00
Christophe Romain 6fb99fbb48 mod_caps optimizations (thanks evgeniy) 2010-03-05 10:34:15 +01:00
Badlop 8e8a1a3bf5 Run user_receive_packet also when sending offline messages to client (thanks to Brian Acton)(EJAB-1193) 2010-02-22 22:57:08 +01:00
Badlop bc69b96e4c Close also legacy sessions that were half connected (thanks to Evgeniy Khramtsov)(EJAB-1165) 2010-02-16 12:46:20 +01:00
Evgeniy Khramtsov 0a3cfeeed9 new ejabberd_c2s option support: max_fsm_queue
SVN Revision: 2939
2010-01-28 13:44:49 +00:00
Evgeniy Khramtsov 352afa7902 now using p1_fsm behaviour in c2s FSM (EJAB-1173)
SVN Revision: 2936
2010-01-28 13:00:04 +00:00
Badlop 16bd626fc9 Close sessions that were half connected (thanks to Alexey Shchepin)(EJAB-1165)
SVN Revision: 2911
2010-01-17 19:28:35 +00:00
Badlop 3e4858f348 Improve functions calls when closing client connection.
SVN Revision: 2904
2010-01-15 12:01:12 +00:00
Badlop 7b76fdcde7 Update year of ProcessOne copyright from 2009 to 2010 (EJAB-1159)
SVN Revision: 2891
2010-01-12 16:11:32 +00:00
Badlop 7cbda8badb When ejabberd stops, send stream close to clients (thanks to Alexey Shchepin)(EJAB-1112)
SVN Revision: 2852
2010-01-03 00:35:51 +00:00
Badlop 1713bf635d Disable code of recent commit because some clients can't handle it (EJAB-1058)
SVN Revision: 2838
2009-12-29 18:44:02 +00:00
Badlop 455d85a278 Send features after negotiating binding and session (EJAB-1058)
SVN Revision: 2834
2009-12-28 20:09:46 +00:00
Badlop f044d6ed28 Fix bug that couldn't connect if starttls_required and zlib were set (EJAB-1118)
SVN Revision: 2789
2009-12-07 15:54:25 +00:00
Badlop 20d1011194 Don't handle internally an IQ vCard if destination is full JID (EJAB-1045)
SVN Revision: 2766
2009-12-01 19:59:59 +00:00
Badlop ce1364b414 Pack presences stored in C2S processes (thanks to Geoff Cant)(EJAB-1057)
SVN Revision: 2638
2009-09-28 17:23:37 +00:00
Badlop a033b06150 BOSH module optimization and clean-up (thanks to Aleksey Shchepin and Mickaël Rémond)(EJAB-936)
SVN Revision: 2574
2009-08-31 18:37:52 +00:00
Badlop fd57ec5872 Support zlib compression after STARTTLS (thanks to Aleksey Shchepin)(EJAB-499)
SVN Revision: 2571
2009-08-31 16:29:25 +00:00
Badlop d6f3182731 Move functions from roster_versioning to mod_roster (EJAB-964)
SVN Revision: 2429
2009-08-06 21:06:16 +00:00
Pablo Polvorin 53626d16e3 Support for roster versioning (EJAB-964)
Introduces two options for mod_roster and mod_roster_odbc:
- {versioning, true | false}   Enable or disable roster versioning on ejabberd.
- {store_current_id, true | false}   If true, the current roster version is stored on DB (internal or odbc). Otherwise it is calculated on the fly each time.

Performance:
Setting store_current_id to true should help in reducing the load for both ejabberd and the DB.

Details: 
If store_current_id is false,  the roster version is a hash of the entire roster. If store_current_id is true, the roster version is a hash, but of the current time
(this has to do with transactional semantics; we need to perform both the roster update and the version update on the same transaction, but we don't   
have the entire roster when we are changing a single item on DB. Loading it there requires significant changes to be introduced, so I opted for this simpler approach).

In either case, there is no difference for the clients, the roster version ID is opaque.

IMPORTANT:
mod_shared_roster is not compatible with the option 'store_current_id'.  Shared roster and roster versioning can be both enabled, but store_current_id MUST be set to false.

SVN Revision: 2428
2009-08-06 15:45:13 +00:00
Evgeniy Khramtsov 548be039b3 implemented timeout_action: none | kill. default is none
SVN Revision: 2402
2009-07-30 10:25:54 +00:00
Badlop 29ea2738cc Include original timestamp on delayed presences (thanks to Mickael Remond)(EJAB-234)
SVN Revision: 2348
2009-06-30 17:50:47 +00:00
Badlop 6f080f7fed Prevent process crash if the IP and port of a connection is unknown.
SVN Revision: 2155
2009-06-11 18:01:36 +00:00
Badlop ce7e9129d9 When client is closed, include the Reason in the stream trailer stanza.
SVN Revision: 2153
2009-06-09 12:09:48 +00:00
Badlop 48392832ef When max_stanza_size is exceeded, return meaningful error message (EJAB-752)
SVN Revision: 2142
2009-06-02 21:24:33 +00:00
Badlop fec3742aaa Replace TYPE/1 with is_TYPE/1 (EJAB-922)
SVN Revision: 2057
2009-05-06 16:54:43 +00:00
Badlop aedb847a81 * src/cyrsasl.erl: Change API of check_password: pass a function
to generate the digest (thanks to Graham Whitted)(EJAB-863)
* src/cyrsasl_anonymous.erl: Likewise
* src/cyrsasl_digest.erl: Likewise
* src/cyrsasl_plain.erl: Likewise
* src/ejabberd_auth.erl: Likewise
* src/ejabberd_auth_anonymous.erl: Likewise
* src/ejabberd_auth_external.erl: Likewise
* src/ejabberd_auth_internal.erl: Likewise
* src/ejabberd_auth_ldap.erl: Likewise
* src/ejabberd_auth_odbc.erl: Likewise
* src/ejabberd_auth_pam.erl: Likewise
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 2033
2009-04-22 11:44:03 +00:00
Badlop ca8eeaac57 * src/ejabberd_c2s.erl: Fix for SASL Anonymous connections not
stored or purged (thanks to Andy Skelton)(EJAB-912)

SVN Revision: 2032
2009-04-22 11:02:03 +00:00
Christophe Romain 409ab48068 better hadling of presence in mod_caps
SVN Revision: 2012
2009-04-10 07:36:17 +00:00
Badlop a93a3370ef * src/ejabberd_sm.erl: Partially retract SVN r1976
EJAB-300 (EJAB-890). Check default privacy list when account, not
a specific session, receives a presence subscription
stanza (EJAB-300).
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 1998
2009-03-24 16:22:33 +00:00
Badlop 787d225f1e * src/ejabberd_c2s.erl: Enforce privacy rules also for
subscription requests (EJAB-300)
* src/ejabberd_sm.erl: Likewise

SVN Revision: 1976
2009-03-07 08:59:26 +00:00
Christophe Romain 04fde3620d Do not call mod_caps:clear_caps as it breaks PubSub/PEP (EJAB-854)
SVN Revision: 1912
2009-02-23 15:56:19 +00:00
Badlop b0cc0cdcf9 * src/mod_privacy.erl: Privacy List: deny presence-out all + send
presence to: presence is sent (EJAB-255)
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 1881
2009-02-16 16:24:08 +00:00
Mickaël Rémond 579e1972d5 * src/ejabberd_c2s.erl: Added comments.
SVN Revision: 1823
2009-01-17 16:33:35 +00:00
Badlop f09509502e * doc/guide.tex: Update copyright date 2008 to 2009 (EJAB-842)
* doc/guide.html: Likewise
* src/*/*.erl: Likewise
* src/*/*.erl: Remove unneeded blankspaces in license text

SVN Revision: 1804
2009-01-12 14:44:42 +00:00
Alexey Shchepin b1252f837f * src/tls/tls_drv.c: Added a flag to avoid certificate validation
* src/tls/tls.erl: Likewise
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 1774
2009-01-05 17:21:10 +00:00
Mickaël Rémond 1f57a380c8 * src/ejabberd_c2s.erl: Remove useless comment and port Alexey fix to 2.0.x branch.
SVN Revision: 1764
2008-12-29 12:06:34 +00:00
Alexey Shchepin df478a8e90 * src/ejabberd_c2s.erl: Bugfix in "from" attribute checking
SVN Revision: 1763
2008-12-29 11:11:37 +00:00
Mickaël Rémond 707aa4fb8c * src/ejabberd_c2s.erl: We should allow use of bare resource in from by the client (partially revert r1727) (EJAB-812)
SVN Revision: 1759
2008-12-28 12:15:51 +00:00
Alexey Shchepin 620cbc765c * src/ejabberd_c2s.erl: Bugfix in "from" attribute checking
SVN Revision: 1727
2008-12-12 13:08:00 +00:00
Christophe Romain e2d8154a80 Reduce memory consumption due to caps handling
SVN Revision: 1712
2008-12-08 14:10:55 +00:00
Mickaël Rémond 4618ec1fef * src/ejabberd_c2s.erl: Enforce client stanza from attribute (EJAB-812).
* src/jlib.erl: Likewise.

SVN Revision: 1706
2008-12-08 09:21:36 +00:00
Mickaël Rémond 10e3f2cf92 * src/ejabberd_s2s_out.erl: exports the DNS resolution function.
SVN Revision: 1674
2008-11-08 17:50:54 +00:00
Alexey Shchepin 8cdebd485a * src/ejabberd_c2s.erl: Disable zlib when STARTTLS is required
SVN Revision: 1672
2008-11-03 13:54:42 +00:00
Badlop 426e75a298 * src/ejabberd_c2s.erl: Ensure unique ID in roster push (EJAB-721)
* src/mod_roster.erl: Likewise
* src/mod_roster_odbc.erl: Likewise
* src/mod_shared_roster.erl: Likewise

SVN Revision: 1666
2008-10-24 18:01:08 +00:00
Christophe Romain 11788b2953 send last published events now supports PEP events from unavailable users nodes (EJAB-698)
SVN Revision: 1550
2008-08-27 09:28:47 +00:00
Badlop c3bda4aaee * doc/guide.tex: Update Process-one name to ProcessOne (EJAB-708)
* doc/guide.html: Likewise
* doc/api/overview.edoc: Likewise
* src/*/*.erl: Likewise
* src/*/*.hrl: Likewise
* src/*/*.c: Likewise
* src/odbc/*.sql: Likewise

SVN Revision: 1499
2008-07-31 11:18:49 +00:00
Badlop be140c1a23 * src/ejabberd_c2s.erl: Put auth_module in Info always (EJAB-549)
SVN Revision: 1454
2008-07-16 18:05:46 +00:00
Christophe Romain e0e7797e99 Rolled back the previous IP getting patch, and Report connection's IP address in ejabberd_http_poll
SVN Revision: 1450
2008-07-16 12:55:29 +00:00
Christophe Romain 35d25d3420 PubSub improvements, and solves (EJAB-453) (EJAB-608)
SVN Revision: 1408
2008-07-03 09:56:31 +00:00
Badlop ff94e586eb * src/ejabberd_c2s.erl: Bugfix: deliver messages when first
presence is Invisible (thanks to Dariusz Markowicz)(EJAB-262)

SVN Revision: 1348
2008-06-09 23:43:47 +00:00
Mickaël Rémond cf42ea0bcb * src/ejabberd_c2s.erl: user_send_packet hook now called on all packets including presence packets (EJAB-634)
SVN Revision: 1341
2008-05-22 10:19:35 +00:00
Mickaël Rémond a664579b58 * src/ejabberd_c2s.erl: Added C2S blacklist support (EJAB-625).
* src/mod_ip_blacklist.erl: Likewise.
* src/jlib.erl: Added IP format tuple to string function.
* src/ejabberd_socket.erl: Properly handled c2s start failure (happen for blacklisted IP).

SVN Revision: 1317
2008-05-05 16:22:06 +00:00
Badlop c88a4650ba * src/ejabberd_c2s.erl: Added forbidden_session_hook
* src/acl.erl: New access types: resource, resource_regexp and
resource_glob
* doc/guide.tex: Likewise

SVN Revision: 1301
2008-04-25 09:25:31 +00:00
Alexey Shchepin 797544333c * src/mod_register.erl: Restrict registration frequency per IP or
user
* src/ejabberd_c2s.erl: Pass IP to the c2s_unauthenticated_iq hook
* src/ejabberd_config.erl: Added registration_timeout option
* src/treap.erl: Treaps implementation

SVN Revision: 1299
2008-04-22 21:51:32 +00:00
Badlop 96f0c001d9 * src/ejabberd_auth.erl: Improve anonymous authentication to not
remove rosters accidentally (EJAB-549). New functions in
ejabberd_auth to get/check password and know which module accepted
the authentication. New element 'auth_module' in ejabberd_c2s
record 'statedata'. Cyrsasl provides a new property in the
response: {auth_module, AuthModule}.
* src/ejabberd_auth_anonymous.erl: Likewise
* src/ejabberd_c2s.erl: Likewise
* src/cyrsasl_anonymous.erl: Likewise
* src/cyrsasl_digest.erl: Likewise
* src/cyrsasl_plain.erl: Likewise

SVN Revision: 1297
2008-04-22 17:41:30 +00:00
Mickaël Rémond b8b2bde8d0 *src/ejabberd_c2s.erl: Uniform default value for empty privacy list. Fixes (EJAB-603).
SVN Revision: 1281
2008-04-10 08:14:38 +00:00
Badlop 2c8cc8ae2d * src/ejabberd_c2s.erl (process_presence_probe): Don't route a
presence probe to oneself (EJAB-498)

SVN Revision: 1275
2008-04-03 22:35:26 +00:00
Christophe Romain 56e9971435 Bug in get_conn_type since SVN r1194 crashes http-bind and http-poll (thanks to Brian Cully) (EJAB-526)
SVN Revision: 1197
2008-02-18 09:55:06 +00:00
Christophe Romain 04d688c1ba Retreive connection type in sm_register_connection_hook
SVN Revision: 1194
2008-02-15 16:35:32 +00:00
Badlop 2d2fcc8210 * doc/guide.tex: Updated copyright dates to 2008
* src/*: Likewise

SVN Revision: 1153
2008-01-15 17:02:57 +00:00
Christophe Romain 20c27ea9d9 EJAB-491 fix
SVN Revision: 1145
2008-01-11 01:39:10 +00:00
Christophe Romain b3bf437dd1 Send last published PEP event now checks the correct peer caps (EJAB-491)
SVN Revision: 1143
2008-01-10 15:02:54 +00:00
Mickaël Rémond 56fe3579bb * Applied copyright update patch 1.
SVN Revision: 1110
2007-12-24 11:41:41 +00:00
Christophe Romain 02eaf9eaec several pubsub/pep bugfix
SVN Revision: 1096
2007-12-22 00:04:05 +00:00
Badlop 60ea99d1a3 * src/ejabberd_c2s.erl: Increase the timeout of open socket
without authentication to 60 seconds because many Jabber clients
are not yet capable of handling this correctly (EJAB-355)

SVN Revision: 1040
2007-12-06 17:42:25 +00:00
Alexey Shchepin c3c782d882 * src/mod_caps.erl: CAPS support (thanks to Magnus Henoch)
* src/ejabberd_local.erl: Support for IQ responses
* src/jlib.erl: Added iq_query_or_response_info/1 function
* src/jlib.hrl: Added NS_PUBSUB_ERRORS and NS_CAPS

* src/mod_pubsub/Makefile.in: New pubsub+pep implementation
(thanks to Christophe Romain and Magnus Henoch)
* src/ejabberd_sm.erl: Added get_session_pid/3 function
* src/ejabberd_c2s.erl: Added get_subscribed_and_online/1 function

SVN Revision: 1004
2007-12-01 05:16:30 +00:00
Jérôme Sautret 96ded4535d * src/ejabberd_s2s.erl: don't use the resource of the sender to choose
a s2s connection to ensure that a muc room always uses the same
connection

Merge branch 'ejabberd_s2s'

Conflicts:

.gitignore
src/configure
src/ejabberd_c2s.erl
src/ejabberd_s2s.erl

SVN Revision: 963
2007-10-30 17:38:40 +00:00
Mickaël Rémond fd666398ee * src/ejabberd_c2s.erl: Added debug hook for c2s loop (EJAB-358).
SVN Revision: 946
2007-09-14 14:20:56 +00:00
Mickaël Rémond 8d3d59535d * src/ejabberd_c2s.erl: Hibernate inactive c2s processes (EJAB-356).
SVN Revision: 934
2007-09-14 14:18:01 +00:00
Mickaël Rémond f787a3ed71 * src/ejabberd_c2s.erl: Implements timeouts during session opening negociation (EJAB-355).
SVN Revision: 933
2007-09-14 14:17:42 +00:00
Mickaël Rémond afec054544 * src/ejabberd_c2s.erl: Option to prevent the use of Erlang OTP supervisor for transient processes (EJAB-354).
* src/ejabberd_s2s_in.erl: Likewise.
* src/ejabberd_s2s_out.erl: Likewise.
* src/mod_muc/mod_muc_room.erl: Likewise.
* src/configure.ac: Likewise.
* src/configure: Likewise.
* src/Makefile.in: Likewise.
* src/mod_muc/Makefile.in: Likewise.

SVN Revision: 931
2007-09-14 14:16:36 +00:00
Alexey Shchepin 9a6e8e3c55 * src/ejabberd_sm.erl: Updated the session table to store
additional session info
* src/ejabberd_c2s.erl: Report IP address to ejabberd_sm (thanks
to Christophe Romain)

SVN Revision: 772
2007-05-21 03:21:34 +00:00
Alexey Shchepin 8c326ea928 * src/mod_muc/mod_muc_room.erl: Corrected error messages when
trying to join members-only room (thanks to Badlop)

* src/ejabberd_c2s.erl: Added c2s_update_presence hook

SVN Revision: 770
2007-05-16 10:13:04 +00:00
Alexey Shchepin 372944df6c * src/ejabberd_sm.erl: Added set_presence_hook
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 761
2007-05-03 15:45:24 +00:00
Alexey Shchepin fa6b6b8f5a * src/ejabberd_socket.erl: Added API for monitoring socket
processes
* src/ejabberd_frontend_socket.erl: Likewise
* src/ejabberd_c2s.erl: Added socket monitoring

* src/mod_muc/mod_muc_room.erl: Fixed the stop reason for the
destroy event

SVN Revision: 751
2007-04-12 06:08:32 +00:00
Alexey Shchepin 379b0d9e54 * src/ejabberd_c2s.erl: Init shaper with a default value first
after stream opening

* src/ejabberd_c2s.erl: Log failed SASL login attempts
* src/cyrsasl.erl: Updated API
* src/cyrsasl_plain.erl: Likewise
* src/cyrsasl_digest.erl: Likewise

SVN Revision: 735
2007-02-19 23:35:42 +00:00
Alexey Shchepin bb2ffb8765 * src/ejabberd_c2s.erl: Bugfix
SVN Revision: 691
2006-12-08 20:34:34 +00:00
Mickaël Rémond cc07020d34 * src/ejabberd_c2s.erl: User login in with negative priority must not
receive offline messages (Thanks to Badlop) (EJAB-158).

SVN Revision: 683
2006-11-28 09:59:29 +00:00
Alexey Shchepin fa7693d355 * src/mod_privacy.erl: Use hooks instead of direct function calls
* src/ejabberd_c2s.erl: Updated

SVN Revision: 659
2006-10-05 03:17:41 +00:00
Alexey Shchepin c72599cacd * src/ejabberd_frontend_socket.erl: Support for frontend
connection manager
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_listener.erl: Likewise
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_service.erl: Likewise
* src/ejabberd_socket.erl: Likewise
* src/web/ejabberd_http_poll.erl: Likewise

SVN Revision: 657
2006-10-01 01:53:37 +00:00
Alexey Shchepin aa478100d8 * src/ejabberd_socket.erl: Support for non-xml sockets
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_service.erl: Likewise
* src/web/ejabberd_http.erl: Likewise

SVN Revision: 629
2006-09-25 03:51:11 +00:00
Alexey Shchepin 4d7cc9301a * src/ejabberd_socket.erl: All XML socket operations moved here
* src/ejabberd_listener.erl: Updated
* src/ejabberd_receiver.erl: Likewise
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_s2s_out.erl: Likewise
* src/ejabberd_service.erl: Likewise

* src/mod_shared_roster.erl: Bugfix

* src/mod_roster_odbc.erl: Bugfix

SVN Revision: 599
2006-09-05 04:26:28 +00:00
Mickaël Rémond 9b8dcac5a7 * src/ejabberd_c2s.erl: Bugfix: added a missing catch and fixed
the error code used on unknown namespace.
* src/ejabberd_s2s_out.erl: Improved s2s connection negociation
(dialback namespace usage) when using tls.
* src/ejabberd_sm.erl: Fixed the error code used on unknown
namespace.
* src/mod_register.erl: ejabberd now sends iq result and stream
end on user remove.

SVN Revision: 590
2006-07-28 16:18:50 +00:00
Mickaël Rémond 42cdf80cd4 * src/mod_roster.erl: The subscribe request are now resend at
login as long as they have not been answered. mod_roster do no more
depends on mod_offline.
* src/ejabberd_sm.erl: Likewise.
* src/ejabberd_c2s.erl: Likewise.
* src/mod_roster_odbc.erl: Likewise (The ODBC/relational support
has not yet been tested).
* src/mod_roster.hrl: Likewise.
* src/mod_offline.erl: Likewise.
* src/mod_offline_odbc.erl: Likewise.
* odbc/pg.sql: Likewise.
* odbc/mysql.sql: Likewise.

SVN Revision: 569
2006-05-23 20:19:37 +00:00
Alexey Shchepin 25ca5013bb * src/ejabberd_c2s.erl: Resend messages when leaving negative
presence state (thanks to Magnus Henoch)

SVN Revision: 542
2006-04-23 14:57:37 +00:00
Alexey Shchepin c4b976881e * src/msgs/pt-br.msg: Updated (thanks to Lucius Curado)
* src/xml_stream.erl: Support for stanza size limit (thanks to
Igor Goryachev)
* src/ejabberd_receiver.erl: Likewise
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd.cfg.example: Updated

* src/ejabberd_auth.erl: Fixed try_register/3 behaviour

SVN Revision: 537
2006-04-22 03:35:13 +00:00
Alexey Shchepin aa8e532cbd * src/ejabberd_c2s.erl: Minor fix
* src/ejabberd_c2s.erl: Bugfix (thanks to Sergei Golovan)

* doc/guide.tex: Updated (thanks to Sergei Golovan)

* src/msgs/nl.msg: Updated (thanks to Sander Devrieze)

SVN Revision: 531
2006-04-12 02:54:27 +00:00
Alexey Shchepin 9a44fdffab * src/ejabberd_sm.erl: SASL Anonymous + Anonymous login support
(thanks to Mickael Remond and Magnus Henoch)
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_auth.erl: Likewise
* src/ejabberd_auth_anonymous.erl: Likewise
* src/cyrsasl.erl: Likewise
* src/cyrsasl_anonymous.erl: Likewise
* src/ejabberd.cfg.example: Likewise

SVN Revision: 527
2006-04-07 00:39:24 +00:00
Mickaël Rémond 3e9e51ee30 * src/Makefile.in: Added an option to compile ejabberd with debug
print-out (make ejabberd_debug=true).
* src/ejabberd_c2s.erl: Added a new debug printout: We can now
print the XML packets send by the server.

SVN Revision: 524
2006-04-01 16:05:20 +00:00
Alexey Shchepin f3085d09e4 * src/ejabberd_c2s.erl: Bugfix
SVN Revision: 523
2006-03-30 23:30:05 +00:00
Alexey Shchepin 832279f1f2 * src/ejabberd_c2s.erl: Enable zlib only over TCP
SVN Revision: 522
2006-03-25 21:16:49 +00:00
Alexey Shchepin 89e57d421e * src/ejabberd_c2s.erl: Bugfix (thanks to Sergei Golovan)
SVN Revision: 521
2006-03-18 20:10:56 +00:00
Alexey Shchepin a6b3e6c904 * src/mod_privacy.erl: Fixed privacy list pushing (thanks to
Sergei Golovan)
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 520
2006-03-17 04:35:03 +00:00
Alexey Shchepin 7278a606a8 * src/ejabberd_c2s.erl: Bugfix
SVN Revision: 518
2006-03-16 01:02:44 +00:00
Alexey Shchepin d837cb9e8d * src/ejabberd_c2s.erl: Bugfix
* src/ejabberd_auth_odbc.erl: Bugfix

SVN Revision: 515
2006-03-05 04:55:43 +00:00
Alexey Shchepin 90618de7be * src/ejabberd_update.erl: Support for run-time ejabberd updating
(not completed)
* src/ejabberd_c2s.erl: Added 'update_info' module attribute for
testing ejabberd_update

SVN Revision: 493
2006-01-27 05:00:27 +00:00
Alexey Shchepin efacb0ad66 * src/ejabberd_c2s.erl: Remove top-level xmlns from incoming
stanzas
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_service.erl: Likewise

SVN Revision: 492
2006-01-25 00:35:12 +00:00
Alexey Shchepin 976a616662 * src/ejabberd_c2s.erl: Better error handling for stream
compression support (thanks to Sergei Golovan)

SVN Revision: 491
2006-01-24 22:52:23 +00:00
Alexey Shchepin a4caafeb72 * src/ejabberd_sm.erl: Partially rewritten to work more
efficiently and avoid race conditions
* src/ejabberd_c2s.erl: Likewise

* src/mod_irc/mod_irc_connection.erl: Cleanup

SVN Revision: 488
2006-01-23 23:13:06 +00:00
Alexey Shchepin 568909d5bb * src/aclocal.m4: Updated for zlib support
* src/configure.ac: Likewise

* src/mod_muc/mod_muc_room.erl: Weakened presence filtering, added
warning in non-anonymous rooms, room destroying updated to latest
JEP-0045, added a number of occupants and room name in room's
disco#info reply, miscellaneous internal changes (thanks to Sergei
Golovan)

* src/mod_muc/mod_muc.erl: Better support for nick unregistration
(thanks to Sergei Golovan)

* src/ejabberd_zlib/ejabberd_zlib.erl: Zlib support (thanks to
Sergei Golovan)
* src/ejabberd_zlib/ejabberd_zlib_drv.c: Likewise
* src/ejabberd_zlib/Makefile.in: Likewise
* src/ejabberd_c2s.erl: Stream compression support (JEP-0138)
* src/ejabberd_receiver.erl: Likewise

* src/mod_disco.erl: Don't split node name before calling hooks
(thanks to Sergei Golovan)

* src/mod_configure.erl: Support for configuration using ad-hoc
commands (thanks to Sergei Golovan)

* src/mod_announce.erl: Support for sending announce messages
using ad-hoc commands (thanks to Sergei Golovan)

* src/mod_adhoc.erl: Ad-hoc support (JEP-0050) (thanks to Magnus
Henoch)
* src/adhoc.erl: Likewise
* src/adhoc.hrl: Likewise

* src/jlib.hrl: Updated (thanks to Sergei Golovan)

* src/gen_mod.erl: Added function is_loaded/2 (thanks to Sergei
Golovan)

* src/ejabberd_service.erl: Changed error message on handshake
error (thanks to Sergei Golovan)

* src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan)

SVN Revision: 486
2006-01-19 02:17:31 +00:00
Alexey Shchepin 6bb510d99e * src/ejabberd_service.erl: Bugfix
* src/ejabberd_receiver.erl: Rewritten to use {active, once} mode
for socket
* src/ejabberd_c2s.erl: Update
* src/ejabberd_listener.erl: Likewise
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_s2s_out.erl: Likewise
* src/ejabberd_service.erl: Likewise
* src/shaper.erl: Likewise
* src/tls/tls.erl: Likewise
* src/web/ejabberd_http.erl: Likewise

SVN Revision: 483
2006-01-13 01:55:20 +00:00
Alexey Shchepin f765d7f612 * src/ejabberd_c2s.erl: Send stream error when connection is
replaced (thanks to Maxim Ryazanov)

SVN Revision: 440
2005-11-22 18:00:56 +00:00
Alexey Shchepin 719cd49e59 * src/ejabberd_config.erl: Support for per host certificates
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_s2s_out.erl: Likewise
* src/ejabberd.cfg.example: Updated

* src/ejabberd_s2s_in.erl: Fixed id-on-xmppAddr processing

SVN Revision: 432
2005-11-05 21:15:53 +00:00
Alexey Shchepin 9e88ecc1d1 * src/ejabberd_c2s.erl: Updated to work correctly with
mod_vcard_odbc

SVN Revision: 419
2005-10-15 02:45:26 +00:00
Alexey Shchepin a9e3b76bed * src/ejabberd_c2s.erl: Processing of jabber:iq:register totally
moved to mod_register.erl (thanks to Sergei Golovan)
* src/mod_register.erl: Likewise

* src/win32/ejabberd.nsi: Added two pictures in installer (thanks
to Maxim Ryazanov)
* src/win32/ejabberd_header.bmp: Likewise
* src/win32/ejabberd_intro.bmp: Likewise

* src/web/ejabberd_web_admin.erl: Fixed spelling of word
"authentication"
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 375
2005-07-14 22:28:21 +00:00
Alexey Shchepin 3202705ad6 * src/mod_register.erl: Bugfix
* src/mod_vcard.erl: Bugfix

* src/ejabberd_app.erl: Updated to allow different authentication
methods for different virtual hosts
* src/ejabberd_auth.erl: Likewise
* src/ejabberd_auth_external.erl: Likewise
* src/ejabberd_auth_internal.erl: Likewise
* src/ejabberd_auth_ldap.erl: Likewise
* src/ejabberd_auth_odbc.erl: Likewise
* src/cyrsasl.erl: Likewise
* src/cyrsasl_digest.erl: Likewise
* src/cyrsasl_plain.erl: Likewise
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_config.erl: Likewise
* src/extauth.erl: Likewise
* src/mod_last_odbc.erl: Likewise
* src/mod_offline_odbc.erl: Likewise
* src/mod_roster_odbc.erl: Likewise
* src/odbc/ejabberd_odbc.erl: Likewise
* src/odbc/ejabberd_odbc_sup.erl: Likewise

SVN Revision: 374
2005-07-13 03:24:13 +00:00
Alexey Shchepin 4098c3ecba * (all): Enhanced virtual hosting support
SVN Revision: 370
2005-06-20 03:18:13 +00:00
Alexey Shchepin 7cb79cd482 * src/ejabberd_c2s.erl: Fixed starttls_required behaviour for
legacy connections (thanks to Brian Campbell)

SVN Revision: 345
2005-05-09 19:12:41 +00:00
Alexey Shchepin e46b28f27f Cleanup
SVN Revision: 309
2005-04-17 21:39:41 +00:00
tmallard 374446f847 Merged the Process One contributions ( Virtual Hosting )
SVN Revision: 307
2005-04-17 18:08:34 +00:00
Alexey Shchepin e23e473012 * src/ejabberd_c2s.erl: Send new id for each new stream inside one
session (thanks to Maxim Ryazanov)

* src/tls/tls_drv.c: Now reads all certificates from certificate
file instead of reading only first one (thanks to Karl-Johan
Karlsson)

* examples/transport-configs/init-scripts/jabber-gg-transport:
Fixed typo (thanks to Sander Devrieze)

SVN Revision: 304
2005-04-09 21:03:42 +00:00
Alexey Shchepin 50bef3787a * src/mod_roster_odbc.erl: Roster support via ODBC (not completed)
* src/ejabberd_auth_internal.erl: Added remove_user hook
* src/ejabberd_auth_odbc.erl: Likewise
* src/mod_roster.erl: Use remove_user hook
* src/mod_offline.erl: Likewise
* src/mod_offline_odbc.erl: Likewise
* src/mod_last.erl: Likewise
* src/mod_last_odbc.erl: Likewise
* src/mod_vcard.erl: Likewise
* src/mod_private.erl: Likewise

* src/mod_roster.erl: Added hooks for functions exported by
mod_roster
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd_sm.erl: Likewise
* src/mod_privacy.erl: Likewise
* src/mod_last.erl: Likewise
* src/mod_last_odbc.erl: Likewise

SVN Revision: 294
2004-12-19 20:47:35 +00:00
Alexey Shchepin da58d568b1 * src/web/ejabberd_web_admin.erl: Changed type of password field
to "password"

* src/jlib.hrl: More stream error defines (thanks to Sergei
Golovan)

* src/ejabberd_c2s.erl: Support for starttls_required option
(thanks to Sergei Golovan)

* src/mod_muc/mod_muc_room.erl: Fixed mistake in case condition
(thanks to Sergei Golovan)

* src/xml_stream.erl: Added function parse_element/1

* src/expat_erl.c: Added PARSE_FINAL_COMMAND

SVN Revision: 289
2004-12-05 20:54:55 +00:00
Alexey Shchepin 2f7f3d9b00 * src/aclocal.m4: Fixed headers detecting in AM_WITH_OPENSSL
(thanks to Leif Johansson)

* src/ejabberd_auth.erl: Added support for ldap_rootdn and
ldap_password options (thanks to Stefan de Konink)
* src/mod_vcard_ldap.erl: Likewise

* src/ejabberd_router.erl: Now possible to route packet via
function call instead of message sending
* src/ejabberd_sm.erl: Added function route/3, use it in route
table
* src/ejabberd_local.erl: Likewise
* src/ejabberd_s2s.erl: Likewise

* (all): Fixed spelling of word "authentication"

* src/*/Makefile.in: Replaced erlc with @ERLC@

SVN Revision: 285
2004-11-05 21:14:31 +00:00
Alexey Shchepin 4e7e67c8b5 * src/jlib.hrl: Added namespace for iq-register stream feature
* src/ejabberd_c2s.erl: Send iq-register feature

* src/ejabberd_config.erl: Config file can be configured from the
command line (thanks to Mickael Remond)

* src/web/ejabberd_http.erl: Added SSL support (thanks to Sergei
Golovan)

* src/msgs/*.msg: Updated (thanks to Sergei Golovan)

* src/jlib.hrl: Updated error codes (thanks to Sergei Golovan)
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 266
2004-09-25 20:52:20 +00:00
Alexey Shchepin 6db9c2630d * src/mod_muc/mod_muc_room.erl: Send password in room invitation
(thanks to Sergei Golovan)

* src/mod_disco.erl: Added registration of sm features and nodes
(thanks to Sergei Golovan)
* src/mod_vcard.erl: Register vcard-temp feature (thanks to Sergei
Golovan)

* src/jlib.erl: Added functions now_to_utc_string/1,
now_to_local_string/1, and datetime_string_to_timestamp/1 (thanks
to Sergei Golovan)
* src/mod_muc/mod_muc_room.erl: Use time parsing functions from
jlib (thanks to Sergei Golovan)

* ejabberd/src/mod_pubsub/mod_pubsub.erl: Bugfix (thanks to
Mickael Remond)

* src/mod_pubsub/mod_pubsub.erl: Bugfix

SVN Revision: 265
2004-09-17 19:52:59 +00:00
Alexey Shchepin d77a936b32 * src/ejabberd_c2s.erl: Bugfix in resend_offline_messages/1
* src/mod_announce.erl: New module to manage announce messages
(thanks to Sergei Golovan)

* src/ejabberd_local.erl: Moved processing of announce messages to
mod_announce (thanks to Sergei Golovan)

* src/ejabberd_c2s.erl: Added several hooks

* src/ejabberd_hooks.erl: Fixed run_fold (thanks to Sergei
Golovan)

* src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan)

* doc/guide.tex: Updated (thanks to Sergei Golovan)

SVN Revision: 256
2004-08-12 22:34:19 +00:00
Alexey Shchepin 357554265e * src/ejabberd_c2s.erl: Use resend_offline_messages_hook to fetch
offline messages
* src/mod_offline.erl: Likewise

* src/mod_offline.erl: Added table locking in
remove_old_messages/1

* src/ejabberd_sm.erl: Use offline_message_hook to store offline
messages
* src/mod_offline.erl: Likewise

* src/ejabberd_hooks.erl: Hooks support
* src/ejabberd_sup.erl: Added ejabberd_hooks

* doc/guide.tex: Updated

* src/ejabberd.cfg.example: Updated

* src/ejabberd_c2s.erl: Changed TLS options (thanks to Sergei
Golovan)

SVN Revision: 255
2004-08-08 19:07:55 +00:00
Alexey Shchepin 73d7e1161e * src/tls/tls.erl: Added recv_data/2 function
* src/jlib.erl: Added NS_TLS macro

* src/ejabberd_receiver.erl: Support for STARTTLS
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 252
2004-08-01 20:12:20 +00:00
Alexey Shchepin 76f00658f2 * src/tls/tls_drv.c: Added freeing of SSL stuff
* src/xml_stream.erl: Added start/2 function
* src/ejabberd_receiver.erl: Now using xml_stream:start/2

SVN Revision: 250
2004-07-28 20:08:53 +00:00
Alexey Shchepin 4b2919c207 * src/tls/: Library for TLS support (not completed)
* src/ejabberd_auth.erl: Now uses two LDAP connections

* src/ejabberd_c2s.erl: Return resource on get_presence request
(thanks to Mickael Remond)

* src/mod_configure2.erl: Bugfix (thanks to Sergei Golovan)

* src/msgs/ua.msg: New Ukrainian translation (thanks to usercard)

* src/msgs/nl.msg: Updated (thanks to Sander Devrieze)

SVN Revision: 247
2004-07-25 21:27:56 +00:00
Alexey Shchepin a846fe815c * src/mod_last.erl: Supprot for storing status from latest
unavailable presence (thanks to Sergei Golovan)
* src/ejabberd_sm.erl: Likewise
* src/ejabberd_c2s.erl: Likewise

* src/mod_vcard.erl: Minor update (thanks to Sergei Golovan)

* src/mod_register.erl: Added "access" option (thanks to Sergei
Golovan)
* src/mod_irc/mod_irc.erl: Likewise
* src/ejabberd.cfg.example: Updated
* src/win32/ejabberd.cfg: Likewise

* src/mod_privacy.erl: Fixed module stopping (thanks to Sergei
Golovan)
* src/mod_private.erl: Likewise

* src/gen_mod.erl: Added function get_module_opt/3 (thanks to
Sergei Golovan)

* src/ejabberd_local.erl: Minor fix (thanks to Sergei Golovan)

* doc/guide.tex: Updated (thanks to Sergei Golovan)

SVN Revision: 244
2004-07-11 20:51:54 +00:00
Alexey Shchepin d2eab0d535 * doc/guide.tex: Updated
* src/msgs/fr.msg: Updated (thanks to Sergei Golovan)

* src/mod_irc/mod_irc.erl: Added handler for disco items requests
(thanks to Sergei Golovan)

* src/mod_vcard.erl: Added option for JUD disabling (thanks to
Sergei Golovan)

* src/mod_configure2.erl: Fixed module stopping (thanks to Sergei
Golovan)
* src/mod_last.erl: Likewise
* src/mod_privacy.erl: Likewise
* src/mod_register.erl: Likewise
* src/mod_roster.erl: Likewise
* src/mod_vcard.erl: Likewise

* src/jd2ejd.erl: Added emergency catches (thanks to Sergei
Golovan)
* src/mod_last.erl: Likewise

* src/ejabberd_sm.erl: Removed needless call to
mod_disco:unregister_feature (thanks to Sergei Golovan)

* src/ejabberd_local.erl: Better support for mod_disco (thanks to
Sergei Golovan)
* src/mod_disco.erl: Likewise

* src/translate.erl: Suport for "default language" option (thanks
to Sergei Golovan)
* src/ejabberd_config.erl: Likewise
* src/ejabberd_c2s.erl: Likewise
* src/ejabberd.hrl: Added 'MYLANG' macros

* src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan)

* doc/guide.tex: Updated (thanks to Sergei Golovan)

* src/win32/ejabberd.cfg: Updated (thanks to Sergei Golovan)

SVN Revision: 241
2004-07-09 22:34:26 +00:00
Alexey Shchepin d35209561d * src/ejabberd_auth.erl: Minor fix
* src/ejabberd_c2s.erl: Fixed sending of presence to own resources

SVN Revision: 239
2004-07-05 21:51:23 +00:00
Alexey Shchepin b11b8caf9d * src/web/ejabberd_http.erl: Removed debugging output
* src/ejabberd_c2s.erl: Fixed processing of get_presence request
(thanks to Mickael Remond)

SVN Revision: 212
2004-03-10 21:54:54 +00:00
Alexey Shchepin ec182cbd60 * src/web/: Small HTTP server and admin web-interface to ejabberd
(not completed yet)
* src/ejabberd_sup.erl: Added HTTP processes supervisor

* src/ejabberd_c2s.erl: Added API to ask presence (thanks to
Mickael Remond)

* src/msgs/ru.msg: Updated (thanks to Sergei Golovan)

* src/mod_muc/mod_muc_room.erl: Updated date parser (thanks to
Sergei Golovan)

* src/mod_muc/mod_muc.erl: Added error descriptions (thanks to
Sergei Golovan)
* src/mod_muc/mod_muc_room.erl: Likewise

* src/mod_vcard.erl: Fixed vCard tag (thanks to Sergei Golovan)
* src/mod_irc/mod_irc.erl: Likewise
* src/mod_pubsub/mod_pubsub.erl: Likewise

* src/jlib.hrl: Added macros for errors with <text/> (thanks to
Sergei Golovan)

SVN Revision: 206
2004-03-02 21:16:55 +00:00