Compare commits

...

1045 Commits

Author SHA1 Message Date
Holger Weiss e87d332394 mod_carboncopy: Apply small code simplification 2015-02-12 00:14:57 +01:00
Holger Weiss bc7f93ad1e Check availability before carbon copying
Before generating a carbon copy for a resource, make sure it's actually
available.  This handles the case where, for some reason, the
'unset_presence_hook' wasn't called during logout of a resource.  Carbon
copies sent to that resource would otherwise be re-routed to another
resource (which might've received a copy of that message already).
2015-02-11 16:12:08 +01:00
Holger Weiss 9f822dd2b8 Don't crash if 'request_path' has unexpected type 2015-02-11 15:38:55 +01:00
Mickaël Rémond 3cba2cb1ec Fix incorrect Elixir name 2015-02-11 10:19:40 +01:00
Holger Weiss 834c680f97 Remove unused function clause in mod_carboncopy 2015-02-11 00:52:47 +01:00
Holger Weiss f075e92f08 Fix "make install" without Elixir support
Don't bail out during "make install" when ./configure was called without
"--enable-elixir".
2015-02-11 00:23:40 +01:00
Paweł Chmielowski fbb512cb5a Disable elixir support in travis tests 2015-02-10 18:22:54 +01:00
Mickaël Rémond 0f80523736 Merge pull request #429 from mremond/master
Add Elixir support to ejabberd
2015-02-10 18:10:27 +01:00
Mickaël Rémond 01e1f677c7 Add Elixir support to ejabberd 2015-02-10 17:56:44 +01:00
Holger Weiss cf929e730f Document EJABBERD_CONFIG_PATH in ejabberdctl.cfg 2015-02-10 00:15:06 +01:00
Holger Weiss 5c32ba49e2 README: Mention commands in the right order 2015-02-09 14:57:23 +01:00
Holger Weiss 2ccbff3b98 README: Mention how to create "configure" script 2015-02-09 14:31:59 +01:00
Holger Weiss d00f0fb1f4 Don't convert configuration values to strings 2015-02-09 01:08:01 +01:00
Holger Weiss 7fd7e53e4a Fix typo in debug message 2015-02-08 23:49:17 +01:00
Badlop ed502673f4 List all available commands in the guide (EJAB-1735) 2015-01-28 17:54:05 +01:00
Badlop 87d2eb5f9a Support for "> ." in YAML configuration files 2015-01-28 17:16:10 +01:00
Evgeny Khramtsov 0c501b760f Merge pull request #414 from weiss/fix-function-specs
Fix a few jlib function specifications
2015-01-23 16:44:48 +03:00
Holger Weiss 0a047d790f Fix a few function specifications 2015-01-23 00:42:18 +01:00
Christophe Romain c4d17d939d Fix integer parameter which can be set to 0 2015-01-22 12:40:27 +01:00
Evgeny Khramtsov 561025ba32 Merge pull request #413 from weiss/fix-timestamp-overflow
Fix timestamp formatting
2015-01-22 11:00:41 +03:00
Badlop 15e77e9c0f New command to reload config (EJAB-1140) 2015-01-21 15:18:46 +01:00
Christophe Romain 120e581865 Fix missing copyright dates to 2015 (EJAB-1733) 2015-01-21 14:52:37 +01:00
Holger Weiss 528aabf49c Increment number of seconds on timestamp overflow
Increment the number of seconds and set the fractional part to zero if
the latter is too large.
2015-01-21 11:20:26 +01:00
Holger Weiss 18d9f18642 Don't match integer() against float() value 2015-01-21 11:06:06 +01:00
Nathan Bruning a983df4848 Fix overflow in XEP-0203 delay: if microseconds exceeded 999499, *** was put in the formatted timestamp 2015-01-21 01:10:41 +01:00
Christophe Romain 0559edd1cd Merge pull request #410 from weiss/enable-transient-supervisors
Enable transient supervisors by default
2015-01-20 13:16:10 +01:00
Holger Weiss 2683b340ae Cosmetic changes for "./configure --help" output 2015-01-20 12:32:22 +01:00
Holger Weiss cc7b68b7c5 Enable transient supervisors by default
Some features (e.g., "ejabberdctl incoming_s2s_number") don't work with
transient supervisors disabled.
2015-01-20 11:50:11 +01:00
Evgeny Khramtsov 104009b3a9 Merge pull request #409 from hamano/scram-stringprep-checking
Scram stringprep checking(correct fix)
2015-01-19 15:23:47 +03:00
HAMANO Tsukasa e01eb734b4 correct fix for #396 2015-01-19 16:00:18 +09:00
HAMANO Tsukasa cb57cfa1a6 correct fix for #396 2015-01-19 15:25:58 +09:00
Badlop 146adce3d6 Update the Guide about using access_commands in YAML/CFG files 2015-01-15 20:00:35 +01:00
Badlop 2c4647a980 Fix binaries when ejabberd_ctl passes auth details 2015-01-15 20:00:06 +01:00
Badlop 7690320f0f Fix access_commands option in ejabberd_xmlrpc, now it works 2015-01-15 17:39:12 +01:00
Evgeniy Khramtsov 4575649e10 Get rid of asn1rt calls 2015-01-15 14:51:20 +03:00
Evgeniy Khramtsov d53a54d900 Ignore warnings_as_errors everywhere 2015-01-15 13:49:24 +03:00
Evgeny Khramtsov 479da33092 Merge pull request #400 from toopay/patch-clarity-cleanup
Fix spec comment and remove useless case block
2015-01-09 19:14:53 +03:00
Taufan Aditya f650fc83ae Fix spec comment and remove useless case block 2015-01-09 22:19:46 +07:00
Evgeny Khramtsov 17a7844e40 Merge pull request #399 from toopay/patch-cleanup-unused-vars
Fix unused vars warning
2015-01-08 21:47:20 +03:00
Taufan Aditya 864e113256 Fix unused vars warning 2015-01-09 01:00:26 +07:00
Badlop e7e8f2f63a Update some RFC links (EJAB-1728) 2015-01-08 18:18:17 +01:00
Badlop 3063a84fe2 Update compilation from git (github #397) 2015-01-08 17:53:25 +01:00
Badlop 5a35405cd5 Update copyright dates to 2015 (EJAB-1733) 2015-01-08 17:34:43 +01:00
Evgeny Khramtsov 4ef2d08456 Merge pull request #396 from hamano/scram-stringprep-checking
checking stringprep in scram authentication
2015-01-08 11:02:23 +03:00
HAMANO Tsukasa ede5a353e8 checking stringprep in scram authentication 2015-01-08 14:12:05 +09:00
Badlop b88fa6f617 Fix missing presences when adding shared groups (Github PR#99, thanks to Bokner) 2015-01-07 13:11:53 +01:00
Badlop 3882c4d514 Fix binaries in command ejabberdctl stop_kindly 2015-01-07 11:44:04 +01:00
badlop d24dc4e9c8 Merge pull request #383 from weiss/fix-shutdown
Give temporary processes a little time to stop cleanly
2015-01-07 11:42:22 +01:00
badlop afaf68159d Merge pull request #395 from weiss/fix-turn-example
Fix example: turn_ip must be specified as string
2015-01-04 12:06:17 +01:00
Holger Weiss a7f578089a Fix example: turn_ip must be specified as string 2015-01-04 00:55:00 +01:00
Evgeny Khramtsov 173d9761ca Merge pull request #387 from weiss/fix-captcha-without-proto
Fix ejabberd_captcha's listener parsing
2014-12-24 19:16:02 +03:00
Holger Weiss 9dc9d75502 Fix ejabberd_captcha's listener parsing
If the "captcha_host" is specified without "http://" or "https://"
prefix, ejabberd_captcha tries to figure out the protocol automatically.
Fix the code that parses the listener configuration in order to do that.
2014-12-24 00:35:22 +01:00
Holger Weiss 06db65e108 Give temporary processes time to stop cleanly
Allow temporary processes to perform some final actions when shutting
down.  For example, moc_muc_room:terminate/3 fails to send 'unavailable'
presence to the room participants when killed immediately.
2014-12-21 21:03:22 +01:00
Jerome Sautret cc958f7787 Fix upgrade of PubSub mnesia tables from older ejabberd version. 2014-12-18 11:51:28 +01:00
Evgeny Khramtsov 8781c8346b Merge pull request #379 from weiss/polish-readme
Polish the README file a bit
2014-12-17 18:36:05 +03:00
Holger Weiss ad4b41730e Apply various cosmetic changes to README file 2014-12-16 22:14:36 +01:00
Christophe Romain 5935b4e104 improve readability of links on github page 2014-12-15 10:52:47 +01:00
Christophe Romain d1f09a29b9 improve README adding feature list 2014-12-15 10:26:57 +01:00
Evgeny Khramtsov df88d9f2e5 Merge pull request #377 from weiss/new-timestamps
Add timestamps to stanzas resent from stream management queue
2014-12-13 09:42:30 +03:00
Holger Weiss 466278fde1 Let jlib use "B" instead of "w" to format integers
As a small optimization, use io:format's "B" control sequence to format
integers.  We don't need to let Erlang figure out the data type if we
already know it.
2014-12-12 23:50:03 +01:00
Holger Weiss 0a19dac4fd Add fractions of seconds to <delay/> timestamps
Include fractions of a second with XEP-0203 <delay/> timestamps, as
specified in XEP-0082.

	Old timestamp: 2014-05-19T11:55:00Z
	New timestamp: 2014-05-19T11:55:00.123Z
2014-12-11 23:11:35 +01:00
Christophe Romain 7e6d310fe4 include static versions of deps in rebar.config/script (thanks to Holger Weiß)(EJAB-1730) 2014-12-11 15:21:58 +01:00
Evgeny Khramtsov ffe3ea8917 Merge pull request #374 from weiss/fix-muc-log-config
mod_muc_log: Fix configuration parsing
2014-12-08 22:56:20 +03:00
Holger Weiss 455039ae69 mod_muc_log: Fix configuration parsing
Fix mod_muc_log's parsing of the "file_permissions" option.

Resolves #373.
2014-12-08 15:51:06 +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
Evgeny Khramtsov 865509757c Merge pull request #366 from weiss/remove-unused-field
Remove unused field from ejabberd_c2s #state
2014-11-26 02:42:00 +03:00
Holger Weiss 2cb16bc509 Remove unused field from c2s #state 2014-11-26 00:15:19 +01:00
Evgeny Khramtsov 00dfcc1e10 Merge pull request #350 from flygoast/master
Used current working home as base directory to config relative path.
2014-11-25 14:24:37 +03:00
Evgeny Khramtsov 4163626844 Merge pull request #365 from weiss/csi-config
Fix mod_client_state's configuration parsing
2014-11-25 14:21:18 +03:00
Evgeny Khramtsov f60c721f84 Merge pull request #364 from weiss/copy-normal-messages
Also carbon-copy messages of type "normal"
2014-11-25 14:21:06 +03: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
Evgeny Khramtsov 6b916e7a04 Merge pull request #354 from weiss/pep-privacy
Respect privacy lists for incoming PEP messages
2014-11-25 14:20:01 +03:00
Evgeny Khramtsov 6279c3fd8d Merge pull request #352 from weiss/no-last-pep-duplicates
Don't duplicate last published PEP items
2014-11-25 14:19:53 +03:00
Holger Weiss 6900a41e7d Fix mod_client_state's configuration parsing
Don't log an "invalid value" message when "queue_presence" or
"drop_chat_states" is set to "false".
2014-11-25 12:05:09 +01:00
Holger Weiss a456482e2f Also carbon-copy messages of type "normal"
It makes no sense to restrict carbon-copying to "chat" messages.
XEP-0280 is expected to be updated accordingly.
2014-11-24 22:37:14 +01:00
Holger Weiss 30687c40ef Don't route PEP error messages to clients 2014-11-24 21:19:32 +01: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
badlop b85357d280 Merge pull request #223 from kaLaJengkinG/patch-1
Update id.msg
2014-11-24 11:49:26 +01:00
Evgeny Khramtsov 946b64e166 Merge pull request #361 from weiss/parse-ldap-dn-filter
Fix parsing of "ldap_dn_filter" option
2014-11-22 10:36:21 +03:00
Holger Weiss 46d035c142 Fix parsing of "ldap_dn_filter" option 2014-11-22 01:33:23 +01:00
Evgeny Khramtsov 982215d644 Merge pull request #360 from lbanders/master
Fix for ejabbed bug #359 - now strings are formatted correctly.
2014-11-20 13:45:27 +03:00
Leif Bredgaard Honore 5afa1f6ade Fix for ejabbed bug #359 - now strings are formatted correctly. 2014-11-20 14:21:51 +04:00
Holger Weiss c566b1d01e Respect privacy lists for incoming PEP messages 2014-11-18 01:25:12 +01:00
Holger Weiss 84c227e6ae Don't duplicate last published PEP items
When a contact becomes available, usually both the 'caps_update' hook
and the 'presence_probe_hook' are called.  For remote contacts, both
hooks triggered PEP notifications, so each item was sent twice.  Fix
this by ignoring the 'presence_probe_hook' for remote contacts.
2014-11-18 01:13:22 +01:00
Evgeny Khramtsov ab12270837 Merge pull request #351 from weiss/floating-muc-intervals
Support floating point message/presence intervals
2014-11-16 12:35:21 +03:00
Holger Weiss 3b96525550 Support floating point message/presence intervals
Let mod_muc support floating point values for "min_message_interval" and
"min_presence_interval", as documented in the guide.
2014-11-15 22:35:56 +01:00
Gu Feng 62ccf1cf0e Used current working home as base directory to config relative path.
When a config relative path specified, get_absolute_path would not
return an absolute path. The patch fixed it using current working
home as base directory.

Signed-off-by: Gu Feng <flygoast@126.com>
2014-11-16 00:09:52 +08: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
Evgeny Khramtsov e770d3174d Merge pull request #346 from weiss/fix-type
Cosmetic fix: Use correct type for initial c2s #state.user value
2014-11-14 21:22:46 +03:00
Holger Weiss 2446b66016 Use correct type for initial c2s #state.user value 2014-11-14 15:32:48 +01:00
Holger Weiss f69d1ca282 Send last PEP items to remote subscribers
When a remote subscriber becomes available, send him the last published
PEP items, as we do for local subscribers.

However, the current implementation depends on a running ejabberd_c2s
process of the publisher to send items to remote subscribers.  So, for
those, the behavior is always like it is for local subscribers when
"ignore_pep_from_offline" is set to "true".
2014-11-14 01:33:11 +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 5cc30c3977 Move routing of last PEP items into new function
This doesn't change the behavior, but avoids some code duplication.
2014-11-14 00:16:13 +01:00
Holger Weiss 8efae1f05b ODBC: Sync last item notifications with mod_pubsub
A while back, mod_pubsub was modified to address EJAB-1456.  However,
the change was only partially applied to mod_pubsub_odbc.  This commit
adds the remaining part.
2014-11-14 00:02:59 +01:00
Evgeny Khramtsov de3e1c3508 Merge pull request #341 from sezuan/fix-kick-user-command
Fix kick_user command
2014-11-10 23:14:34 +03:00
Matthias Rieber 8184326eb9 Fix kick_user command 2014-11-10 20:53:00 +01:00
Evgeny Khramtsov f47a59de2f Merge pull request #340 from weiss/disable-mechanisms
New option: disable_sasl_mechanisms
2014-11-10 11:47:10 +03:00
Holger Weiss ee0ecd2419 New option: disable_sasl_mechanisms
The new "disable_sasl_mechanisms" option allows for restricting the list
of SASL mechanisms offered to the client.

Closes #339.
2014-11-10 01:10:04 +01:00
Evgeny Khramtsov 7138cc5633 Merge pull request #337 from weiss/fix-install-without-json
Fix "make install" without JSON support
2014-11-06 21:11:17 +03:00
Holger Weiss f95f22aea0 Fix "make install" without JSON support
Don't bail out during "make install" when ./configure was called without
"--enable-json".
2014-11-06 17:11:15 +01:00
Evgeny Khramtsov 25e5253f33 Merge pull request #335 from weiss/avoid-carbon-dups
Avoid duplicates of carbon copies
2014-11-05 23:17:45 +03:00
Holger Weiss 41dc1efde4 Avoid duplicates of carbon copies
When multiple resources have the same (highest) priority, the session
manager routes messages sent to their bare JID to each of these
resources.  When another resource has a lower priority but receives
carbon copies, make sure it won't receive multiple copies of such
messages.
2014-11-05 19:04:02 +01:00
Jerome Sautret 1d2efcc168 Add xref test to travis.
Conflicts:
	.travis.yml
2014-10-31 11:24:56 +01:00
Evgeniy Khramtsov dfb21e802e Fix race in CSI test case 2014-10-31 00:26:22 +03:00
Evgeniy Khramtsov 9a0b951855 Add tests for mod_vcard_xupdate 2014-10-30 23:57:15 +03:00
Christophe Romain 7819986ec0 Merge branch 'master' of github.com:processone/ejabberd 2014-10-30 17:44:04 +01:00
Christophe Romain 295681283a don't stop on error if jiffy.so symlink exists #309 2014-10-30 17:43:57 +01:00
Jerome Sautret 5b0d8b7776 Merge branch 'master' of github.com:processone/ejabberd 2014-10-30 17:19:37 +01:00
Jerome Sautret 1d2ef85b33 Clean up rebar script. 2014-10-30 16:51:01 +01:00
Christophe Romain b550f247e7 fix invalid path of jiffy.so on install #309 2014-10-30 15:47:33 +01:00
Jerome Sautret 565f064b15 Fix xref check when odbc driver is not used. 2014-10-30 15:21:42 +01:00
Jerome Sautret 7db4587eeb Ignore riak_object module call for xref check.
It's used in map-reduce function called from riak vm.
2014-10-30 15:21:35 +01:00
Jerome Sautret fad0d867fc Add xref Makefile target.
Conflicts:
	rebar.config.script
2014-10-30 15:21:25 +01:00
Evgeny Khramtsov 56dab7ddbe Merge pull request #328 from flygoast/master
Return an empty <vCard/> element in an IQ-result when no vCard exists.
2014-10-29 16:43:49 +03:00
Evgeniy Khramtsov 74b67fa0dc Add new option: store_empty_body 2014-10-27 14:18:09 +03:00
Evgeniy Khramtsov 067958d705 Merge branch 'master' of github.com:processone/ejabberd 2014-10-27 13:44:59 +03:00
Evgeniy Khramtsov dec1e1f67f Revert "fix mod_offline to store only chat messages with body xml element"
This reverts commit 436f0832c1.
2014-10-27 13:44:46 +03:00
Evgeny Khramtsov 76b9098a25 Merge pull request #330 from weiss/accept-newline
Accept trailing newline characters in Base64 strings
2014-10-25 21:17:56 +04:00
Holger Weiss 2399aba67d Accept trailing whitespace in Base64 strings 2014-10-25 02:05:02 +02:00
Gu Feng 94cdcd7b34 Return an empty <vCard/> element in an IQ-result when no vCard exists.
According to XEP-0054, if no vCard exists, the server MUST return a stanza
error (which SHOULD be <item-not-found/>) or an IQ-result containing an
empty <vCard/> element.

Signed-off-by: Gu Feng <flygoast@126.com>
2014-10-25 00:55:49 +08:00
Evgeniy Khramtsov bf33f74ef8 Get rid of a hyphen in VSN 2014-10-24 18:01:42 +04:00
Evgeny Khramtsov 8cf43cf750 Merge pull request #325 from weiss/auth-after-tls
Don't advertise authentication mechanisms too early
2014-10-23 14:56:15 +04: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
Evgeny Khramtsov 0b22277b11 Merge pull request #321 from weiss/fix-http-request-record
Use 'request' record definition from header file
2014-10-21 12:12:55 +04:00
Evgeny Khramtsov c7d9b46b6f Merge pull request #324 from liudanking/master
fix odbc_keepalive_interval configuration bug
2014-10-21 11:03:16 +04:00
liudan d2edcf1288 fix odbc keepalive interval bug 2014-10-21 10:05:44 +08:00
Evgeniy Khramtsov 160c9d7698 Remove append_host_config from ejabberd.yml.example 2014-10-20 12:59:30 +04:00
Evgeny Khramtsov ecd35f7ba8 Merge pull request #322 from weiss/xep-0198
XEP-0198: Abort immediately on stanza queue overflow
2014-10-17 11:56:25 +04: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 96d6aacede Use 'request' record definition from header file
This fixes a 'badrecord' crash in mod_http_fileserver.
2014-10-16 13:51:13 +02:00
Evgeny Khramtsov adaa067333 Merge pull request #317 from weiss/xep-0198
XEP-0198: Set #state.conn field on session resume
2014-10-13 20:38:15 +04:00
Evgeny Khramtsov 724a31fa13 Merge pull request #318 from weiss/remove-xmlrpc-dep
Remove "xmlrpc" dependency for "make rel"
2014-10-13 20:37:28 +04:00
Holger Weiss 1ccc0d8bcb XEP-0198: Set #state.conn field on session resume 2014-10-12 19:44:35 +02:00
Holger Weiss 3f3f64c217 Remove "xmlrpc" dependency for "make rel"
The "xmlrpc" library isn't used anymore.
2014-10-12 17:23:25 +02:00
Evgeny Khramtsov 97fa57c360 Merge pull request #316 from weiss/really-require-tls
Make sure "starttls_required" can't be bypassed
2014-10-12 11:05:49 +04: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
Evgeniy Khramtsov 4bbf16b21a Fix list unblocking when Riak is used as a backend 2014-10-10 11:38:13 +04:00
Evgeniy Khramtsov d87ca9fb7b Fix format of an XML-RPC response 2014-10-04 12:55:59 +04:00
Evgeniy Khramtsov 7b3209cc7f Switch to P1 implementation of XML-RPC 2014-10-04 12:49:33 +04:00
Evgeniy Khramtsov 1d782db84f Process XML-RPC requests via p1_xml and ejabberd_http 2014-10-04 12:49:12 +04:00
Evgeniy Khramtsov e109f352e3 Make directory creation more robust 2014-10-02 14:21:27 +04:00
Evgeny Khramtsov 6e63ee480e Merge pull request #310 from weiss/ignore-rel-dir
Let Git ignore the "rel/ejabberd" directory
2014-09-30 13:50:32 +04:00
Holger Weiss 90fb19797d Let Git ignore the "rel/ejabberd" directory 2014-09-30 11:35:58 +02:00
Evgeny Khramtsov 415936146b Merge pull request #303 from weiss/no-csi-if-unconfigured
Offer CSI stream feature only if mod_client_state is enabled
2014-09-26 13:16:28 +04: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
Evgeny Khramtsov ef89497d3f Merge pull request #307 from weiss/remove-invisible-presence
Remove invisible presence fields from c2s #state
2014-09-25 17:20:45 +04: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
Evgeny Khramtsov e49cf604e9 Merge pull request #302 from weiss/ldap-deref-aliases
Rename deref_aliases back to ldap_deref_aliases
2014-09-23 13:54:22 +04:00
Holger Weiss 61c8836740 Rename deref_aliases back to ldap_deref_aliases
The "ldap_deref_aliases" option has accidentally been renamed to
"deref_aliases".  Revert that change (but accept both names for a
while), so that the option name now matches the documentation again.
2014-09-23 11:31:44 +02:00
Evgeny Khramtsov 57dec40007 Merge pull request #301 from Iperity/master
Fix init script
2014-09-18 01:17:04 +04:00
Nathan Bruning 29a841d8c7 Fix init script: use getent to allow ejabberd user from external authentication sources (LDAP) 2014-09-17 21:28:50 +02:00
Evgeny Khramtsov c18413c52b Merge pull request #300 from weiss/resend-if-offline
XEP-0198: Support "resend_on_timeout: if_offline"
2014-09-17 09:31:09 +04: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
Evgeny Khramtsov 19446967fa Merge pull request #299 from sjmackenzie/processone
added p1_utils to reltool.config resolving treap:empty() undefined error
2014-09-15 09:31:27 +04:00
stewart 8d9a9228d9 added p1_utils to reltool.config resolving treap:empty() undefined error 2014-09-15 04:06:07 +00:00
Evgeniy Khramtsov 72fd353988 Avoid generation of excessive records 2014-09-13 22:54:07 +04:00
Evgeny Khramtsov c90786527e Merge pull request #298 from weiss/csi
Add support for XEP-0352: Client State Indication (CSI)
2014-09-12 21:55:10 +04:00
Holger Weiss 1a320baad8 Add tests for Client State Indication support 2014-09-11 18:18:20 +02:00
Holger Weiss b8c98232b8 Support XEP-0352: Client State Indication 2014-09-11 17:44:29 +02:00
Evgeny Khramtsov f723c00762 Merge pull request #297 from weiss/remove-configure-flag
Travis CI: Remove unused configure flag
2014-09-11 19:35:50 +04:00
Holger Weiss 4d59f677a9 Travis CI: Remove unused configure flag
The --disable-http flag no longer exists.
2014-09-10 21:04:43 +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
Evgeny Khramtsov f0887e45b8 Merge pull request #295 from weiss/xep-0198
XEP-0198: Change state immediately when gen_tcp:send/2 returns failure
2014-09-07 07:27:07 +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
Christophe Romain 646b445515 allow guide not to be compiled for install 2014-09-05 19:16:13 +04:00
Evgeniy Khramtsov 50d7046517 Test MUC nick registration 2014-09-03 21:30:44 +04:00
Evgeniy Khramtsov c3eaa29f70 Parse x:data in jabber:register 2014-09-03 21:30:27 +04:00
Evgeniy Khramtsov ac2ba399a9 Make sure x:data form possesses 'type' attribute 2014-09-03 21:28:55 +04: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 9be9949dab Remove useless -include() 2014-08-27 13:18:29 +04:00
Evgeniy Khramtsov 0f1d95a074 Ban the IP if there are too many failed authentications 2014-08-27 13:18:22 +04:00
Evgeniy Khramtsov 2430e6691b Add mod_fail2ban 2014-08-27 13:17:56 +04:00
Evgeniy Khramtsov bfd028beea Recompile the xmpp_codec using updated XML generator 2014-08-27 12:55:31 +04:00
Evgeny Khramtsov 2cb0f92fe6 Merge pull request #293 from weiss/fix-comment
Fix a comment in ejabberd_hooks
2014-08-27 12:48:58 +04:00
Evgeny Khramtsov 2ae7d0a122 Merge pull request #292 from weiss/fix-xep-reference
Fix an XEP reference in the guide
2014-08-27 12:48:34 +04:00
Holger Weiss f1ad6f017b Fix a comment in ejabberd_hooks 2014-08-26 01:04:15 +02:00
Holger Weiss c658984531 Fix an XEP reference in the guide 2014-08-26 01:01:11 +02:00
Evgeny Khramtsov 191eeed7c9 Merge pull request #287 from vesvalo/master
Fix return value of mod_shared_roster:delete_group.
2014-08-21 16:32:31 +04:00
vesvalo 01a3c1c2e1 Fix return value of mod_shared_roster:delete_group. Current one is not compatible with mod_admin_extra. 2014-08-21 15:13:43 +04:00
Evgeny Khramtsov 8e3a49d369 Merge pull request #286 from vesvalo/fix_pep_odbc_publishing
fix 404 on pep first publishing with odbc
2014-08-21 13:29:55 +04:00
vesvalo c48b7f272b fix 404 on pep first publishing with odbc 2014-08-21 11:23:58 +04:00
Evgeny Khramtsov 4a9417c501 Merge pull request #284 from weiss/infinity-vs-unlimited
Guide: For consistency, use 'infinity' everywhere
2014-08-21 01:26:22 +04:00
Holger Weiss 72049e5323 Guide: For consistency, use 'infinity' everywhere 2014-08-20 20:43:38 +02:00
Evgeny Khramtsov 33e0bf1c19 Merge pull request #283 from weiss/allow-unlimited-ack-queue
Support "max_ack_queue: infinity"
2014-08-20 17:47:04 +04:00
Evgeny Khramtsov 5ed7f10153 Merge pull request #282 from weiss/fix-muc-option-docs
Fix MUC option docs: "infinity", not "infinite"
2014-08-20 17:44:06 +04:00
Holger Weiss 2802b6cee2 Allow for "max_ack_queue: infinity", as documented 2014-08-20 12:53:26 +02:00
Holger Weiss 44828c54fe Fix MUC option docs: "infinity", not "infinite" 2014-08-20 12:26:03 +02:00
Evgeny Khramtsov ae0d31a8c9 Merge pull request #280 from weiss/store-persistent-muc-on-init
Store peristent MUC room during creation
2014-08-19 13:28:15 +04:00
Holger Weiss 7274dafe10 Store persistent MUC room during creation
Make sure persistent rooms are stored to the database.  Without this
change, a room got lost if the 'persistent' flag was handed over to
mod_muc:create_room/5 and the server was then restartet before any
activity took place in that room.
2014-08-19 11:12:51 +02:00
Evgeny Khramtsov bc2e26fecd Merge pull request #277 from weiss/xep-0198
XEP-0198: Create shorter session resume IDs
2014-08-15 19:15:32 +04: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
Evgeny Khramtsov 9484b11383 Merge pull request #276 from weiss/xep-0198
XEP-0198: Don't crash if the resume ID is incorrect
2014-08-15 10:49:59 +04: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
Evgeny Khramtsov 1b1d9b5a73 Merge pull request #269 from Iperity/master
Fix migration of pubsub nodes. Was deleting and re-creating all nodes on...
2014-08-15 03:20:36 +04:00
Evgeny Khramtsov 5836eb5bc2 Merge pull request #268 from benlangfeld/fix/ldap_filter_dnattributes_new_ejabberd
Set dnAttributes on when it's requested by a filter
2014-08-15 03:19:18 +04:00
Evgeniy Khramtsov 5c88f6423a Fix the deprecation warning to reflect YAML format 2014-08-12 14:26:15 +04:00
Evgeniy Khramtsov 56d61c2784 Do not call functions from ejabberd_riak directly 2014-08-12 14:25:54 +04:00
Evgeny Khramtsov 0917209711 Merge pull request #273 from gamenet/master
odb_queries patch return value of functions update and update_t in case of sql insert
2014-08-08 16:03:03 +04:00
vesvalo 8c22b154c9 Merge pull request #2 from vesvalo/master
fix mod_offline to store only chat messages with body xml element
2014-08-08 14:05:35 +04:00
vesvalo 436f0832c1 fix mod_offline to store only chat messages with body xml element 2014-08-08 13:57:27 +04:00
Nikolay Bondarenko 5d0de39127 Merge pull request #1 from vesvalo/master
Fix odbc update_t and update insert case return value
2014-08-08 13:39:44 +04:00
vesvalo 92f89e3d45 Fix odbc update_t and update insert case return value 2014-08-08 13:26:16 +04:00
Evgeny Khramtsov f91caf7108 Merge pull request #270 from weiss/log-s2s-in-auth
Log authentication method for incoming s2s connections
2014-08-05 16:51:51 +04:00
Holger Weiss 38c016a041 Log auth method for incoming s2s connections
Generate an [info] message that logs whether an incoming s2s connection
is authenticated using the SASL EXTERNAL mechanism or via Server
Dialback.  While at it, also mention whether TLS is enabled.
2014-08-05 14:10:32 +02:00
Nathan Bruning 4f63cb21c2 Fix migration of pubsub nodes. Was deleting and re-creating all nodes on each startup. 2014-08-03 21:03:16 +02:00
Evgeny Khramtsov 2e70c59471 Merge pull request #267 from weiss/replace-echo-calls
doc/Makefile: Replace non-portable echo(1) calls
2014-08-01 19:25:01 +04:00
Alexey Shchepin f00725dffb mod_offline now uses gen_server 2014-07-31 14:26:09 +04:00
Christophe Romain 4205108f30 typo fix on roster subscription (EJAB-1711) 2014-07-31 11:50:22 +02:00
Ben Langfeld 651de2ca8e Set dnAttributes on when it's requested by a filter 2014-07-29 15:22:54 -03:00
Holger Weiss e79290fb56 doc/Makefile: Replace non-portable echo(1) calls
The echo(1) behavior is system-dependent, the printf(1) behavior is not.
2014-07-28 22:54:09 +02:00
Evgeniy Khramtsov db3c469d4d Reorganize mod_announce test in order to avoid race 2014-07-28 13:42:50 +04:00
Evgeny Khramtsov 7d93463d31 Merge pull request #266 from weiss/remove-http
Remove "--enable-http" flag
2014-07-28 11:08:13 +04:00
Evgeny Khramtsov 5d79dff4f3 Merge pull request #265 from weiss/mention-starttls-required
Mention "starttls_required" option in sample configuration file
2014-07-28 11:06:59 +04:00
Evgeny Khramtsov 58fd56e6a2 Merge pull request #264 from weiss/su-without-p
ejabberdctl: Omit su(1)'s "-p" flag
2014-07-28 11:06:27 +04:00
Holger Weiss f1e6365ee1 Remove "--enable-http" flag
Specifying the "--enable-http" flag on the ./configure command line had
no effect.
2014-07-27 12:51:25 +02:00
Holger Weiss 4a02df8b6d Mention "starttls_required" option in ejabberd.yml
Closes #258.
2014-07-27 12:44:34 +02:00
Holger Weiss bee9ffd91e Apply minor improvement to ejabberd.yml comment 2014-07-27 11:54:30 +02:00
Holger Weiss 3e232952ea ejabberdctl: Omit su(1)'s "-p" flag
On Linux, su(1)'s "-p" flag makes sure the following environment
variables are preserved: $HOME, $SHELL, $USER, and $LOGNAME.  The flag
isn't portable, and since we don't set HOME=$SPOOLDIR anymore, there's
no reason to preserve these variables anyway.

Without "-p", we also don't need to set HOME=$INSTALLUSER_HOME, as su(1)
now does that for us.
2014-07-27 11:21:55 +02:00
Evgeniy Khramtsov c0001184fd Merge branch 'master' of github.com:processone/ejabberd 2014-07-27 13:06:46 +04:00
Evgeniy Khramtsov abeaac1c11 Add tests for mod_announce 2014-07-27 13:06:20 +04:00
Evgeny Khramtsov 6427d9398a Merge pull request #263 from weiss/fix-ejabberdctl-issues
Fix ejabberdctl issues
2014-07-24 20:56:32 +04:00
Evgeny Khramtsov 677b358a9a Merge pull request #262 from weiss/update-gitignore
Let Git ignore the "configure" script
2014-07-24 20:55:50 +04:00
Holger Weiss b997c4325a Let Git ignore the "configure" script 2014-07-24 17:50:43 +02:00
Holger Weiss 9c279f2e06 ejabberdctl: Remove outdated comment
The home directory is no longer set to $SPOOL_DIR.
2014-07-24 17:20:09 +02:00
Holger Weiss 46f01b962a ejabberdctl: Create home directory as root
If the $INSTALLUSER is not root, he will usually not have the necessary
permissions to create his home directory.
2014-07-24 17:16:47 +02:00
Evgeny Khramtsov 9db39a5e4c Merge pull request #261 from weiss/no-bash
doc/Makefile: Don't insist on using /bin/bash
2014-07-24 17:44:06 +04:00
Holger Weiss 43000d9ce4 ejabberdctl: Use $INSTALLUSER's home directory
Make sure ejabberdctl uses the $INSTALLUSER's .erlang.cookie file even
if the script was executed by root.
2014-07-24 15:25:28 +02:00
Holger Weiss 33368b7e5c doc/Makefile: Don't insist on using /bin/bash
Fix "make doc" for systems that don't have /bin/bash.  There's no
bash-specific code in doc/Makefile anymore.
2014-07-24 15:15:00 +02:00
Evgeniy Khramtsov a087af7060 Re-generate the XMPP codec using updated xml_gen 2014-07-24 10:35:17 +04:00
Evgeniy Khramtsov 3d3a4f7543 Fix events broadcasting via C2S 2014-07-22 19:42:49 +04:00
Evgeny Khramtsov 9ff3ce8bd1 Merge pull request #257 from weiss/fix-option-name
Fix "s2s_access" option name in documentation
2014-07-22 17:47:04 +04:00
Holger Weiss 4efca05149 Fix "s2s_access" option name in documentation 2014-07-22 15:06:19 +02:00
Christophe Romain f19e19e2b6 reflect correct default value un example documentation 2014-07-22 14:35:31 +02:00
Evgeniy Khramtsov 25676b43ed Add tests for session management 2014-07-22 14:00:48 +04:00
Christophe Romain 870d822f08 old release notes are not installed anymore 2014-07-21 17:58:14 +02:00
Christophe Romain 320abee110 apply pull request #250 to pubsub_odbc as well 2014-07-21 17:14:59 +02:00
Christophe Romain 0579fc80ec Merge pull request #250 from Iperity/master
Fix configuraton with custom nodetree plugin
2014-07-21 17:11:29 +02:00
Christophe Romain 08ff969896 html guide is now generated when building source tarball 2014-07-21 16:36:10 +02:00
Christophe Romain 40ef406ec7 remove bash dependency, fix EJABBERD_OPTS use 2014-07-21 15:25:16 +02:00
Christophe Romain 790201afc0 avoid incorrect release version string (EJAB-1695)
to do so, we remove configure script from repository.
it must be generated with autotools.
for developpers not using autotools, we include the configure script in
release source tarball, which in generated with correct version string.
2014-07-21 13:50:35 +02:00
Evgeniy Khramtsov f2003943db Add tests for mod_carboncopy 2014-07-21 09:08:54 +04:00
Evgeniy Khramtsov 014d61955c Move some namespaces definitions into header file 2014-07-21 08:32:26 +04:00
Evgeny Khramtsov c068712373 Merge pull request #254 from weiss/replace-bashism
Replace bash-specific syntax in ejabberdctl
2014-07-20 19:20:00 +04:00
Holger Weiss 467ccdffbd Replace bash-specific syntax in ejabberdctl
Use plain POSIX shell syntax to match ".yml" configuration file names.
This is also slightly more correct, as it matches ".yml" only at the
*end* of the file name.
2014-07-20 13:24:28 +02:00
Evgeny Khramtsov 48d7ec1a92 Merge pull request #253 from weiss/fix-config-comments
Apply small fixes to description of log rotation in ejabberd.yml.example
2014-07-20 12:42:20 +04:00
Holger Weiss 105b421418 Fix ejabberd.yml comment on overload protection 2014-07-20 07:36:24 +02:00
Holger Weiss 277fe5ab25 Fix ejabberd.yml comment on log rotation syntax 2014-07-20 07:29:45 +02:00
Evgeniy Khramtsov 744018425b Improve MUC test cases 2014-07-19 17:30:02 +04:00
Evgeniy Khramtsov 1f4e0c8aea Fix Record-Route signing 2014-07-17 20:30:36 +04:00
Paweł Chmielowski e0c9242dcf treap.erl was moved to p1_utils 2014-07-17 11:57:23 +02:00
Paweł Chmielowski 0456b78d87 Use p1_utils 2014-07-17 10:52:31 +02:00
Evgeniy Khramtsov 568068c79f Get rid of p1_mnesia file 2014-07-17 08:32:13 +04:00
Evgeniy Khramtsov b5c4fe6626 Change return type to reflect recent changes in p1_sip 2014-07-16 15:28:36 +04:00
Evgeniy Khramtsov 64205426bf Fix returned types 2014-07-16 10:33:49 +04:00
Evgeniy Khramtsov 89025eea39 Fix blocklist get 2014-07-16 07:43:24 +04:00
Evgeny Khramtsov 4a918c5b18 Merge pull request #251 from weiss/enable-riak-tests
Travis CI: Enable Riak tests
2014-07-15 22:56:55 +04:00
Holger Weiss 9a7c26eaa8 Travis CI: Enable Riak tests 2014-07-15 20:42:12 +02:00
Evgeniy Khramtsov eb803832b7 Remove unnecessary defaults from the xmpp_codec spec 2014-07-15 20:42:53 +04:00
Evgeniy Khramtsov 4ef0dd6997 Better Riak usage detection 2014-07-15 20:26:45 +04:00
Evgeniy Khramtsov b5f1b17926 Fix broken hooked functions 2014-07-15 19:22:33 +04:00
Evgeniy Khramtsov fd298521e2 Add mod_caps checks to the testing suite 2014-07-15 18:35:23 +04:00
Nathan Bruning 99c28ab4d6 Fix configuraton with custom nodetree plugin 2014-07-15 12:04:06 +02:00
Evgeniy Khramtsov 2d6a838905 Do not check for Erlang apps at configure time as it looks redundant 2014-07-14 08:29:57 +04:00
Evgeniy Khramtsov 792b5a24df Serialize records to proplists before storing then in Riak 2014-07-14 08:24:44 +04:00
Evgeny Khramtsov 19cc687928 Merge pull request #248 from mathiasertl/master
Move warnings inside check for $EJABBERD_BYPASS_WARNINGS, use variable for path
2014-07-11 15:45:29 +04:00
Mathias Ertl 86a6667122 Move warnings inside check for , use variable for path 2014-07-11 12:34:52 +02:00
Evgeniy Khramtsov 07501f8085 Re-generate the HTML documents 2014-07-10 19:07:09 +04:00
Evgeniy Khramtsov dd77236d75 Mention about Riak in yet another place 2014-07-10 15:34:09 +04:00
Evgeniy Khramtsov 926c9193e7 Try to bypass Riak tests by Travis CI 2014-07-10 14:45:54 +04:00
Evgeniy Khramtsov a5987633e0 Fix compile errors introduced by previous cherry picks 2014-07-10 14:16:33 +04:00
Evgeniy Khramtsov aa8dce9804 Re-generate the configure script 2014-07-10 13:59:11 +04:00
Evgeniy Khramtsov edfb5fc2f8 Add --enable-riak configure flag 2014-07-10 13:58:43 +04:00
Evgeniy Khramtsov 91fcdf9f6a Document Riak support 2014-07-10 13:55:49 +04:00
Evgeniy Khramtsov 54cfd5091f Check Riak connection before running the corresponding suite 2014-07-10 13:55:38 +04:00
Evgeniy Khramtsov 2fe8e0dea5 Make it possible to check Riak connection status 2014-07-10 13:55:24 +04:00
Evgeniy Khramtsov 9d62d13492 Don't forget to shutdown rooms before starting the testing suite 2014-07-10 13:55:08 +04:00
Evgeniy Khramtsov f40d5e4a89 Improve test suite explanation 2014-07-10 13:54:51 +04:00
Evgeniy Khramtsov c559c9425a Clear Riak data when initializing the testing suite 2014-07-10 13:54:17 +04:00
Evgeniy Khramtsov 6a73b96459 Fix roster versioning support when Riak backend is enabled 2014-07-10 13:54:06 +04:00
Evgeniy Khramtsov 538d4ffbd0 Fix case clause 2014-07-10 13:53:57 +04:00
Evgeniy Khramtsov c15dc01cff Improve Riak pool management 2014-07-10 13:52:29 +04:00
Evgeniy Khramtsov f1d0b05db5 Fixate Riak client library 2014-07-10 13:44:14 +04:00
Evgeniy Khramtsov a60dd672b7 Add Riak backend to the testing suit 2014-07-10 13:42:31 +04:00
Evgeniy Khramtsov e82219185b Add SQL to Riak converter 2014-07-10 13:29:01 +04:00
Evgeniy Khramtsov 0490c2f139 Improve Riak support 2014-07-10 13:26:37 +04:00
Alexey Shchepin a4b02c38db Updated riak support 2014-07-10 13:15:15 +04:00
Alexey Shchepin 47763c10e3 Preliminary Riak support 2014-07-10 13:04:39 +04:00
Evgeniy Khramtsov fc692ea512 Add start_module/2 2014-07-08 20:58:03 +04:00
Evgeniy Khramtsov 28479321bb Improve documentation of mod_sip 2014-07-07 09:40:20 +04:00
Evgeniy Khramtsov 2b8c4acd57 Rename options 2014-07-07 09:40:08 +04:00
Evgeniy Khramtsov ee40c0e9a7 Add new option support: always_record_route 2014-07-07 09:40:01 +04:00
Evgeny Khramtsov 9a55ffba7a Merge pull request #243 from matwey/master
Use -include_lib instead of -include for esip and p1_xml
2014-07-05 18:09:28 +04:00
Matwey V. Kornilov 50a73d1188 Use -include_lib instead of -include for esip and p1_xml
-include_lib is used in order to find deps. Rebar include magic is not required anymore.
Rebar uses deps as library directory.
2014-07-05 17:57:35 +04:00
Evgeniy Khramtsov 76ebebf2a0 Revert "Fix IQ XML generation."
This reverts commit 26a4d91297.
2014-07-05 17:53:45 +04:00
Jerome Sautret aba7150af1 Return MySQL error messages as binary. 2014-07-04 17:39:28 +02:00
Jerome Sautret 26a4d91297 Fix IQ XML generation. 2014-07-04 15:21:40 +02:00
Christophe Romain 9265720f92 add ability to rotate logs on given date condition 2014-07-02 23:46:54 +02:00
Evgeniy Khramtsov 273631c242 New option support: log_rotate_count 2014-07-02 14:59:05 +02:00
Evgeniy Khramtsov bb8a0f71e6 Support new options: log_rotate_size and log_rate_limit 2014-07-02 14:58:58 +02:00
Evgeniy Khramtsov ffdb39d269 Disable SASL error logger if lager is enabled 2014-07-02 14:58:46 +02:00
Badlop 8fae4748a1 mod_caps doesn't provide Mnesia export feature 2014-06-27 13:49:17 +02:00
Christophe Romain 643a31dcea let ejabberdctl explicitely use bash 2014-06-20 14:34:14 +02:00
Evgeny Khramtsov 31440a586c Merge pull request #238 from weiss/log-node-mismatch
Check for Mnesia node name mismatches on startup
2014-06-12 13:23:17 +04:00
Holger Weiss 1ef2dd45f3 Check for Mnesia node name mismatches
Log a proper error message if the node running ejabberd doesn't own the
Mnesia database.
2014-06-12 11:00:22 +02:00
Evgeniy Khramtsov b29615561c Change default flow timeout as recommended per the RFC 2014-06-12 09:30:10 +04:00
Evgeniy Khramtsov 7892b72bcb Don't forget to close socket of timed out flow 2014-06-12 09:30:04 +04:00
Evgeny Khramtsov 4b82a38cf7 Merge pull request #237 from weiss/log-config-path
Mention configuration file path in error messages
2014-06-11 18:31:41 +04:00
Holger Weiss c20acbf4d8 Mention configuration file path in error messages
If reading or parsing a YAML configuration fails, log the full path to
the configuration file (as we do for old-style ".cfg" files).
2014-06-11 15:03:33 +02:00
Evgeny Khramtsov e66899e68e Merge pull request #231 from hamano/case_clause_error_at_node_hometree_odbc
case_clause_error_at_node_hometree_odbc
2014-06-09 23:50:43 +04:00
Evgeniy Khramtsov 87f8c2ecd8 Don't stop roster table conversion on broken askmessage 2014-06-09 10:55:05 +04:00
Evgeniy Khramtsov 62be3bc111 Fix previous commit 2014-06-09 10:40:52 +04:00
Evgeniy Khramtsov c485aea48b Don't stop irc table conversion on broken JIDs 2014-06-09 10:36:42 +04:00
Evgeniy Khramtsov 6f4b4ad087 Ignore malformed parameters for mod_irc module 2014-06-07 07:45:36 +04:00
Evgeniy Khramtsov 3e8a0af6d1 Fix data convertion 2014-06-07 07:05:24 +04:00
Evgeniy Khramtsov 12ab5a749f Clean up all timers gracefully 2014-06-06 22:29:50 +04:00
Evgeniy Khramtsov ddfbca5830 Use a different timer for flow control 2014-06-06 13:53:13 +04:00
Evgeniy Khramtsov 9e72529544 SIP Outbound (RFC 5626) support 2014-06-06 09:36:45 +04:00
Christophe Romain 11aa51373a add missing format handler 2014-06-05 16:23:17 +02:00
Evgeny Khramtsov 5992582bc5 Merge pull request #232 from weiss/dont-drop-listen-options
Don't "forget" listener options
2014-06-04 23:37:13 +04:00
Holger Weiss e0e74a9d5e Don't "forget" listener options
If a listener is started or stopped via ejabberd_listener:add_listener/3
or ejabberd_listener:delete_listener/3, the configuration for all
listener modules is updated using the Module:transform_listen_option/2
function for each listener module that exports such a function.
However, for listener modules that don't provide that function (such as
ejabberd_stun), all but one option was dropped.  This is now fixed.

The issue could be triggered e.g. by enabling mod_proxy65 in the modules
section.
2014-06-04 20:54:26 +02:00
HAMANO Tsukasa cc228db337 e_clause error at node_hometree_odbc:get_items/3 2014-06-04 18:53:37 +09:00
Evgeniy Khramtsov c546ce2439 Reply to pings 2014-06-03 21:18:30 +04:00
Evgeniy Khramtsov fdda4d506f Always enable STUN at compile time 2014-06-03 20:54:39 +04:00
Evgeny Khramtsov 5de16493d1 Merge pull request #230 from weiss/fix-dependency-list
Fix the list of dependencies
2014-06-03 16:28:13 +04:00
Holger Weiss 2381a8d609 Remove exmpp from the list of dependencies
The XEP-0227 code no longer uses exmpp.

Thanks to Steve Gillespie for noting this.
2014-06-03 14:16:11 +02:00
Holger Weiss 39f1005006 Fix LibYAML version in the list of dependencies
Thanks to Steve Gillespie for reporting the error.
2014-06-03 13:00:17 +02:00
Evgeniy Khramtsov 6441c284e0 Don't add 'rport' paramater to 'Via' header 2014-06-02 20:46:29 +04:00
Evgeniy Khramtsov 0aea9c74bd Rename option 'route' to 'record_route' and add new option 'routes' 2014-06-02 10:16:34 +04:00
Evgeniy Khramtsov 9a0d77571d Add global static shared_key option 2014-06-01 14:20:09 +04:00
Evgeniy Khramtsov f446e7fc0b Sign 'Record-Route' in order to proxy unauthorized ACKs 2014-06-01 13:35:14 +04:00
Evgeniy Khramtsov b75b5ebeb2 Fix 'via' option lookup 2014-05-31 14:22:39 +04:00
Evgeniy Khramtsov d19903877d Add new option: route 2014-05-31 14:22:31 +04:00
Evgeny Khramtsov f271ea6eef Merge pull request #229 from weiss/no-carbons-to-sender
XEP-0280: Don't send v1 carbon copies back to the sender
2014-05-31 12:53:18 +04:00
Evgeniy Khramtsov c76201b6b4 Don't add 'Record-Route' header for mid-dialog requests 2014-05-31 10:00:51 +04:00
Evgeniy Khramtsov 86f2af6fdc Process bindings from multiple UACs correctly 2014-05-31 09:06:53 +04:00
Evgeniy Khramtsov da22da23cd Don't substitute URI in ACK 2014-05-31 07:50:16 +04:00
Holger Weiss f45654a16a Simplify mod_carboncopy:check_and_forward/4
Use the existing is_carbon_copy/1 function, and combine multiple case
clauses into a single one.
2014-05-30 23:44:19 +02:00
Holger Weiss bb952f9ecc Let is_carbon_copy/1 recognize <received/> carbons
The mod_carboncopy:is_carbon_copy/1 function now returns true not only
for <sent/>, but also for <received/> carbon copies.
2014-05-30 23:36:02 +02:00
Holger Weiss ad2d3964ef Don't send XEP-0280 v1 copies back to sender
An earlier version of XEP-0280 specified the <received/> and <sent/>
tags to be siblings of the <forwarded/> element, whereas the current
version mandates them to be parents of <forwarded/>.  The mod_carboncopy
module supports both variants.  However, the check that makes sure
clients won't receive a copy of the messages they sent didn't work for
the old-style schema.  This is now fixed.
2014-05-30 23:32:18 +02:00
Evgeniy Khramtsov 2cd17c7988 Fix previous commit 2014-05-30 23:49:50 +04:00
Evgeniy Khramtsov 32998f7e18 Process 'Contact' headers more accurately (as per RFC3261) 2014-05-30 23:14:52 +04:00
Evgeny Khramtsov 7261cb29ac Merge pull request #228 from weiss/turn-down-carbons-logging
Log just one [info] message on successful XEP-0280 negotiation
2014-05-29 19:19:05 +04:00
Holger Weiss 8fb1bb1f5f Log just one [info] message on Carbons negotiation
Log one instead of three [info] messages when XEP-0280 (Message Carbons)
support is enabled or disabled successfully.  On failure, log an
additional [warning].
2014-05-29 15:21:11 +02:00
Evgeny Khramtsov 5a29d56d94 Merge pull request #227 from weiss/xep-0198
XEP-0198: Cosmetic change: Reuse event handler
2014-05-28 13:43:29 +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
Evgeny Khramtsov 7d54fdea51 Merge pull request #206 from weiss/xep-0198
XEP-0198: Terminate session if stanza queue becomes too large
2014-05-28 13:18:12 +04: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
Evgeny Khramtsov f9c5e349fb Merge pull request #225 from weiss/use-fsm-next-state
Let ejabberd_c2s always use fsm_next_state/2
2014-05-27 23:27:16 +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
Evgeniy Khramtsov 52221127cc Fix odbc_port option processing 2014-05-27 15:27:42 +04:00
Evgeniy Khramtsov dceab3689d Don't forget to include 'Contact' header field in 2xx registrar responses 2014-05-26 21:34:23 +04:00
Christophe Romain 123b01aaa0 don't stop make install if epam is not compiled 2014-05-25 13:02:25 +02:00
Christophe Romain 572938aa49 install epam binary when available 2014-05-25 02:31:28 +02:00
bLaDe 48600ae71d Update id.msg 2014-05-24 17:53:39 +07: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
Evgeniy Khramtsov 8925975c86 Fix proxying of ACK requests for 2xx responses 2014-05-23 20:14:53 +04: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 6baf3a24de Merge branch 'weiss-check-packet-type' into 3 2014-05-21 18:45:43 +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
badlop 69abb48c90 Merge pull request #217 from weiss/fix-extauth-cache-usage
Don't use cached passwords if "extauth_cache: 0"
2014-05-21 17:35:54 +02:00
badlop 419a98d45a Merge pull request #216 from lavrin/p1-c2s
Cleanup some pieces of ejabberd_c2s
2014-05-21 17:35:24 +02:00
badlop 0dc8429d16 Merge pull request #215 from weiss/fix-url-markup
Fix URL markup in the guide
2014-05-21 17:33:56 +02:00
badlop b9210d491a Merge pull request #208 from weiss/update-travis-config
Travis CI: Remove unnecessary configure flag
2014-05-21 17:31:49 +02:00
badlop 5d855f3723 Merge pull request #207 from weiss/xep-0334
Honor XEP-0334: Message Processing Hints
2014-05-21 17:31:22 +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
Holger Weiss fca640f50f Don't use cached passwords if "extauth_cache: 0"
Regarding "extauth_cache", the guide says: "The integer 0 (zero) enables
caching for statistics, but doesn't use that cached information to
authenticate users."  Make sure the cached password isn't used even if
the user is currently logged in with another resource.
2014-05-20 23:00:28 +02:00
Badlop 5010cea1a4 If log uses file:write, no need to double escape ~ in messages (EJAB-1696) 2014-05-20 14:49:52 +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 dd543af2f6 Fix URL markup in the guide 2014-05-20 00:24:34 +02:00
Badlop 6d06f22f64 MUC messages with ~ were not logged (EJAB-1696) 2014-05-19 19:07:46 +02:00
badlop 862166511c Merge pull request #213 from weiss/fix-xmlrcp-doc-url
Update ejabberd_xmlrpc documentation URL in the guide
2014-05-19 11:46:37 +02:00
Holger Weiss 4e54c53abb Update ejabberd_xmlrpc documentation URL 2014-05-14 22:39:19 +02:00
Badlop a6ddab1e9d Fix bug when joining empty path 2014-05-14 13:28:39 +02:00
Evgeny Khramtsov 3c045ba8aa Merge pull request #212 from weiss/fix-presence-updates
Don't miss incoming presence updates
2014-05-14 08:06:40 +04: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
badlop 23fdf0e889 Merge pull request #209 from weiss/rename-disconnect-user
Rename disconnect_user/2 command
2014-05-12 12:55:15 +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 f4a3dbea70 Travis CI: Remove unnecessary configure flag
The test suite no longer fails without --enable-transient_supervisors.
2014-05-12 10:28:02 +02:00
Holger Weiss 47efe4e6a9 Don't log MUC messages with <no-store/> hint
Honor the <no-store/> and <no-permanent-store/> hints defined in
XEP-0334.
2014-05-12 00:27:20 +02:00
Holger Weiss 03fd88e4ec Don't store messages with <no-store/> hint
Honor the <no-store/> hint defined in XEP-0334.
2014-05-12 00:00:34 +02:00
Holger Weiss 9b16d09261 Don't carbon copy messages with <no-copy/> hint
Honor the <no-copy/> hint defined in XEP-0334.
2014-05-11 23:52:20 +02:00
Evgeny Khramtsov 5d22159e9a Merge pull request #205 from weiss/xep-0198
XEP-0198: Improve handling of incorrect stanza counts reported by client
2014-05-10 00:05:17 +04:00
Evgeniy Khramtsov 003fd321ee Do not try to retreive vCards via local SM for foreign JIDs 2014-05-09 21:26:55 +04: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
Evgeniy Khramtsov 318b0f2208 Fix previous commit (C2S session close on server shutdown) 2014-05-08 21:47:50 +04:00
Evgeniy Khramtsov b995178e30 Merge branch 'master' of github.com:processone/ejabberd 2014-05-08 21:40:14 +04:00
Evgeniy Khramtsov 181e7a823e Fix C2S session close on server shutdown 2014-05-08 21:39:53 +04:00
Badlop 0716a8cdae Recompile the Guide 2014-05-08 17:58:25 +02:00
Evgeniy Khramtsov 90a5c054d4 TURN support (EJAB-1017) 2014-05-08 16:14:21 +04:00
Evgeny Khramtsov 115da54557 Merge pull request #203 from hamano/added_get_random_pid_error_handling
improve error handling when sql calling with (empty|unknown) host.
2014-05-08 10:02:27 +04:00
Evgeny Khramtsov e88a5c6b3c Merge pull request #180 from hamano/mysql_table
added privacy_list_data index for mysql database.
2014-05-07 20:57:59 +04:00
Badlop 79a49b1175 Webadmin with extauth requires internal to run at least once (issue #201) 2014-05-07 17:13:51 +02:00
badlop c511194c2e Merge pull request #200 from hamano/mod_offline_bug
fix mod_offline:count_offline_messages/2
2014-05-07 16:49:31 +02:00
HAMANO Tsukasa d3ed12d4ba fix mod_offline:count_offline_messages/2 2014-05-07 15:38:18 +09:00
Evgeniy Khramtsov e7c94975eb Revert "Document that ejabberd compilation requires pkg-config"
This reverts commit bd0060715e.
2014-05-07 01:05:07 +04:00
Evgeny Khramtsov 47f627e605 Merge pull request #166 from weiss/xep-0198
Add support for XEP-0198: Stream Management
2014-05-06 23:50:49 +04: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
Christophe Romain cc1f93d7a0 Fix PEP broadcasting issue on ODBC (EJAB-1680) 2014-05-06 13:29:35 +02:00
Christophe Romain 58717923eb Fix PEP broadcasting issue (EJAB-1680) 2014-05-06 12:37:44 +02:00
Evgeny Khramtsov 1aa56af541 Merge pull request #198 from weiss/add-travis-support
Add Travis CI configuration file
2014-05-06 13:13:56 +04: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 66437c5e4d Add Travis CI configuration 2014-05-05 22:42:15 +02:00
Christophe Romain 52f3acbdb1 Merge branch 'master' of github.com:processone/ejabberd 2014-05-05 18:42:49 +02:00
Christophe Romain a6244275b7 remove compilation warnings 2014-05-05 18:16:48 +02:00
Badlop 402dec8354 Recompile the ejabberd Guide html 2014-05-05 17:55:45 +02:00
Christophe Romain 4bdf1bc7a6 avoid sending duplicated events 2014-05-05 17:53:50 +02:00
Christophe Romain faa6ad26a0 avoid sending empty events 2014-05-05 17:53:44 +02:00
Badlop bd0060715e Document that ejabberd compilation requires pkg-config 2014-05-05 17:46:52 +02:00
Christophe Romain 530ac43758 store item when persist_item=false and cache_last_item=false but need last_item 2014-05-05 17:40:42 +02:00
Evgeny Khramtsov 2723056fae Merge pull request #195 from Iperity/master
Fix small bug in presence_based_delivery implementation
2014-05-05 16:38:16 +04:00
Nathan Bruning f3aa74a043 Fix small bug in presence_based_delivery implementation 2014-05-05 14:14:03 +02:00
Badlop 872cc12dd8 Temporary room not destroyed when the last participant is expulsed (EJAB-520) 2014-05-05 13:50:52 +02:00
Badlop 70f00a1b1f extauth_cache can have value 0 2014-05-05 13:13:35 +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
Evgeniy Khramtsov fafec77e56 Make it possible to get/set vCards for MUC rooms 2014-05-04 23:23:17 +04:00
Evgeny Khramtsov 478b4f19bd Merge pull request #194 from weiss/mysql-user-at-localhost
test/README: Create MySQL test user on localhost
2014-05-04 12:00:59 +04:00
Holger Weiss b73b139f24 test/README: Create MySQL test user on 'localhost'
Suggest specifying 'localhost' as host name part of the MySQL test
account name.  Otherwise, the anonymous user that is usually created by
default for 'localhost' would take precedence for local connections due
to the more specific host name.
2014-05-04 01:02:22 +02:00
Evgeniy Khramtsov 806c0e56e1 Do not crash on version downgrade 2014-05-03 17:55:03 +04:00
Evgeniy Khramtsov d0ffcb7fd4 Assume udp_recv/5 now returns new options 2014-05-03 17:48:26 +04:00
Evgeniy Khramtsov 955487391d Assume tcp_init/2 and udp_init/2 now return new options 2014-05-03 17:48:17 +04:00
Evgeniy Khramtsov e00215a12f Always enable SIP at compile time 2014-05-02 17:46:24 +04:00
Evgeniy Khramtsov 47a39ce738 Remove unused function 2014-05-02 17:43:23 +04:00
Evgeniy Khramtsov ebd760b7c9 Forking support 2014-05-02 17:43:17 +04:00
Evgeniy Khramtsov f8417f7c1f Remove empty line 2014-05-02 17:43:09 +04:00
Evgeniy Khramtsov 3c98de69dc Some cleanup 2014-05-02 17:43:03 +04:00
Evgeniy Khramtsov ab6774d93d Fix CSeq comparison 2014-05-02 17:42:57 +04:00
Evgeniy Khramtsov 58aa200297 Optimize request processing 2014-05-02 17:42:51 +04:00
Evgeniy Khramtsov a1337cb73f Do not proxy stray responses statelessly (as per RFC 6026) 2014-05-02 17:42:45 +04:00
Evgeniy Khramtsov e7e4055cbb Don't use erlang:integer_to_binary/1 2014-05-02 17:42:37 +04:00
Evgeniy Khramtsov 1d771fe646 Rewrite 'Contact' headers in REGISTER requests 2014-05-02 17:42:31 +04:00
Evgeniy Khramtsov 8e2bc8d19e Check for 'max_user_sessions' option 2014-05-02 17:42:13 +04:00
Evgeniy Khramtsov 0117787317 Process gen_server timeouts correctly 2014-05-02 17:40:25 +04:00
Evgeniy Khramtsov 16e5d66572 Move some code in a separate function 2014-05-02 17:38:47 +04:00
Evgeniy Khramtsov 6a95422af8 Multiple REGISTER bindings support 2014-05-02 17:38:28 +04:00
Evgeniy Khramtsov 35faffe7da Locate sessions by proxy processes directly 2014-05-02 17:31:17 +04:00
Evgeny Khramtsov a6fe7425dd Merge pull request #192 from hamano/fix_ejabberd_system_monitor_error
fix ejabberd_system_monitor:s2s_out_info/1 error
2014-05-01 10:44:49 +04:00
HAMANO Tsukasa d83368d73d fix ejabberd_system_monitor:s2s_out_info/1 error 2014-05-01 15:12:04 +09: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
Evgeniy Khramtsov 02e0649d18 SIP support
Conflicts:
	configure
	configure.ac
	doc/guide.tex
2014-04-30 19:38:15 +04:00
HAMANO Tsukasa 0904b8b8ff improve error handling when sql calling with (empty|unknown) host.
see #191
2014-05-01 00:20:58 +09:00
Badlop ec6c58a21c Fix error reporting in previous commit 2014-04-30 16:02:20 +02:00
Badlop b3714a1b2e Fix formatting string argument (thanks to Locojay)(github #129) 2014-04-30 15:59:44 +02:00
Evgeny Khramtsov 81a906af01 Merge pull request #191 from hamano/added_get_random_pid_error_handling
fix error handling when sql calling with unknown host.
2014-04-30 17:02:39 +04:00
badlop 65519cf262 Merge pull request #190 from hamano/mod_register_web_response_404
mod_register_web should response 404 instead of process crash.
2014-04-30 12:42:43 +02:00
badlop a1b8c54c16 Merge pull request #187 from weiss/fix-ejabberdctl-output
Let ejabberdctl accept binary string arguments
2014-04-30 12:41:12 +02:00
HAMANO Tsukasa a6408e9281 fix error handling when sql calling with unknown host. 2014-04-30 15:32:07 +09:00
HAMANO Tsukasa 0e0bd3329d mod_register_web should response 404 instead of process crash. 2014-04-30 13:39:17 +09:00
Evgeny Khramtsov ce22239d85 Merge pull request #189 from weiss/markdown-readme
Convert README to Markdown
2014-04-30 07:55:27 +04:00
Holger Weiss 375a1dd759 Convert README to Markdown
Use Markdown syntax for the README file and add a README.md symlink, so
that a certain popular Git hosting site renders it nicely.
2014-04-29 23:54:14 +02:00
Evgeny Khramtsov 9563b0228f Merge pull request #177 from weiss/log-tls-sasl-external
Log TLS status for outgoing s2s with SASL EXTERNAL
2014-04-30 00:38:18 +04:00
Evgeny Khramtsov 8419322884 Merge pull request #181 from weiss/check-tls-before-auth
Check TLS state before requesting SASL EXTERNAL for outgoing s2s connections
2014-04-30 00:36:08 +04:00
Evgeny Khramtsov c37aa1b46d Merge pull request #185 from weiss/verify-cert-for-s2s-out
Support certificate verification for outgoing s2s connections
2014-04-30 00:08:24 +04:00
Evgeny Khramtsov 599fdb9ac2 Merge pull request #186 from weiss/add-disconnect-command
New ejabberd command: disconnect_user/2
2014-04-29 15:41:41 +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
Evgeny Khramtsov 0af3f9388f Merge pull request #188 from weiss/update-readme
Update README: XEP-0227 code no longer uses exmpp
2014-04-29 13:12:08 +04:00
Evgeny Khramtsov 4073394e7a Merge pull request #182 from hamano/register_account_acl
fix checking acl in mod_register_web
2014-04-29 13:06:53 +04:00
Evgeny Khramtsov 29aead19d9 Merge pull request #179 from hamano/added_get_random_pid_error_handling
added get_random_pid/1 error handling
2014-04-29 13:05:58 +04:00
Holger Weiss 16dd6b03c6 Update README: XEP-0227 code no longer uses exmpp 2014-04-29 10:17:00 +02:00
Holger Weiss d09c268b20 Let ejabberdctl accept binary string arguments
Don't print the following message if an ejabberd command expects binary
string arguments: "This command cannot be executed using ejabberdctl.
Try ejabberd_xmlrpc."
2014-04-29 01:11:08 +02:00
Holger Weiss 6d1055abec New ejabberd command: disconnect_user/2 2014-04-29 00:50:43 +02:00
Evgeny Khramtsov 68e62d7442 Merge pull request #184 from weiss/properly-abort-s2s-in
Fix handling of certificate verification errors for incoming s2s connections
2014-04-28 09:58:44 +04:00
Holger Weiss 49bdbf2895 Support certificate verification for outgoing s2s
Handle "s2s_use_starttls: required_trusted" the same way for outgoing
s2s connections as for incoming connections.  That is, check the remote
server's certificate (including the host name) and abort the connection
if verification fails.
2014-04-28 01:42:02 +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
Holger Weiss 1aa4ed3f35 Don't mess with s2s out when aborting s2s in
Don't try to look up and close outgoing connections to a given server
when aborting incoming connections from that server due to certificate
verification errors.  The ejabberd_s2s:find_connection/2 call actually
created one or more *new* connections if less than 'max_s2s_connections'
connections were found.  Then, no more than one of those possibly new
connections were stopped by the ejabberd_s2s_out:stop_connection/1 call.

It's not really necessary to bother with outgoing connections at all,
here.
2014-04-28 00:17:05 +02:00
Holger Weiss eabca82765 Send stream trailer before closing s2s connection
When aborting an incoming s2s connection due to certificate verification
errors, send a stream trailer before closing the socket.
2014-04-27 00:28:42 +02:00
HAMANO Tsukasa 71dba66330 fix checking acl in mod_register_web 2014-04-24 18:15:39 +09:00
Holger Weiss d805d198ac Check TLS state before requesting SASL EXTERNAL
Make sure a remote server can't circumvent "s2s_use_starttls: required"
by offering SASL EXTERNAL authentication over a non-TLS connection.
2014-04-24 11:04:10 +02:00
HAMANO Tsukasa 0734562ded added privacy_list_data index for mysql database. 2014-04-24 16:04:40 +09:00
HAMANO Tsukasa ffe9f3c192 added get_random_pid/1 error handling 2014-04-24 15:34:41 +09:00
HAMANO Tsukasa 219f9276d1 undefined ejabberd_socket:get_conn_type/1 2014-04-24 12:42:22 +09:00
Holger Weiss f988aad940 Log TLS status for outgoing s2s with SASL EXTERNAL 2014-04-23 23:28:13 +02:00
badlop 3a3f8240c1 Merge pull request #176 from hamano/devel
added error handling in mod_pubsub_odbc.
2014-04-23 17:06:46 +02:00
HAMANO Tsukasa 9ec014c184 added error handling in mod_pubsub_odbc. 2014-04-23 23:35:34 +09:00
badlop e9d104ec47 Merge pull request #174 from weiss/fix-s2s-in-auth
Fix certificate authentication for incoming s2s connections
2014-04-23 15:10:20 +02:00
Holger Weiss 86e17c379c Verify host name before offering SASL EXTERNAL
Prior to this commit, ejabberd handled certificate authentication for
incoming s2s connections like this:

1. Verify the certificate without checking the host name.  On failure,
   behave according to 's2s_use_starttls'.  On success:
2. Offer SASL EXTERNAL.
3. If the remote server chooses SASL EXTERNAL, compare the authorization
   identity against the certificate host name(s).  On failure, abort the
   connection unconditionally.

ejabberd now does this instead:

1. Verify the certificate and compare the certificate host name(s)
   against the 'from' attribute of the stream header.  On failure,
   behave according to 's2s_use_starttls'.  On success:
2. Offer SASL EXTERNAL.
3. If the remote server chooses SASL EXTERNAL, ignore the authorization
   identity (if any) and consider the peer authenticated.

The old behavior was suggested by previous versions of XEP-0178, the new
behavior is suggested by the current version 1.1.
2014-04-23 11:45:17 +02:00
Holger Weiss 4bc8b6bc9f Fix extraction of host names from certificates 2014-04-22 22:12:04 +02:00
badlop 9497dbff17 Merge pull request #162 from weiss/enable-carbons
Enable mod_carboncopy in example configuration
2014-04-22 13:53:23 +02:00
badlop 37d4109e8a Merge pull request #161 from weiss/fix-carbons
Let mod_carboncopy take care of messages sent to bare/unavailable JIDs
2014-04-22 13:52:11 +02:00
badlop b73f28c93e Merge pull request #173 from weiss/force-configure-regeneration
Always regenerate the configure script when running ./autogen.sh
2014-04-22 12:52:22 +02:00
Holger Weiss c98d539bb3 Force regeneration of configure script
As the version string is auto-generated from the git-describe(1) output,
the configure script may need to be regenerated even if configure.ac
wasn't modified.
2014-04-18 12:13:17 +02:00
badlop 4b52a8e4e3 Merge pull request #172 from weiss/accept-extauth-cache-false
Don't log an error when "extauth_cache: false" is specified
2014-04-17 19:55:51 +02:00
Holger Weiss d350cc6361 Accept "extauth_cache: false"
Don't log a "configuration problem" message if "extauth_cache: false" is
explicitly specified, as that's a valid configuration setting as per the
documentation.
2014-04-16 14:15:14 +02:00
badlop 727197613a Merge pull request #171 from weiss/update-doc-url
Update a URL in the guide
2014-04-16 10:03:07 +02:00
badlop cc6a4787af Merge pull request #170 from weiss/fix-doc-typos
Fix two small typos in the guide
2014-04-16 10:02:12 +02:00
Holger Weiss 27a7b38dee Update a URL in the guide 2014-04-16 00:31:15 +02:00
Holger Weiss 45687c52dc Fix two small typos in the guide 2014-04-16 00:25:11 +02:00
Paweł Chmielowski 7af7b7d3f0 Fix compilation on pre-R17 2014-04-15 17:05:25 +02:00
Paweł Chmielowski d97b4fd9ca Fix loading translation files on R17 2014-04-15 17:05:22 +02: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 77d6d36a9d Merge pull request #167 from weiss/fix-modules-doc
Remove outdated comment from guide
2014-04-15 16:41:48 +02:00
badlop 57ba57b908 Merge pull request #168 from weiss/carbons-doc
Mention mod_carboncopy in documentation
2014-04-15 16:40:48 +02:00
Holger Weiss c9d4f2146c Mention mod_carboncopy in documentation 2014-04-15 01:29:00 +02:00
Holger Weiss 46001aafaa Remove outdated comment from guide 2014-04-15 01:21:41 +02:00
badlop ad680c508e Merge pull request #165 from weiss/fix-access-doc
Fix the description of the access rules syntax in the Guide
2014-04-12 16:42:05 +02:00
Holger Weiss be43aa85f4 Fix description of access rules syntax 2014-04-11 14:00:10 +02:00
badlop 285c4c17cf Merge pull request #146 from jamielinux/master
Update FSF address
2014-04-11 13:35:46 +02:00
Evgeniy Khramtsov a21edc2f3a Pretty print accepted transport address 2014-04-11 12:30:58 +02:00
Holger Weiss 515331baad Enable mod_carboncopy in example configuration
XEP-0280 seems to be quite popular these days.
2014-04-08 23:38:04 +02:00
Holger Weiss b3b12effbc Carbons: Handle unavailable resource like bare JID
As the session manager handles messages sent to unavailable resources
just like messages sent to bare JIDs, mod_carboncopy must do that, too.
That is, forward them only to those carbon-copy-enabled resources that
don't have a top priority, in order to avoid duplicates.
2014-04-08 23:32:30 +02:00
Antonio Murdaca fbf71f86f3 Add option to specify openssl options 2014-04-08 18:46:52 +02:00
Holger Weiss 9d5426315f Carbons: Also forward messages sent to bare JIDs
Don't ignore messages sent to bare JIDs, but forward them to all
carbon-copy-enabled resources that don't have the highest priority.
2014-04-07 22:10:08 +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 66006ba017 Update Hebrew translation (thanks to Isratine Citizen) 2014-04-07 16:26:50 +02:00
badlop f3bbfb1c66 Merge pull request #159 from weiss/update-gitignore
Update the gitignore(5) file
2014-04-07 13:29:37 +02:00
badlop 766ab1eb46 Merge pull request #158 from weiss/fix-lang-type
Fix a type error
2014-04-07 13:28:41 +02:00
badlop 76fb7d284a Merge pull request #157 from weiss/fix-mod-update
Fix badarg issue on module update web site
2014-04-07 13:27:31 +02:00
badlop 2d441b3305 Merge pull request #156 from hamano/devel
mod_register_web: check same acl as mod_register.
2014-04-07 12:39:22 +02:00
Holger Weiss 0befeb7d93 Let Git ignore the "ebin" directory 2014-04-06 00:56:36 +02:00
Holger Weiss a2679e9d51 Let Git ignore files generated by "make install" 2014-04-06 00:56:09 +02:00
Holger Weiss 37f409d254 Fix a type error 2014-04-06 00:39:51 +02:00
Holger Weiss e02a4913d2 Fix badarg issue on module update web site 2014-04-05 23:23:44 +02:00
HAMANO Tsukasa 1250ee5d77 mod_register_web: check same acl as mod_register. 2014-04-04 04:07:29 +09:00
Badlop 8b9c49440a Fix user_resources command, and ejabberd_xmlrpc parsing auth details in call 2014-03-31 16:51:47 +02:00
Badlop 5bf3c784da New Bash completion script for ejabberdctl, experimental (EJAB-1042) 2014-03-26 16:43:56 +01:00
Badlop a5a065290b Small change in ejabberd_ctl output format to support bash completion 2014-03-26 16:43:53 +01: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
Evgeniy Khramtsov 2150b10901 Fix service_info options processing 2014-03-25 09:52:57 +04:00
Evgeniy Khramtsov 5c36c44689 Remove annyoing warnings 2014-03-25 09:42:12 +04:00
Badlop d5f90965d7 Fix ACLs syntax change (thanks to jokker23)(issue #140) 2014-03-24 19:40:55 +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
badlop 2b527f5e9a Merge pull request #149 from iulianlaz/carboncopy-fix-msg-back-to-original-sender
#148 Carbon copy sends message back to original sender solved
2014-03-16 20:59:49 +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
Badlop 0f0e99ccd3 Provide header with latin-1 encoding in translations to work with Erlang/OTP R17 2014-03-12 17:26:27 +01:00
iulianlaz 9ef1ad0b6e #148 Carbon copy sends message back to original sender solved 2014-03-06 08:40:38 +00:00
Evgeniy Khramtsov afba5bc5f5 Merge branch 'master' of github.com:processone/ejabberd 2014-02-28 15:36:46 +04:00
Evgeniy Khramtsov 4a02893dac Regenerate XMPP codec 2014-02-28 15:36:34 +04:00
Badlop e211bf522e Support XEP-0321: Remote Roster Management (EJAB-1381) 2014-02-26 18:02:37 +01:00
Badlop 46b2d91105 Convert DB details to string when calling odbc:connect/2 (EJAB-1681) 2014-02-26 17:26:46 +01:00
Badlop c29ba14dbf Don't provide current password in webinterface (github issue #137) 2014-02-26 17:19:07 +01:00
badlop 4c8aeefa7f Merge pull request #145 from weiss/fix-configure-flag
Fix --enable-transient_supervisors flag
2014-02-24 12:46:09 +01:00
badlop 8e628fdad3 Merge pull request #144 from weiss/fix-supervisor-start
Add missing parenthesis
2014-02-24 12:40:10 +01:00
Jamie Nguyen 8538997d61 Update FSF address 2014-02-22 10:27:40 +00:00
Holger Weiss 26dee37268 Fix --{enable,disable}-transient_supervisors flag
Fix configure's --{enable,disable}-transient_supervisors option: Make
sure it's enabled with --enable and disabled with --disable, not the
other way round.  This also makes --disable the default setting, as
documented.
2014-02-21 23:34:48 +01:00
Holger Weiss e82a79efd5 Add missing parenthesis 2014-02-21 23:33:13 +01:00
Badlop 63a7011c38 When occupant changes nick, include status 110 in stanzas sent to him 2014-02-14 16:22:14 +01:00
Badlop 4c8b6fe16b Fixing mod_carboncopy sends carbons of carbons (fixes #107) 2014-01-23 17:29:24 +01:00
badlop 565b8bf7e6 Merge pull request #134 from mrjameshamilton/patch-1
Fixed parameter order in call to restore_room/3
2014-01-23 06:56:18 -08:00
mrjameshamilton 5ccc6db093 Fixed parameter order in call to restore_room/3 2014-01-23 14:39:52 +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 155c8bb29a Add some ejabberd_xmlrpc documentation, and link to full details 2014-01-02 16:31:28 +01:00
Badlop e107e78773 Fix auth verification in ejabberd_xmlrpc (thanks to Vicis) 2014-01-02 16:10:19 +01:00
Badlop 27302fb7ac Fix example configuration option 'add' to 'append_host_config' 2014-01-02 15:03:05 +01:00
Evgeniy Khramtsov d03de1bb43 Fix some type specs and errors 2013-12-10 21:44:46 +10:00
Evgeniy Khramtsov 33764bb931 Add ejabberd_xmlrpc 2013-12-10 21:25:12 +10:00
Christophe Romain eadc899046 remove version.tex file which is auto-generated 2013-12-05 14:19:55 +01:00
Badlop 5a1300bc70 Add access rule to mod_roster (EJAB-72) 2013-12-04 14:57:44 +01:00
Christophe Romain 9c17163b55 bind values for get_parentnodes_tree 2013-12-03 10:51:01 +01:00
Christophe Romain e11c835bd3 fix use of virtual nodetree 2013-12-03 10:34:59 +01:00
badlop 5ecd832e81 Merge pull request #119 from Mikhail-D/patch-1
Create mssql2012.sql
2013-12-02 02:02:44 -08:00
Mikhail-D a95aa46fe5 Create mssql2012.sql
replace sp_dboption with new instructions
2013-12-02 00:29:52 -08: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
Badlop a6b0e18bde add Pubsub data migration from mnesia to odbc (EJAB-1126)
By calling:
  ejd2odbc:export_pubsub("localhost","/tmp/aa.txt").
it will generate SQL files like these:
  /tmp/pubsub_item.txt
  /tmp/pubsub_node.txt
  /tmp/pubsub_state.txt

Conflicts:
	src/ejabberd_admin.erl
	src/ejd2odbc.erl
2013-11-14 19:29:16 +01:00
Evgeniy Khramtsov 89a17ba84a Correctly convert ACLs into YAML representation 2013-11-07 02:43:43 +10:00
Evgeniy Khramtsov a87b475361 Do not use functions from crypto module wherever possible 2013-11-05 20:07:38 +10:00
Evgeniy Khramtsov b7c7d2747b Fix some type errors 2013-11-05 19:49:30 +10:00
Evgeniy Khramtsov c0240e7249 Do not try to start STUN application during config checks 2013-11-02 10:30:19 +10:00
Evgeniy Khramtsov 6dd31299cf Avoid case clause crash when loading permanent rooms 2013-10-23 12:23:00 +10:00
Evgeniy Khramtsov 2846a2978b Get rid of deprecated MySQL variable 'table_type' 2013-10-23 11:58:26 +10:00
Evgeniy Khramtsov 6df09f5ad6 Check libyaml presence at configure time 2013-10-22 20:12:39 +10:00
Badlop d9da6b77de Enumerate convert_to_yaml command in list of commands 2013-10-09 16:05:45 +02:00
Badlop cd0381bab5 Fix display ACLs in WebAdmin 2013-10-01 23:23:01 +02:00
Christophe Romain f2f2f64161 update default version to 13.10 2013-09-27 11:19:22 +02:00
Badlop 2c09d7c8a7 Fix handling of format_status arguments (thanks to Nbaronov) 2013-09-26 17:19:56 +02:00
Badlop 389a99b2db Fix bypass for tls-required (thanks to Zeha) 2013-09-26 16:41:57 +02:00
Evgeniy Khramtsov 07c8bf5064 Fix roster version support 2013-09-24 18:59:20 +10:00
Evgeniy Khramtsov 7fd91a4b12 Better web-handlers detection 2013-09-22 21:47:59 +10:00
Evgeniy Khramtsov ae4356265f Merge branch 'master' of github.com:processone/ejabberd 2013-09-19 19:00:08 +10:00
Evgeniy Khramtsov a0396620f2 Reflect modules name changes in p1_mysql 2013-09-19 18:59:32 +10:00
Paweł Chmielowski 7e73ed88f7 Fix problem with decoding http headers over tls connections
This fixed GitHub issue 96.
2013-09-16 16:32:02 +02:00
Evgeniy Khramtsov 150a5392e5 Fix the template: do not use 'global' keyword 2013-08-30 20:44:12 +10:00
Jerome Sautret 8cbbe4a3eb Fix release version number. 2013-08-30 09:12:33 +02:00
Christophe Romain 4b82cb9953 update default version number 2013-08-27 17:14:58 +02:00
Christophe Romain 63b2d21b13 clean subscriptions handling and avoid function_clause 2013-08-27 14:46:54 +02:00
Christophe Romain 1b8876bf55 fix build of Parents list in #pubsub_node 2013-08-27 14:46:35 +02:00
Christophe Romain b82eeeeec9 fix call to get_session_pid with binary arguments 2013-08-27 14:46:22 +02:00
Evgeniy Khramtsov dd26398a02 Fix the ACL rule 2013-08-27 20:12:26 +10:00
Evgeniy Khramtsov 11292c809f Remove non-existent module from the testing config 2013-08-27 20:08:22 +10:00
Evgeniy Khramtsov a62fb69e20 Remove multiple host_config sections 2013-08-27 20:05:12 +10:00
Evgeniy Khramtsov e3483ef9e1 Do not rely on p1_logger_h module when lager is enabled 2013-08-27 17:45:07 +10:00
Evgeniy Khramtsov 0fe3de6b30 Fix ejabberdctl config name 2013-08-24 22:10:10 +10:00
Evgeniy Khramtsov 91a74e3e27 Change configuration file format to YAML 2013-08-21 22:17:59 +10:00
Evgeniy Khramtsov f68dfacbbf Do not try to read/write the deprecated "config" table 2013-08-21 19:37:22 +10:00
Evgeniy Khramtsov 0b9754884e Do not distribute the ACL table 2013-08-21 19:37:08 +10:00
Evgeniy Khramtsov cc6dcd161c Get rid of global configuration options 2013-08-21 19:36:35 +10:00
Badlop 7a77186fbe Enumerate in guide.tex what processes are started for ejabberd (EJAB-1082) 2013-08-05 19:22:22 +02:00
Evgeny Khramtsov 06bb10a032 Merge pull request #85 from imtal/patch-1
Fix version check
2013-07-24 06:01:45 -07:00
tjeerd 3e2f9dc6b0 Fix version check
Not all Erlang versions are of equal length. Added clauses to handle this.
2013-07-24 14:47:32 +02:00
Evgeniy Khramtsov 807a1fe164 Fix timestamp processing 2013-07-23 15:27:18 +10:00
Evgeniy Khramtsov 8ce22b790d Fix some type errors 2013-07-22 19:24:09 +10:00
Evgeniy Khramtsov f75d78d3f5 Make it possible to import without cursor usage 2013-07-22 10:46:47 +10:00
Evgeniy Khramtsov ca6463ed78 Typo fix 2013-07-22 00:22:05 +10:00
Evgeniy Khramtsov d58148fa8d Add SQL to Mnesia converter 2013-07-21 23:10:38 +10:00
Evgeniy Khramtsov a2ead99c83 Make it possible to enable/disable TLS compression 2013-07-17 22:46:18 +10:00
Evgeny Khramtsov 33f09c7a78 Merge pull request #83 from tagged/makefile
make deps/.built depend on deps/.got
2013-07-15 20:06:35 -07:00
Christopher A. Stelma 2d43b035d7 make deps/.built depend on deps/.got
fixes race condition when running make with simultaneous jobs
2013-07-15 10:52:34 -07:00
Evgeniy Khramtsov 986f4d1a7f Do not forget to re-define the crash.log path 2013-07-15 11:51:09 +10:00
Evgeniy Khramtsov 8482641b4e Increase the timetrap timeout 2013-07-15 11:51:02 +10:00
Evgeny Khramtsov 8fc5d86704 Merge pull request #82 from tuncer/rebar-debug_info
rebar.config.script: fix debug_info handling
2013-07-14 04:07:39 -07:00
Tuncer Ayaz 47994806f0 rebar.config.script: fix debug_info handling
debug_info is enabled by default and can be disabled by passing
'no_debug_info' in erl_opts.
2013-07-13 21:33:50 +02:00
Badlop 0d7a5476c0 Allow room member to get members list using XEP 2013-07-11 12:11:48 +02:00
Christophe Romain 4e72dd6751 fix badmatch in send_loop (EJAB-1650) 2013-07-10 09:47:49 +02:00
Christophe Romain 48819d163a fix badmatch on remove_user on PEP nodes (EJAB-1649) 2013-07-09 21:50:56 +02:00
Christophe Romain 8621a8f006 fix invalid response on get_options when no options set (EJAB-1648) 2013-07-09 18:11:27 +02:00
Badlop b66e4fbdc4 Apparently configure.erl is not needed anymore 2013-07-08 15:58:38 +02:00
Alexey Shchepin b5623d6bee gen_iq_handler:check_type was missing 2013-07-08 10:40:39 +03:00
Evgeniy Khramtsov e89f0f6461 Cleanup the test suite (just a little) 2013-07-07 04:47:47 +10:00
Evgeniy Khramtsov 2b24e97936 Use error_logger directly in the LDAP test server 2013-07-07 03:48:16 +10:00
Evgeniy Khramtsov a302af7770 Do not build p1_logger if lager is enabled 2013-07-07 03:10:51 +10:00
Evgeniy Khramtsov 0aca3a4585 Improve the applications start-up
* Check if all modules present for every application loaded.
* Get rid of now obsoleted 'ejabberd_check' module.
2013-07-07 02:19:51 +10:00
Evgeniy Khramtsov c262c08513 Improve the XMPP codec, fix the test suite accordingly 2013-07-07 02:19:10 +10:00
Christophe Romain 0266207e9d fix pubsub unsubscription without SubId on odbc 2013-07-04 15:13:21 +02:00
Christophe Romain 60600c341e improve pubsub odbc use of i2l 2013-07-04 10:07:53 +02:00
Evgeniy Khramtsov 02c59422cf Re-generate the XMPP codec 2013-07-03 01:55:00 +10:00
Evgeniy Khramtsov 97810b4cc3 Update the rebar script 2013-07-01 02:22:18 +10:00
Evgeniy Khramtsov 1a9f0ab084 Update the rebar script 2013-06-30 23:41:24 +10:00
Evgeniy Khramtsov fa7fe73a0e Improve the rebar script. Keep the build graph by default. 2013-06-30 23:41:18 +10:00
Evgeniy Khramtsov 49e17922a3 Remove stupid slow code from rebar, regenerate the script 2013-06-30 23:41:09 +10:00
Evgeniy Khramtsov 09c450062a Update XMPP codec spec to reflect
the changes in xml_gen
2013-06-29 18:41:00 +10:00
Christophe Romain ac3cd2ebaa ip_adresse() does not need binary representation in config 2013-06-28 18:32:22 +02:00
Evgeniy Khramtsov 2636da0d98 Fix IDNA conversion 2013-06-28 02:45:42 +10:00
Badlop 91744733c1 Store only messages with body or subject (EJABS-2034) 2013-06-27 11:58:31 +02:00
Evgeniy Khramtsov 295ea0633e Re-create the configure script 2013-06-27 19:46:38 +10:00
Evgeniy Khramtsov bc2ea224eb Fix a typo 2013-06-27 19:45:45 +10:00
Evgeniy Khramtsov 9f4d12bd0a Add --enable-tools to --enable-all 2013-06-27 19:45:28 +10:00
Evgeniy Khramtsov 653e23c0e7 Re-create the configure script 2013-06-27 19:31:33 +10:00
Evgeniy Khramtsov c7e2128dab Enable lager support by default 2013-06-27 19:31:05 +10:00
Evgeniy Khramtsov 8a9743ab3b Avoid custom loglevels processing for lager 2013-06-27 19:27:56 +10:00
Evgeniy Khramtsov 597934637c Logger improvements.
lager:
	* It is now possible to change the loglevel.
	* Log rotation is now supported as well.
p1_logger:
	* When rotating a log file, add suffix ".0" to the renamed file.
	  This is needed in order to be consistent with lager
	  rotation mechanism.
2013-06-27 19:03:33 +10:00
Evgeniy Khramtsov 2ea397e476 Pre-load applications before setting the environment variables 2013-06-27 19:03:25 +10:00
Evgeniy Khramtsov 9094169440 Do not forget to remove testing beams on "clean" 2013-06-27 15:36:39 +10:00
Evgeniy Khramtsov 3631301304 Do not check the second SASL challenge 2013-06-27 15:36:31 +10:00
Evgeniy Khramtsov 42a9e4f4cf Split the test suite into modules 2013-06-27 15:36:23 +10:00
Evgeniy Khramtsov aab70fc066 Fix external authentication 2013-06-26 12:30:32 +10:00
Evgeniy Khramtsov 167f02ab72 Do not fetch disco#info multiple times 2013-06-26 03:32:38 +10:00
Evgeniy Khramtsov 1b0c02cb2e Start the LDAP server before ejabberd application 2013-06-26 03:06:19 +10:00
Evgeniy Khramtsov c05edabe58 Add more pubsub test cases 2013-06-26 03:06:11 +10:00
Christophe Romain ae1af885ce fix feature build on node disco#info 2013-06-25 14:49:22 +02:00
Badlop 9840b8395e Fix previous commit 2013-06-25 13:46:21 +02:00
Badlop b524e79f55 Normalize HTTP path (thanks to Justin Kirby) 2013-06-25 11:26:44 +02:00
Evgeniy Khramtsov 7d678fdd09 Change pubsub plugins in the testing configuration 2013-06-25 18:26:55 +10:00
Christophe Romain b03bf0df9f update guide with simplified pubsub_odbc config 2013-06-24 22:49:12 +02:00
Christophe Romain 277ba798fc typo fix in spec 2013-06-24 22:38:15 +02:00
Christophe Romain b07b820c4e fix missing binarization switch on pep nodes 2013-06-24 19:56:27 +02:00
Christophe Romain 1cc76ebb68 cosmetic change 2013-06-24 19:56:14 +02:00
Christophe Romain 1cb03439f2 add missing list conversion 2013-06-24 18:05:42 +02:00
Christophe Romain 3976351c4d decode_jid always gets binary(), encode_jid lets mod_pubsub handle conversion 2013-06-24 18:04:42 +02:00
Christophe Romain 6bfa34e8e0 minor improvements and binary fix 2013-06-24 16:31:38 +02:00
Christophe Romain 4195259d47 typo fix, related to commit 9194872 2013-06-24 16:29:43 +02:00
Christophe Romain 95546ac20d remove obsolete node attribute 2013-06-24 13:55:30 +02:00
Christophe Romain 0e28e4b600 Merge branch 'master' of github.com:processone/ejabberd 2013-06-24 13:46:44 +02:00
Christophe Romain 831ae2927a change default PEP config for simpler setup (EJAB-1494) 2013-06-24 13:46:27 +02:00
Christophe Romain 91948729e9 remove need of extra _odbc in pubsub plugin name 2013-06-24 13:43:11 +02:00
Christophe Romain 222a94300b fix decode function for binaryzed data 2013-06-24 13:42:34 +02:00
Evgeniy Khramtsov 9e73bdbb7d Check exit codes carefully when running dialyzer 2013-06-24 20:59:13 +10:00
Evgeniy Khramtsov f9390f3e9a Fix some dialyzer warnings 2013-06-24 20:04:56 +10:00
Evgeniy Khramtsov fc3939c8a9 Merge branch 'master' of github.com:processone/ejabberd 2013-06-24 20:04:14 +10:00
Alexey Shchepin 339353f2e2 Regenerated configure script 2013-06-24 13:01:54 +03:00
Evgeniy Khramtsov 1014593aa6 Split dialyzer tasks into separate Makefile targets 2013-06-24 13:16:34 +10:00
Evgeniy Khramtsov 75b8f035f7 Do not try to call obsoleted function directly 2013-06-24 13:15:25 +10:00
Evgeniy Khramtsov 7b07c2a9b2 Improve the type spec 2013-06-24 13:15:07 +10:00
Evgeniy Khramtsov 521bae7fa0 Get rid of useless clause 2013-06-24 13:13:43 +10:00
Evgeniy Khramtsov e68473fea8 Improve the "dialyzer" target 2013-06-24 10:49:13 +10:00
Evgeniy Khramtsov eb74efb5e6 Add LDAP test cases 2013-06-22 03:28:17 +10:00
Evgeniy Khramtsov 1e9b54d0b7 Do not ignore ASN.1-generated files 2013-06-22 03:28:09 +10:00
Evgeniy Khramtsov a3354f5dc4 Do not generate LDAP's ASN.1 code when compiling ejabberd.
We need ASN.1 codec to decode messages into binaries, so we
fixed generated ELDAPv3.erl. A better solution is needed to be found.
2013-06-22 03:27:59 +10:00
Badlop 109ed1a8b1 According to XEP-0045, a MUC member is allowed to retrieve the members list 2013-06-21 11:43:23 +02:00
Christophe Romain 0c60718bef fix empty itemid on publish when passing Access 2013-06-20 17:51:07 +02:00
Christophe Romain 4221d56c04 fix pubsub issue on binary switch 2013-06-20 17:07:40 +02:00
Evgeniy Khramtsov 4dc80dddd4 Fix all calls to functions of p1_tls application 2013-06-20 18:40:44 +10:00
Christophe Romain 66ad9e9722 inet_dist_use_interface requires argument quoting 2013-06-19 17:28:05 +02:00
Alexey Shchepin 1e633638e1 Disable lager by default 2013-06-19 16:28:20 +03:00
Evgeniy Khramtsov f34e9734ec Clarify MySQL/PostgreSQL preparation for running the test suite. 2013-06-19 21:52:50 +10:00
Evgeniy Khramtsov 89c3cf3677 Shutdown rooms before starting test cases 2013-06-19 21:46:22 +10:00
Evgeniy Khramtsov 4f8bb4f918 Add tests for modules using MySQL/PostgreSQL 2013-06-19 20:12:15 +10:00
Evgeniy Khramtsov 2ec048a5ae Merge branch 'master' of github.com:processone/ejabberd 2013-06-19 10:41:33 +10:00
Evgeniy Khramtsov 7b870f5a30 Better DLL location detection when executing make install 2013-06-19 10:41:06 +10:00
Badlop 79c51a059a Improve handling of INET_DIST_INTERFACE option (EJAB-1611)
In old releases, only the erlang format {127,0,0,1} was supported.
Now we support also 127.0.0.1, but we want backwards compatibility.
2013-06-18 19:35:55 +02:00
Jerome Sautret fedea8bca0 Added missing license and copyright headers. 2013-06-18 16:56:29 +02:00
Christophe Romain 55fb85107e improve ejabberdctl, and support different node names (thanks to Zach Calvert)(EJAB-1611) 2013-06-18 15:56:28 +02:00
Evgeniy Khramtsov 1ea5614209 Some deps have their DLLs in "priv" directory (not "priv/lib").
Do not forget to `install` them as well.
2013-06-18 23:15:06 +10:00
Evgeniy Khramtsov 94c21f3149 Better handle incoming packets sequence 2013-06-18 22:36:43 +10:00
Evgeniy Khramtsov ec01ab3945 Add some missing applications to the reltool script 2013-06-18 21:55:56 +10:00
Christophe Romain c030e8e136 sync pubsub_odbc with last fix 2013-06-18 12:23:32 +02:00
Evgeniy Khramtsov 8ea41718ac Fix node auto-creation 2013-06-18 04:11:54 +10:00
Evgeniy Khramtsov 6b060649c6 Merge branch 'master' of github.com:processone/ejabberd 2013-06-18 04:05:31 +10:00
Evgeniy Khramtsov 7fa9def24c Re-generate XMPP codec, decrease tests verbosity 2013-06-18 04:05:01 +10:00
Christophe Romain 20598c7be4 sync and cleanup pubsub_odbc 2013-06-17 16:34:21 +02:00
Christophe Romain 08fc6df853 fix auto-create issue due to bad binary matching 2013-06-17 16:30:20 +02:00
Alexey Shchepin 62fb432e3e Fixed broadcast messages handling 2013-06-17 16:41:02 +03:00
Alexey Shchepin 862a08e9eb Fixed conversion to ezlib 2013-06-17 16:33:25 +03:00
Evgeniy Khramtsov a616123200 Add simple mod_offline checks 2013-06-17 16:10:58 +03:00
Evgeniy Khramtsov 96b94e3ebb Add some MUC checks. Several cleanups 2013-06-17 16:10:54 +03:00
Evgeniy Khramtsov 45edf337cf Add mod_proxy65 test case 2013-06-17 16:10:49 +03:00
Evgeniy Khramtsov 831dc1f253 Check item groups separately 2013-06-17 16:10:43 +03:00
Evgeniy Khramtsov 3f8a10c092 Add roster checks 2013-06-17 16:10:38 +03:00
Evgeniy Khramtsov 0baf4e6088 Advertise privacy lists support via disco#info 2013-06-17 16:10:30 +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 1b96856d92 Improve "unregister" test case 2013-06-17 16:05:16 +03:00
Evgeniy Khramtsov adf75e3c18 Add registration remove test case 2013-06-17 16:05:08 +03:00
Evgeniy Khramtsov 7b96d8cc24 Test suite cleanup.
* Split test cases in groups.
* Increase a loglevel of common_test framework.
2013-06-17 16:04:54 +03:00
Evgeniy Khramtsov b50a4948ed Fix the error report of an incorrect certfile 2013-06-17 16:04:43 +03:00
Evgeniy Khramtsov c9efdf6167 Better certfile location detection by the test suite 2013-06-17 16:04:18 +03:00
Evgeniy Khramtsov 2f7d27677e Remove forgotten comments 2013-06-17 16:04:07 +03:00
Evgeniy Khramtsov 60dbaa0dac Add zlib compression test case 2013-06-17 16:03:58 +03:00
Evgeniy Khramtsov 167dd59941 Add STARTTLS test case 2013-06-17 16:03:52 +03:00
Evgeniy Khramtsov 5872ce5cc3 Add mod_register checks 2013-06-17 16:03:35 +03:00
Evgeniy Khramtsov 8a5ec41279 Convert XMPP codec specification to the new format 2013-06-17 16:01:51 +03:00
Christophe Romain f123263230 set version to community 2013-06-17 14:42:46 +02:00
Badlop 243d24015c Remove old obsolete R14 code 2013-06-14 16:18:22 +02:00
Badlop 4c445b37fd In frontends, if result is in binary then convert to string 2013-06-14 16:08:47 +02:00
Paweł Chmielowski f6e39f64e2 Make ejabberd_ctl not die for ejabberd_commands with binary arguments 2013-06-14 16:08:02 +02:00
Christophe Romain 26b815f52d cosmetic changes, move badly placed comments 2013-06-14 00:04:25 +02: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
Badlop 4f77348255 Fix Guide: ejabberd_service expects a shaper_rule, not a shaper 2013-06-10 17:57:28 +02:00
Badlop 0080f1f308 Detect correctly newer Darwin versions (EJAB-1594) 2013-06-06 12:24:18 +02:00
Christophe Romain 58e769d68f fix getting ServerHost from Host due to binary portage (EJAB-1638) 2013-06-06 11:32:52 +02:00
Christophe Romain c8cba04f05 access_createnode acl also applies to auto created nodes ported to pubsub_odbc 2013-06-06 11:11:37 +02:00
Badlop d1e1191793 Handle multiple < and > in mod_muc_log plaintext mode (EJAB-1640) 2013-05-31 13:23:08 +02:00
Badlop 3025bfd3ff Handle ~ control sequence in text of mod_muc_log (EJAB-1639) 2013-05-30 14:28:39 +02:00
badlop 2639d262f1 Merge pull request #69 from PaulSD/master
Fix a bug when reading tuples from config
2013-05-27 04:46:40 -07:00
Paul Donohue 089c664bad Fix a bug when reading tuples from config
If the config contains a tuple of integers (for example, if a bind IP
address is specified) then strings_to_binary() calls tuple_to_list()
followed by strings_to_binary(), which then calls list_to_binary()
because the list looks like a string.  Then list_to_tuple() is called on
the returned binary, causing a crash.

This patch corrects the problem by calling strings_to_binary1() instead,
which ensures that the value that is passed into list_to_tuple() is a
list.
2013-05-24 14:29:41 -04:00
badlop 34a4493df9 Merge pull request #67 from anton-ryzhov/config_example
Removed wrong option for `ejabberd_service` module (since 174c16a1)
2013-05-16 02:58:08 -07:00
Anton Ryzhov e71650325b Removed wrong option for ejabberd_service module (since 174c16a1) 2013-05-16 01:22:02 +04:00
Badlop c0bf054583 Tweak ejabberd_listener to allow ejabberd_xmlrpc work properly 2013-05-14 18:50:54 +02:00
Badlop 80f165a55c Fix get of announcement form 2013-04-25 16:00:24 +02:00
badlop 54667511f6 Merge pull request #62 from PaulSD/master
Fix errors when generating random binary strings
2013-04-25 03:48:55 -07:00
Badlop d38ccbea6b access_createnode acl also applies to auto created nodes (thanks to Matthias Rieber) 2013-04-25 12:37:16 +02:00
Badlop dfee84374f Include actor element in MUC stanzas when kicking (thanks to Purvesh Sahoo)(EJAB-1206) 2013-04-24 11:01:02 +02:00
Badlop 3e93fbfd2e Revert "Include actor element in MUC stanzas when kicking (thanks to Purvesh Sahoo)(EJAB-1206)"
This reverts commit 066c47ca96.
2013-04-23 13:57:18 +02:00
Badlop 066c47ca96 Include actor element in MUC stanzas when kicking (thanks to Purvesh Sahoo)(EJAB-1206) 2013-04-23 13:55:40 +02:00
Stephen Röttger 9fa415e557 SCRAM optional parameter parsing bugfix
The server gave an authentication error, if optional parameters
were present in the GS2 Header. Specifically, the "a=" parameter,
that can be used by admins to login as a different user.
2013-04-23 13:55:36 +02:00
Paul Donohue b33a482582 Fix error when generating random binary strings 2013-04-19 15:30:13 -04:00
Badlop c0afb1f282 Fix bug when getting room config 2013-04-15 11:14:32 +02:00
Badlop abc1341b3f Fix mod_http_fileserver work with binaries (GITHUB-59) 2013-04-12 12:55:49 +02:00
Badlop c7eaa9aeac ejabberd 13 requires Erlang/OTP R15B or higher (EJAB-1630)
Fix documents and remove useless code.
2013-04-11 17:12:53 +02:00
badlop c98540b8db Merge pull request #57 from rraptorr/carboncopy
Change message type of carbon copies from 'chart' to 'chat'
2013-04-10 04:40:28 -07:00
Janusz Dziemidowicz 74808b25a1 Change message type of carbon copies from 'chart' to 'chat' 2013-04-09 23:21:06 +02:00
Badlop cbd3062365 Don't overwrite inetrc when installing (thanks to skeltoac) 2013-04-04 13:36:15 +02:00
Christophe Romain 65298d34c9 remove obsolete packaging file 2013-04-02 10:57:48 +02:00
Evgeniy Khramtsov 7a00622aa8 Merge branch 'master' of github.com:processone/ejabberd 2013-03-29 19:38:19 +10: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 fc7360068a Update version number to beta2 2013-03-29 10:04:30 +01:00
Badlop 4c2d2bd4e9 Add mod_carboncopy that implements XEP-0280 v0.8 2013-03-27 17:53:56 +01:00
Badlop 627f597989 Update URL of ejabberd's Git repository 2013-03-27 17:17:52 +01:00
Badlop e5cbcbdac5 Fix documentation of mysql and pgsql configuration 2013-03-27 17:14:21 +01:00
Badlop 06a98ae6fa Improve documentation of MSSQL database configuration 2013-03-27 17:05:26 +01:00
Badlop 9b735450b3 Improve documentation of MySQL storage 2013-03-27 16:44:25 +01:00
Badlop 807c67d964 Improve documentation of anonymous auth 2013-03-27 13:06:13 +01:00
Badlop 9b510579b3 Fix room configuration after binarization 2013-03-22 17:14:47 +01:00
Badlop d901aa982b Fix privacy list broadcast internal stanza after binarization 2013-03-22 13:57:45 +01:00
Badlop 2c6b12228a Change version number 2013-03-20 20:54:53 +01:00
Badlop f92a94a737 Copied PostgreSQL erlang library from ejabberd-modules SVN 2013-03-19 13:30:17 +01:00
Badlop 1b304aaf0a Copied MySQL erlang library from ejabberd-modules SVN 2013-03-19 13:30:15 +01:00
Badlop 9deb294328 Accumulated patch to binarize and indent code 2013-03-14 10:33:02 +01:00
Badlop 9c41abde10 list_to_integer/2 only works in OTP R14 and newer 2013-03-14 10:25:41 +01:00
Badlop 907e239d4e Fix bug when displaying offline messages in WebAdmin 2013-03-14 10:25:38 +01:00
Badlop c058687bf9 Update ejabberd version number to 2.1.12 2013-02-05 17:22:34 +01:00
Badlop aa47033fa1 Added release notes for 2.1.12 2013-02-05 17:20:29 +01:00
Badlop 3f93931409 New mod_muc_log option file_permissions (EJAB-1588) 2013-02-05 16:20:14 +01:00
Steven Lehrburger 426f1107c5 Fix issue with ejabberd_xmlrpc user auth and SCRAM
After enabling SCRAM password hashing and SSL in ejabberd, XMLRPC ejabberdctl commands were resulting in errors like this:

	W(<0.2623.0>:ejabberd_xmlrpc:328) : Error -118
	A problem '{error,invalid_account_data}' occurred executing the command user_sessions_info with arguments

It seems that this because ejabberd_commands was using a different authentication check than everything else, which wasn't properly taking account for potential password hashing. (Note I'm not really sure what AccountPassMD5 is doing, but it seems to be different than the ejabberd_auth_internal's SCRAM hasing.)
2013-02-04 12:57:56 +01:00
Badlop 2704378d43 Fix compatibility of LDAP support with Erlang R16A (EJAB-1612)
As explained in Erlang/OTP git log:
eldap: Remove calls to undocumented asn1rt* functions.
We are about to remove the old asn1rt* modules, so we must remove
the calls that eldap make to them. Since the calls are just a
sanity check, we can just remove the calls. Just doing the decode
will do roughly the same tests and generate similar exceptions.
2013-02-04 10:31:54 +01:00
Badlop e500fd74ad Fix warning about unused variable 2013-02-01 16:50:42 +01:00
Badlop e7f85411fe Update Hebrew translation (thanks to Isratine Citizen) 2013-01-31 17:27:47 +01:00
Badlop 15073aafa5 Fix angle brackets handle in MUC plaintext log (EJAB-1610) 2013-01-31 17:25:03 +01:00
Alexey Shchepin 0ae400533c Update copyright dates 2013-01-24 16:25:13 +02:00
Evgeniy Khramtsov d47dee8009 Make sure update_info returns atoms only (EJAB-1595) (Thanks to Jose M Herrero) 2013-01-03 20:26:16 +10:00
Alexey Shchepin d5506a3ff0 Fixed signedness issue in tls_drv GET_DESCRYPTED_INPUT (EJAB-1591) 2012-12-20 14:01:45 +02:00
Remco Wendt d81eb95cab Added command to list all the vhosts registered in an ejabberd node 2012-12-19 15:00:57 +02:00
alexeyshch 1f290c8a29 Merge pull request #37 from rraptorr/tls
TLS driver impovements
2012-12-17 04:53:09 -08:00
Evgeniy Khramtsov be33ab890e Fix broken JPEG photo (EJAB-1526) 2012-12-12 18:08:24 +10:00
Badlop 2c26926689 Copy, fix and document export2odbc command from mod_admin_extra.erl 2012-11-26 13:22:29 +01:00
Evgeniy Khramtsov 9208f4dd50 Make terms serialization faster 2012-11-22 16:18:48 +02:00
Alexey Shchepin dfcdf1ca7a Fixed mod_offline:store_offline_msg argument (EJAB-1581) 2012-11-09 12:48:25 +02:00
Badlop ec51ba7bc6 New Hebrew translation (thanks to Isratine Citizen) 2012-10-17 18:26:55 +02:00
Badlop 625e801431 Document in the guide the db_type modules option (EJAB-1560) 2012-10-03 18:14:36 +02:00
Badlop 2dc2769c92 Log IP address when auth attempt fails (thanks to Zach Calvert) 2012-08-27 17:40:01 +02:00
Badlop 8a737f875f Add SCRAM and remove MD5 support to ejabberd commands auth verification 2012-08-27 16:57:56 +02:00
Badlop 4147081f0b Added clause so ejabberdctl number of arguments error report works with R15 2012-08-27 16:38:52 +02:00
Badlop a47fd96cc8 On shutdown, first stop listeners, then modules (thanks to Vishal Xica)(EJAB-1566) 2012-07-25 13:02:21 +02:00
Badlop 4d54bce621 Send announce Message stanzas as Headline type instead of Normal 2012-07-24 18:35:41 +02:00
Janusz Dziemidowicz 5e7a1c8829 Detect OpenSSL version at runtime, not at compile time 2012-07-24 07:40:07 +02:00
Janusz Dziemidowicz bc65b5008e Enable DHE key exchange in TLS driver 2012-07-19 12:06:03 +02:00
Janusz Dziemidowicz a407382d9f Enable ECDHE key exchange in TSL driver 2012-07-18 22:33:38 +02:00
Janusz Dziemidowicz d2d51381ec Disable old and unsecure ciphers in TLS driver
Disable:
- export ciphers - broken by design, 40 and 56 bit encryption
- low encryption ciphers - 56 and 64 bit encryption
- SSLv2 ciphers - some ciphers using MD5 MAC
2012-07-18 22:00:58 +02:00
Janusz Dziemidowicz e06c1c49c1 Disable SSL 2.0 in TLS driver
SSL 2.0 is not used anywhere as it has security problems. Disable it
unconditionally both in server and client mode. This does _not_
disable support for SSL 2.0 compatible client hello which still will
be accepted in the server mode.
2012-07-18 21:57:28 +02:00
Evgeniy Khramtsov 0cc920579c Fix regression introduced in odbc/mnesia merge 2012-07-17 23:35:16 +10:00
Janusz Dziemidowicz efc0b0ba5a Reduce size of XML stream state
This makes size of hibernated ejabberd_receiver a lot smaller (from
~290 words down to ~40).
2012-07-09 17:03:33 +03:00
Badlop 4e6eff3f1a Fix file name of Name Service Switch (thanks to Konstantin Khomoutov) 2012-07-06 12:07:41 +02:00
Badlop 2bf8125abf Allow multiple fqdn values in configuration (EJAB-1578) 2012-06-27 11:10:48 +02:00
Badlop 75756f0fc9 Check node name is available before starting ejabberd (EJAB-1572) 2012-06-08 17:33:21 +02:00
Badlop bc077266d9 Fix MUC start when Mnesia tables don't exist yet 2012-06-08 16:39:15 +02:00
Badlop a99c1e7031 Fix account registration 2012-06-06 12:55:35 +02:00
Badlop bb026ef598 Update Slovak translation (thanks to Marek Bečka) 2012-05-15 12:00:04 +02:00
Badlop e5d5ea49be Revert "Update ejabberd version number to 2.1.11"
This reverts commit 453e249de3.
2012-05-15 11:46:31 +02:00
Paweł Chmielowski 6c94d040fa Repeated http-bind request should abort only requests with same rid
Before this change, when request with repeat rid was received any waiting
request was aborted (but only after next request was delivered). With this
change, only request with identical rid are aborted and this is done
immediately
2012-05-03 11:44:34 +02:00
Paweł Chmielowski e8921d79ba Receiving missing http-bind request shouldn't close waiting out-ouf-order request 2012-05-03 11:44:21 +02:00
Evgeniy Khramtsov 6719d9669b Fix get_subscription_lists/4 2012-04-29 19:34:57 +10:00
Paweł Chmielowski 8b13226d00 Do not trigger item-not-found errors in mod_http_bind (part of EJABS-1827)
This changes what happens to request received with out of order rid,
previously response to such request was send immediately, and client was
free to submit another request, which triggered item-not-found if it was
delivered before request with missing rid.

This change make us wait for sending response to out of order request until
request with missing rid arrives. It also queues all outgoing data before
that condition is meet.
2012-04-27 13:23:19 +02:00
Evgeniy Khramtsov 437f68a9f3 Merge SQL and Mnesia code into one module (EJAB-1560) 2012-04-27 19:52:05 +10:00
Badlop 453e249de3 Update ejabberd version number to 2.1.11 2012-04-26 16:04:16 +02:00
Badlop 8688030d7a Add ejabberd 2.1.11 release notes 2012-04-26 15:57:37 +02:00
Badlop 6e2003c2e2 Recompile translation files 2012-04-26 15:54:54 +02:00
Badlop 5ed8959eba Update Italian translation (thanks to Luca Brivio) 2012-04-25 00:00:52 +02:00
Maxim Ignatenko 7623ebd327 mod_irc: Make use of MUC password 2012-04-24 15:21:46 +02:00
Badlop 522eb0fe9d Update PO files manually according to the English fix 2012-04-24 13:52:59 +02:00
Badlop 7dd171322d Fix English strings (thanks to Andreas van Cranenburgh) 2012-04-24 13:51:54 +02:00
Badlop 752652e56c Update German translation again (thanks to Nikolaus Polak) 2012-04-24 13:51:04 +02:00
Badlop 2582a478ab Update Portuguese-Brazil translation (thanks to Otávio Fernandes) 2012-04-23 09:58:03 +02:00
Badlop 52ff5de564 Update Polish translation (thanks to Zbyszek Żółkiewski) 2012-04-23 09:58:01 +02:00
Badlop ba793af8b7 Update Norwegian translation (thanks to Stian B. Barmen) 2012-04-23 09:57:59 +02:00
Badlop 3304ecd1f0 Update Catalan translation (thanks to Jan Kusanagi) 2012-04-23 09:57:56 +02:00
Badlop 4e0394cab3 Update Japanese translation (thanks to Mako N) 2012-04-20 15:42:41 +02:00
Badlop eaa963a840 Update Greek translation (thanks to James Iakovos Mandelis) 2012-04-20 15:42:38 +02:00
Evgeniy Khramtsov 31c13cc1c8 Remove useless mnesia call 2012-04-20 16:52:33 +10:00
Badlop 310aa7a00d Update Czech translation (thanks to Jan Pinkas) 2012-04-18 11:13:36 +02:00
Badlop fafd605d4d Update Chinese translation (thanks to Shelley Shyan) 2012-04-18 10:13:34 +02:00
Badlop 078f3583f0 Update Turkish translation (thanks to Doruk Fisek) 2012-04-18 10:13:15 +02:00
Badlop 0b337329ba Update Russian translation (thanks to Evgeniy Khramtsov) 2012-04-18 10:12:47 +02:00
Badlop f5df63554f Update Dutch translation (thanks to Andreas van Cranenburgh) 2012-04-18 10:12:22 +02:00
Badlop 46c4f46451 Update Esperanto translation (thanks to Andreas van Cranenburgh) 2012-04-18 10:12:09 +02:00
Badlop e034864c12 Update German translation (thanks to Nikolaus Polak) 2012-04-18 10:11:36 +02:00
Badlop 91f38cc849 Extract new strings 2012-04-18 10:08:30 +02:00
Evgeniy Khramtsov e616d2686f Perform user part substitution in ldap_rfilter (EJAB-1555) 2012-04-17 17:19:53 +10:00
Badlop 5a09d671ab Photos from LDAP not displayed in some clients, lacking TYPE (thanks to Alex Crycheck)(EJAB-1554) 2012-04-16 12:25:14 +02:00
Badlop 58d49d2867 Update Spanish translation 2012-04-15 00:21:22 +02:00
Badlop 8bb58ba3c3 Extract new strings 2012-04-15 00:21:15 +02:00
Badlop 017ce4e092 Fix translation script to use ejabberd_regexp (EJAB-921) 2012-04-15 00:21:10 +02:00
Badlop 49859683b0 Document how to provide a long announcement (EJAB-1553) 2012-04-14 23:29:55 +02:00
Badlop 169b83b36d Handle the scenario of disabled mod_muc (EJAB-1553) 2012-04-14 23:29:30 +02:00
Evgeniy Khramtsov 86435ba9aa ODBC support for mod_blocking 2012-04-12 14:22:56 +10:00
Paweł Chmielowski e2d6bc95a4 Parse and encode https header names like native http parser does
This code adds case normalization step to https headers parsing, making
it correctly use atoms for some special header no matter how upper/lower
case letters are used in input string
2012-04-11 17:28:18 +02:00
Christophe Romain 06f570f4ff return user affiliation for a specified node (thanks to Karim Gemayel) (EJAB-1294) 2012-04-11 16:50:36 +02:00
Badlop 730dfe8fc7 Add comments about Dialyzer warnings 2012-04-11 16:34:03 +02:00
Evgeniy Khramtsov 5619d39bd3 Add odbc modules to Makefile.win32 2012-04-09 14:53:15 +10:00
Evgeniy Khramtsov 959e0ff1c9 Remove obsoleted function call 2012-04-09 10:43:49 +10:00
Paweł Chmielowski 2c228e6414 Don't use binary:match to extract lines from binaries
This was added in R13B3, lets roll our own implementation to make sure it
works on older erlang versions.
2012-04-06 18:55:27 +02:00
Paweł Chmielowski 82468bff00 Fix makefile rules for building dll-s in Makefile.win32 files 2012-04-06 16:31:17 +02:00
Paweł Chmielowski 5f82846732 Parse correctly https request split into multiple packets
This fixes case when SockMod:recv() calls returns only part of first line
of http request (GET/POST/OPTION/HEAD line). Before that change request
like that (and if keep-alive was active, all further request) were dropped.

This fixes EJAB-1537.
2012-04-06 16:22:08 +02:00
Paweł Chmielowski 09c75af15c Make sure that res is initialized in all cases 2012-04-06 12:00:43 +02:00
Alexey Shchepin 91964b1aba Added missed tls:recv_data/2 2012-04-06 11:53:53 +02:00
Paweł Chmielowski af2e9169e6 Don't ignore Length parameter in tls:recv 2012-04-06 11:53:21 +02:00
Alexey Shchepin 4637e2c66b Avoid quadratic behavior in reading SSL data 2012-04-06 11:47:53 +02:00
Paweł Chmielowski 1f1a98d7ae Properly handle HEAD request in mod_http_bind (this fixes EJAB-1538) 2012-04-06 11:47:38 +02:00
Evgeniy Khramtsov cea23b055b Get rid of duplicated code 2012-04-06 12:31:29 +10:00
Evgeniy Khramtsov 41a0eae0bd ODBC support for mod_shared_roster 2012-04-04 20:37:43 +10:00
Evgeniy Khramtsov 5fab00011e ODBC support for mod_irc 2012-04-03 20:23:41 +10:00
Evgeniy Khramtsov ca5f028016 ODBC support for mod_vcard_xupdate 2012-04-02 15:21:54 +10:00
Evgeniy Khramtsov b43444f674 ODBC support for mod_announce 2012-04-02 14:49:13 +10:00
Evgeniy Khramtsov 866085c918 Add ODBC exporting function for privacy table 2012-04-02 12:39:23 +10:00
Evgeniy Khramtsov 585c5afd1a Add notes about mod_muc_odbc 2012-04-02 10:57:10 +10:00
Evgeniy Khramtsov 6ec5c7c4d8 Use proper module name 2012-03-31 22:56:51 +10:00
Evgeniy Khramtsov 6b3875814c ODBC support for mod_muc 2012-03-31 21:41:54 +10:00
Evgeniy Khramtsov 3a51c801e1 Change log level from informational to error 2012-03-19 18:52:20 +10:00
Badlop 983da9c887 Relax digest-uri handling (thanks to Daniel Willmann)(EJAB-1529)
This patch introduces a new config option - fqdn - to set the fully
qualified domain name of the host:
  {fqdn, "foo.example.com"}.
This fixes a problem with Pidgin not being able to log in on a server
that used SRV records.
2012-03-16 14:16:17 +01:00
Evgeniy Khramtsov f7b6446c74 Assume we have only one CPU when an auto-detection fails (EJAB-1516) 2012-02-29 00:45:45 +10:00
Evgeniy Khramtsov deb87f2dfa Cache caps timestamp before the IQ-request is done 2012-02-28 16:38:24 +10:00
Alexey Shchepin b1e2538488 Update copyright dates 2012-02-23 17:52:34 +02:00
Badlop 7b9e59d15d Recommend Erlang/OTP R13B04 and R14B04 2012-02-22 15:42:13 +01:00
Badlop 794d0bbe69 Fix Enlish in the Guide (thanks to Ludovic Bocquet) 2012-02-22 15:40:31 +01:00
Christophe Romain f7ffdfa15d Fix typo in xep number, bosh is xep0206 (thanks to Ludovic Bocquet) 2012-02-20 14:15:08 +01:00
Badlop 4900ac31a7 Add thanks to Ludovic Bocquet for past Guide contributions 2012-02-15 18:30:16 +01:00
Badlop 112a18f966 Work also with some unicode strings in PgSQL (EJAB-1490) 2012-02-14 13:18:18 +01:00
Badlop 7d623d5eb4 Option default_host for handling HTTP requests with ambiguous Host (EJAB-1261) 2012-02-14 11:35:52 +01:00
Evgeniy Khramtsov 4819738e8f Receiver should not generate an exception 2012-02-14 17:03:08 +10:00
Badlop 948318ca19 Fix the documentation about default value of captcha_cmd option 2012-02-01 00:09:51 +01:00
Evgeniy Khramtsov 89aa7baa5b Replace a single quote with double quotes in
an ODBC escape (thanks to Vladislav Chugunov)
2012-01-31 11:18:37 +10:00
Badlop 95928a7cd4 http_bind webserver TLS fail on Chrome (thanks to Adam Langley)(EJAB-1530) 2012-01-19 13:21:25 +01:00
Alexey Shchepin 1ecc9ac48c Fixed ejabberd_http:get_line 2012-01-19 12:20:48 +02:00
Badlop 288196c7e8 Foreign shared rosters items not pushed (thanks to Nathan Bruning)(EJAB-1509) 2012-01-04 19:21:31 +01:00
Badlop 0283c6cdfe Revert "Update ejabberd version number to 2.1.10"
This reverts commit bcdae19141.
2011-12-31 20:40:04 +01:00
Alexey Shchepin d4e7b0cda0 mod_private.erl: misc errors cases fixes (thanks to Karim Gemayel) 2011-12-30 16:08:24 +02:00
Badlop bcdae19141 Update ejabberd version number to 2.1.10 2011-12-23 12:27:30 +01:00
Badlop 6edbbded40 New release notes for 2.1.10 2011-12-23 12:25:50 +01:00
Badlop 684cac274d Support undefinition of ssl:seed in R15B 2011-12-23 12:19:38 +01:00
Badlop ce7b008b8f Use the regexp frontend module (EJAB-921) 2011-12-23 11:33:33 +01:00
Alexey Shchepin a3c58f2896 Always allow packets from user's server and bare jid in mod_privacy* 2011-12-22 16:37:47 +02:00
Alexey Shchepin 3839f1055a Fixed the previous mod_blocking patch 2011-12-21 18:28:04 +02:00
Alexey Shchepin 94350ddb3a Corrected mod_blocking hooks return value, activate "Blocked Contacts" privacy list after it is changed 2011-12-21 16:25:01 +02:00
Badlop 919cdc27db Fix update with stripped beams (thanks to Jose M Herrero)(EJAB-1520) 2011-12-21 12:58:58 +01:00
Badlop 2029e39299 Support Erlang/OTP R15B driver (EJAB-1521) 2011-12-21 12:15:21 +01:00
Evgeniy Khramtsov 707bb0a321 Replace regexp with ejabberd_regexp 2011-12-19 16:10:48 +10:00
Evgeniy Khramtsov 298a4a3acf Get rid of +driver option because it is incompatible with R15B 2011-12-19 16:01:04 +10:00
Badlop 262157c88d Preliminary support for groupname@vhost in Displayed Groups (EJAB-506) 2011-12-15 17:27:28 +01:00
Badlop 37107af7b4 Fix command "update" to return response in the expected format 2011-12-08 19:39:36 +01:00
Badlop 13a9ca65a4 Don't reveal invitee's resource when room informs invitor 2011-12-08 16:35:31 +01:00
Badlop d3369c83e7 Add callback function print_state/1 for behavior p1_fsm 2011-12-08 12:50:40 +01:00
Badlop 48308042b6 Use the regexp frontend module (EJAB-921) 2011-12-08 12:40:04 +01:00
Badlop d30ad8ba28 Frontend module to Re and Regexp (EJAB-921) 2011-12-08 12:39:58 +01:00
Pablo Polvorin cf973f27bb Prevent overload of incomming s2s connections
Three changes were introduced:

1) ejabberd_s2s_in now uses p1_fsm instead of gen_fsm.  And uses
   the {max_queue, N} option to kill the process if its input
   queue grows too much.
2) If a ejabberd_s2s_in process is overload and killed, the server
   that originated that connection is not allowed to connect back
   to us for X seconds (set to 60seconds on the source)
3) The list of blocked (both statically and dynamically by the above
   method) host is now also checked for hosts authenticating by
   starttls+sasl. Previusly it was only used during dialback.
2011-12-02 15:30:20 -03:00
Pablo Polvorin 87df27109a Fix bug on s2s shaper when TLS is used
The shaper was not enabled if the remote server authenticates
using a certificate instead of dialback.
2011-12-01 13:16:21 -03:00
Christophe Romain 89e4e822bf add hooks for node creation/deletion (EJAB-1470) 2011-11-29 14:13:13 +01:00
Badlop b89d4c7476 Use httpc instead of the deprecated http 2011-11-26 17:20:06 +01:00
Badlop ee968b5573 Fix error in mod_vcard when lowercasing some vjud search result fields (EJAB-1490) 2011-11-26 17:08:17 +01:00
Badlop 1f97740cfa Avoid a possible race condition 2011-11-26 17:03:24 +01:00
Badlop 07cfc000ea Comment section 6.3.1 because it has no content at all 2011-11-15 16:46:00 +01: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 0656377165 Support to update modules in R14B04 and higher 2011-11-03 19:47:11 +01:00
Badlop 1a419972d2 Fix previous commit about language name 2011-10-20 16:28:53 +02:00
Badlop 98b150e1a4 Fix extraction of language name from PO files 2011-10-20 15:45:17 +02:00
Evgeniy Khramtsov 96800e9b75 Get rid of useless mnesia transaction (EJAB-1502) 2011-10-14 16:57:51 +10:00
Badlop c1d479f863 Set ejabberd version to 2.1.x 2011-10-13 17:56:19 +02:00
Badlop 4be7984a0e Update ejabberd version number to 2.1.9 2011-09-26 18:11:18 +02:00
Badlop 3b0b318730 New release notes for 2.1.9 2011-09-26 18:09:01 +02:00
Evgeniy Khramtsov 39bc499b10 Fix instruction and error text 2011-09-26 20:00:43 +10:00
Evgeniy Khramtsov de4d4a4bbb Change "muc#role" field type to "hidden" 2011-09-26 19:54:55 +10:00
Evgeniy Khramtsov 8631dd14e9 Correct lists:keysearch output processing and fix dialyzer warning 2011-09-26 19:06:34 +10:00
Evgeniy Khramtsov e7d12f4b9e Code cleanup 2011-09-26 18:44:41 +10:00
Maxim Ignatenko f17a531e15 Use treap correctly 2011-09-26 11:16:30 +03:00
Maxim Ignatenko ff57c8a58c Apply patch from Evgeniy Khramtsov 2011-09-26 11:16:30 +03:00
Maxim Ignatenko 499b884c67 Use treap for keeping last voice request timestamps 2011-09-26 11:16:29 +03:00
Maxim Ignatenko 0c261fb903 Fix voice request/approvement detection and extract_jid_from_voice_approvement/1 2011-09-26 11:16:29 +03:00
Maxim Ignatenko 322263fd5c Fix typo 2011-09-26 11:16:29 +03:00
Maxim Ignatenko 845f5cabec Fix patterns in check_voice_request_fields/2 and check_voice_approvement_fields/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko f919349173 Use more pattern-matching 2011-09-26 11:16:29 +03:00
Maxim Ignatenko a91ae03dc6 Remove try/catch 2011-09-26 11:16:29 +03:00
Maxim Ignatenko faed7698c2 Use pattern matching in check_voice_request_fields/2 and check_voice_approvement_fields/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko eb8347f92b Reverse arguments order for timer:now_diff/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko c53ffe6dc5 Fix return value inconsistency in last_voice_request_time/2 2011-09-26 11:16:29 +03:00
Maxim Ignatenko 7c8eab4f43 Use jlib:parse_xdata_submit/1 in is_voice_request/1 and is_voice_approvement/1 2011-09-26 11:16:29 +03:00
Maxim Ignatenko b1d8168dd3 Use bare JID as key in state.last_voice_request_time 2011-09-26 11:16:28 +03:00
Maxim Ignatenko c196c1f5e5 Use lists:foreach instead of lists:map in send_voice_request/2 2011-09-26 11:16:28 +03:00
Maxim Ignatenko 604563af76 Remove needless time conversions 2011-09-26 11:16:28 +03:00
Maxim Ignatenko 6848d3affe Ignore any extra elements in voice approvement form submission 2011-09-26 11:16:28 +03:00
Maxim Ignatenko 6708914e99 Add 2 room config options
- Allow voice requests?
 - Minimum interval between voice requests
2011-09-26 11:16:28 +03:00
Maxim Ignatenko 5921f9c506 Simple rate control
Visitor allowed to send new voice request only after specified amount of
time (or after rejoining).
2011-09-26 11:16:28 +03:00
Maxim Ignatenko 6193ed63b1 Voice approvement support 2011-09-26 11:16:28 +03:00
Maxim Ignatenko 18dd0d08cb Implement basic voice request processing logic.
No rate control or configuration for now
2011-09-26 11:16:28 +03:00
Maxim Ignatenko 8dd6f128bf Implement voice approvement detection and remove some debug code 2011-09-26 11:16:28 +03:00
Maxim Ignatenko 04267930de Fix form instructions 2011-09-26 11:16:27 +03:00
Maxim Ignatenko d83716dece Use ejabberd_router:route/3 directly, instead of send_packet_to/3 2011-09-26 11:16:27 +03:00
Maxim Ignatenko c77358bdc1 Use exception handling in is_invitation/1 2011-09-26 11:16:27 +03:00
Maxim Ignatenko 44987479a5 Fix exception handling in is_voice_request/1 2011-09-26 11:16:27 +03:00
Maxim Ignatenko 30d89abf66 Implemented sending voice request and fixed some bugs 2011-09-26 11:16:27 +03:00
Maxim Ignatenko f175be6b78 Add function for detecting voice requests 2011-09-26 11:16:27 +03:00
Maxim Ignatenko 2a41ca0628 More correct dispatching of normal messages to conference room
is_invitation/1 function returns true if <x> element of message is
an invitation
2011-09-26 11:16:27 +03:00
Janusz Dziemidowicz c4f9a050c9 Decrease CPU usage caused by tls:send with large data.
Sending one large chunk of data with tls:send eats lots of
CPU power and blocks whole Erlang emulator. This is caused by the
fact that encrypted output is read from memory BIO in 1k chunks.
Memory BIO, after reading data, shifts the remaining part.
If large chunks of data (few MB) is sent and then read in 1k
chunks, then a _lot_ of shifting is performed eating CPU.

The solution is to simply allocate binary of the needed size
(amount of data in memory BIO can be retrieved with
BIO_ctrl_pending) and then issue only one read that reads the
whole data.
2011-09-25 00:23:31 +02:00
Badlop 32ff6b56eb Fix mod_muc_log crash when first log entry is room being destroyed (EJAB-1499) 2011-09-23 17:00:50 +02:00
Christophe Romain 33c0ebb100 fix broken PEP after EJAB-1498 (thanks to Karim Gemayel) 2011-09-22 20:51:59 +02:00
Badlop cb9aecf35e ejabberdctl doesn't support parameters with blankspaces (EJAB-1458)
Revert "Escape output from ctlexec() to erl script (thanks to Dan Scott)(EJAB-1399)"

This reverts commit 6dea2d2307.
2011-09-22 16:18:04 +02:00
Christophe Romain d5b4d67858 Fix Denial of Service when user sends malformed publish stanza (thanks to Oleg Smirnov) (EJAB-1498) 2011-09-21 14:39:50 +02:00
Badlop 9f4ae07100 added svg mimetype to default content types (thanks to Markus Kohlhase) 2011-09-20 16:50:22 +02:00
Badlop 32fc36b17d Add support for @online@ to add_user_to_group 2011-09-20 16:44:51 +02:00
Evgeniy Khramtsov 33766a124d New option support: ldap_deref_aliases (EJAB-639) 2011-09-19 16:58:55 +10:00
Evgeniy Khramtsov ede8d57373 Fix dialyzer warnings 2011-09-17 10:48:52 +10:00
Evgeniy Khramtsov 2494e39c9e Fix dialyzer warnings 2011-09-15 16:59:45 +10:00
Badlop 07fdd089a0 No need to explicitly skip old useless tables, simply fix keep_tables 2011-09-14 12:15:53 +02:00
Evgeniy Khramtsov 228a587fc5 Fix previous commit 2011-09-09 12:40:07 +10:00
Evgeniy Khramtsov e432ff58f9 Avoid crash when performing admin action 2011-09-09 12:34:06 +10:00
Badlop b8969f68e0 Fixed support for multi-resource occupants (EJAB-305) 2011-09-08 16:10:38 +02:00
Badlop dbb2d1c229 Fix room config change logging, due to allow_private_messages_from_visitors 2011-09-08 12:34:25 +02:00
Badlop 609b7ed5c5 Support to import XML files without password-format attribute 2011-09-08 11:41:45 +02:00
Badlop 3eca0259f7 Clarification about system user of ejabberd.init 2011-09-06 13:39:43 +02:00
Badlop 20f3fc96c3 Fix SCRAM to support attributes which value has only one character 2011-09-05 23:21:38 +02:00
Badlop 76a174a007 Fix typo in the Guide about user_regexp 2011-09-05 19:24:05 +02:00
Evgeniy Khramtsov 0fde148a9f Fix dialyzer warnings 2011-09-05 22:00:50 +10:00
Evgeniy Khramtsov 6b0eb1f09d Reorganize the code to shut up the dialyzer 2011-09-05 21:27:31 +10:00
Evgeniy Khramtsov f3c90ee266 Get rid of useless check 2011-09-05 21:06:18 +10:00
Evgeniy Khramtsov 2482c9c5ed Merge set_affiliation/3 and set_affiliation_and_reason/4 into set_affiliation/4 2011-09-05 20:53:01 +10:00
Badlop da555fb908 Fix SCRAM auth of uppercase passwords (EJAB-1196) 2011-09-05 12:50:24 +02:00
Evgeniy Khramtsov 7ae7d6315f Remove useless clauses 2011-09-05 18:07:50 +10:00
Evgeniy Khramtsov eccb499346 Add some magic in order to shut up the dialyzer (because I do not want to replace the macro with a function) 2011-09-05 17:33:51 +10:00
Evgeniy Khramtsov 0c1796ea40 Fix potential case-clause crash 2011-09-05 17:27:15 +10:00
Evgeniy Khramtsov 826fab9999 Remove useless case clause 2011-09-05 17:12:45 +10:00
Evgeniy Khramtsov 3b95108a3a Replace VVALUEL macro with function in order to shut up the dialyzer 2011-09-05 17:09:36 +10:00
Evgeniy Khramtsov ab2a298ebf Merge branch '2.1.x' of git+ssh://gitorious.process-one.net/ejabberd/mainline into 2.1.x 2011-09-05 16:53:10 +10:00
Evgeniy Khramtsov 8b5fa88b6f Export do_client_version/3 in order to shut up the dialyzer 2011-09-05 16:52:36 +10:00
Evgeniy Khramtsov de712e5ccb Remove useless case clauses 2011-09-05 16:48:04 +10:00
Evgeniy Khramtsov ffdf5cb206 Remove useless case clause 2011-09-05 16:47:18 +10:00
Evgeniy Khramtsov f1a91108ef Correct some function clauses and value types 2011-09-05 16:31:58 +10:00
Evgeniy Khramtsov ffe063a0e9 Get rid of useless code 2011-09-05 15:59:30 +10:00
Evgeniy Khramtsov d74f02e367 ejabberd_auth:remove_user/2 always returns ok 2011-09-05 15:39:55 +10:00
Evgeniy Khramtsov 0da2107974 Fix some case clauses 2011-09-05 15:35:46 +10:00
Evgeniy Khramtsov 1994c8a174 Change argument of open_port/2 to string in order to shut up the dialyzer 2011-09-05 15:28:14 +10:00
Evgeniy Khramtsov 2434be4803 Get rid of useless function clause 2011-09-05 15:13:54 +10:00
Badlop d6fcee4faa Replace calls of OTP's Binary, since they would require R14 2011-09-04 14:56:56 +02:00
Badlop 41d028d101 First check occupant existence, later check the message 2011-09-04 13:28:32 +02:00
Christophe Romain 75fc431fb8 enable pubsub#deliver_notification checking (thanks to Karim Gemayel)(EJAB-1453) 2011-08-31 16:11:01 +02:00
Badlop 917d1be994 Explicitly skip useless ejabberd 2.0* mnesia tables when restoring backup
Reference:
http://www.ejabberd.im/node/4867
2011-08-29 12:36:49 +02:00
Christophe Romain 900b013658 typo fix (thanks to Artem Sh)(EJAB-1424) 2011-08-25 17:22:48 +02:00
Badlop 84486dcb2c Support multiple sessions per nick in muc_online_users, relevant for max_user_conferences (EJAB-305) 2011-08-23 21:53:41 +02:00
Badlop 9a190f3bc4 Send private messages to all the sessions with same nick (EJAB-305) 2011-08-23 21:53:30 +02:00
Badlop c76bbdf16f Don't send unavailable presence when leaving occupant has other nicks in the room (EJAB-305) 2011-08-23 21:53:19 +02:00
Badlop 24c5063b99 Allow multiple entry with same nick to MUC rooms (thanks to Magnus Henoch)(EJAB-305) 2011-08-23 21:52:20 +02: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 3edea6c806 Fix bug in scram is_alpha 2011-08-17 19:33:58 +02:00
Badlop abebabc487 Fix ODBC account counting (thanks to Artem Sh)(EJAB-1491) 2011-08-16 19:33:22 +02:00
Badlop 1ee6eae684 Fix and improve support for SCRAM auth method (EJAB-1196) 2011-08-16 00:26:49 +02:00
Badlop 24852b9be8 Indicate license and copyright (thanks to Stephen Röttger)(EJAB-1196) 2011-08-16 00:25:40 +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
Pablo Polvorin 573a84b2ec handle case when roster version on DB is enabled but version is not found.
Thanks Evgeniy.
2011-08-05 12:21:24 -03:00
Badlop 75f8e174dc Add comment about ping requests sent even to non-supporting clients 2011-08-04 18:29:13 +02:00
Badlop e690afc33b Verify username provided in registration web form 2011-07-27 12:25:51 +02:00
Badlop 493b664f19 Handle case when ejabberd_auth_* says the account exists 2011-07-27 11:44:35 +02:00
Badlop 83014fb77b Include status 110 in presence to new occupant (EJAB-740) 2011-07-16 19:35:59 +02:00
Badlop 1a4722e909 Fix typo in modules overview 2011-07-15 02:53:32 +02:00
Badlop 369fefd5a8 Use #roster record instead of direct tuple 2011-07-13 17:06:17 +02:00
Evgeniy Khramtsov cc0aa707c4 Document ldap_tls_cacertfile and ldap_tls_depth options (EJAB-1299) 2011-07-13 15:57:01 +10:00
Evgeniy Khramtsov 7e14b2d46a Add ldap_tls_cacertfile and ldap_tls_depth options (EJAB-1299) 2011-07-13 15:40:27 +10:00
Badlop 1e88c3f180 Room option to ignore private messages from visitors (thanks to Maxim Ignatenko) 2011-07-11 17:34:07 +02:00
Maxim Ignatenko 49ee637a5c One more fix 2011-07-11 12:55:38 +02:00
Maxim Ignatenko 71f085fec0 Improve spelling and fix some typos 2011-07-11 12:55:35 +02:00
Badlop caa84e2731 Fix reference to 'admin' ACL name (thanks to Samuel Wejeus)(EJAB-1476) 2011-07-05 16:33:06 +02:00
Alexey Shchepin 2787df035c Merge branch '2.1.x' of git+ssh://git@gitorious.process-one.net/ejabberd/mainline.git into 2.1.x 2011-07-03 18:58:45 +03:00
Alexey Shchepin 32da749041 Minor mod_version bugfix 2011-07-03 18:58:07 +03:00
Juan Pablo Carlino 0cbd702419 is_user_in_group/3 must check if user belongs to given Group from Host specified on third argument.
* is_user_in_group/3 was checking if given user (passed on first parameter as
a bare jid) belonged to group of the server derived from this jid.
2011-07-01 12:51:52 -03:00
Alexey Shchepin 15f664af26 Optimized mod_roster_odbc:get_roster 2011-06-29 11:56:23 +03:00
Badlop d673ff5fad Support servers that reply error on any command before registration (thanks to Gelraen)
This makes mod_irc actually work with servers that reply with error
on any command before the registration procedure is completed.
Such servers, after NICK/USER they send PING and wait for client response.
In such situation they reply with message 451 to CODEPAGE command,
and mod_irc thinks that connection failed.

Example IRC server that works thanks to the patch: irc.mibbit.com
2011-06-28 23:04:12 +02:00
Badlop f112df2cfc Comment in the cfg file the correct node name used in ejabberdctl.template 2011-06-28 00:31:13 +02:00
Evgeniy Khramtsov 35644cf73c Match ldap_uidattr_format case-insensitively (EJAB-1449) 2011-06-23 15:14:15 +10:00
Evgeniy Khramtsov 6cc6c04c4a Log an error when an LDAP filter is incorrect (EJAB-1395) 2011-06-15 20:06:32 +10:00
Badlop b9e1bc34da Clarify in mod_register_web example what host to put in the URL 2011-06-11 16:15:37 +02:00
Evgeniy Khramtsov f4d0b201ad Escape iolist correctly when NIFs are disabled (EJAB-1462) 2011-06-11 23:28:10 +10:00
Badlop aff99097e7 Fix compilation in Windows (thanks to flyingwow99)
See http://www.ejabberd.im/node/4549
2011-06-07 13:27:00 +02:00
Jerome Sautret 18f6b02065 Added 2.1.8 release notes. 2011-06-06 11:18:10 +02:00
Badlop 33544569fb Fix crash when user publishes an item (EJAB-1457) 2011-06-01 23:22:25 +02:00
416 changed files with 116907 additions and 96395 deletions
+20 -18
View File
@@ -2,7 +2,16 @@
# You can add personal rules in your file .git/info/exclude
*.swp
*~
\#*#
.#*
/Makefile
/config.log
/config.status
/configure
/aclocal.m4
/contrib/extract_translations/extract_translations.beam
/*.cache
/deps/
/doc/*.aux
/doc/*.haux
/doc/*.html
@@ -16,23 +25,16 @@
/doc/*.toc
/doc/contributed_modules.tex
/doc/version.tex
/src/*.beam
/src/*.so
/src/*.so.dSYM
/src/*/*.beam
/src/*/Makefile
/src/Makefile
/ebin/
/ejabberd.init
/ejabberdctl.example
/include/XmppAddr.hrl
/rel/ejabberd/
/src/XmppAddr.asn1db
/src/XmppAddr.erl
/src/XmppAddr.hrl
/src/aclocal.m4
/src/autom4te.cache
/src/config.log
/src/config.status
/src/ejabberd.init
/src/ejabberdctl.example
/src/eldap/ELDAPv3.asn1db
/src/eldap/ELDAPv3.erl
/src/eldap/ELDAPv3.hrl
/src/eldap/eldap_filter_yecc.erl
/src/epam
/src/ejabberd.app.src
/src/eldap_filter_yecc.erl
/vars.config
/dialyzer/
/test/*.beam
/logs/
+38
View File
@@ -0,0 +1,38 @@
language: erlang
otp_release:
- R16B03
- R15B01
services:
- riak
before_install:
- sudo apt-get -qq update
install:
- sudo apt-get -qq install libexpat1-dev libyaml-dev libpam0g-dev
before_script:
- mysql -u root -e "CREATE USER 'ejabberd_test'@'localhost' IDENTIFIED BY 'ejabberd_test';"
- mysql -u root -e "CREATE DATABASE ejabberd_test;"
- mysql -u root -e "GRANT ALL ON ejabberd_test.* TO 'ejabberd_test'@'localhost';"
- psql -U postgres -c "CREATE USER ejabberd_test WITH PASSWORD 'ejabberd_test';"
- psql -U postgres -c "CREATE DATABASE ejabberd_test;"
- psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE ejabberd_test TO ejabberd_test;"
script:
- ./autogen.sh
- ./configure --enable-all --disable-odbc --disable-elixir
- make xref
- ERL_LIBS=$PWD make test
- grep -q 'TEST COMPLETE, \([[:digit:]]*\) ok, .* of \1 ' logs/raw.log
after_script:
- find logs -name suite.log -exec cat '{}' ';'
after_failure:
- find logs -name ejabberd.log -exec cat '{}' ';'
notifications:
email: false
+5 -5
View File
@@ -4,8 +4,8 @@ with the OpenSSL library and distribute the resulting binary.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -306,9 +306,9 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
+315
View File
@@ -0,0 +1,315 @@
REBAR = @ESCRIPT@ rebar
INSTALL = @INSTALL@
SED = @SED@
ERL = @ERL@
prefix = @prefix@
exec_prefix = @exec_prefix@
DESTDIR =
# /etc/ejabberd/
ETCDIR = $(DESTDIR)@sysconfdir@/ejabberd
# /bin/
BINDIR = $(DESTDIR)@bindir@
# /sbin/
SBINDIR = $(DESTDIR)@sbindir@
# /lib/ejabberd/
EJABBERDDIR = $(DESTDIR)@libdir@/ejabberd
# /share/doc/ejabberd
PACKAGE_TARNAME = @PACKAGE_TARNAME@
datarootdir = @datarootdir@
DOCDIR = $(DESTDIR)@docdir@
# /usr/lib/ejabberd/ebin/
BEAMDIR = $(EJABBERDDIR)/ebin
# /usr/lib/ejabberd/include/
INCLUDEDIR = $(EJABBERDDIR)/include
# /usr/lib/ejabberd/priv/
PRIVDIR = $(EJABBERDDIR)/priv
# /usr/lib/ejabberd/priv/bin
PBINDIR = $(PRIVDIR)/bin
# /usr/lib/ejabberd/priv/lib
SODIR = $(PRIVDIR)/lib
# /usr/lib/ejabberd/priv/msgs
MSGSDIR = $(PRIVDIR)/msgs
# /var/lib/ejabberd/
SPOOLDIR = $(DESTDIR)@localstatedir@/lib/ejabberd
# /var/lock/ejabberdctl
CTLLOCKDIR = $(DESTDIR)@localstatedir@/lock/ejabberdctl
# /var/lib/ejabberd/.erlang.cookie
COOKIEFILE = $(SPOOLDIR)/.erlang.cookie
# /var/log/ejabberd/
LOGDIR = $(DESTDIR)@localstatedir@/log/ejabberd
INSTALLUSER=@INSTALLUSER@
# if no user was enabled, don't set privileges or ownership
ifeq ($(INSTALLUSER),)
O_USER=
G_USER=
CHOWN_COMMAND=echo
CHOWN_OUTPUT=/dev/null
INIT_USER=root
else
O_USER=-o $(INSTALLUSER)
G_USER=-g $(INSTALLUSER)
CHOWN_COMMAND=chown
CHOWN_OUTPUT=&1
INIT_USER=$(INSTALLUSER)
endif
all: deps src
deps: deps/.got
deps/.got:
rm -rf deps/.got
rm -rf deps/.built
$(REBAR) get-deps && :> deps/.got
deps/.built: deps/.got
$(REBAR) compile && :> deps/.built
src: deps/.built
$(REBAR) skip_deps=true compile
update:
rm -rf deps/.got
rm -rf deps/.built
$(REBAR) update-deps && :> deps/.got
xref: all
$(REBAR) skip_deps=true xref
translations:
contrib/extract_translations/prepare-translation.sh -updateall
doc:
echo making $$target in doc; \
(cd doc && $(MAKE) $$target) || exit 1
edoc:
$(ERL) -noinput +B -eval \
'case edoc:application(ejabberd, ".", []) of ok -> halt(0); error -> halt(1) end.'
spec:
$(ERL) -noinput +B -pa ebin -pa deps/*/ebin -eval \
'case xml_gen:compile("tools/xmpp_codec.spec") of ok -> halt(0); _ -> halt(1) end.'
DLLs := $(wildcard deps/*/priv/*.so) $(wildcard deps/*/priv/lib/*.so)
install: all
#
# Configuration files
$(INSTALL) -d -m 750 $(G_USER) $(ETCDIR)
[ -f $(ETCDIR)/ejabberd.yml ] \
&& $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml-new \
|| $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml
$(SED) -e "s*{{rootdir}}*@prefix@*" \
-e "s*{{installuser}}*@INSTALLUSER@*" \
-e "s*{{bindir}}*@bindir@*" \
-e "s*{{libdir}}*@libdir@*" \
-e "s*{{sysconfdir}}*@sysconfdir@*" \
-e "s*{{localstatedir}}*@localstatedir@*" \
-e "s*{{docdir}}*@docdir@*" \
-e "s*{{erl}}*@ERL@*" ejabberdctl.template \
> ejabberdctl.example
[ -f $(ETCDIR)/ejabberdctl.cfg ] \
&& $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \
|| $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
$(INSTALL) -b -m 644 $(G_USER) inetrc $(ETCDIR)/inetrc
#
# Administration script
[ -d $(SBINDIR) ] || $(INSTALL) -d -m 755 $(SBINDIR)
$(INSTALL) -m 550 $(G_USER) ejabberdctl.example $(SBINDIR)/ejabberdctl
# Elixir binaries
[ -d $(BINDIR) ] || $(INSTALL) -d -m 755 $(BINDIR)
-[ -f deps/elixir/bin/iex ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/iex $(BINDIR)/iex
-[ -f deps/elixir/bin/elixir ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/elixir $(BINDIR)/elixir
-[ -f deps/elixir/bin/mix ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/mix $(BINDIR)/mix
#
# Init script
$(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*" \
-e "s*@installuser@*$(INIT_USER)*" ejabberd.init.template \
> ejabberd.init
chmod 755 ejabberd.init
#
# Binary Erlang files
$(INSTALL) -d $(BEAMDIR)
$(INSTALL) -m 644 ebin/*.app $(BEAMDIR)
$(INSTALL) -m 644 ebin/*.beam $(BEAMDIR)
$(INSTALL) -m 644 deps/*/ebin/*.app $(BEAMDIR)
$(INSTALL) -m 644 deps/*/ebin/*.beam $(BEAMDIR)
# Install Elixir and Elixir dependancies
-$(INSTALL) -m 644 deps/*/lib/*/ebin/*.app $(BEAMDIR)
-$(INSTALL) -m 644 deps/*/lib/*/ebin/*.beam $(BEAMDIR)
rm -f $(BEAMDIR)/configure.beam
#
# ejabberd header files
$(INSTALL) -d $(INCLUDEDIR)
$(INSTALL) -m 644 include/*.hrl $(INCLUDEDIR)
$(INSTALL) -m 644 deps/*/include/*.hrl $(INCLUDEDIR)
#
# Binary C programs
$(INSTALL) -d $(PBINDIR)
$(INSTALL) -m 750 $(O_USER) tools/captcha.sh $(PBINDIR)
-[ -f deps/p1_pam/priv/bin/epam ] \
&& $(INSTALL) -m 750 $(O_USER) deps/p1_pam/priv/bin/epam $(PBINDIR)
#
# Binary system libraries
$(INSTALL) -d $(SODIR)
$(INSTALL) -m 644 $(DLLs) $(SODIR)
-[ -f $(SODIR)/jiffy.so ] && (cd $(PRIVDIR); ln -s lib/jiffy.so; true)
#
# Translated strings
$(INSTALL) -d $(MSGSDIR)
$(INSTALL) -m 644 priv/msgs/*.msg $(MSGSDIR)
#
# Spool directory
$(INSTALL) -d -m 750 $(O_USER) $(SPOOLDIR)
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(SPOOLDIR) >$(CHOWN_OUTPUT)
chmod -R 750 $(SPOOLDIR)
[ ! -f $(COOKIEFILE) ] || { $(CHOWN_COMMAND) @INSTALLUSER@ $(COOKIEFILE) >$(CHOWN_OUTPUT) ; chmod 400 $(COOKIEFILE) ; }
#
# ejabberdctl lock directory
$(INSTALL) -d -m 750 $(O_USER) $(CTLLOCKDIR)
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(CTLLOCKDIR) >$(CHOWN_OUTPUT)
chmod -R 750 $(CTLLOCKDIR)
#
# Log directory
$(INSTALL) -d -m 750 $(O_USER) $(LOGDIR)
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(LOGDIR) >$(CHOWN_OUTPUT)
chmod -R 750 $(LOGDIR)
#
# Documentation
$(INSTALL) -d $(DOCDIR)
[ -f doc/dev.html ] \
&& $(INSTALL) -m 644 doc/dev.html $(DOCDIR) \
|| echo "No doc/dev.html was built"
[ -f doc/guide.html ] \
&& $(INSTALL) -m 644 doc/guide.html $(DOCDIR) \
|| echo "No doc/guide.html was built"
[ -f doc/guide.pdf ] \
&& $(INSTALL) -m 644 doc/guide.pdf $(DOCDIR) \
|| echo "No doc/guide.pdf was built"
$(INSTALL) -m 644 doc/*.png $(DOCDIR)
$(INSTALL) -m 644 COPYING $(DOCDIR)
uninstall: uninstall-binary
uninstall-binary:
rm -f $(SBINDIR)/ejabberdctl
rm -f $(BINDIR)/iex
rm -f $(BINDIR)/elixir
rm -f $(BINDIR)/mix
rm -fr $(DOCDIR)
rm -f $(BEAMDIR)/*.beam
rm -f $(BEAMDIR)/*.app
rm -fr $(BEAMDIR)
rm -f $(INCLUDEDIR)/*.hrl
rm -fr $(INCLUDEDIR)
rm -fr $(PBINDIR)
rm -f $(SODIR)/*.so
rm -fr $(SODIR)
rm -f $(MSGSDIR)/*.msgs
rm -fr $(MSGSDIR)
rm -fr $(PRIVDIR)
rm -fr $(EJABBERDDIR)
uninstall-all: uninstall-binary
rm -rf $(ETCDIR)
rm -rf $(EJABBERDDIR)
rm -rf $(SPOOLDIR)
rm -rf $(CTLLOCKDIR)
rm -rf $(LOGDIR)
clean:
rm -rf deps/.got
rm -rf deps/.built
rm -rf test/*.beam
$(REBAR) clean
clean-rel:
rm -rf rel/ejabberd
distclean: clean clean-rel
rm -f config.status
rm -f config.log
rm -rf autom4te.cache
rm -rf deps
rm -rf ebin
rm -f Makefile
rm -f vars.config
rm -f src/ejabberd.app.src
[ ! -f ../ChangeLog ] || rm -f ../ChangeLog
rel: all
$(REBAR) generate
TAGS:
etags *.erl
Makefile: Makefile.in
deps := $(wildcard deps/*/ebin)
dialyzer/erlang.plt:
@mkdir -p dialyzer
@dialyzer --build_plt --output_plt dialyzer/erlang.plt \
-o dialyzer/erlang.log --apps kernel stdlib sasl crypto \
public_key ssl mnesia inets odbc tools compiler erts webtool \
runtime_tools asn1 observer xmerl et gs wx syntax_tools; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
dialyzer/deps.plt:
@mkdir -p dialyzer
@dialyzer --build_plt --output_plt dialyzer/deps.plt \
-o dialyzer/deps.log $(deps); \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
dialyzer/ejabberd.plt:
@mkdir -p dialyzer
@dialyzer --build_plt --output_plt dialyzer/ejabberd.plt \
-o dialyzer/ejabberd.log ebin; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
erlang_plt: dialyzer/erlang.plt
@dialyzer --plt dialyzer/erlang.plt --check_plt -o dialyzer/erlang.log; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
deps_plt: dialyzer/deps.plt
@dialyzer --plt dialyzer/deps.plt --check_plt -o dialyzer/deps.log; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
ejabberd_plt: dialyzer/ejabberd.plt
@dialyzer --plt dialyzer/ejabberd.plt --check_plt -o dialyzer/ejabberd.log; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
dialyzer: erlang_plt deps_plt ejabberd_plt
@dialyzer --plts dialyzer/*.plt --no_check_plt \
--get_warnings -o dialyzer/error.log ebin; \
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
test:
@echo "************************** NOTICE ***************************************"
@cat test/README
@echo "*************************************************************************"
$(REBAR) skip_deps=true ct
.PHONY: src doc edoc dialyzer Makefile TAGS clean clean-rel distclean rel \
install uninstall uninstall-binary uninstall-all translations deps test spec \
erlang_plt deps_plt ejabberd_plt
+2 -2
View File
@@ -170,7 +170,7 @@ LD=link.exe
LD_FLAGS=-release -nologo -incremental:no -dll "$(EI_DIR)\lib\ei_md.lib" "$(EI_DIR)\lib\erl_interface_md.lib" "$(EXPAT_LIB)" MSVCRT.LIB kernel32.lib advapi32.lib gdi32.lib user32.lib comctl32.lib comdlg32.lib shell32.lib
$(DLL) : $(OBJECT)
$(LD) $(LD_FLAGS) -out:$(DLL) $(OBJECT)
$(LD) $(LD_FLAGS) -out:$@ $<
$(OBJECT) : $(SOURCE)
$(CC) $(CC_FLAGS) -c -Fo$(OBJECT) $(SOURCE)
$(CC) $(CC_FLAGS) -c -Fo$@ $<
+140 -33
View File
@@ -1,54 +1,161 @@
ejabberd - High-Performance Enterprise Instant Messaging Server
ejabberd Community Edition, by ProcessOne
=========================================
ejabberd is a distributed, fault-tolerant technology that allows the creation
of large-scale instant messaging applications. The server can reliably support
thousands of simultaneous users on a single node and has been designed to
provide exceptional standards of fault tolerance. As an open source
technology, based on industry-standards, ejabberd can be used to build bespoke
solutions very cost effectively.
Key Features
------------
- **Cross-platform**
ejabberd runs under Microsoft Windows and Unix-derived systems such as
Linux, FreeBSD and NetBSD.
- **Distributed**
You can run ejabberd on a cluster of machines and all of them will serve the
same XMPP domain(s). When you need more capacity you can simply add a new
cheap node to your cluster. Accordingly, you do not need to buy an expensive
high-end machine to support tens of thousands concurrent users.
- **Fault-tolerant**
You can deploy an ejabberd cluster so that all the information required for
a properly working service will be replicated permanently on all nodes. This
means that if one of the nodes crashes, the others will continue working
without disruption. In addition, nodes also can be added or replaced on
the fly.
- **Administrator-friendly**
ejabberd is built on top of the Open Source Erlang. As a result you do not
need to install an external database, an external web server, amongst others
because everything is already included, and ready to run out of the box.
Other administrator benefits include:
- Comprehensive documentation.
- Straightforward installers for Linux and Mac OS X.
- Web administration.
- Shared roster groups.
- Command line administration tool.
- Can integrate with existing authentication mechanisms.
- Capability to send announce messages.
- **Internationalized**
ejabberd leads in internationalization. Hence it is very well suited in a
globalized world. Related features are:
- Translated to 25 languages.
- Support for IDNA.
- **Open Standards**
ejabberd is the first Open Source Jabber server claiming to fully comply to
the XMPP standard.
- Fully XMPP-compliant.
- XML-based protocol.
- Many protocols supported.
Additional Features
-------------------
Moreover, ejabberd comes with a wide range of other state-of-the-art features:
- **Modularity**
- Load only the modules you want.
- Extend ejabberd with your own custom modules.
- **Security**
- SASL and STARTTLS for c2s and s2s connections.
- STARTTLS and Dialback s2s connections.
- Web Admin accessible via HTTPS secure access.
- **Databases**
- Internal database for fast deployment (Mnesia).
- Native MySQL support.
- Native PostgreSQL support.
- ODBC data storage support.
- Microsoft SQL Server support.
- **Authentication**
- Internal authentication.
- PAM, LDAP and ODBC.
- External authentication script.
- **Others**
- Support for virtual hosting.
- Compressing XML streams with Stream Compression (XEP-0138).
- Statistics via Statistics Gathering (XEP-0039).
- IPv6 support both for c2s and s2s connections.
- Multi-User Chat module with support for clustering and HTML logging.
- Users Directory based on users vCards.
- Publish-Subscribe component with support for Personal Eventing.
- Support for web clients: HTTP Polling and HTTP Binding (BOSH).
- IRC transport.
- Component support: interface with networks such as AIM, ICQ and MSN.
Quickstart guide
----------------
0. Requirements
### 0. Requirements
To compile ejabberd you need:
- GNU Make
- GCC
- Libexpat 1.95 or higher
- Erlang/OTP R10B-9 or higher. Recommended: R12B-5 and R13B04.
Avoid R14A and R14B.
- GNU Make.
- GCC.
- Libexpat 1.95 or higher.
- Libyaml 0.1.4 or higher.
- Erlang/OTP R15B or higher.
- OpenSSL 0.9.8 or higher, for STARTTLS, SASL and SSL encryption.
- Zlib 1.2.3 or higher, for Stream Compression support
(XEP-0138). Optional.
- Erlang mysql library. Optional. MySQL authentication/storage.
- Erlang pgsql library. Optional. PostgreSQL authentication/storage.
- Zlib 1.2.3 or higher, for Stream Compression support (XEP-0138). Optional.
- PAM library. Optional. For Pluggable Authentication Modules (PAM).
- GNU Iconv 1.8 or higher, for the IRC Transport
(mod_irc). Optional. Not needed on systems with GNU Libc.
- GNU Iconv 1.8 or higher, for the IRC Transport (mod_irc). Optional. Not
needed on systems with GNU Libc.
- ImageMagick's Convert program. Optional. For CAPTCHA challenges.
- exmpp 0.9.6 or higher. Optional. For import/export XEP-0227 files.
1. Compile and install on *nix systems
### 1. Compile and install on *nix systems
To compile ejabberd, go to the directory src/ and execute the commands:
./configure
make
To compile ejabberd, execute the following commands. The first one is only
necessary if your source tree didn't come with a `configure` script.
To install ejabberd, run this command with system administrator rights
(root user):
./autogen.sh
./configure
make
sudo make install
To install ejabberd, run this command with system administrator rights (root
user):
sudo make install
These commands will:
- Install the configuration files in /etc/ejabberd/
- Install ejabberd binary, header and runtime files in /lib/ejabberd/
- Install the administration script: /sbin/ejabberdctl
- Install ejabberd documentation in /share/doc/ejabberd/
- Create a spool directory: /var/lib/ejabberd/
- Create a directory for log files: /var/log/ejabberd/
- Install the configuration files in `/etc/ejabberd/`
- Install ejabberd binary, header and runtime files in `/lib/ejabberd/`
- Install the administration script: `/sbin/ejabberdctl`
- Install ejabberd documentation in `/share/doc/ejabberd/`
- Create a spool directory: `/var/lib/ejabberd/`
- Create a directory for log files: `/var/log/ejabberd/`
2. Start ejabberd
### 2. Start ejabberd
You can use the ejabberdctl command line administration script to
You can use the `ejabberdctl` command line administration script to
start and stop ejabberd. For example:
ejabberdctl start
ejabberdctl start
For detailed information please refer to the
ejabberd Installation and Operation Guide
For detailed information please refer to the ejabberd Installation and
Operation Guide available online and in the `doc` directory of the source
tarball.
Links
-----
- Guide: https://www.process-one.net/docs/ejabberd/guide_en.html
- Official site: https://www.process-one.net/en/ejabberd
- Community site: https://www.ejabberd.im
- Forum: https://www.process-one.net/en/forum
Symlink
+1
View File
@@ -0,0 +1 @@
README
Executable
+3
View File
@@ -0,0 +1,3 @@
# generate a new autoconf
aclocal -I m4
autoconf -f
+257
View File
@@ -0,0 +1,257 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.53)
AC_INIT(ejabberd, m4_esyscmd([echo `git describe --tags 2>/dev/null || echo 0.0` | sed 's/-g.*//;s/-/./' | tr -d '\012']), [ejabberd@process-one.net], [ejabberd])
REQUIRE_ERLANG_MIN="5.9.1 (Erlang/OTP R15B01)"
REQUIRE_ERLANG_MAX="9.0.0 (No Max)"
# Checks for programs.
AC_PROG_MAKE_SET
AC_PROG_INSTALL
AC_PROG_SED
if test "x$GCC" = "xyes"; then
CFLAGS="$CFLAGS -Wall"
fi
# Checks Erlang runtime and compiler
AC_ARG_WITH(erlang,
AC_HELP_STRING([--with-erlang=dir],
[search for erlang in dir]),
[if test "$withval" = "yes" -o "$withval" = "no" -o "X$with_erlang" = "X"; then
extra_erl_path=""
else
extra_erl_path="$with_erlang:$with_erlang/bin:"
fi
])
AC_PATH_TOOL(ERL, erl, , [${extra_erl_path}$PATH])
AC_PATH_TOOL(ERLC, erlc, , [${extra_erl_path}$PATH])
AC_ERLANG_NEED_ERL
AC_ERLANG_NEED_ERLC
AC_ARG_ENABLE(erlang-version-check,
[AC_HELP_STRING([--enable-erlang-version-check],
[Check Erlang/OTP version @<:@default=yes@:>@])])
case "$enable_erlang_version_check" in
yes|'')
ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX])
;;
no)
ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX],[warn])
;;
esac
# Checks and sets ERLANG_ROOT_DIR and ERLANG_LIB_DIR variable
AC_ERLANG_SUBST_ROOT_DIR
# AC_ERLANG_SUBST_LIB_DIR
#locating escript
AC_PATH_PROG([ESCRIPT], [escript], [], [$ERLANG_ROOT_DIR/bin])
#locating make
AC_CHECK_PROG([MAKE], [make], [make], [])
if test "x$ESCRIPT" = "x"; then
AC_MSG_ERROR(['escript' was not found])
fi
if test "x$MAKE" = "x"; then
AC_MSG_ERROR(['make' was not found])
fi
# Change default prefix
AC_PREFIX_DEFAULT(/)
AC_ARG_ENABLE(hipe,
[AC_HELP_STRING([--enable-hipe], [compile natively with HiPE, not recommended (default: no)])],
[case "${enableval}" in
yes) hipe=true ;;
no) hipe=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-hipe) ;;
esac],[hipe=false])
AC_ARG_ENABLE(roster_gateway_workaround,
[AC_HELP_STRING([--enable-roster-gateway-workaround], [turn on workaround for processing gateway subscriptions (default: no)])],
[case "${enableval}" in
yes) roster_gateway_workaround=true ;;
no) roster_gateway_workaround=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-roster-gateway-workaround) ;;
esac],[roster_gateway_workaround=false])
AC_ARG_ENABLE(transient_supervisors,
[AC_HELP_STRING([--disable-transient-supervisors], [disable Erlang supervision for transient processes (default: no)])],
[case "${enableval}" in
yes) transient_supervisors=true ;;
no) transient_supervisors=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-transient_supervisors) ;;
esac],[transient_supervisors=true])
AC_ARG_ENABLE(full_xml,
[AC_HELP_STRING([--enable-full-xml], [use XML features in XMPP stream (ex: CDATA) (default: no, requires XML compliant clients)])],
[case "${enableval}" in
yes) full_xml=true ;;
no) full_xml=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-full-xml) ;;
esac],[full_xml=false])
AC_ARG_ENABLE(mssql,
[AC_HELP_STRING([--enable-mssql], [use Microsoft SQL Server database (default: no, requires --enable-odbc)])],
[case "${enableval}" in
yes) db_type=mssql ;;
no) db_type=generic ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mssql) ;;
esac],[db_type=generic])
AC_ARG_ENABLE(all,
[AC_HELP_STRING([--enable-all], [same as --enable-nif --enable-odbc --enable-mysql --enable-pgsql --enable-pam --enable-zlib --enable-riak --enable-json --enable-elixir --enable-iconv --enable-debug --enable-lager --enable-tools (useful for Dialyzer checks, default: no)])],
[case "${enableval}" in
yes) nif=true odbc=true mysql=true pgsql=true pam=true zlib=true riak=true json=true elixir=true iconv=true debug=true lager=true tools=true ;;
no) nif=false odbc=false mysql=false pgsql=false pam=false zlib=false riak=false json=false elixir=false iconv=false debug=false lager=false tools=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-all) ;;
esac],[])
AC_ARG_ENABLE(tools,
[AC_HELP_STRING([--enable-tools], [build development tools (default: no)])],
[case "${enableval}" in
yes) tools=true ;;
no) tools=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-tools) ;;
esac],[if test "x$tools" = "x"; then tools=false; fi])
AC_ARG_ENABLE(nif,
[AC_HELP_STRING([--enable-nif], [replace some functions with C equivalents. Requires Erlang R13B04 or higher (default: no)])],
[case "${enableval}" in
yes) nif=true ;;
no) nif=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-nif) ;;
esac],[if test "x$nif" = "x"; then nif=false; fi])
AC_ARG_ENABLE(odbc,
[AC_HELP_STRING([--enable-odbc], [enable pure ODBC support (default: no)])],
[case "${enableval}" in
yes) odbc=true ;;
no) odbc=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-odbc) ;;
esac],[if test "x$odbc" = "x"; then odbc=false; fi])
AC_ARG_ENABLE(mysql,
[AC_HELP_STRING([--enable-mysql], [enable MySQL support (default: no)])],
[case "${enableval}" in
yes) mysql=true ;;
no) mysql=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mysql) ;;
esac],[if test "x$mysql" = "x"; then mysql=false; fi])
AC_ARG_ENABLE(pgsql,
[AC_HELP_STRING([--enable-pgsql], [enable PostgreSQL support (default: no)])],
[case "${enableval}" in
yes) pgsql=true ;;
no) pgsql=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-pgsql) ;;
esac],[if test "x$pgsql" = "x"; then pgsql=false; fi])
AC_ARG_ENABLE(pam,
[AC_HELP_STRING([--enable-pam], [enable PAM support (default: no)])],
[case "${enableval}" in
yes) pam=true ;;
no) pam=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-pam) ;;
esac],[if test "x$pam" = "x"; then pam=false; fi])
AC_ARG_ENABLE(zlib,
[AC_HELP_STRING([--enable-zlib], [enable Stream Compression (XEP-0138) using zlib (default: yes)])],
[case "${enableval}" in
yes) zlib=true ;;
no) zlib=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-zlib) ;;
esac],[if test "x$zlib" = "x"; then zlib=true; fi])
AC_ARG_ENABLE(riak,
[AC_HELP_STRING([--enable-riak], [enable Riak support (default: no)])],
[case "${enableval}" in
yes) riak=true ;;
no) riak=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-riak) ;;
esac],[if test "x$riak" = "x"; then riak=false; fi])
AC_ARG_ENABLE(json,
[AC_HELP_STRING([--enable-json], [enable JSON support for mod_bosh (default: no)])],
[case "${enableval}" in
yes) json=true ;;
no) json=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-json) ;;
esac],[if test "x$json" = "x"; then json=false; fi])
AC_ARG_ENABLE(elixir,
[AC_HELP_STRING([--enable-elixir], [enable Elixir support (default: no)])],
[case "${enableval}" in
yes) elixir=true ;;
no) elixir=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-elixir) ;;
esac],[if test "x$elixir" = "x"; then elixir=false; fi])
AC_ARG_ENABLE(iconv,
[AC_HELP_STRING([--enable-iconv], [enable iconv support (default: yes)])],
[case "${enableval}" in
yes) iconv=true ;;
no) iconv=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-iconv) ;;
esac],[if test "x$iconv" = "x"; then iconv=true; fi])
AC_ARG_ENABLE(debug,
[AC_HELP_STRING([--enable-debug], [enable debug information (default: yes)])],
[case "${enableval}" in
yes) debug=true ;;
no) debug=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[if test "x$debug" = "x"; then debug=true; fi])
AC_ARG_ENABLE(lager,
[AC_HELP_STRING([--enable-lager], [enable lager support (default: yes)])],
[case "${enableval}" in
yes) lager=true ;;
no) lager=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-lager) ;;
esac],[if test "x$lager" = "x"; then lager=true; fi])
AC_CONFIG_FILES([Makefile
vars.config
src/ejabberd.app.src])
ENABLEUSER=""
AC_ARG_ENABLE(user,
[AS_HELP_STRING([--enable-user[[[[=USER]]]]], [allow this system user to start ejabberd (default: no)])],
[case "${enableval}" in
yes) ENABLEUSER=`whoami` ;;
no) ENABLEUSER="" ;;
*) ENABLEUSER=$enableval
esac],
[])
if test "$ENABLEUSER" != ""; then
echo "allow this system user to start ejabberd: $ENABLEUSER"
AC_SUBST([INSTALLUSER], [$ENABLEUSER])
fi
AC_SUBST(hipe)
AC_SUBST(roster_gateway_workaround)
AC_SUBST(transient_supervisors)
AC_SUBST(full_xml)
AC_SUBST(nif)
AC_SUBST(db_type)
AC_SUBST(odbc)
AC_SUBST(mysql)
AC_SUBST(pgsql)
AC_SUBST(pam)
AC_SUBST(zlib)
AC_SUBST(riak)
AC_SUBST(json)
AC_SUBST(elixir)
AC_SUBST(iconv)
AC_SUBST(debug)
AC_SUBST(lager)
AC_SUBST(tools)
AC_OUTPUT
View File
-5
View File
@@ -1,5 +0,0 @@
% List of ejabberd-modules to add for ejabberd packaging (source archive and installer)
%
% HTTP-binding:
%https://svn.process-one.net/ejabberd-modules/http_bind/trunk
%https://svn.process-one.net/ejabberd-modules/mod_http_fileserver/trunk
@@ -88,6 +88,16 @@ parse_form(Dir, File, Form, Used) ->
[_, {string, Line, Str}]
} ->
process_string(Dir, File, Line, Str, Used);
{call,
_,
{remote, _, {atom, _, translate}, {atom, _, translate}},
[_,
{bin,_,
[{bin_element,_,
{string,Line,Str},
default,default}]}]
} ->
process_string(Dir, File, Line, Str, Used);
{call,
_,
{remote, _, {atom, _, translate}, {atom, _, translate}},
@@ -281,14 +291,14 @@ build_additional_translators(List) ->
List).
print_translation(File, Line, Str, StrT) ->
{ok, StrQ, _} = regexp:gsub(Str, "\"", "\\\""),
{ok, StrTQ, _} = regexp:gsub(StrT, "\"", "\\\""),
StrQ = ejabberd_regexp:greplace(list_to_binary(Str), <<"\\\"">>, <<"\\\\\"">>),
StrTQ = ejabberd_regexp:greplace(list_to_binary(StrT), <<"\\\"">>, <<"\\\\\"">>),
io:format("#: ~s:~p~nmsgid \"~s\"~nmsgstr \"~s\"~n~n", [File, Line, StrQ, StrTQ]).
print_translation_obsolete(Str, StrT) ->
File = "unknown.erl",
Line = 1,
{ok, StrQ, _} = regexp:gsub(Str, "\"", "\\\""),
{ok, StrTQ, _} = regexp:gsub(StrT, "\"", "\\\""),
StrQ = ejabberd_regexp:greplace(Str, "\\\"", "\\\\\""),
StrTQ = ejabberd_regexp:greplace(StrT, "\\\"", "\\\\\""),
io:format("#: ~s:~p~n#~~ msgid \"~s\"~n#~~ msgstr \"~s\"~n~n", [File, Line, StrQ, StrTQ]).
@@ -15,13 +15,14 @@ prepare_dirs ()
ERL=`which erl`
EJA_SRC_DIR=$EJA_DIR/src/
EJA_MSGS_DIR=$EJA_SRC_DIR/msgs/
EJA_MSGS_DIR=$EJA_DIR/priv/msgs/
EXTRACT_DIR=$EJA_DIR/contrib/extract_translations/
EXTRACT_ERL=$EXTRACT_DIR/extract_translations.erl
EXTRACT_BEAM=$EXTRACT_DIR/extract_translations.beam
SRC_DIR=$RUN_DIR/src
MSGS_DIR=$SRC_DIR/msgs
EBIN_DIR=$RUN_DIR/ebin
MSGS_DIR=$EJA_DIR/priv/msgs
if !([[ -n $EJA_DIR ]])
then
@@ -91,7 +92,7 @@ extract_lang_all ()
cd $MSGS_DIR
for i in $( ls *.msg ) ; do
MISSING=`cat $i.translate | grep "\", \"\"}." | wc -l`
LANGUAGE=`grep "Language:" $i.translate | sed 's/% Language: //g'`
LANGUAGE=`grep "X-Language:" $i.translate | sed 's/% Language: //g'`
LASTAUTH=`grep "Author:" $i.translate | head -n 1 | sed 's/% Author: //g'`
echo -e "$i\t$MISSING\t$LANGUAGE\t$LASTAUTH"
done
@@ -155,7 +156,8 @@ extract_lang_srcmsg2po ()
echo $MSGS_PATH
$ERL -pa $EXTRACT_DIR -pa $SRC_DIR -pa $EJA_SRC_DIR -pa /lib/ejabberd/include -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$PO_PATH.1
cd $SRC_DIR
$ERL -pa $EXTRACT_DIR -pa $EBIN_DIR -pa $EJA_SRC_DIR -pa /lib/ejabberd/include -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$PO_PATH.1
sed -e 's/ \[\]$/ \"\"/g;' $PO_PATH.1 > $PO_PATH.2
msguniq --sort-by-file $PO_PATH.2 --output-file=$PO_PATH
@@ -174,7 +176,7 @@ extract_lang_src2pot ()
echo "" >>$MSGS_PATH
cd $SRC_DIR
$ERL -pa $EXTRACT_DIR -pa $SRC_DIR -pa $EJA_SRC_DIR -pa /lib/ejabberd/include -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$POT_PATH.1
$ERL -pa $EXTRACT_DIR -pa $EBIN_DIR -pa $EJA_SRC_DIR -pa /lib/ejabberd/include -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$POT_PATH.1
sed -e 's/ \[\]$/ \"\"/g;' $POT_PATH.1 > $POT_PATH.2
#msguniq --sort-by-file $POT_PATH.2 $EJA_MSGS_DIR --output-file=$POT_PATH
@@ -228,7 +230,8 @@ extract_lang_po2msg ()
msgattrib $PO_PATH --translated --no-fuzzy --no-obsolete --no-location --no-wrap | grep "^msg" | tail --lines=+3 >$MS_PATH
grep "^msgid" $PO_PATH.ms | sed 's/^msgid //g' >$MSGID_PATH
grep "^msgstr" $PO_PATH.ms | sed 's/^msgstr //g' >$MSGSTR_PATH
paste $MSGID_PATH $MSGSTR_PATH --delimiter=, | awk '{print "{" $0 "}."}' | sort -g >$MSGS_PATH
echo "%% -*- coding: latin-1 -*-" >$MSGS_PATH
paste $MSGID_PATH $MSGSTR_PATH --delimiter=, | awk '{print "{" $0 "}."}' | sort -g >>$MSGS_PATH
rm $MS_PATH
rm $MSGID_PATH
@@ -258,7 +261,7 @@ extract_lang_updateall ()
MISSING=`msgfmt --statistics $PO 2>&1 | awk '{printf "%5s", $4 }'`
echo -n " $MISSING"
LANGUAGE=`grep "Language:" $PO | sed 's/\"X-Language: //g' | sed 's/\\\\n\"//g' | awk '{printf "%-12s", $1}'`
LANGUAGE=`grep "X-Language:" $PO | sed 's/\"X-Language: //g' | sed 's/\\\\n\"//g' | awk '{printf "%-12s", $1}'`
echo -n " $LANGUAGE"
LASTAUTH=`grep "Last-Translator" $PO | sed 's/\"Last-Translator: //g' | sed 's/\\\\n\"//g'`
@@ -288,8 +291,8 @@ translation_instructions ()
echo " $MSGS_PATH"
}
EJA_DIR=`pwd`/..
RUN_DIR=`pwd`/..
EJA_DIR=`pwd`
RUN_DIR=`pwd`
PROJECT=ejabberd
while [ $# -ne 0 ] ; do
+10 -10
View File
@@ -1,6 +1,6 @@
# $Id$
SHELL = /bin/bash
SHELL = /bin/sh
CONTRIBUTED_MODULES = ""
#ifeq ($(shell ls mod_http_bind.tex),mod_http_bind.tex)
@@ -11,16 +11,16 @@ CONTRIBUTED_MODULES = ""
all: release pdf html
release:
@echo "Notes for the releaser:"
@echo "* Do not forget to add a link to the release notes in guide.tex"
@echo "* Do not forget to update the version number in src/ejabberd.app!"
@echo "* Do not forget to update the features in introduction.tex (including \new{} and \improved{} tags)."
@echo "Press any key to continue"
@printf '%s\n' "Notes for the releaser:"
@printf '%s\n' "* Do not forget to add a link to the release notes in guide.tex"
@printf '%s\n' "* Do not forget to update the version number in ebin/ejabberd.app!"
@printf '%s\n' "* Do not forget to update the features in introduction.tex (including \new{} and \improved{} tags)."
@printf '%s\n' "Press any key to continue"
##@read foo
@echo "% ejabberd version (automatically generated)." > version.tex
@echo "\newcommand{\version}{"`sed '/vsn/!d;s/\(.*\)"\(.*\)"\(.*\)/\2/' ../src/ejabberd.app`"}" >> version.tex
@echo -n "% Contributed modules (automatically generated)." > contributed_modules.tex
@echo -e "$(CONTRIBUTED_MODULES)" >> contributed_modules.tex
@printf '%s\n' "% ejabberd version (automatically generated)." > version.tex
@printf '%s\n' "\newcommand{\version}{"`sed '/vsn/!d;s/\(.*\)"\(.*\)"\(.*\)/\2/' ../ebin/ejabberd.app`"}" >> version.tex
@printf '%s' "% Contributed modules (automatically generated)." > contributed_modules.tex
@printf '%b\n' "$(CONTRIBUTED_MODULES)" >> contributed_modules.tex
html: guide.html dev.html features.html
+1 -1
View File
@@ -1,6 +1,6 @@
@author Mickael Remond <mickael.remond@process-one.net>
[http://www.process-one.net/]
@copyright 2007 ProcessOne
@copyright 2013 ProcessOne
@version {@vsn}, {@date} {@time}
@title ejabberd Development API Documentation
+236 -212
View File
@@ -1,40 +1,45 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Ejabberd 2.1.7 Developers Guide
</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<META name="GENERATOR" content="hevea 1.10">
<STYLE type="text/css">
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="generator" content="hevea 2.09">
<style type="text/css">
.li-itemize{margin:1ex 0ex;}
.li-enumerate{margin:1ex 0ex;}
.dd-description{margin:0ex 0ex 1ex 4ex;}
.dt-description{margin:0ex;}
.toc{list-style:none;}
.footnotetext{margin:0ex; padding:0ex;}
div.footnotetext P{margin:0px; text-indent:1em;}
.thefootnotes{text-align:left;margin:0ex;}
.dt-thefootnotes{margin:0em;}
.dd-thefootnotes{margin:0em 0em 0em 2em;}
.footnoterule{margin:1em auto 1em 0px;width:50%;}
.caption{padding-left:2ex; padding-right:2ex; margin-left:auto; margin-right:auto}
.title{margin:2ex auto;text-align:center}
.titlemain{margin:1ex 2ex 2ex 1ex;}
.titlerest{margin:0ex 2ex;}
.center{text-align:center;margin-left:auto;margin-right:auto;}
.flushleft{text-align:left;margin-left:0ex;margin-right:auto;}
.flushright{text-align:right;margin-left:auto;margin-right:0ex;}
DIV TABLE{margin-left:inherit;margin-right:inherit;}
PRE{text-align:left;margin-left:0ex;margin-right:auto;}
BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;}
TD P{margin:0px;}
div table{margin-left:inherit;margin-right:inherit;margin-bottom:2px;margin-top:2px}
td table{margin:auto;}
table{border-collapse:collapse;}
td{padding:0;}
.cellpadding0 tr td{padding:0;}
.cellpadding1 tr td{padding:1px;}
pre{text-align:left;margin-left:0ex;margin-right:auto;}
blockquote{margin-left:4ex;margin-right:4ex;text-align:left;}
td p{margin:0px;}
.boxed{border:1px solid black}
.textboxed{border:1px solid black}
.vbar{border:none;width:2px;background-color:black;}
.hbar{border:none;height:2px;width:100%;background-color:black;}
.hfill{border:none;height:1px;width:200%;background-color:black;}
.vdisplay{border-collapse:separate;border-spacing:2px;width:auto; empty-cells:show; border:2px solid red;}
.vdcell{white-space:nowrap;padding:0px;width:auto; border:2px solid green;}
.vdcell{white-space:nowrap;padding:0px; border:2px solid green;}
.display{border-collapse:separate;border-spacing:2px;width:auto; border:none;}
.dcell{white-space:nowrap;padding:0px;width:auto; border:none;}
.dcell{white-space:nowrap;padding:0px; border:none;}
.dcenter{margin:0ex auto;}
.vdcenter{border:solid #FF8000 2px; margin:0ex auto;}
.minipage{text-align:left; margin-left:0em; margin-right:auto;}
@@ -43,169 +48,182 @@ TD P{margin:0px;}
.marginparright{float:right; margin-left:1ex; margin-right:0ex;}
.theorem{text-align:left;margin:1ex auto 1ex 0ex;}
.part{margin:2ex auto;text-align:center}
</STYLE>
</HEAD>
<BODY >
</style>
<title>Ejabberd community 14.05-120-gedfb5fc Developers Guide
</title>
</head>
<body >
<!--HEVEA command line is: /usr/bin/hevea -fix -pedantic dev.tex -->
<!--CUT DEF section 1 --><P><A NAME="titlepage"></A>
<!--CUT STYLE article--><!--CUT DEF section 1 --><p><a id="titlepage"></a>
</P><TABLE CLASS="title"><TR><TD><H1 CLASS="titlemain">Ejabberd 2.1.7 Developers Guide</H1><H3 CLASS="titlerest">Alexey Shchepin<BR>
<A HREF="mailto:alexey@sevcom.net"><TT>mailto:alexey@sevcom.net</TT></A><BR>
<A HREF="xmpp:aleksey@jabber.ru"><TT>xmpp:aleksey@jabber.ru</TT></A></H3></TD></TR>
</TABLE><DIV CLASS="center">
</p><table class="title"><tr><td style="padding:1ex"><h1 class="titlemain">Ejabberd community 14.05-120-gedfb5fc Developers Guide</h1><h3 class="titlerest">Alexey Shchepin <br>
<a href="mailto:alexey@sevcom.net"><span style="font-family:monospace">mailto:alexey@sevcom.net</span></a> <br>
<a href="xmpp:aleksey@jabber.ru"><span style="font-family:monospace">xmpp:aleksey@jabber.ru</span></a></h3></td></tr>
</table><div class="center">
<IMG SRC="logo.png" ALT="logo.png">
<img src="logo.png" alt="logo.png">
</DIV><BLOCKQUOTE CLASS="quotation"><I>I can thoroughly recommend ejabberd for ease of setup &#X2013;
Kevin Smith, Current maintainer of the Psi project</I></BLOCKQUOTE><!--TOC section Contents-->
<H2 CLASS="section"><!--SEC ANCHOR -->Contents</H2><!--SEC END --><UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc1">1&#XA0;&#XA0;Key Features</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc2">2&#XA0;&#XA0;Additional Features</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc3">3&#XA0;&#XA0;How it Works</A>
<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc4">3.1&#XA0;&#XA0;Router</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc5">3.2&#XA0;&#XA0;Local Router</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc6">3.3&#XA0;&#XA0;Session Manager</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc7">3.4&#XA0;&#XA0;S2S Manager</A>
</LI></UL>
</LI><LI CLASS="li-toc"><A HREF="#htoc8">4&#XA0;&#XA0;Authentication</A>
<UL CLASS="toc">
<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc9">4.0.1&#XA0;&#XA0;External</A>
</LI></UL>
</UL>
</LI><LI CLASS="li-toc"><A HREF="#htoc10">5&#XA0;&#XA0;XML Representation</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc11">6&#XA0;&#XA0;Module <TT>xml</TT></A>
</LI><LI CLASS="li-toc"><A HREF="#htoc12">7&#XA0;&#XA0;Module <TT>xml_stream</TT></A>
</LI><LI CLASS="li-toc"><A HREF="#htoc13">8&#XA0;&#XA0;Modules</A>
<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc14">8.1&#XA0;&#XA0;Module gen_iq_handler</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc15">8.2&#XA0;&#XA0;Services</A>
</LI></UL>
</LI></UL><P>Introduction
<A NAME="intro"></A></P><P><TT>ejabberd</TT> is a free and open source instant messaging server written in <A HREF="http://www.erlang.org/">Erlang/OTP</A>.</P><P><TT>ejabberd</TT> is cross-platform, distributed, fault-tolerant, and based on open standards to achieve real-time communication.</P><P><TT>ejabberd</TT> is designed to be a rock-solid and feature rich XMPP server.</P><P><TT>ejabberd</TT> is suitable for small deployments, whether they need to be scalable or not, as well as extremely big deployments.</P><!--TOC section Key Features-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc1">1</A>&#XA0;&#XA0;Key Features</H2><!--SEC END --><P>
<A NAME="keyfeatures"></A>
</P><P><TT>ejabberd</TT> is:
</P><UL CLASS="itemize"><LI CLASS="li-itemize">
Cross-platform: <TT>ejabberd</TT> runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.</LI><LI CLASS="li-itemize">Distributed: You can run <TT>ejabberd</TT> on a cluster of machines and all of them will serve the same Jabber domain(s). When you need more capacity you can simply add a new cheap node to your cluster. Accordingly, you do not need to buy an expensive high-end machine to support tens of thousands concurrent users.</LI><LI CLASS="li-itemize">Fault-tolerant: You can deploy an <TT>ejabberd</TT> cluster so that all the information required for a properly working service will be replicated permanently on all nodes. This means that if one of the nodes crashes, the others will continue working without disruption. In addition, nodes also can be added or replaced &#X2018;on the fly&#X2019;.</LI><LI CLASS="li-itemize">Administrator Friendly: <TT>ejabberd</TT> is built on top of the Open Source Erlang. As a result you do not need to install an external database, an external web server, amongst others because everything is already included, and ready to run out of the box. Other administrator benefits include:
<UL CLASS="itemize"><LI CLASS="li-itemize">
</div><blockquote class="quotation"><span style="font-style:italic">I can thoroughly recommend ejabberd for ease of setup &#X2013;
Kevin Smith, Current maintainer of the Psi project</span></blockquote><!--TOC section id="intro" Contents-->
<h2 id="intro" class="section">Contents</h2><!--SEC END --><ul class="toc"><li class="li-toc">
<a href="#sec2">1&#XA0;&#XA0;Key Features</a>
</li><li class="li-toc"><a href="#sec3">2&#XA0;&#XA0;Additional Features</a>
</li><li class="li-toc"><a href="#sec4">3&#XA0;&#XA0;How it Works</a>
<ul class="toc"><li class="li-toc">
<a href="#sec5">3.1&#XA0;&#XA0;Router</a>
</li><li class="li-toc"><a href="#sec6">3.2&#XA0;&#XA0;Local Router</a>
</li><li class="li-toc"><a href="#sec7">3.3&#XA0;&#XA0;Session Manager</a>
</li><li class="li-toc"><a href="#sec8">3.4&#XA0;&#XA0;S2S Manager</a>
</li></ul>
</li><li class="li-toc"><a href="#sec9">4&#XA0;&#XA0;Authentication</a>
<ul class="toc">
<ul class="toc"><li class="li-toc">
<a href="#sec10">4.0.1&#XA0;&#XA0;External</a>
</li></ul>
</ul>
</li><li class="li-toc"><a href="#sec11">5&#XA0;&#XA0;XML Representation</a>
</li><li class="li-toc"><a href="#sec12">6&#XA0;&#XA0;Module <span style="font-family:monospace">xml</span></a>
</li><li class="li-toc"><a href="#sec13">7&#XA0;&#XA0;Module <span style="font-family:monospace">xml_stream</span></a>
</li><li class="li-toc"><a href="#sec14">8&#XA0;&#XA0;Modules</a>
<ul class="toc"><li class="li-toc">
<a href="#sec15">8.1&#XA0;&#XA0;Module gen_iq_handler</a>
</li><li class="li-toc"><a href="#sec16">8.2&#XA0;&#XA0;Services</a>
</li></ul>
</li></ul><p>Introduction
</p><p><span style="font-family:monospace">ejabberd</span> is a free and open source instant messaging server written in <a href="http://www.erlang.org/">Erlang/OTP</a>.</p><p><span style="font-family:monospace">ejabberd</span> is cross-platform, distributed, fault-tolerant, and based on open standards to achieve real-time communication.</p><p><span style="font-family:monospace">ejabberd</span> is designed to be a rock-solid and feature rich XMPP server.</p><p><span style="font-family:monospace">ejabberd</span> is suitable for small deployments, whether they need to be scalable or not, as well as extremely big deployments.</p>
<!--TOC section id="sec2" Key Features-->
<h2 id="sec2" class="section">1&#XA0;&#XA0;Key Features</h2><!--SEC END --><p>
<a id="keyfeatures"></a>
</p><p><span style="font-family:monospace">ejabberd</span> is:
</p><ul class="itemize"><li class="li-itemize">
Cross-platform: <span style="font-family:monospace">ejabberd</span> runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.</li><li class="li-itemize">Distributed: You can run <span style="font-family:monospace">ejabberd</span> on a cluster of machines and all of them will serve the same Jabber domain(s). When you need more capacity you can simply add a new cheap node to your cluster. Accordingly, you do not need to buy an expensive high-end machine to support tens of thousands concurrent users.</li><li class="li-itemize">Fault-tolerant: You can deploy an <span style="font-family:monospace">ejabberd</span> cluster so that all the information required for a properly working service will be replicated permanently on all nodes. This means that if one of the nodes crashes, the others will continue working without disruption. In addition, nodes also can be added or replaced &#X2018;on the fly&#X2019;.</li><li class="li-itemize">Administrator Friendly: <span style="font-family:monospace">ejabberd</span> is built on top of the Open Source Erlang. As a result you do not need to install an external database, an external web server, amongst others because everything is already included, and ready to run out of the box. Other administrator benefits include:
<ul class="itemize"><li class="li-itemize">
Comprehensive documentation.
</LI><LI CLASS="li-itemize">Straightforward installers for Linux, Mac OS X, and Windows. </LI><LI CLASS="li-itemize">Web Administration.
</LI><LI CLASS="li-itemize">Shared Roster Groups.
</LI><LI CLASS="li-itemize">Command line administration tool. </LI><LI CLASS="li-itemize">Can integrate with existing authentication mechanisms.
</LI><LI CLASS="li-itemize">Capability to send announce messages.
</LI></UL></LI><LI CLASS="li-itemize">Internationalized: <TT>ejabberd</TT> leads in internationalization. Hence it is very well suited in a globalized world. Related features are:
<UL CLASS="itemize"><LI CLASS="li-itemize">
Translated to 25 languages. </LI><LI CLASS="li-itemize">Support for <A HREF="http://www.ietf.org/rfc/rfc3490.txt">IDNA</A>.
</LI></UL></LI><LI CLASS="li-itemize">Open Standards: <TT>ejabberd</TT> is the first Open Source Jabber server claiming to fully comply to the XMPP standard.
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">Straightforward installers for Linux, Mac OS X, and Windows. </li><li class="li-itemize">Web Administration.
</li><li class="li-itemize">Shared Roster Groups.
</li><li class="li-itemize">Command line administration tool. </li><li class="li-itemize">Can integrate with existing authentication mechanisms.
</li><li class="li-itemize">Capability to send announce messages.
</li></ul></li><li class="li-itemize">Internationalized: <span style="font-family:monospace">ejabberd</span> leads in internationalization. Hence it is very well suited in a globalized world. Related features are:
<ul class="itemize"><li class="li-itemize">
Translated to 25 languages. </li><li class="li-itemize">Support for <a href="http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.
</li></ul></li><li class="li-itemize">Open Standards: <span style="font-family:monospace">ejabberd</span> is the first Open Source Jabber server claiming to fully comply to the XMPP standard.
<ul class="itemize"><li class="li-itemize">
Fully XMPP compliant.
</LI><LI CLASS="li-itemize">XML-based protocol.
</LI><LI CLASS="li-itemize"><A HREF="http://www.ejabberd.im/protocols">Many protocols supported</A>.
</LI></UL></LI></UL><!--TOC section Additional Features-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc2">2</A>&#XA0;&#XA0;Additional Features</H2><!--SEC END --><P>
<A NAME="addfeatures"></A>
</P><P>Moreover, <TT>ejabberd</TT> comes with a wide range of other state-of-the-art features:
</P><UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">XML-based protocol.
</li><li class="li-itemize"><a href="http://www.ejabberd.im/protocols">Many protocols supported</a>.
</li></ul></li></ul>
<!--TOC section id="sec3" Additional Features-->
<h2 id="sec3" class="section">2&#XA0;&#XA0;Additional Features</h2><!--SEC END --><p>
<a id="addfeatures"></a>
</p><p>Moreover, <span style="font-family:monospace">ejabberd</span> comes with a wide range of other state-of-the-art features:
</p><ul class="itemize"><li class="li-itemize">
Modular
<UL CLASS="itemize"><LI CLASS="li-itemize">
<ul class="itemize"><li class="li-itemize">
Load only the modules you want.
</LI><LI CLASS="li-itemize">Extend <TT>ejabberd</TT> with your own custom modules.
</LI></UL>
</LI><LI CLASS="li-itemize">Security
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">Extend <span style="font-family:monospace">ejabberd</span> with your own custom modules.
</li></ul>
</li><li class="li-itemize">Security
<ul class="itemize"><li class="li-itemize">
SASL and STARTTLS for c2s and s2s connections.
</LI><LI CLASS="li-itemize">STARTTLS and Dialback s2s connections.
</LI><LI CLASS="li-itemize">Web Admin accessible via HTTPS secure access.
</LI></UL>
</LI><LI CLASS="li-itemize">Databases
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">STARTTLS and Dialback s2s connections.
</li><li class="li-itemize">Web Admin accessible via HTTPS secure access.
</li></ul>
</li><li class="li-itemize">Databases
<ul class="itemize"><li class="li-itemize">
Internal database for fast deployment (Mnesia).
</LI><LI CLASS="li-itemize">Native MySQL support.
</LI><LI CLASS="li-itemize">Native PostgreSQL support.
</LI><LI CLASS="li-itemize">ODBC data storage support.
</LI><LI CLASS="li-itemize">Microsoft SQL Server support. </LI></UL>
</LI><LI CLASS="li-itemize">Authentication
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">Native MySQL support.
</li><li class="li-itemize">Native PostgreSQL support.
</li><li class="li-itemize">ODBC data storage support.
</li><li class="li-itemize">Microsoft SQL Server support. </li><li class="li-itemize">Riak NoSQL database support.
</li></ul>
</li><li class="li-itemize">Authentication
<ul class="itemize"><li class="li-itemize">
Internal Authentication.
</LI><LI CLASS="li-itemize">PAM, LDAP and ODBC. </LI><LI CLASS="li-itemize">External Authentication script.
</LI></UL>
</LI><LI CLASS="li-itemize">Others
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">PAM, LDAP, ODBC and Riak. </li><li class="li-itemize">External Authentication script.
</li></ul>
</li><li class="li-itemize">Others
<ul class="itemize"><li class="li-itemize">
Support for virtual hosting.
</LI><LI CLASS="li-itemize">Compressing XML streams with Stream Compression (<A HREF="http://www.xmpp.org/extensions/xep-0138.html">XEP-0138</A>).
</LI><LI CLASS="li-itemize">Statistics via Statistics Gathering (<A HREF="http://www.xmpp.org/extensions/xep-0039.html">XEP-0039</A>).
</LI><LI CLASS="li-itemize">IPv6 support both for c2s and s2s connections.
</LI><LI CLASS="li-itemize"><A HREF="http://www.xmpp.org/extensions/xep-0045.html">Multi-User Chat</A> module with support for clustering and HTML logging. </LI><LI CLASS="li-itemize">Users Directory based on users vCards.
</LI><LI CLASS="li-itemize"><A HREF="http://www.xmpp.org/extensions/xep-0060.html">Publish-Subscribe</A> component with support for <A HREF="http://www.xmpp.org/extensions/xep-0163.html">Personal Eventing via Pubsub</A>.
</LI><LI CLASS="li-itemize">Support for web clients: <A HREF="http://www.xmpp.org/extensions/xep-0025.html">HTTP Polling</A> and <A HREF="http://www.xmpp.org/extensions/xep-0206.html">HTTP Binding (BOSH)</A> services.
</LI><LI CLASS="li-itemize">IRC transport.
</LI><LI CLASS="li-itemize">Component support: interface with networks such as AIM, ICQ and MSN installing special tranports.
</LI></UL>
</LI></UL><!--TOC section How it Works-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc3">3</A>&#XA0;&#XA0;How it Works</H2><!--SEC END --><P>
<A NAME="howitworks"></A></P><P>A XMPP domain is served by one or more <TT>ejabberd</TT> nodes. These nodes can
</li><li class="li-itemize">Compressing XML streams with Stream Compression (<a href="http://www.xmpp.org/extensions/xep-0138.html">XEP-0138</a>).
</li><li class="li-itemize">Statistics via Statistics Gathering (<a href="http://www.xmpp.org/extensions/xep-0039.html">XEP-0039</a>).
</li><li class="li-itemize">IPv6 support both for c2s and s2s connections.
</li><li class="li-itemize"><a href="http://www.xmpp.org/extensions/xep-0045.html">Multi-User Chat</a> module with support for clustering and HTML logging. </li><li class="li-itemize">Users Directory based on users vCards.
</li><li class="li-itemize"><a href="http://www.xmpp.org/extensions/xep-0060.html">Publish-Subscribe</a> component with support for <a href="http://www.xmpp.org/extensions/xep-0163.html">Personal Eventing via Pubsub</a>.
</li><li class="li-itemize">Support for web clients: <a href="http://www.xmpp.org/extensions/xep-0025.html">HTTP Polling</a> and <a href="http://www.xmpp.org/extensions/xep-0206.html">HTTP Binding (BOSH)</a> services.
</li><li class="li-itemize">IRC transport.
</li><li class="li-itemize">SIP support.
</li><li class="li-itemize">Component support: interface with networks such as AIM, ICQ and MSN installing special tranports.
</li></ul>
</li></ul>
<!--TOC section id="sec4" How it Works-->
<h2 id="sec4" class="section">3&#XA0;&#XA0;How it Works</h2><!--SEC END --><p>
<a id="howitworks"></a></p><p>A XMPP domain is served by one or more <span style="font-family:monospace">ejabberd</span> nodes. These nodes can
be run on different machines that are connected via a network. They all must
have the ability to connect to port 4369 of all another nodes, and must have
the same magic cookie (see Erlang/OTP documentation, in other words the file
<TT>~ejabberd/.erlang.cookie</TT> must be the same on all nodes). This is
<span style="font-family:monospace">~ejabberd/.erlang.cookie</span> must be the same on all nodes). This is
needed because all nodes exchange information about connected users, S2S
connections, registered services, etc&#X2026;</P><P>Each <TT>ejabberd</TT> node have following modules:
</P><UL CLASS="itemize"><LI CLASS="li-itemize">
connections, registered services, etc&#X2026;</p><p>Each <span style="font-family:monospace">ejabberd</span> node have following modules:
</p><ul class="itemize"><li class="li-itemize">
router;
</LI><LI CLASS="li-itemize">local router.
</LI><LI CLASS="li-itemize">session manager;
</LI><LI CLASS="li-itemize">S2S manager;
</LI></UL><!--TOC subsection Router-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc4">3.1</A>&#XA0;&#XA0;Router</H3><!--SEC END --><P>This module is the main router of XMPP packets on each node. It routes
</li><li class="li-itemize">local router.
</li><li class="li-itemize">session manager;
</li><li class="li-itemize">S2S manager;
</li></ul>
<!--TOC subsection id="sec5" Router-->
<h3 id="sec5" class="subsection">3.1&#XA0;&#XA0;Router</h3><!--SEC END --><p>This module is the main router of XMPP packets on each node. It routes
them based on their destinations domains. It has two tables: local and global
routes. First, domain of packet destination searched in local table, and if it
found, then the packet is routed to appropriate process. If no, then it
searches in global table, and is routed to the appropriate <TT>ejabberd</TT> node or
searches in global table, and is routed to the appropriate <span style="font-family:monospace">ejabberd</span> node or
process. If it does not exists in either tables, then it sent to the S2S
manager.</P><!--TOC subsection Local Router-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc5">3.2</A>&#XA0;&#XA0;Local Router</H3><!--SEC END --><P>This module routes packets which have a destination domain equal to this server
manager.</p>
<!--TOC subsection id="sec6" Local Router-->
<h3 id="sec6" class="subsection">3.2&#XA0;&#XA0;Local Router</h3><!--SEC END --><p>This module routes packets which have a destination domain equal to this server
name. If destination JID has a non-empty user part, then it routed to the
session manager, else it is processed depending on it&#X2019;s content.</P><!--TOC subsection Session Manager-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc6">3.3</A>&#XA0;&#XA0;Session Manager</H3><!--SEC END --><P>This module routes packets to local users. It searches for what user resource
session manager, else it is processed depending on it&#X2019;s content.</p>
<!--TOC subsection id="sec7" Session Manager-->
<h3 id="sec7" class="subsection">3.3&#XA0;&#XA0;Session Manager</h3><!--SEC END --><p>This module routes packets to local users. It searches for what user resource
packet must be sent via presence table. If this resource is connected to
this node, it is routed to C2S process, if it connected via another node, then
the packet is sent to session manager on that node.</P><!--TOC subsection S2S Manager-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc7">3.4</A>&#XA0;&#XA0;S2S Manager</H3><!--SEC END --><P>This module routes packets to other XMPP servers. First, it checks if an
the packet is sent to session manager on that node.</p>
<!--TOC subsection id="sec8" S2S Manager-->
<h3 id="sec8" class="subsection">3.4&#XA0;&#XA0;S2S Manager</h3><!--SEC END --><p>This module routes packets to other XMPP servers. First, it checks if an
open S2S connection from the domain of the packet source to the domain of
packet destination already exists. If it is open on another node, then it
routes the packet to S2S manager on that node, if it is open on this node, then
it is routed to the process that serves this connection, and if a connection
does not exist, then it is opened and registered.</P><!--TOC section Authentication-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc8">4</A>&#XA0;&#XA0;Authentication</H2><!--SEC END --><!--TOC subsubsection External-->
<H4 CLASS="subsubsection"><!--SEC ANCHOR --><A NAME="htoc9">4.0.1</A>&#XA0;&#XA0;External</H4><!--SEC END --><P>
<A NAME="externalauth"></A>
</P><P>The external authentication script follows
<A HREF="http://www.erlang.org/doc/tutorial/c_portdriver.html">the erlang port driver API</A>.</P><P>That script is supposed to do theses actions, in an infinite loop:
</P><UL CLASS="itemize"><LI CLASS="li-itemize">
does not exist, then it is opened and registered.</p>
<!--TOC section id="sec9" Authentication-->
<h2 id="sec9" class="section">4&#XA0;&#XA0;Authentication</h2><!--SEC END -->
<!--TOC subsubsection id="sec10" External-->
<h4 id="sec10" class="subsubsection">4.0.1&#XA0;&#XA0;External</h4><!--SEC END --><p>
<a id="externalauth"></a>
</p><p>The external authentication script follows
<a href="http://www.erlang.org/doc/tutorial/c_portdriver.html">the erlang port driver API</a>.</p><p>That script is supposed to do theses actions, in an infinite loop:
</p><ul class="itemize"><li class="li-itemize">
read from stdin: AABBBBBBBBB.....
<UL CLASS="itemize"><LI CLASS="li-itemize">
<ul class="itemize"><li class="li-itemize">
A: 2 bytes of length data (a short in network byte order)
</LI><LI CLASS="li-itemize">B: a string of length found in A that contains operation in plain text
</li><li class="li-itemize">B: a string of length found in A that contains operation in plain text
operation are as follows:
<UL CLASS="itemize"><LI CLASS="li-itemize">
<ul class="itemize"><li class="li-itemize">
auth:User:Server:Password (check if a username/password pair is correct)
</LI><LI CLASS="li-itemize">isuser:User:Server (check if it&#X2019;s a valid user)
</LI><LI CLASS="li-itemize">setpass:User:Server:Password (set user&#X2019;s password)
</LI><LI CLASS="li-itemize">tryregister:User:Server:Password (try to register an account)
</LI><LI CLASS="li-itemize">removeuser:User:Server (remove this account)
</LI><LI CLASS="li-itemize">removeuser3:User:Server:Password (remove this account if the password is correct)
</LI></UL>
</LI></UL>
</LI><LI CLASS="li-itemize">write to stdout: AABB
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">isuser:User:Server (check if it&#X2019;s a valid user)
</li><li class="li-itemize">setpass:User:Server:Password (set user&#X2019;s password)
</li><li class="li-itemize">tryregister:User:Server:Password (try to register an account)
</li><li class="li-itemize">removeuser:User:Server (remove this account)
</li><li class="li-itemize">removeuser3:User:Server:Password (remove this account if the password is correct)
</li></ul>
</li></ul>
</li><li class="li-itemize">write to stdout: AABB
<ul class="itemize"><li class="li-itemize">
A: the number 2 (coded as a short, which is bytes length of following result)
</LI><LI CLASS="li-itemize">B: the result code (coded as a short), should be 1 for success/valid, or 0 for failure/invalid
</LI></UL>
</LI></UL><P>Example python script
</P><PRE CLASS="verbatim">#!/usr/bin/python
</li><li class="li-itemize">B: the result code (coded as a short), should be 1 for success/valid, or 0 for failure/invalid
</li></ul>
</li></ul><p>Example python script
</p><pre class="verbatim">#!/usr/bin/python
import sys
from struct import *
@@ -242,10 +260,11 @@ while True:
elif data[0] == "setpass":
success = setpass(data[1], data[2], data[3])
to_ejabberd(success)
</PRE><!--TOC section XML Representation-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc10">5</A>&#XA0;&#XA0;XML Representation</H2><!--SEC END --><P>
<A NAME="xmlrepr"></A></P><P>Each XML stanza is represented as the following tuple:
</P><PRE CLASS="verbatim">XMLElement = {xmlelement, Name, Attrs, [ElementOrCDATA]}
</pre>
<!--TOC section id="sec11" XML Representation-->
<h2 id="sec11" class="section">5&#XA0;&#XA0;XML Representation</h2><!--SEC END --><p>
<a id="xmlrepr"></a></p><p>Each XML stanza is represented as the following tuple:
</p><pre class="verbatim">XMLElement = {xmlelement, Name, Attrs, [ElementOrCDATA]}
Name = string()
Attrs = [Attr]
Attr = {Key, Val}
@@ -253,30 +272,31 @@ while True:
Val = string()
ElementOrCDATA = XMLElement | CDATA
CDATA = {xmlcdata, string()}
</PRE><P>E.&#XA0;g. this stanza:
</P><PRE CLASS="verbatim">&lt;message to='test@conference.example.org' type='groupchat'&gt;
</pre><p>E.&#XA0;g. this stanza:
</p><pre class="verbatim">&lt;message to='test@conference.example.org' type='groupchat'&gt;
&lt;body&gt;test&lt;/body&gt;
&lt;/message&gt;
</PRE><P>is represented as the following structure:
</P><PRE CLASS="verbatim">{xmlelement, "message",
</pre><p>is represented as the following structure:
</p><pre class="verbatim">{xmlelement, "message",
[{"to", "test@conference.example.org"},
{"type", "groupchat"}],
[{xmlelement, "body",
[],
[{xmlcdata, "test"}]}]}}
</PRE><!--TOC section Module <TT>xml</TT>-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc11">6</A>&#XA0;&#XA0;Module <TT>xml</TT></H2><!--SEC END --><P>
<A NAME="xmlmod"></A></P><DL CLASS="description"><DT CLASS="dt-description">
</DT><DD CLASS="dd-description"><CODE>element_to_string(El) -&gt; string()</CODE>
<PRE CLASS="verbatim">El = XMLElement
</PRE>Returns string representation of XML stanza <TT>El</TT>.</DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description"><CODE>crypt(S) -&gt; string()</CODE>
<PRE CLASS="verbatim">S = string()
</PRE>Returns string which correspond to <TT>S</TT> with encoded XML special
characters.</DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description"><CODE>remove_cdata(ECList) -&gt; EList</CODE>
<PRE CLASS="verbatim">ECList = [ElementOrCDATA]
</pre>
<!--TOC section id="sec12" Module <span style="font-family:monospace">xml</span>-->
<h2 id="sec12" class="section">6&#XA0;&#XA0;Module <span style="font-family:monospace">xml</span></h2><!--SEC END --><p>
<a id="xmlmod"></a></p><dl class="description"><dt class="dt-description">
</dt><dd class="dd-description"><code>element_to_string(El) -&gt; string()</code>
<pre class="verbatim">El = XMLElement
</pre>Returns string representation of XML stanza <span style="font-family:monospace">El</span>.</dd><dt class="dt-description"></dt><dd class="dd-description"><code>crypt(S) -&gt; string()</code>
<pre class="verbatim">S = string()
</pre>Returns string which correspond to <span style="font-family:monospace">S</span> with encoded XML special
characters.</dd><dt class="dt-description"></dt><dd class="dd-description"><code>remove_cdata(ECList) -&gt; EList</code>
<pre class="verbatim">ECList = [ElementOrCDATA]
EList = [XMLElement]
</PRE><TT>EList</TT> is a list of all non-CDATA elements of ECList.</DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description"><CODE>get_path_s(El, Path) -&gt; Res</CODE>
<PRE CLASS="verbatim">El = XMLElement
</pre><span style="font-family:monospace">EList</span> is a list of all non-CDATA elements of ECList.</dd><dt class="dt-description"></dt><dd class="dd-description"><code>get_path_s(El, Path) -&gt; Res</code>
<pre class="verbatim">El = XMLElement
Path = [PathItem]
PathItem = PathElem | PathAttr | PathCDATA
PathElem = {elem, Name}
@@ -284,57 +304,60 @@ PathAttr = {attr, Name}
PathCDATA = cdata
Name = string()
Res = string() | XMLElement
</PRE>If <TT>Path</TT> is empty, then returns <TT>El</TT>. Else sequentially
consider elements of <TT>Path</TT>. Each element is one of:
<DL CLASS="description"><DT CLASS="dt-description">
</DT><DD CLASS="dd-description"><CODE>{elem, Name}</CODE> <TT>Name</TT> is name of subelement of
<TT>El</TT>, if such element exists, then this element considered in
</pre>If <span style="font-family:monospace">Path</span> is empty, then returns <span style="font-family:monospace">El</span>. Else sequentially
consider elements of <span style="font-family:monospace">Path</span>. Each element is one of:
<dl class="description"><dt class="dt-description">
</dt><dd class="dd-description"><code>{elem, Name}</code> <span style="font-family:monospace">Name</span> is name of subelement of
<span style="font-family:monospace">El</span>, if such element exists, then this element considered in
following steps, else returns empty string.
</DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description"><CODE>{attr, Name}</CODE> If <TT>El</TT> have attribute <TT>Name</TT>, then
</dd><dt class="dt-description"></dt><dd class="dd-description"><code>{attr, Name}</code> If <span style="font-family:monospace">El</span> have attribute <span style="font-family:monospace">Name</span>, then
returns value of this attribute, else returns empty string.
</DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description"><CODE>cdata</CODE> Returns CDATA of <TT>El</TT>.
</DD></DL></DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description">TODO:
<PRE CLASS="verbatim"> get_cdata/1, get_tag_cdata/1
</dd><dt class="dt-description"></dt><dd class="dd-description"><code>cdata</code> Returns CDATA of <span style="font-family:monospace">El</span>.
</dd></dl></dd><dt class="dt-description"></dt><dd class="dd-description">TODO:
<pre class="verbatim"> get_cdata/1, get_tag_cdata/1
get_attr/2, get_attr_s/2
get_tag_attr/2, get_tag_attr_s/2
get_subtag/2
</PRE></DD></DL><!--TOC section Module <TT>xml_stream</TT>-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc12">7</A>&#XA0;&#XA0;Module <TT>xml_stream</TT></H2><!--SEC END --><P>
<A NAME="xmlstreammod"></A></P><DL CLASS="description"><DT CLASS="dt-description">
</DT><DD CLASS="dd-description"><CODE>parse_element(Str) -&gt; XMLElement | {error, Err}</CODE>
<PRE CLASS="verbatim">Str = string()
</pre></dd></dl>
<!--TOC section id="sec13" Module <span style="font-family:monospace">xml_stream</span>-->
<h2 id="sec13" class="section">7&#XA0;&#XA0;Module <span style="font-family:monospace">xml_stream</span></h2><!--SEC END --><p>
<a id="xmlstreammod"></a></p><dl class="description"><dt class="dt-description">
</dt><dd class="dd-description"><code>parse_element(Str) -&gt; XMLElement | {error, Err}</code>
<pre class="verbatim">Str = string()
Err = term()
</PRE>Parses <TT>Str</TT> using XML parser, returns either parsed element or error
</pre>Parses <span style="font-family:monospace">Str</span> using XML parser, returns either parsed element or error
tuple.
</DD></DL><!--TOC section Modules-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc13">8</A>&#XA0;&#XA0;Modules</H2><!--SEC END --><P>
<A NAME="emods"></A></P><!--TOC subsection Module gen_iq_handler-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc14">8.1</A>&#XA0;&#XA0;Module gen_iq_handler</H3><!--SEC END --><P>
<A NAME="geniqhandl"></A></P><P>The module <CODE>gen_iq_handler</CODE> allows to easily write handlers for IQ packets
of particular XML namespaces that addressed to server or to users bare JIDs.</P><P>In this module the following functions are defined:
</P><DL CLASS="description"><DT CLASS="dt-description">
</DT><DD CLASS="dd-description"><CODE>add_iq_handler(Component, Host, NS, Module, Function, Type)</CODE>
<PRE CLASS="verbatim">Component = Module = Function = atom()
</dd></dl>
<!--TOC section id="sec14" Modules-->
<h2 id="sec14" class="section">8&#XA0;&#XA0;Modules</h2><!--SEC END --><p>
<a id="emods"></a></p>
<!--TOC subsection id="sec15" Module gen_iq_handler-->
<h3 id="sec15" class="subsection">8.1&#XA0;&#XA0;Module gen_iq_handler</h3><!--SEC END --><p>
<a id="geniqhandl"></a></p><p>The module <code>gen_iq_handler</code> allows to easily write handlers for IQ packets
of particular XML namespaces that addressed to server or to users bare JIDs.</p><p>In this module the following functions are defined:
</p><dl class="description"><dt class="dt-description">
</dt><dd class="dd-description"><code>add_iq_handler(Component, Host, NS, Module, Function, Type)</code>
<pre class="verbatim">Component = Module = Function = atom()
Host = NS = string()
Type = no_queue | one_queue | parallel
</PRE>Registers function <CODE>Module:Function</CODE> as handler for IQ packets on
virtual host <CODE>Host</CODE> that contain child of namespace <CODE>NS</CODE> in
<CODE>Component</CODE>. Queueing discipline is <CODE>Type</CODE>. There are at least
</pre>Registers function <code>Module:Function</code> as handler for IQ packets on
virtual host <code>Host</code> that contain child of namespace <code>NS</code> in
<code>Component</code>. Queueing discipline is <code>Type</code>. There are at least
two components defined:
<DL CLASS="description"><DT CLASS="dt-description">
</DT><DD CLASS="dd-description"><CODE>ejabberd_local</CODE> Handles packets that addressed to server JID;
</DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description"><CODE>ejabberd_sm</CODE> Handles packets that addressed to users bare JIDs.
</DD></DL>
</DD><DT CLASS="dt-description"></DT><DD CLASS="dd-description"><CODE>remove_iq_handler(Component, Host, NS)</CODE>
<PRE CLASS="verbatim">Component = atom()
<dl class="description"><dt class="dt-description">
</dt><dd class="dd-description"><code>ejabberd_local</code> Handles packets that addressed to server JID;
</dd><dt class="dt-description"></dt><dd class="dd-description"><code>ejabberd_sm</code> Handles packets that addressed to users bare JIDs.
</dd></dl>
</dd><dt class="dt-description"></dt><dd class="dd-description"><code>remove_iq_handler(Component, Host, NS)</code>
<pre class="verbatim">Component = atom()
Host = NS = string()
</PRE>Removes IQ handler on virtual host <CODE>Host</CODE> for namespace <CODE>NS</CODE> from
<CODE>Component</CODE>.
</DD></DL><P>Handler function must have the following type:
</P><DL CLASS="description"><DT CLASS="dt-description">
</DT><DD CLASS="dd-description"><CODE>Module:Function(From, To, IQ)</CODE>
<PRE CLASS="verbatim">From = To = jid()
</PRE></DD></DL><PRE CLASS="verbatim">-module(mod_cputime).
</pre>Removes IQ handler on virtual host <code>Host</code> for namespace <code>NS</code> from
<code>Component</code>.
</dd></dl><p>Handler function must have the following type:
</p><dl class="description"><dt class="dt-description">
</dt><dd class="dd-description"><code>Module:Function(From, To, IQ)</code>
<pre class="verbatim">From = To = jid()
</pre></dd></dl><pre class="verbatim">-module(mod_cputime).
-behaviour(gen_mod).
@@ -368,9 +391,10 @@ process_local_iq(From, To, {iq, ID, Type, XMLNS, SubEl}) -&gt;
[{"xmlns", ?NS_CPUTIME}],
[{xmlelement, "cputime", [], [{xmlcdata, SCPUTime}]}]}]}
end.
</PRE><!--TOC subsection Services-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc15">8.2</A>&#XA0;&#XA0;Services</H3><!--SEC END --><P>
<A NAME="services"></A></P><PRE CLASS="verbatim">-module(mod_echo).
</pre>
<!--TOC subsection id="sec16" Services-->
<h3 id="sec16" class="subsection">8.2&#XA0;&#XA0;Services</h3><!--SEC END --><p>
<a id="services"></a></p><pre class="verbatim">-module(mod_echo).
-behaviour(gen_mod).
@@ -404,10 +428,10 @@ stop(Host) -&gt;
Proc = gen_mod:get_module_proc(Host, ?PROCNAME),
Proc ! stop,
{wait, Proc}.
</PRE><!--CUT END -->
</pre><!--CUT END -->
<!--HTMLFOOT-->
<!--ENDHTML-->
<!--FOOTER-->
<HR SIZE=2><BLOCKQUOTE CLASS="quote"><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
</EM><A HREF="http://hevea.inria.fr/index.html"><EM>H</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>V</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>A</EM></A><EM>.</EM></BLOCKQUOTE></BODY>
</HTML>
<hr style="height:2"><blockquote class="quote"><em>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
</em><a href="http://hevea.inria.fr/index.html"><em>H</em><em><span style="font-size:small"><sup>E</sup></span></em><em>V</em><em><span style="font-size:small"><sup>E</sup></span></em><em>A</em></a><em>.</em></blockquote></body>
</html>
+97 -86
View File
@@ -1,40 +1,45 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Ejabberd 2.1.7 Feature Sheet
</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<META name="GENERATOR" content="hevea 1.10">
<STYLE type="text/css">
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="generator" content="hevea 2.09">
<style type="text/css">
.li-itemize{margin:1ex 0ex;}
.li-enumerate{margin:1ex 0ex;}
.dd-description{margin:0ex 0ex 1ex 4ex;}
.dt-description{margin:0ex;}
.toc{list-style:none;}
.footnotetext{margin:0ex; padding:0ex;}
div.footnotetext P{margin:0px; text-indent:1em;}
.thefootnotes{text-align:left;margin:0ex;}
.dt-thefootnotes{margin:0em;}
.dd-thefootnotes{margin:0em 0em 0em 2em;}
.footnoterule{margin:1em auto 1em 0px;width:50%;}
.caption{padding-left:2ex; padding-right:2ex; margin-left:auto; margin-right:auto}
.title{margin:2ex auto;text-align:center}
.titlemain{margin:1ex 2ex 2ex 1ex;}
.titlerest{margin:0ex 2ex;}
.center{text-align:center;margin-left:auto;margin-right:auto;}
.flushleft{text-align:left;margin-left:0ex;margin-right:auto;}
.flushright{text-align:right;margin-left:auto;margin-right:0ex;}
DIV TABLE{margin-left:inherit;margin-right:inherit;}
PRE{text-align:left;margin-left:0ex;margin-right:auto;}
BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;}
TD P{margin:0px;}
div table{margin-left:inherit;margin-right:inherit;margin-bottom:2px;margin-top:2px}
td table{margin:auto;}
table{border-collapse:collapse;}
td{padding:0;}
.cellpadding0 tr td{padding:0;}
.cellpadding1 tr td{padding:1px;}
pre{text-align:left;margin-left:0ex;margin-right:auto;}
blockquote{margin-left:4ex;margin-right:4ex;text-align:left;}
td p{margin:0px;}
.boxed{border:1px solid black}
.textboxed{border:1px solid black}
.vbar{border:none;width:2px;background-color:black;}
.hbar{border:none;height:2px;width:100%;background-color:black;}
.hfill{border:none;height:1px;width:200%;background-color:black;}
.vdisplay{border-collapse:separate;border-spacing:2px;width:auto; empty-cells:show; border:2px solid red;}
.vdcell{white-space:nowrap;padding:0px;width:auto; border:2px solid green;}
.vdcell{white-space:nowrap;padding:0px; border:2px solid green;}
.display{border-collapse:separate;border-spacing:2px;width:auto; border:none;}
.dcell{white-space:nowrap;padding:0px;width:auto; border:none;}
.dcell{white-space:nowrap;padding:0px; border:none;}
.dcenter{margin:0ex auto;}
.vdcenter{border:solid #FF8000 2px; margin:0ex auto;}
.minipage{text-align:left; margin-left:0em; margin-right:auto;}
@@ -44,89 +49,95 @@ TD P{margin:0px;}
.theorem{text-align:left;margin:1ex auto 1ex 0ex;}
.part{margin:2ex auto;text-align:center}
SPAN{width:20%; float:right; text-align:left; margin-left:auto;}
</STYLE>
</HEAD>
<BODY >
</style>
<title>Ejabberd community 14.05-120-gedfb5fc Feature Sheet
</title>
</head>
<body >
<!--HEVEA command line is: /usr/bin/hevea -fix -pedantic features.tex -->
<!--CUT DEF section 1 --><P><A NAME="titlepage"></A>
<!--CUT STYLE article--><!--CUT DEF section 1 --><p><a id="titlepage"></a>
</P><TABLE CLASS="title"><TR><TD><H1 CLASS="titlemain">Ejabberd 2.1.7 Feature Sheet</H1><H3 CLASS="titlerest">Sander Devrieze<BR>
<A HREF="mailto:s.devrieze@pandora.be"><TT>mailto:s.devrieze@pandora.be</TT></A><BR>
<A HREF="xmpp:sander@devrieze.dyndns.org"><TT>xmpp:sander@devrieze.dyndns.org</TT></A></H3></TD></TR>
</TABLE><DIV CLASS="center">
</p><table class="title"><tr><td style="padding:1ex"><h1 class="titlemain">Ejabberd community 14.05-120-gedfb5fc Feature Sheet</h1><h3 class="titlerest">Sander Devrieze <br>
<a href="mailto:s.devrieze@pandora.be"><span style="font-family:monospace">mailto:s.devrieze@pandora.be</span></a> <br>
<a href="xmpp:sander@devrieze.dyndns.org"><span style="font-family:monospace">xmpp:sander@devrieze.dyndns.org</span></a></h3></td></tr>
</table><div class="center">
<IMG SRC="logo.png" ALT="logo.png">
<img src="logo.png" alt="logo.png">
</DIV><BLOCKQUOTE CLASS="quotation"><FONT COLOR="#921700"><I>I can thoroughly recommend ejabberd for ease of setup &#X2013;
Kevin Smith, Current maintainer of the Psi project</I></FONT></BLOCKQUOTE><P>Introduction
<A NAME="intro"></A></P><BLOCKQUOTE CLASS="quotation"><FONT COLOR="#921700"><I>I just tried out ejabberd and was impressed both by ejabberd itself and the language it is written in, Erlang. &#X2014;
Joeri</I></FONT></BLOCKQUOTE><P><TT>ejabberd</TT> is a <B><FONT SIZE=4><FONT COLOR="#001376">free and open source</FONT></FONT></B> instant messaging server written in <A HREF="http://www.erlang.org/">Erlang/OTP</A>.</P><P><TT>ejabberd</TT> is <B><FONT SIZE=4><FONT COLOR="#001376">cross-platform</FONT></FONT></B>, distributed, fault-tolerant, and based on open standards to achieve real-time communication.</P><P><TT>ejabberd</TT> is designed to be a <B><FONT SIZE=4><FONT COLOR="#001376">rock-solid and feature rich</FONT></FONT></B> XMPP server.</P><P><TT>ejabberd</TT> is suitable for small deployments, whether they need to be <B><FONT SIZE=4><FONT COLOR="#001376">scalable</FONT></FONT></B> or not, as well as extremely big deployments.</P><!--TOC section Key Features-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc1"></A>Key Features</H2><!--SEC END --><P>
<A NAME="keyfeatures"></A>
</P><BLOCKQUOTE CLASS="quotation"><FONT COLOR="#921700"><I>Erlang seems to be tailor-made for writing stable, robust servers. &#X2014;
Peter Saint-Andr&#XE9;, Executive Director of the Jabber Software Foundation</I></FONT></BLOCKQUOTE><P><TT>ejabberd</TT> is:
</P><UL CLASS="itemize"><LI CLASS="li-itemize">
<B><FONT SIZE=4><FONT COLOR="#001376">Cross-platform:</FONT></FONT></B> <TT>ejabberd</TT> runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.</LI><LI CLASS="li-itemize"><B><FONT SIZE=4><FONT COLOR="#001376">Distributed:</FONT></FONT></B> You can run <TT>ejabberd</TT> on a cluster of machines and all of them will serve the same Jabber domain(s). When you need more capacity you can simply add a new cheap node to your cluster. Accordingly, you do not need to buy an expensive high-end machine to support tens of thousands concurrent users.</LI><LI CLASS="li-itemize"><B><FONT SIZE=4><FONT COLOR="#001376">Fault-tolerant:</FONT></FONT></B> You can deploy an <TT>ejabberd</TT> cluster so that all the information required for a properly working service will be replicated permanently on all nodes. This means that if one of the nodes crashes, the others will continue working without disruption. In addition, nodes also can be added or replaced &#X2018;on the fly&#X2019;.</LI><LI CLASS="li-itemize"><B><FONT SIZE=4><FONT COLOR="#001376">Administrator Friendly:</FONT></FONT></B> <TT>ejabberd</TT> is built on top of the Open Source Erlang. As a result you do not need to install an external database, an external web server, amongst others because everything is already included, and ready to run out of the box. Other administrator benefits include:
<UL CLASS="itemize"><LI CLASS="li-itemize">
</div><blockquote class="quotation"><span style="color:#921700"><span style="font-style:italic">I can thoroughly recommend ejabberd for ease of setup &#X2013;
Kevin Smith, Current maintainer of the Psi project</span></span></blockquote><p>Introduction
<a id="intro"></a></p><blockquote class="quotation"><span style="color:#921700"><span style="font-style:italic">I just tried out ejabberd and was impressed both by ejabberd itself and the language it is written in, Erlang. &#X2014;
Joeri</span></span></blockquote><p><span style="font-family:monospace">ejabberd</span> is a <span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">free and open source</span></span></span> instant messaging server written in <a href="http://www.erlang.org/">Erlang/OTP</a>.</p><p><span style="font-family:monospace">ejabberd</span> is <span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">cross-platform</span></span></span>, distributed, fault-tolerant, and based on open standards to achieve real-time communication.</p><p><span style="font-family:monospace">ejabberd</span> is designed to be a <span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">rock-solid and feature rich</span></span></span> XMPP server.</p><p><span style="font-family:monospace">ejabberd</span> is suitable for small deployments, whether they need to be <span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">scalable</span></span></span> or not, as well as extremely big deployments.</p>
<!--TOC section id="sec1" Key Features-->
<h2 id="sec1" class="section">Key Features</h2><!--SEC END --><p>
<a id="keyfeatures"></a>
</p><blockquote class="quotation"><span style="color:#921700"><span style="font-style:italic">Erlang seems to be tailor-made for writing stable, robust servers. &#X2014;
Peter Saint-Andr&#XE9;, Executive Director of the Jabber Software Foundation</span></span></blockquote><p><span style="font-family:monospace">ejabberd</span> is:
</p><ul class="itemize"><li class="li-itemize">
<span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">Cross-platform:</span></span></span> <span style="font-family:monospace">ejabberd</span> runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.</li><li class="li-itemize"><span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">Distributed:</span></span></span> You can run <span style="font-family:monospace">ejabberd</span> on a cluster of machines and all of them will serve the same Jabber domain(s). When you need more capacity you can simply add a new cheap node to your cluster. Accordingly, you do not need to buy an expensive high-end machine to support tens of thousands concurrent users.</li><li class="li-itemize"><span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">Fault-tolerant:</span></span></span> You can deploy an <span style="font-family:monospace">ejabberd</span> cluster so that all the information required for a properly working service will be replicated permanently on all nodes. This means that if one of the nodes crashes, the others will continue working without disruption. In addition, nodes also can be added or replaced &#X2018;on the fly&#X2019;.</li><li class="li-itemize"><span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">Administrator Friendly:</span></span></span> <span style="font-family:monospace">ejabberd</span> is built on top of the Open Source Erlang. As a result you do not need to install an external database, an external web server, amongst others because everything is already included, and ready to run out of the box. Other administrator benefits include:
<ul class="itemize"><li class="li-itemize">
Comprehensive documentation.
</LI><LI CLASS="li-itemize">Straightforward installers for Linux, Mac OS X, and Windows. </LI><LI CLASS="li-itemize">Web Administration.
</LI><LI CLASS="li-itemize">Shared Roster Groups.
</LI><LI CLASS="li-itemize">Command line administration tool. </LI><LI CLASS="li-itemize">Can integrate with existing authentication mechanisms.
</LI><LI CLASS="li-itemize">Capability to send announce messages.
</LI></UL></LI><LI CLASS="li-itemize"><B><FONT SIZE=4><FONT COLOR="#001376">Internationalized:</FONT></FONT></B> <TT>ejabberd</TT> leads in internationalization. Hence it is very well suited in a globalized world. Related features are:
<UL CLASS="itemize"><LI CLASS="li-itemize">
Translated to 25 languages. </LI><LI CLASS="li-itemize">Support for <A HREF="http://www.ietf.org/rfc/rfc3490.txt">IDNA</A>.
</LI></UL></LI><LI CLASS="li-itemize"><B><FONT SIZE=4><FONT COLOR="#001376">Open Standards:</FONT></FONT></B> <TT>ejabberd</TT> is the first Open Source Jabber server claiming to fully comply to the XMPP standard.
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">Straightforward installers for Linux, Mac OS X, and Windows. </li><li class="li-itemize">Web Administration.
</li><li class="li-itemize">Shared Roster Groups.
</li><li class="li-itemize">Command line administration tool. </li><li class="li-itemize">Can integrate with existing authentication mechanisms.
</li><li class="li-itemize">Capability to send announce messages.
</li></ul></li><li class="li-itemize"><span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">Internationalized:</span></span></span> <span style="font-family:monospace">ejabberd</span> leads in internationalization. Hence it is very well suited in a globalized world. Related features are:
<ul class="itemize"><li class="li-itemize">
Translated to 25 languages. </li><li class="li-itemize">Support for <a href="http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.
</li></ul></li><li class="li-itemize"><span style="font-weight:bold"><span style="font-size:large"><span style="color:#001376">Open Standards:</span></span></span> <span style="font-family:monospace">ejabberd</span> is the first Open Source Jabber server claiming to fully comply to the XMPP standard.
<ul class="itemize"><li class="li-itemize">
Fully XMPP compliant.
</LI><LI CLASS="li-itemize">XML-based protocol.
</LI><LI CLASS="li-itemize"><A HREF="http://www.ejabberd.im/protocols">Many protocols supported</A>.
</LI></UL></LI></UL><!--TOC section Additional Features-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc2"></A>Additional Features</H2><!--SEC END --><P>
<A NAME="addfeatures"></A>
</P><BLOCKQUOTE CLASS="quotation"><FONT COLOR="#921700"><I>ejabberd is making inroads to solving the "buggy incomplete server" problem &#X2014;
Justin Karneges, Founder of the Psi and the Delta projects</I></FONT></BLOCKQUOTE><P>Moreover, <TT>ejabberd</TT> comes with a wide range of other state-of-the-art features:
</P><UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">XML-based protocol.
</li><li class="li-itemize"><a href="http://www.ejabberd.im/protocols">Many protocols supported</a>.
</li></ul></li></ul>
<!--TOC section id="sec2" Additional Features-->
<h2 id="sec2" class="section">Additional Features</h2><!--SEC END --><p>
<a id="addfeatures"></a>
</p><blockquote class="quotation"><span style="color:#921700"><span style="font-style:italic">ejabberd is making inroads to solving the "buggy incomplete server" problem &#X2014;
Justin Karneges, Founder of the Psi and the Delta projects</span></span></blockquote><p>Moreover, <span style="font-family:monospace">ejabberd</span> comes with a wide range of other state-of-the-art features:
</p><ul class="itemize"><li class="li-itemize">
Modular
<UL CLASS="itemize"><LI CLASS="li-itemize">
<ul class="itemize"><li class="li-itemize">
Load only the modules you want.
</LI><LI CLASS="li-itemize">Extend <TT>ejabberd</TT> with your own custom modules.
</LI></UL>
</LI><LI CLASS="li-itemize">Security
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">Extend <span style="font-family:monospace">ejabberd</span> with your own custom modules.
</li></ul>
</li><li class="li-itemize">Security
<ul class="itemize"><li class="li-itemize">
SASL and STARTTLS for c2s and s2s connections.
</LI><LI CLASS="li-itemize">STARTTLS and Dialback s2s connections.
</LI><LI CLASS="li-itemize">Web Admin accessible via HTTPS secure access.
</LI></UL>
</LI><LI CLASS="li-itemize">Databases
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">STARTTLS and Dialback s2s connections.
</li><li class="li-itemize">Web Admin accessible via HTTPS secure access.
</li></ul>
</li><li class="li-itemize">Databases
<ul class="itemize"><li class="li-itemize">
Internal database for fast deployment (Mnesia).
</LI><LI CLASS="li-itemize">Native MySQL support.
</LI><LI CLASS="li-itemize">Native PostgreSQL support.
</LI><LI CLASS="li-itemize">ODBC data storage support.
</LI><LI CLASS="li-itemize">Microsoft SQL Server support. </LI></UL>
</LI><LI CLASS="li-itemize">Authentication
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">Native MySQL support.
</li><li class="li-itemize">Native PostgreSQL support.
</li><li class="li-itemize">ODBC data storage support.
</li><li class="li-itemize">Microsoft SQL Server support. </li><li class="li-itemize">Riak NoSQL database support.
</li></ul>
</li><li class="li-itemize">Authentication
<ul class="itemize"><li class="li-itemize">
Internal Authentication.
</LI><LI CLASS="li-itemize">PAM, LDAP and ODBC. </LI><LI CLASS="li-itemize">External Authentication script.
</LI></UL>
</LI><LI CLASS="li-itemize">Others
<UL CLASS="itemize"><LI CLASS="li-itemize">
</li><li class="li-itemize">PAM, LDAP, ODBC and Riak. </li><li class="li-itemize">External Authentication script.
</li></ul>
</li><li class="li-itemize">Others
<ul class="itemize"><li class="li-itemize">
Support for virtual hosting.
</LI><LI CLASS="li-itemize">Compressing XML streams with Stream Compression (<A HREF="http://www.xmpp.org/extensions/xep-0138.html">XEP-0138</A>).
</LI><LI CLASS="li-itemize">Statistics via Statistics Gathering (<A HREF="http://www.xmpp.org/extensions/xep-0039.html">XEP-0039</A>).
</LI><LI CLASS="li-itemize">IPv6 support both for c2s and s2s connections.
</LI><LI CLASS="li-itemize"><A HREF="http://www.xmpp.org/extensions/xep-0045.html">Multi-User Chat</A> module with support for clustering and HTML logging. </LI><LI CLASS="li-itemize">Users Directory based on users vCards.
</LI><LI CLASS="li-itemize"><A HREF="http://www.xmpp.org/extensions/xep-0060.html">Publish-Subscribe</A> component with support for <A HREF="http://www.xmpp.org/extensions/xep-0163.html">Personal Eventing via Pubsub</A>.
</LI><LI CLASS="li-itemize">Support for web clients: <A HREF="http://www.xmpp.org/extensions/xep-0025.html">HTTP Polling</A> and <A HREF="http://www.xmpp.org/extensions/xep-0206.html">HTTP Binding (BOSH)</A> services.
</LI><LI CLASS="li-itemize">IRC transport.
</LI><LI CLASS="li-itemize">Component support: interface with networks such as AIM, ICQ and MSN installing special tranports.
</LI></UL>
</LI></UL><!--CUT END -->
</li><li class="li-itemize">Compressing XML streams with Stream Compression (<a href="http://www.xmpp.org/extensions/xep-0138.html">XEP-0138</a>).
</li><li class="li-itemize">Statistics via Statistics Gathering (<a href="http://www.xmpp.org/extensions/xep-0039.html">XEP-0039</a>).
</li><li class="li-itemize">IPv6 support both for c2s and s2s connections.
</li><li class="li-itemize"><a href="http://www.xmpp.org/extensions/xep-0045.html">Multi-User Chat</a> module with support for clustering and HTML logging. </li><li class="li-itemize">Users Directory based on users vCards.
</li><li class="li-itemize"><a href="http://www.xmpp.org/extensions/xep-0060.html">Publish-Subscribe</a> component with support for <a href="http://www.xmpp.org/extensions/xep-0163.html">Personal Eventing via Pubsub</a>.
</li><li class="li-itemize">Support for web clients: <a href="http://www.xmpp.org/extensions/xep-0025.html">HTTP Polling</a> and <a href="http://www.xmpp.org/extensions/xep-0206.html">HTTP Binding (BOSH)</a> services.
</li><li class="li-itemize">IRC transport.
</li><li class="li-itemize">SIP support.
</li><li class="li-itemize">Component support: interface with networks such as AIM, ICQ and MSN installing special tranports.
</li></ul>
</li></ul><!--CUT END -->
<!--HTMLFOOT-->
<!--ENDHTML-->
<!--FOOTER-->
<HR SIZE=2><BLOCKQUOTE CLASS="quote"><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
</EM><A HREF="http://hevea.inria.fr/index.html"><EM>H</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>V</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>A</EM></A><EM>.</EM></BLOCKQUOTE></BODY>
</HTML>
<hr style="height:2"><blockquote class="quote"><em>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
</em><a href="http://hevea.inria.fr/index.html"><em>H</em><em><span style="font-size:small"><sup>E</sup></span></em><em>V</em><em><span style="font-size:small"><sup>E</sup></span></em><em>A</em></a><em>.</em></blockquote></body>
</html>
-4449
View File
File diff suppressed because it is too large Load Diff
+2076 -1465
View File
File diff suppressed because it is too large Load Diff
+4 -2
View File
@@ -69,7 +69,7 @@ Peter Saint-Andr\'e, Executive Director of the Jabber Software Foundation}
\item \marking{Internationalized:} \ejabberd{} leads in internationalization. Hence it is very well suited in a globalized world. Related features are:
\begin{itemize}
\item Translated to 25 languages. %%\improved{}
\item Support for \footahref{http://www.ietf.org/rfc/rfc3490.txt}{IDNA}.
\item Support for \footahref{http://tools.ietf.org/html/rfc3490}{IDNA}.
\end{itemize}
\item \marking{Open Standards:} \ejabberd{} is the first Open Source Jabber server claiming to fully comply to the XMPP standard.
@@ -110,11 +110,12 @@ Moreover, \ejabberd{} comes with a wide range of other state-of-the-art features
\item Native PostgreSQL support.
\item ODBC data storage support.
\item Microsoft SQL Server support. %%\new{}
\item Riak NoSQL database support.
\end{itemize}
\item Authentication
\begin{itemize}
\item Internal Authentication.
\item PAM, LDAP and ODBC. %%\improved{}
\item PAM, LDAP, ODBC and Riak. %%\improved{}
\item External Authentication script.
\end{itemize}
\item Others
@@ -128,6 +129,7 @@ Moreover, \ejabberd{} comes with a wide range of other state-of-the-art features
\item \txepref{0060}{Publish-Subscribe} component with support for \txepref{0163}{Personal Eventing via Pubsub}.
\item Support for web clients: \txepref{0025}{HTTP Polling} and \txepref{0206}{HTTP Binding (BOSH)} services.
\item IRC transport.
\item SIP support.
\item Component support: interface with networks such as AIM, ICQ and MSN installing special tranports.
\end{itemize}
\end{itemize}
+39
View File
@@ -0,0 +1,39 @@
Release Notes
ejabberd 2.1.10
ejabberd 2.1.10 includes a few bugfixes and improvements.
Read more details about the changes in:
http://redir.process-one.net/ejabberd-2.1.10
Download the source code and installers from:
http://www.process-one.net/en/ejabberd/
The major changes are:
* Erlang/OTP compatibility
- Support Erlang/OTP R15B regexp and drivers (EJAB-1521)
- Fix modules update in R14B04 and higher
- Fix modules update of stripped beams (EJAB-1520)
* XMPP Core
- Fix presence problem in C2S after first unavailable (EJAB-1466)
- Fix bug on S2S shaper when TLS is used
- Prevent overload of incoming S2S connections
* XEPs
- BOSH: Get rid of useless mnesia transaction (EJAB-1502)
- MUC: Don't reveal invitee resource when room informs invitor
- Privacy: Activate "Blocked Contacts" to current c2s connection (EJAB-1519)
- Privacy: Always allow packets from user's server and bare jid (EJAB-1441)
- Pubsub: Add hooks for node creation/deletion (EJAB-1470)
- Shared Rosters: support groupname@vhost in Displayed Groups (EJAB-506)
- Vcard: Fix error when lowercasing some search results (EJAB-1490)
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
+58
View File
@@ -0,0 +1,58 @@
Release Notes
ejabberd 2.1.11
ejabberd 2.1.11 includes a few bugfixes and improvements.
Read more details about the changes in:
http://redir.process-one.net/ejabberd-2.1.11
Download the source code and installers from:
http://www.process-one.net/en/ejabberd/
The major changes are:
* HTTP service
- Fix ejabberd_http:get_line
- Don't use binary:match to extract lines from binaries
- Parse and encode https header names like native http parser does
- Parse correctly https request split into multiple packets
- Properly handle HEAD request in mod_http_bind (EJAB-1538)
- New option default_host for handling requests with ambiguous Host (EJAB-1261)
* ODBC
- New ODBC support for mod_announce
- New ODBC support for mod_blocking
- New ODBC support for mod_irc
- New ODBC support for mod_muc
- New ODBC support for mod_shared_roster
- New ODBC support for mod_vcard_xupdate
- Add ODBC exporting function for privacy table
- Work also with some unicode strings in PgSQL (EJAB-1490)
- Replace a single quote with double quotes in an ODBC escape
* SSL
- Make sure that res is initialized in all cases
- Parse correctly https request split into multiple packets (EJAB-1537)
- Added missed tls:recv_data/2
- Don't ignore Length parameter in tls:recv
- Avoid quadratic behavior in reading SSL data
- Dix http_bind webserver TLS fail on Chrome (EJAB-1530)
* Miscelanea
- Assume we have only one CPU when an auto-detection fails (EJAB-1516)
- Auth: Relax digest-uri handling (EJAB-1529)
- Caps: Cache caps timestamp before the IQ-request is done
- IRC: Use of MUC password
- Private: misc errors cases fixes
- Pubsub: return user affiliation for a specified node (EJAB-1294)
- Shared Roster: Foreign items were not pushed (EJAB-1509)
- Shared Roster LDAP: user substitution in ldap_rfilter (EJAB-1555)
- Windows: Fix makefile rules for building DLLs
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
+67
View File
@@ -0,0 +1,67 @@
Release Notes
ejabberd 2.1.12
ejabberd 2.1.12 includes a many bugfixes and a few improvements.
Read more details about the changes in:
http://redir.process-one.net/ejabberd-2.1.12
Download the source code and installers from:
http://www.process-one.net/en/ejabberd/
The changes are:
* Core ejabberd
- Make terms serialization faster
- Reduce size of XML stream state
* Administration
- Add SCRAM and remove MD5 support to ejabberd commands auth verification
- Added command to list all the vhosts registered in an ejabberd node
- Added export2odbc command, copied from mod_admin_extra.erl
- Fix ejabberdctl number of arguments error report with R15
- Check node name is available before starting ejabberd (EJAB-1572)
- Fix ejabberd_xmlrpc commands authentication with SCRAM
- Fix mod_offline:store_offline_msg argument (EJAB-1581)
- Log IP address when auth attempt fails
- Make sure update_info returns atoms only (EJAB-1595)
- On shutdown, first stop listeners, then modules
* Encryption
- Detect OpenSSL version at runtime, not at compile time
- Fixed signedness issue in tls_drv GET_DESCRYPTED_INPUT (EJAB-1591)
- Enable DHE key exchange in TLS driver
- Enable ECDHE key exchange in TSL driver
- Disable old and unsecure ciphers in TLS driver
- Disable SSL 2.0 in TLS driver
* HTTP-Bind
- Do not trigger item-not-found errors in mod_http_bind
- Repeated http-bind request should abort only requests with same rid
- Receiving missing request shouldn't close waiting out-ouf-order request
* XMPP
- Allow multiple fqdn values in configuration (EJAB-1578)
- Fix get_subscription_lists/4
- Fix account registration
- Send announce Message stanzas as Headline type instead of Normal
* Other
- Guide: Fix file name of Name Service Switch
- Guide: Document the db_type modules option (EJAB-1560)
- LDAP: Fix broken JPEG photo (EJAB-1526)
- LDAP: Fix compatibility with Erlang R16A (EJAB-1612)
- MUC: Fix angle brackets handle in plaintext log (EJAB-1610)
- MUC: Fix MUC start when Mnesia tables don't exist yet
- MUC: New mod_muc_log option file_permissions (EJAB-1588)
- ODBC: Merge SQL and Mnesia code into one module (EJAB-1560)
- Translation: New Hebrew
- Translation: Update Slovak
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
+21
View File
@@ -0,0 +1,21 @@
Release Notes
ejabberd 2.1.8
ejabberd 2.1.8 is the ninth release in ejabberd 2.1.x branch,
and includes a PubSub regression bugfix.
Download the source code and installers from:
http://www.process-one.net/en/ejabberd/
The change is:
- Fix issue on PubSub preventing publication of items (EJAB-1457)
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
+56
View File
@@ -0,0 +1,56 @@
Release Notes
ejabberd 2.1.9
ejabberd 2.1.9 is the eighth release in ejabberd 2.1.x branch,
and includes a lot of bugfixes and improvements.
Read more details about the changes in:
http://redir.process-one.net/ejabberd-2.1.9
Download the source code and installers from:
http://www.process-one.net/en/ejabberd/
The changes are:
* Core ejabberd
- Decrease CPU usage caused by tls:send with large data
- Escape iolist correctly when NIFs are disabled (EJAB-1462)
- Fix code to satisfy Dialyzer warnings
- Fix compilation in Windows
- Replace calls of OTP's Binary, since they would require R14
* LDAP
- Document ldap_tls_cacertfile and ldap_tls_depth options (EJAB-1299)
- Log an error when an LDAP filter is incorrect (EJAB-1395)
- New options: ldap_tls_cacertfile and ldap_tls_depth (EJAB-1299)
- New option: ldap_deref_aliases (EJAB-639)
- Match ldap_uidattr_format case-insensitively (EJAB-1449)
* MUC
- Support for multiple entry with same nick to MUC rooms (EJAB-305)
- Support voice request and approvement
- New room option: allow_private_messages_from_visitors
- New room options: allow_voice_requests and voice_request_min_interval
- Include status 110 in presence to new occupant (EJAB-740)
- Fix mod_muc_log crash when first log entry is room destroy (EJAB-1499)
- Many fixes and improvements in mod_muc
* Pubsub
- Enable pubsub#deliver_notification checking (EJAB-1453)
- Fix Denial of Service when user sends malformed publish stanza (EJAB-1498)
* ODBC
- Fix ODBC account counting (EJAB-1491)
- Optimized mod_roster_odbc:get_roster
* Miscellanea:
- New SASL SCRAM-SHA-1 authentication mechanism (EJAB-1196)
- New option: resource_conflict (EJAB-650)
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
-2
View File
@@ -1,2 +0,0 @@
% ejabberd version (automatically generated).
\newcommand{\version}{2.1.7}
@@ -24,7 +24,7 @@ test -x "$CTL" || {
echo "ERROR: ejabberd not found: $DIR"
exit 1
}
grep ^"$USER": /etc/passwd >/dev/null || {
getent passwd "$USER" >/dev/null || {
echo "ERROR: System user not found: $USER"
exit 2
}
+658
View File
@@ -0,0 +1,658 @@
###
### ejabberd configuration file
###
###
### The parameters used in this configuration file are explained in more detail
### in the ejabberd Installation and Operation Guide.
### Please consult the Guide in case of doubts, it is included with
### your copy of ejabberd, and is also available online at
### http://www.process-one.net/en/ejabberd/docs/
### The configuration file is written in YAML.
### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.
### However, ejabberd treats different literals as different types:
###
### - unquoted or single-quoted strings. They are called "atoms".
### Example: dog, 'Jupiter', '3.14159', YELLOW
###
### - numeric literals. Example: 3, -45.0, .0
###
### - quoted or folded strings.
### Examples of quoted string: "Lizzard", "orange".
### Example of folded string:
### > Art thou not Romeo,
### and a Montague?
### =======
### LOGGING
##
## loglevel: Verbosity of log files generated by ejabberd.
## 0: No ejabberd log at all (not recommended)
## 1: Critical
## 2: Error
## 3: Warning
## 4: Info
## 5: Debug
##
loglevel: 4
##
## rotation: Describe how to rotate logs. Either size and/or date can trigger
## log rotation. Setting count to N keeps N rotated logs. Setting count to 0
## does not disable rotation, it instead rotates the file and keeps no previous
## versions around. Setting size to X rotate log when it reaches X bytes.
## To disable rotation set the size to 0 and the date to ""
## Date syntax is taken from the syntax newsyslog uses in newsyslog.conf.
## Some examples:
## $D0 rotate every night at midnight
## $D23 rotate every day at 23:00 hr
## $W0D23 rotate every week on Sunday at 23:00 hr
## $W5D16 rotate every week on Friday at 16:00 hr
## $M1D0 rotate on the first day of every month at midnight
## $M5D6 rotate on every 5th day of the month at 6:00 hr
##
log_rotate_size: 10485760
log_rotate_date: ""
log_rotate_count: 1
##
## overload protection: If you want to limit the number of messages per second
## allowed from error_logger, which is a good idea if you want to avoid a flood
## of messages when system is overloaded, you can set a limit.
## 100 is ejabberd's default.
log_rate_limit: 100
##
## watchdog_admins: Only useful for developers: if an ejabberd process
## consumes a lot of memory, send live notifications to these XMPP
## accounts.
##
## watchdog_admins:
## - "bob@example.com"
### ================
### SERVED HOSTNAMES
##
## hosts: Domains served by ejabberd.
## You can define one or several, for example:
## hosts:
## - "example.net"
## - "example.com"
## - "example.org"
##
hosts:
- "localhost"
##
## route_subdomains: Delegate subdomains to other XMPP servers.
## For example, if this ejabberd serves example.org and you want
## to allow communication with an XMPP server called im.example.org.
##
## route_subdomains: s2s
### ===============
### LISTENING PORTS
##
## listen: The ports ejabberd will listen on, which service each is handled
## by and what options to start it with.
##
listen:
-
port: 5222
module: ejabberd_c2s
##
## If TLS is compiled in and you installed a SSL
## certificate, specify the full path to the
## file and uncomment these lines:
##
## certfile: "/path/to/ssl.pem"
## starttls: true
##
## To enforce TLS encryption for client connections,
## use this instead of the "starttls" option:
##
## starttls_required: true
##
## Custom OpenSSL options
##
## protocol_options:
## - "no_sslv3"
## - "no_tlsv1"
max_stanza_size: 65536
shaper: c2s_shaper
access: c2s
-
port: 5269
module: ejabberd_s2s_in
##
## ejabberd_service: Interact with external components (transports, ...)
##
## -
## port: 8888
## module: ejabberd_service
## access: all
## shaper_rule: fast
## ip: "127.0.0.1"
## hosts:
## "icq.example.org":
## password: "secret"
## "sms.example.org":
## password: "secret"
##
## ejabberd_stun: Handles STUN Binding requests
##
## -
## port: 3478
## transport: udp
## module: ejabberd_stun
##
## To handle XML-RPC requests that provide admin credentials:
##
## -
## port: 4560
## module: ejabberd_xmlrpc
-
port: 5280
module: ejabberd_http
## request_handlers:
## "/pub/archive": mod_http_fileserver
web_admin: true
http_poll: true
http_bind: true
## register: true
captcha: true
##
## s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
## Allowed values are: false optional required required_trusted
## You must specify a certificate file.
##
## s2s_use_starttls: optional
##
## s2s_certfile: Specify a certificate file.
##
## s2s_certfile: "/path/to/ssl.pem"
## Custom OpenSSL options
##
## s2s_protocol_options:
## - "no_sslv3"
## - "no_tlsv1"
##
## domain_certfile: Specify a different certificate for each served hostname.
##
## host_config:
## "example.org":
## domain_certfile: "/path/to/example_org.pem"
## "example.com":
## domain_certfile: "/path/to/example_com.pem"
##
## S2S whitelist or blacklist
##
## Default s2s policy for undefined hosts.
##
## s2s_access: s2s
##
## Outgoing S2S options
##
## Preferred address families (which to try first) and connect timeout
## in milliseconds.
##
## outgoing_s2s_families:
## - ipv4
## - ipv6
## outgoing_s2s_timeout: 10000
### ==============
### AUTHENTICATION
##
## auth_method: Method used to authenticate the users.
## The default method is the internal.
## If you want to use a different method,
## comment this line and enable the correct ones.
##
auth_method: internal
##
## Store the plain passwords or hashed for SCRAM:
## auth_password_format: plain
## auth_password_format: scram
##
## Define the FQDN if ejabberd doesn't detect it:
## fqdn: "server3.example.com"
##
## Authentication using external script
## Make sure the script is executable by ejabberd.
##
## auth_method: external
## extauth_program: "/path/to/authentication/script"
##
## Authentication using ODBC
## Remember to setup a database in the next section.
##
## auth_method: odbc
##
## Authentication using PAM
##
## auth_method: pam
## pam_service: "pamservicename"
##
## Authentication using LDAP
##
## auth_method: ldap
##
## List of LDAP servers:
## ldap_servers:
## - "localhost"
##
## Encryption of connection to LDAP servers:
## ldap_encrypt: none
## ldap_encrypt: tls
##
## Port to connect to on LDAP servers:
## ldap_port: 389
## ldap_port: 636
##
## LDAP manager:
## ldap_rootdn: "dc=example,dc=com"
##
## Password of LDAP manager:
## ldap_password: "******"
##
## Search base of LDAP directory:
## ldap_base: "dc=example,dc=com"
##
## LDAP attribute that holds user ID:
## ldap_uids:
## - "mail": "%u@mail.example.org"
##
## LDAP filter:
## ldap_filter: "(objectClass=shadowAccount)"
##
## Anonymous login support:
## auth_method: anonymous
## anonymous_protocol: sasl_anon | login_anon | both
## allow_multiple_connections: true | false
##
## host_config:
## "public.example.org":
## auth_method: anonymous
## allow_multiple_connections: false
## anonymous_protocol: sasl_anon
##
## To use both anonymous and internal authentication:
##
## host_config:
## "public.example.org":
## auth_method:
## - internal
## - anonymous
### ==============
### DATABASE SETUP
## ejabberd by default uses the internal Mnesia database,
## so you do not necessarily need this section.
## This section provides configuration examples in case
## you want to use other database backends.
## Please consult the ejabberd Guide for details on database creation.
##
## MySQL server:
##
## odbc_type: mysql
## odbc_server: "server"
## odbc_database: "database"
## odbc_username: "username"
## odbc_password: "password"
##
## If you want to specify the port:
## odbc_port: 1234
##
## PostgreSQL server:
##
## odbc_type: pgsql
## odbc_server: "server"
## odbc_database: "database"
## odbc_username: "username"
## odbc_password: "password"
##
## If you want to specify the port:
## odbc_port: 1234
##
## If you use PostgreSQL, have a large database, and need a
## faster but inexact replacement for "select count(*) from users"
##
## pgsql_users_number_estimate: true
##
## ODBC compatible or MSSQL server:
##
## odbc_type: odbc
## odbc_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"
##
## Number of connections to open to the database for each virtual host
##
## odbc_pool_size: 10
##
## Interval to make a dummy SQL request to keep the connections to the
## database alive. Specify in seconds: for example 28800 means 8 hours
##
## odbc_keepalive_interval: undefined
### ===============
### TRAFFIC SHAPERS
shaper:
##
## The "normal" shaper limits traffic speed to 1000 B/s
##
normal: 1000
##
## The "fast" shaper limits traffic speed to 50000 B/s
##
fast: 50000
##
## This option specifies the maximum number of elements in the queue
## of the FSM. Refer to the documentation for details.
##
max_fsm_queue: 1000
###. ====================
###' ACCESS CONTROL LISTS
acl:
##
## The 'admin' ACL grants administrative privileges to XMPP accounts.
## You can put here as many accounts as you want.
##
## admin:
## user:
## - "aleksey": "localhost"
## - "ermine": "example.org"
##
## Blocked users
##
## blocked:
## user:
## - "baduser": "example.org"
## - "test"
## Local users: don't modify this.
##
local:
user_regexp: ""
##
## More examples of ACLs
##
## jabberorg:
## server:
## - "jabber.org"
## aleksey:
## user:
## - "aleksey": "jabber.ru"
## test:
## user_regexp: "^test"
## user_glob: "test*"
##
## Loopback network
##
loopback:
ip:
- "127.0.0.0/8"
##
## Bad XMPP servers
##
## bad_servers:
## server:
## - "xmpp.zombie.org"
## - "xmpp.spam.com"
##
## Define specific ACLs in a virtual host.
##
## host_config:
## "localhost":
## acl:
## admin:
## user:
## - "bob-local": "localhost"
### ============
### ACCESS RULES
access:
## Maximum number of simultaneous sessions allowed for a single user:
max_user_sessions:
all: 10
## Maximum number of offline messages that users can have:
max_user_offline_messages:
admin: 5000
all: 100
## This rule allows access only for local users:
local:
local: allow
## Only non-blocked users can use c2s connections:
c2s:
blocked: deny
all: allow
## For C2S connections, all users except admins use the "normal" shaper
c2s_shaper:
admin: none
all: normal
## All S2S connections use the "fast" shaper
s2s_shaper:
all: fast
## Only admins can send announcement messages:
announce:
admin: allow
## Only admins can use the configuration interface:
configure:
admin: allow
## Admins of this server are also admins of the MUC service:
muc_admin:
admin: allow
## Only accounts of the local ejabberd server can create rooms:
muc_create:
local: allow
## All users are allowed to use the MUC service:
muc:
all: allow
## Only accounts on the local ejabberd server can create Pubsub nodes:
pubsub_createnode:
local: allow
## In-band registration allows registration of any possible username.
## To disable in-band registration, replace 'allow' with 'deny'.
register:
all: allow
## Only allow to register from localhost
trusted_network:
loopback: allow
## Do not establish S2S connections with bad servers
## s2s:
## bad_servers: deny
## all: allow
## By default the frequency of account registrations from the same IP
## is limited to 1 account every 10 minutes. To disable, specify: infinity
## registration_timeout: 600
##
## Define specific Access Rules in a virtual host.
##
## host_config:
## "localhost":
## access:
## c2s:
## admin: allow
## all: deny
## register:
## all: deny
### ================
### DEFAULT LANGUAGE
##
## language: Default language used for server messages.
##
language: "en"
##
## Set a different default language in a virtual host.
##
## host_config:
## "localhost":
## language: "ru"
### =======
### CAPTCHA
##
## Full path to a script that generates the image.
##
## captcha_cmd: "/lib/ejabberd/priv/bin/captcha.sh"
##
## Host for the URL and port where ejabberd listens for CAPTCHA requests.
##
## captcha_host: "example.org:5280"
##
## Limit CAPTCHA calls per minute for JID/IP to avoid DoS.
##
## captcha_limit: 5
### =======
### MODULES
##
## Modules enabled in all ejabberd virtual hosts.
##
modules:
mod_adhoc: {}
mod_announce: # recommends mod_adhoc
access: announce
mod_blocking: {} # requires mod_privacy
mod_caps: {}
mod_carboncopy: {}
mod_client_state:
drop_chat_states: true
queue_presence: false
mod_configure: {} # requires mod_adhoc
mod_disco: {}
## mod_echo: {}
mod_irc: {}
mod_http_bind: {}
## mod_http_fileserver:
## docroot: "/var/www"
## accesslog: "/var/log/ejabberd/access.log"
mod_last: {}
mod_muc:
## host: "conference.@HOST@"
access: muc
access_create: muc_create
access_persistent: muc_create
access_admin: muc_admin
## mod_muc_log: {}
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
## mod_pres_counter:
## count: 5
## interval: 60
mod_privacy: {}
mod_private: {}
## mod_proxy65: {}
mod_pubsub:
access_createnode: pubsub_createnode
## reduces resource comsumption, but XEP incompliant
ignore_pep_from_offline: true
## XEP compliant, but increases resource comsumption
## ignore_pep_from_offline: false
last_item_cache: false
plugins:
- "flat"
- "hometree"
- "pep" # pep requires mod_caps
mod_register:
##
## Protect In-Band account registrations with CAPTCHA.
##
## captcha_protected: true
##
## Set the minimum informational entropy for passwords.
##
## password_strength: 32
##
## After successful registration, the user receives
## a message with this subject and body.
##
welcome_message:
subject: "Welcome!"
body: |-
Hi.
Welcome to this XMPP server.
##
## When a user registers, send a notification to
## these XMPP accounts.
##
## registration_watchers:
## - "admin1@example.org"
##
## Only clients in the server machine can register accounts
##
ip_access: trusted_network
##
## Local c2s or remote s2s users cannot register accounts
##
## access_from: deny
access: register
mod_roster: {}
mod_shared_roster: {}
mod_stats: {}
mod_time: {}
mod_vcard: {}
mod_version: {}
##
## Enable modules with custom options in a specific virtual host
##
## host_config:
## "localhost":
## modules:
## mod_echo:
## host: "mirror.localhost"
### Local Variables:
### mode: yaml
### End:
### vim: set filetype=yaml tabstop=8
@@ -55,11 +55,10 @@
#
# This communication is used by ejabberdctl command line tool,
# and in a cluster of several ejabberd nodes.
# Notice that the IP address must be specified in the Erlang syntax.
#
# Default: {127,0,0,1}
# Default: 0.0.0.0
#
INET_DIST_INTERFACE={127,0,0,1}
#INET_DIST_INTERFACE=127.0.0.1
#.
#' ERL_EPMD_ADDRESS: IP addresses where epmd listens for connections
@@ -133,9 +132,9 @@ INET_DIST_INTERFACE={127,0,0,1}
# The same as previous, but erlang will use long hostname
# (see erl (1) manual for details)
#
# Default: ejabberd
# Default: ejabberd@localhost
#
#ERLANG_NODE=ejabberd
#ERLANG_NODE=ejabberd@localhost
#.
#' EJABBERD_PID_PATH: ejabberd PID file
@@ -149,6 +148,17 @@ INET_DIST_INTERFACE={127,0,0,1}
#
#EJABBERD_PID_PATH=/var/run/ejabberd/ejabberd.pid
#.
#' EJABBERD_CONFIG_PATH: ejabberd configuration file
#
# Specify the full path to the ejabberd configuration file. If the file name has
# a ".yml" extension, it is parsed as a YAML file; otherwise, Erlang syntax is
# expected.
#
# Default: $ETC_DIR/ejabberd.yml
#
#EJABBERD_CONFIG_PATH=/etc/ejabberd/ejabberd.yml
#.
#'
# vim: foldmarker=#',#. foldmethod=marker:
+462
View File
@@ -0,0 +1,462 @@
#!/bin/sh
# define default configuration
POLL=true
SMP=auto
ERL_MAX_PORTS=32000
ERL_PROCESSES=250000
ERL_MAX_ETS_TABLES=1400
FIREWALL_WINDOW=""
ERLANG_NODE=ejabberd@localhost
# define default environment variables
SCRIPT_DIR=`cd ${0%/*} && pwd`
ERL={{erl}}
IEX={{bindir}}/iex
INSTALLUSER={{installuser}}
# Compatibility in ZSH
#setopt shwordsplit 2>/dev/null
# check the proper system user is used if defined
if [ "$INSTALLUSER" != "" ] ; then
EXEC_CMD="false"
for GID in `id -G`; do
if [ $GID -eq 0 ] ; then
INSTALLUSER_HOME=$(getent passwd "$INSTALLUSER" | cut -d: -f6)
if [ -n "$INSTALLUSER_HOME" ] && [ ! -d "$INSTALLUSER_HOME" ] ; then
mkdir -p "$INSTALLUSER_HOME"
chown "$INSTALLUSER" "$INSTALLUSER_HOME"
fi
EXEC_CMD="su $INSTALLUSER -c"
fi
done
if [ `id -g` -eq `id -g $INSTALLUSER` ] ; then
EXEC_CMD="sh -c"
fi
if [ "$EXEC_CMD" = "false" ] ; then
echo "This command can only be run by root or the user $INSTALLUSER" >&2
exit 4
fi
else
EXEC_CMD="sh -c"
fi
# parse command line parameters
ARGS=""
while [ $# -ne 0 ] ; do
PARAM=$1
shift
case $PARAM in
--) break ;;
--node) ERLANG_NODE_ARG=$1 ; shift ;;
--config-dir) ETC_DIR="$1" ; shift ;;
--config) EJABBERD_CONFIG_PATH="$1" ; shift ;;
--ctl-config) EJABBERDCTL_CONFIG_PATH="$1" ; shift ;;
--logs) LOGS_DIR="$1" ; shift ;;
--spool) SPOOL_DIR="$1" ; shift ;;
*) ARGS="$ARGS $PARAM" ;;
esac
done
# Define ejabberd variable if they have not been defined from the command line
if [ "$ETC_DIR" = "" ] ; then
ETC_DIR={{sysconfdir}}/ejabberd
fi
if [ "$EJABBERDCTL_CONFIG_PATH" = "" ] ; then
EJABBERDCTL_CONFIG_PATH=$ETC_DIR/ejabberdctl.cfg
fi
if [ -f "$EJABBERDCTL_CONFIG_PATH" ] ; then
. "$EJABBERDCTL_CONFIG_PATH"
fi
if [ "$EJABBERD_CONFIG_PATH" = "" ] ; then
EJABBERD_CONFIG_PATH=$ETC_DIR/ejabberd.yml
fi
if [ "$LOGS_DIR" = "" ] ; then
LOGS_DIR={{localstatedir}}/log/ejabberd
fi
if [ "$SPOOL_DIR" = "" ] ; then
SPOOL_DIR={{localstatedir}}/lib/ejabberd
fi
if [ "$EJABBERD_DOC_PATH" = "" ] ; then
EJABBERD_DOC_PATH={{docdir}}
fi
if [ "$ERLANG_NODE_ARG" != "" ] ; then
ERLANG_NODE=$ERLANG_NODE_ARG
NODE=${ERLANG_NODE%@*}
fi
if [ "{{release}}" != "true" ] ; then
if [ "$EJABBERDDIR" = "" ] ; then
EJABBERDDIR={{libdir}}/ejabberd
fi
if [ "$EJABBERD_EBIN_PATH" = "" ] ; then
EJABBERD_EBIN_PATH=$EJABBERDDIR/ebin
fi
if [ "$EJABBERD_PRIV_PATH" = "" ] ; then
EJABBERD_PRIV_PATH=$EJABBERDDIR/priv
fi
if [ "$EJABBERD_BIN_PATH" = "" ] ; then
EJABBERD_BIN_PATH=$EJABBERD_PRIV_PATH/bin
fi
if [ "$EJABBERD_SO_PATH" = "" ] ; then
EJABBERD_SO_PATH=$EJABBERD_PRIV_PATH/lib
fi
if [ "$EJABBERD_MSGS_PATH" = "" ] ; then
EJABBERD_MSGS_PATH=$EJABBERD_PRIV_PATH/msgs
fi
fi
EJABBERD_LOG_PATH=$LOGS_DIR/ejabberd.log
SASL_LOG_PATH=$LOGS_DIR/erlang.log
DATETIME=`date "+%Y%m%d-%H%M%S"`
ERL_CRASH_DUMP=$LOGS_DIR/erl_crash_$DATETIME.dump
ERL_INETRC=$ETC_DIR/inetrc
# define erl parameters
ERLANG_OPTS="+K $POLL -smp $SMP +P $ERL_PROCESSES $ERL_OPTIONS"
KERNEL_OPTS=""
if [ "$FIREWALL_WINDOW" != "" ] ; then
KERNEL_OPTS="${KERNEL_OPTS} -kernel inet_dist_listen_min ${FIREWALL_WINDOW%-*} inet_dist_listen_max ${FIREWALL_WINDOW#*-}"
fi
if [ "$INET_DIST_INTERFACE" != "" ] ; then
INET_DIST_INTERFACE2="$(echo $INET_DIST_INTERFACE | sed 's/\./,/g')"
if [ "$INET_DIST_INTERFACE" != "$INET_DIST_INTERFACE2" ] ; then
INET_DIST_INTERFACE2="{$INET_DIST_INTERFACE2}"
fi
KERNEL_OPTS="${KERNEL_OPTS} -kernel inet_dist_use_interface \"${INET_DIST_INTERFACE2}\""
fi
if [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] ; then
NAME="-sname"
else
NAME="-name"
fi
IEXNAME="-$NAME"
# define ejabberd environment parameters
if [ "$EJABBERD_CONFIG_PATH" != "${EJABBERD_CONFIG_PATH%.yml}" ] ; then
rate=$(sed '/^[ ]*log_rate_limit/!d;s/.*://;s/ *//' $EJABBERD_CONFIG_PATH)
rotate=$(sed '/^[ ]*log_rotate_size/!d;s/.*://;s/ *//' $EJABBERD_CONFIG_PATH)
count=$(sed '/^[ ]*log_rotate_count/!d;s/.*://;s/ *//' $EJABBERD_CONFIG_PATH)
date=$(sed '/^[ ]*log_rotate_date/!d;s/.*://;s/ *//' $EJABBERD_CONFIG_PATH)
else
rate=$(sed '/^[ ]*log_rate_limit/!d;s/.*,//;s/ *//;s/}\.//' $EJABBERD_CONFIG_PATH)
rotate=$(sed '/^[ ]*log_rotate_size/!d;s/.*,//;s/ *//;s/}\.//' $EJABBERD_CONFIG_PATH)
count=$(sed '/^[ ]*log_rotate_count/!d;s/.*,//;s/ *//;s/}\.//' $EJABBERD_CONFIG_PATH)
date=$(sed '/^[ ]*log_rotate_date/!d;s/.*,//;s/ *//;s/}\.//' $EJABBERD_CONFIG_PATH)
fi
[ -z "$rate" ] || EJABBERD_OPTS="log_rate_limit $rate"
[ -z "$rotate" ] || EJABBERD_OPTS="${EJABBERD_OPTS} log_rotate_size $rotate"
[ -z "$count" ] || EJABBERD_OPTS="${EJABBERD_OPTS} log_rotate_count $count"
[ -z "$date" ] || EJABBERD_OPTS="${EJABBERD_OPTS} log_rotate_date '$date'"
[ -z "$EJABBERD_OPTS" ] || EJABBERD_OPTS="-ejabberd ${EJABBERD_OPTS}"
[ -d $SPOOL_DIR ] || $EXEC_CMD "mkdir -p $SPOOL_DIR"
cd $SPOOL_DIR
# export global variables
export EJABBERD_CONFIG_PATH
export EJABBERD_MSGS_PATH
export EJABBERD_LOG_PATH
export EJABBERD_SO_PATH
export EJABBERD_BIN_PATH
export EJABBERD_DOC_PATH
export EJABBERD_PID_PATH
export ERL_CRASH_DUMP
export ERL_EPMD_ADDRESS
export ERL_INETRC
export ERL_MAX_PORTS
export ERL_MAX_ETS_TABLES
# start server
start()
{
check_start
$EXEC_CMD "$ERL \
$NAME $ERLANG_NODE \
-noinput -detached \
-pa $EJABBERD_EBIN_PATH \
-mnesia dir \"\\\"$SPOOL_DIR\\\"\" \
$KERNEL_OPTS \
$EJABBERD_OPTS \
-s ejabberd \
-sasl sasl_error_logger \\{file,\\\"$SASL_LOG_PATH\\\"\\} \
$ERLANG_OPTS $ARGS \"$@\""
}
# attach to server
debug()
{
debugwarning
TTY=`tty | sed -e 's/.*\///g'`
$EXEC_CMD "$ERL \
$NAME debug-${TTY}-${ERLANG_NODE} \
-remsh $ERLANG_NODE \
-hidden \
$KERNEL_OPTS \
$ERLANG_OPTS $ARGS \"$@\""
}
# attach to server using Elixir
iexdebug()
{
debugwarning
TTY=`tty | sed -e 's/.*\///g'`
# Elixir shell is hidden as default
$EXEC_CMD "$IEX \
$IEXNAME debug-${TTY}-${ERLANG_NODE} \
--remsh $ERLANG_NODE \
--erl \"$KERNEL_OPTS\" \
--erl \"$ERLANG_OPTS\" --erl \"$ARGS\" --erl \"$@\""
}
# start interactive server
live()
{
livewarning
$EXEC_CMD "$ERL \
$NAME $ERLANG_NODE \
-pa $EJABBERD_EBIN_PATH \
-mnesia dir \"\\\"$SPOOL_DIR\\\"\" \
$KERNEL_OPTS \
$EJABBERD_OPTS \
-s ejabberd \
$ERLANG_OPTS $ARGS \"$@\""
}
# start interactive server with Elixir
iexlive()
{
livewarning
$EXEC_CMD "$IEX \
$IEXNAME $ERLANG_NODE \
-pa $EJABBERD_EBIN_PATH \
--erl \"-mnesia dir \\\"$SPOOL_DIR\\\"\" \
--erl \"$KERNEL_OPTS\" \
--erl \"$EJABBERD_OPTS\" \
--app ejabberd \
--erl \"$ERLANG_OPTS\" --erl $ARGS --erl \"$@\""
}
etop()
{
$EXEC_CMD "$ERL \
$NAME debug-${TTY}-${ERLANG_NODE} \
-hidden -s etop -s erlang halt -output text -node $ERLANG_NODE"
}
# TODO: refactor debug warning and livewarning
debugwarning()
{
if [ "$EJABBERD_BYPASS_WARNINGS" != "true" ] ; then
echo "--------------------------------------------------------------------"
echo ""
echo "IMPORTANT: we will attempt to attach an INTERACTIVE shell"
echo "to an already running ejabberd node."
echo "If an ERROR is printed, it means the connection was not successful."
echo "You can interact with the ejabberd node if you know how to use it."
echo "Please be extremely cautious with your actions,"
echo "and exit immediately if you are not completely sure."
echo ""
echo "To detach this shell from ejabberd, press:"
echo " control+c, control+c"
echo ""
echo "--------------------------------------------------------------------"
echo "To bypass permanently this warning, add to ejabberdctl.cfg the line:"
echo " EJABBERD_BYPASS_WARNINGS=true"
echo "Press return to continue"
read foo
echo ""
fi
}
livewarning()
{
check_start
if [ "$EJABBERD_BYPASS_WARNINGS" != "true" ] ; then
echo "--------------------------------------------------------------------"
echo ""
echo "IMPORTANT: ejabberd is going to start in LIVE (interactive) mode."
echo "All log messages will be shown in the command shell."
echo "You can interact with the ejabberd node if you know how to use it."
echo "Please be extremely cautious with your actions,"
echo "and exit immediately if you are not completely sure."
echo ""
echo "To exit this LIVE mode and stop ejabberd, press:"
echo " q(). and press the Enter key"
echo ""
echo "--------------------------------------------------------------------"
echo "To bypass permanently this warning, add to ejabberdctl.cfg the line:"
echo " EJABBERD_BYPASS_WARNINGS=true"
echo "Press return to continue"
read foo
echo ""
fi
}
# TODO: Make iex command display only if ejabberd Elixir support has been enabled
help()
{
echo ""
echo "Commands to start an ejabberd node:"
echo " start Start an ejabberd node in server mode"
echo " debug Attach an interactive Erlang shell to a running ejabberd node"
echo " iexdebug Attach an interactive Elixir shell to a running ejabberd node"
echo " live Start an ejabberd node in live (interactive) mode"
echo " iexlive Start an ejabberd node in live (interactive) mode, within an Elixir shell"
echo ""
echo "Optional parameters when starting an ejabberd node:"
echo " --config-dir dir Config ejabberd: $ETC_DIR"
echo " --config file Config ejabberd: $EJABBERD_CONFIG_PATH"
echo " --ctl-config file Config ejabberdctl: $EJABBERDCTL_CONFIG_PATH"
echo " --logs dir Directory for logs: $LOGS_DIR"
echo " --spool dir Database spool dir: $SPOOL_DIR"
echo " --node nodename ejabberd node name: $ERLANG_NODE"
echo ""
}
# common control function
ctl()
{
COMMAND=$@
# Control number of connections identifiers
# using flock if available. Expects a linux-style
# flock that can lock a file descriptor.
MAXCONNID=100
CONNLOCKDIR={{localstatedir}}/lock/ejabberdctl
FLOCK='/usr/bin/flock'
if [ ! -x "$FLOCK" ] || [ ! -d "$CONNLOCKDIR" ] ; then
JOT='/usr/bin/jot'
if [ ! -x "$JOT" ] ; then
# no flock or jot, simply invoke ctlexec()
CTL_CONN="ctl-${ERLANG_NODE}"
ctlexec $CTL_CONN $COMMAND
result=$?
else
# no flock, but at least there is jot
RAND=`jot -r 1 0 $MAXCONNID`
CTL_CONN="ctl-${RAND}-${ERLANG_NODE}"
ctlexec $CTL_CONN $COMMAND
result=$?
fi
else
# we have flock so we get a lock
# on one of a limited number of
# conn names -- this allows
# concurrent invocations using a bound
# number of atoms
for N in `seq 1 $MAXCONNID`; do
CTL_CONN="ejabberdctl-$N"
CTL_LOCKFILE="$CONNLOCKDIR/$CTL_CONN"
(
exec 8>"$CTL_LOCKFILE"
if flock --nb 8; then
ctlexec $CTL_CONN $COMMAND
ssresult=$?
# segregate from possible flock exit(1)
ssresult=`expr $ssresult \* 10`
exit $ssresult
else
exit 1
fi
)
result=$?
if [ $result -eq 1 ] ; then
# means we errored out in flock
# rather than in the exec - stay in the loop
# trying other conn names...
badlock=1
else
badlock=""
break;
fi
done
result=`expr $result / 10`
fi
if [ "$badlock" ] ;then
echo "Ran out of connections to try. Your ejabberd processes" >&2
echo "may be stuck or this is a very busy server. For very" >&2
echo "busy servers, consider raising MAXCONNID in ejabberdctl">&2
exit 1;
fi
case $result in
0) :;;
1) :;;
2) help;;
3) help;;
esac
return $result
}
ctlexec()
{
CONN_NAME=$1; shift
COMMAND=$@
$EXEC_CMD "$ERL \
$NAME ${CONN_NAME} \
-noinput \
-hidden \
-pa $EJABBERD_EBIN_PATH \
$KERNEL_OPTS \
-s ejabberd_ctl -extra $ERLANG_NODE $COMMAND"
}
# stop epmd if there is no other running node
stop_epmd()
{
epmd -names 2>/dev/null | grep -q name || epmd -kill >/dev/null
}
# make sure node not already running and node name unregistered
check_start()
{
epmd -names 2>/dev/null | grep -q " ${ERLANG_NODE%@*} " && {
ps ux | grep -v grep | grep -q " $ERLANG_NODE " && {
echo "ERROR: The ejabberd node '$ERLANG_NODE' is already running."
exit 4
} || {
ps ux | grep -v grep | grep -q beam && {
echo "ERROR: The ejabberd node '$ERLANG_NODE' is registered,"
echo " but no related beam process has been found."
echo "Shutdown all other erlang nodes, and call 'epmd -kill'."
exit 5
} || {
epmd -kill >/dev/null
}
}
}
}
# allow sync calls
wait_for_status()
{
# args: status try delay
# return: 0 OK, 1 KO
timeout=$2
status=4
while [ $status -ne $1 ] ; do
sleep $3
timeout=`expr $timeout - 1`
[ $timeout -eq 0 ] && {
status=$1
} || {
ctl status > /dev/null
status=$?
}
done
[ $timeout -eq 0 ] && return 1 || return 0
}
# main handler
case $ARGS in
' start') start;;
' debug') debug;;
' iexdebug') iexdebug;;
' live') live;;
' iexlive') iexlive;;
' etop') etop;;
' started') wait_for_status 0 30 2;; # wait 30x2s before timeout
' stopped') wait_for_status 3 15 2 && stop_epmd;; # wait 15x2s before timeout
*) ctl $ARGS;;
esac
+81
View File
@@ -0,0 +1,81 @@
%% Generated by the Erlang ASN.1 compiler version:2.0.1
%% Purpose: Erlang record definitions for each named and unnamed
%% SEQUENCE and SET, and macro definitions for each value
%% definition,in module ELDAPv3
-record('LDAPMessage',{
messageID, protocolOp, controls = asn1_NOVALUE}).
-record('AttributeValueAssertion',{
attributeDesc, assertionValue}).
-record('Attribute',{
type, vals}).
-record('LDAPResult',{
resultCode, matchedDN, errorMessage, referral = asn1_NOVALUE}).
-record('Control',{
controlType, criticality = asn1_DEFAULT, controlValue = asn1_NOVALUE}).
-record('BindRequest',{
version, name, authentication}).
-record('SaslCredentials',{
mechanism, credentials = asn1_NOVALUE}).
-record('BindResponse',{
resultCode, matchedDN, errorMessage, referral = asn1_NOVALUE, serverSaslCreds = asn1_NOVALUE}).
-record('SearchRequest',{
baseObject, scope, derefAliases, sizeLimit, timeLimit, typesOnly, filter, attributes}).
-record('SubstringFilter',{
type, substrings}).
-record('MatchingRuleAssertion',{
matchingRule = asn1_NOVALUE, type = asn1_NOVALUE, matchValue, dnAttributes = asn1_DEFAULT}).
-record('SearchResultEntry',{
objectName, attributes}).
-record('PartialAttributeList_SEQOF',{
type, vals}).
-record('ModifyRequest',{
object, modification}).
-record('ModifyRequest_modification_SEQOF',{
operation, modification}).
-record('AttributeTypeAndValues',{
type, vals}).
-record('AddRequest',{
entry, attributes}).
-record('AttributeList_SEQOF',{
type, vals}).
-record('ModifyDNRequest',{
entry, newrdn, deleteoldrdn, newSuperior = asn1_NOVALUE}).
-record('CompareRequest',{
entry, ava}).
-record('ExtendedRequest',{
requestName, requestValue = asn1_NOVALUE}).
-record('ExtendedResponse',{
resultCode, matchedDN, errorMessage, referral = asn1_NOVALUE, responseName = asn1_NOVALUE, response = asn1_NOVALUE}).
-record('PasswdModifyRequestValue',{
userIdentity = asn1_NOVALUE, oldPasswd = asn1_NOVALUE, newPasswd = asn1_NOVALUE}).
-record('PasswdModifyResponseValue',{
genPasswd = asn1_NOVALUE}).
-define('maxInt', 2147483647).
-define('passwdModifyOID', [49,46,51,46,54,46,49,46,52,46,49,46,52,50,48,51,46,49,46,49,49,46,49]).
+44
View File
@@ -0,0 +1,44 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-record(adhoc_request,
{
lang = <<"">> :: binary(),
node = <<"">> :: binary(),
sessionid = <<"">> :: binary(),
action = <<"">> :: binary(),
xdata = false :: false | xmlel(),
others = [] :: [xmlel()]
}).
-record(adhoc_response,
{
lang = <<"">> :: binary(),
node = <<"">> :: binary(),
sessionid = <<"">> :: binary(),
status :: atom(),
defaultaction = <<"">> :: binary(),
actions = [] :: [binary()],
notes = [] :: [{binary(), binary()}],
elements = [] :: [xmlel()]
}).
-type adhoc_request() :: #adhoc_request{}.
-type adhoc_response() :: #adhoc_response{}.
+51
View File
@@ -0,0 +1,51 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
%% This macro returns a string of the ejabberd version running, e.g. "2.3.4"
%% If the ejabberd application description isn't loaded, returns atom: undefined
-define(VERSION, ejabberd_config:get_version()).
-define(MYHOSTS, ejabberd_config:get_myhosts()).
-define(MYNAME, hd(ejabberd_config:get_myhosts())).
-define(MYLANG, ejabberd_config:get_mylang()).
-define(MSGS_DIR, filename:join(["priv", "msgs"])).
-define(CONFIG_PATH, <<"ejabberd.cfg">>).
-define(LOG_PATH, <<"ejabberd.log">>).
-define(EJABBERD_URI, <<"http://www.process-one.net/en/ejabberd/">>).
-define(S2STIMEOUT, 600000).
%%-define(DBGFSM, true).
-record(scram,
{storedkey = <<"">>,
serverkey = <<"">>,
salt = <<"">>,
iterationcount = 0 :: integer()}).
-type scram() :: #scram{}.
-define(SCRAM_DEFAULT_ITERATION_COUNT, 4096).
@@ -1,6 +1,6 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2011 ProcessOne
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
@@ -12,17 +12,38 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License
%%% along with this program; if not, write to the Free Software
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
%%% 02111-1307 USA
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-record(ejabberd_commands, {name, tags = [],
desc = "", longdesc = "",
module, function,
args = [], result = rescode}).
-type aterm() :: {atom(), atype()}.
-type atype() :: integer | string | binary |
{tuple, [aterm()]} | {list, aterm()}.
-type rterm() :: {atom(), rtype()}.
-type rtype() :: integer | string | atom |
{tuple, [rterm()]} | {list, rterm()} |
rescode | restuple.
-record(ejabberd_commands,
{name :: atom(),
tags = [] :: [atom()] | '_' | '$2',
desc = "" :: string() | '_' | '$3',
longdesc = "" :: string() | '_',
module :: atom(),
function :: atom(),
args = [] :: [aterm()] | '_' | '$1' | '$2',
result = {res, rescode} :: rterm() | '_' | '$2'}).
-type ejabberd_commands() :: #ejabberd_commands{name :: atom(),
tags :: [atom()],
desc :: string(),
longdesc :: string(),
module :: atom(),
function :: atom(),
args :: [aterm()],
result :: rterm()}.
%% @type ejabberd_commands() = #ejabberd_commands{
%% name = atom(),
@@ -50,3 +71,4 @@
%% @type rterm() = {Name::atom(), Type::rtype()}.
%% A result term is a tuple with the term name and the term type.
@@ -1,6 +1,6 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2011 ProcessOne
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
@@ -12,27 +12,19 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License
%%% along with this program; if not, write to the Free Software
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
%%% 02111-1307 USA
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(LDAP_PORT, 389).
-define(LDAPS_PORT, 636).
-record(local_config, {key :: any(), value :: any()}).
-record(eldap_search, {scope = wholeSubtree,
base = [],
filter,
limit = 0,
attributes = [],
types_only = false,
timeout = 0}).
-type local_config() :: #local_config{}.
-record(eldap_search_result, {entries,
referrals}).
-record(eldap_entry, {object_name,
attributes}).
-record(state,
{opts = [] :: [acl:acl() | local_config()],
hosts = [] :: [binary()],
override_local = false :: boolean(),
override_global = false :: boolean(),
override_acls = false :: boolean()}).
@@ -1,6 +1,6 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2011 ProcessOne
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
@@ -12,14 +12,16 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License
%%% along with this program; if not, write to the Free Software
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
%%% 02111-1307 USA
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(STATUS_SUCCESS, 0).
-define(STATUS_ERROR, 1).
-define(STATUS_USAGE, 2).
-define(STATUS_BADRPC, 3).
-define(STATUS_ERROR, 1).
-define(STATUS_USAGE, 2).
-define(STATUS_BADRPC, 3).
+36
View File
@@ -0,0 +1,36 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-record(request,
{method, % :: method(),
path = [] :: [binary()],
q = [] :: [{binary() | nokey, binary()}],
us = {<<>>, <<>>} :: {binary(), binary()},
auth :: {binary(), binary()} |
{auth_jid, {binary(), binary()}, jlib:jid()},
lang = <<"">> :: binary(),
data = <<"">> :: binary(),
ip :: {inet:ip_address(), inet:port_number()},
host = <<"">> :: binary(),
port = 5280 :: inet:port_number(),
tp = http, % :: protocol(),
opts = [] :: list(),
headers = [] :: [{atom() | binary(), binary()}]}).
+104
View File
@@ -0,0 +1,104 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(X(Name),
#xmlel{name = Name, attrs = [], children = []}).
-define(XA(Name, Attrs),
#xmlel{name = Name, attrs = Attrs, children = []}).
-define(XE(Name, Els),
#xmlel{name = Name, attrs = [], children = Els}).
-define(XAE(Name, Attrs, Els),
#xmlel{name = Name, attrs = Attrs, children = Els}).
-define(C(Text), {xmlcdata, Text}).
-define(XC(Name, Text), ?XE(Name, [?C(Text)])).
-define(XAC(Name, Attrs, Text),
?XAE(Name, Attrs, [?C(Text)])).
-define(T(Text), translate:translate(Lang, Text)).
-define(CT(Text), ?C((?T(Text)))).
-define(XCT(Name, Text), ?XC(Name, (?T(Text)))).
-define(XACT(Name, Attrs, Text),
?XAC(Name, Attrs, (?T(Text)))).
-define(LI(Els), ?XE(<<"li">>, Els)).
-define(A(URL, Els),
?XAE(<<"a">>, [{<<"href">>, URL}], Els)).
-define(AC(URL, Text), ?A(URL, [?C(Text)])).
-define(ACT(URL, Text), ?AC(URL, (?T(Text)))).
-define(P, ?X(<<"p">>)).
-define(BR, ?X(<<"br">>)).
-define(INPUT(Type, Name, Value),
?XA(<<"input">>,
[{<<"type">>, Type}, {<<"name">>, Name},
{<<"value">>, Value}])).
-define(INPUTT(Type, Name, Value),
?INPUT(Type, Name, (?T(Value)))).
-define(INPUTS(Type, Name, Value, Size),
?XA(<<"input">>,
[{<<"type">>, Type}, {<<"name">>, Name},
{<<"value">>, Value}, {<<"size">>, Size}])).
-define(INPUTST(Type, Name, Value, Size),
?INPUT(Type, Name, (?T(Value)), Size)).
-define(ACLINPUT(Text),
?XE(<<"td">>,
[?INPUT(<<"text">>, <<"value", ID/binary>>, Text)])).
-define(TEXTAREA(Name, Rows, Cols, Value),
?XAC(<<"textarea">>,
[{<<"name">>, Name}, {<<"rows">>, Rows},
{<<"cols">>, Cols}],
Value)).
%% Build an xmlelement for result
-define(XRES(Text),
?XAC(<<"p">>, [{<<"class">>, <<"result">>}], Text)).
%% Guide Link
-define(XREST(Text), ?XRES((?T(Text)))).
-define(GL(Ref, Title),
?XAE(<<"div">>, [{<<"class">>, <<"guidelink">>}],
[?XAE(<<"a">>,
[{<<"href">>, <<"/admin/doc/guide.html#", Ref/binary>>},
{<<"target">>, <<"_blank">>}],
[?C(<<"[Guide: ", Title/binary, "]">>)])])).
%% h1 with a Guide Link
-define(H1GL(Name, Ref, Title),
[?XC(<<"h1">>, Name), ?GL(Ref, Title)]).
+63
View File
@@ -0,0 +1,63 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(LDAP_PORT, 389).
-define(LDAPS_PORT, 636).
-type scope() :: baseObject | singleLevel | wholeSubtree.
-record(eldap_search,
{scope = wholeSubtree :: scope(),
base = <<"">> :: binary(),
filter :: eldap:filter(),
limit = 0 :: non_neg_integer(),
attributes = [] :: [binary()],
types_only = false :: boolean(),
deref_aliases = neverDerefAliases :: neverDerefAliases |
derefInSearching |
derefFindingBaseObj |
derefAlways,
timeout = 0 :: non_neg_integer()}).
-record(eldap_search_result, {entries = [] :: [eldap_entry()],
referrals = [] :: list()}).
-record(eldap_entry, {object_name = <<>> :: binary(),
attributes = [] :: [{binary(), [binary()]}]}).
-type tlsopts() :: [{encrypt, tls | starttls | none} |
{tls_cacertfile, binary() | undefined} |
{tls_depth, non_neg_integer() | undefined} |
{tls_verify, hard | soft | false}].
-record(eldap_config, {servers = [] :: [binary()],
backups = [] :: [binary()],
tls_options = [] :: tlsopts(),
port = ?LDAP_PORT :: inet:port_number(),
dn = <<"">> :: binary(),
password = <<"">> :: binary(),
base = <<"">> :: binary(),
deref_aliases = never :: never | searching |
finding | always}).
-type eldap_config() :: #eldap_config{}.
-type eldap_search() :: #eldap_search{}.
-type eldap_entry() :: #eldap_entry{}.
+46
View File
@@ -0,0 +1,46 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(CT_XML,
{<<"Content-Type">>, <<"text/xml; charset=utf-8">>}).
-define(CT_PLAIN,
{<<"Content-Type">>, <<"text/plain">>}).
-define(AC_ALLOW_ORIGIN,
{<<"Access-Control-Allow-Origin">>, <<"*">>}).
-define(AC_ALLOW_METHODS,
{<<"Access-Control-Allow-Methods">>,
<<"GET, POST, OPTIONS">>}).
-define(AC_ALLOW_HEADERS,
{<<"Access-Control-Allow-Headers">>,
<<"Content-Type">>}).
-define(AC_MAX_AGE,
{<<"Access-Control-Max-Age">>, <<"86400">>}).
-define(OPTIONS_HEADER,
[?CT_PLAIN, ?AC_ALLOW_ORIGIN, ?AC_ALLOW_METHODS,
?AC_ALLOW_HEADERS, ?AC_MAX_AGE]).
-define(HEADER,
[?CT_XML, ?AC_ALLOW_ORIGIN, ?AC_ALLOW_HEADERS]).
+501
View File
@@ -0,0 +1,501 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-include("ns.hrl").
-include_lib("p1_xml/include/xml.hrl").
-define(STANZA_ERROR(Code, Type, Condition),
#xmlel{name = <<"error">>,
attrs = [{<<"code">>, Code}, {<<"type">>, Type}],
children =
[#xmlel{name = Condition,
attrs = [{<<"xmlns">>, ?NS_STANZAS}],
children = []}]}).
-define(ERR_BAD_FORMAT,
?STANZA_ERROR(<<"406">>, <<"modify">>,
<<"bad-format">>)).
-define(ERR_BAD_REQUEST,
?STANZA_ERROR(<<"400">>, <<"modify">>,
<<"bad-request">>)).
-define(ERR_CONFLICT,
?STANZA_ERROR(<<"409">>, <<"cancel">>, <<"conflict">>)).
-define(ERR_FEATURE_NOT_IMPLEMENTED,
?STANZA_ERROR(<<"501">>, <<"cancel">>,
<<"feature-not-implemented">>)).
-define(ERR_FORBIDDEN,
?STANZA_ERROR(<<"403">>, <<"auth">>, <<"forbidden">>)).
-define(ERR_GONE,
?STANZA_ERROR(<<"302">>, <<"modify">>, <<"gone">>)).
-define(ERR_INTERNAL_SERVER_ERROR,
?STANZA_ERROR(<<"500">>, <<"wait">>,
<<"internal-server-error">>)).
-define(ERR_ITEM_NOT_FOUND,
?STANZA_ERROR(<<"404">>, <<"cancel">>,
<<"item-not-found">>)).
-define(ERR_JID_MALFORMED,
?STANZA_ERROR(<<"400">>, <<"modify">>,
<<"jid-malformed">>)).
-define(ERR_NOT_ACCEPTABLE,
?STANZA_ERROR(<<"406">>, <<"modify">>,
<<"not-acceptable">>)).
-define(ERR_NOT_ALLOWED,
?STANZA_ERROR(<<"405">>, <<"cancel">>,
<<"not-allowed">>)).
-define(ERR_NOT_AUTHORIZED,
?STANZA_ERROR(<<"401">>, <<"auth">>,
<<"not-authorized">>)).
-define(ERR_PAYMENT_REQUIRED,
?STANZA_ERROR(<<"402">>, <<"auth">>,
<<"payment-required">>)).
-define(ERR_RECIPIENT_UNAVAILABLE,
?STANZA_ERROR(<<"404">>, <<"wait">>,
<<"recipient-unavailable">>)).
-define(ERR_REDIRECT,
?STANZA_ERROR(<<"302">>, <<"modify">>, <<"redirect">>)).
-define(ERR_REGISTRATION_REQUIRED,
?STANZA_ERROR(<<"407">>, <<"auth">>,
<<"registration-required">>)).
-define(ERR_REMOTE_SERVER_NOT_FOUND,
?STANZA_ERROR(<<"404">>, <<"cancel">>,
<<"remote-server-not-found">>)).
-define(ERR_REMOTE_SERVER_TIMEOUT,
?STANZA_ERROR(<<"504">>, <<"wait">>,
<<"remote-server-timeout">>)).
-define(ERR_RESOURCE_CONSTRAINT,
?STANZA_ERROR(<<"500">>, <<"wait">>,
<<"resource-constraint">>)).
-define(ERR_SERVICE_UNAVAILABLE,
?STANZA_ERROR(<<"503">>, <<"cancel">>,
<<"service-unavailable">>)).
-define(ERR_SUBSCRIPTION_REQUIRED,
?STANZA_ERROR(<<"407">>, <<"auth">>,
<<"subscription-required">>)).
-define(ERR_UNEXPECTED_REQUEST,
?STANZA_ERROR(<<"400">>, <<"wait">>,
<<"unexpected-request">>)).
-define(ERR_UNEXPECTED_REQUEST_CANCEL,
?STANZA_ERROR(<<"401">>, <<"cancel">>,
<<"unexpected-request">>)).
%-define(ERR_,
% ?STANZA_ERROR("", "", "")).
-define(STANZA_ERRORT(Code, Type, Condition, Lang,
Text),
#xmlel{name = <<"error">>,
attrs = [{<<"code">>, Code}, {<<"type">>, Type}],
children =
[#xmlel{name = Condition,
attrs = [{<<"xmlns">>, ?NS_STANZAS}], children = []},
#xmlel{name = <<"text">>,
attrs = [{<<"xmlns">>, ?NS_STANZAS}],
children =
[{xmlcdata,
translate:translate(Lang, Text)}]}]}).
-define(ERRT_BAD_FORMAT(Lang, Text),
?STANZA_ERRORT(<<"406">>, <<"modify">>,
<<"bad-format">>, Lang, Text)).
-define(ERRT_BAD_REQUEST(Lang, Text),
?STANZA_ERRORT(<<"400">>, <<"modify">>,
<<"bad-request">>, Lang, Text)).
-define(ERRT_CONFLICT(Lang, Text),
?STANZA_ERRORT(<<"409">>, <<"cancel">>, <<"conflict">>,
Lang, Text)).
-define(ERRT_FEATURE_NOT_IMPLEMENTED(Lang, Text),
?STANZA_ERRORT(<<"501">>, <<"cancel">>,
<<"feature-not-implemented">>, Lang, Text)).
-define(ERRT_FORBIDDEN(Lang, Text),
?STANZA_ERRORT(<<"403">>, <<"auth">>, <<"forbidden">>,
Lang, Text)).
-define(ERRT_GONE(Lang, Text),
?STANZA_ERRORT(<<"302">>, <<"modify">>, <<"gone">>,
Lang, Text)).
-define(ERRT_INTERNAL_SERVER_ERROR(Lang, Text),
?STANZA_ERRORT(<<"500">>, <<"wait">>,
<<"internal-server-error">>, Lang, Text)).
-define(ERRT_ITEM_NOT_FOUND(Lang, Text),
?STANZA_ERRORT(<<"404">>, <<"cancel">>,
<<"item-not-found">>, Lang, Text)).
-define(ERRT_JID_MALFORMED(Lang, Text),
?STANZA_ERRORT(<<"400">>, <<"modify">>,
<<"jid-malformed">>, Lang, Text)).
-define(ERRT_NOT_ACCEPTABLE(Lang, Text),
?STANZA_ERRORT(<<"406">>, <<"modify">>,
<<"not-acceptable">>, Lang, Text)).
-define(ERRT_NOT_ALLOWED(Lang, Text),
?STANZA_ERRORT(<<"405">>, <<"cancel">>,
<<"not-allowed">>, Lang, Text)).
-define(ERRT_NOT_AUTHORIZED(Lang, Text),
?STANZA_ERRORT(<<"401">>, <<"auth">>,
<<"not-authorized">>, Lang, Text)).
-define(ERRT_PAYMENT_REQUIRED(Lang, Text),
?STANZA_ERRORT(<<"402">>, <<"auth">>,
<<"payment-required">>, Lang, Text)).
-define(ERRT_RECIPIENT_UNAVAILABLE(Lang, Text),
?STANZA_ERRORT(<<"404">>, <<"wait">>,
<<"recipient-unavailable">>, Lang, Text)).
-define(ERRT_REDIRECT(Lang, Text),
?STANZA_ERRORT(<<"302">>, <<"modify">>, <<"redirect">>,
Lang, Text)).
-define(ERRT_REGISTRATION_REQUIRED(Lang, Text),
?STANZA_ERRORT(<<"407">>, <<"auth">>,
<<"registration-required">>, Lang, Text)).
-define(ERRT_REMOTE_SERVER_NOT_FOUND(Lang, Text),
?STANZA_ERRORT(<<"404">>, <<"cancel">>,
<<"remote-server-not-found">>, Lang, Text)).
-define(ERRT_REMOTE_SERVER_TIMEOUT(Lang, Text),
?STANZA_ERRORT(<<"504">>, <<"wait">>,
<<"remote-server-timeout">>, Lang, Text)).
-define(ERRT_RESOURCE_CONSTRAINT(Lang, Text),
?STANZA_ERRORT(<<"500">>, <<"wait">>,
<<"resource-constraint">>, Lang, Text)).
-define(ERRT_SERVICE_UNAVAILABLE(Lang, Text),
?STANZA_ERRORT(<<"503">>, <<"cancel">>,
<<"service-unavailable">>, Lang, Text)).
-define(ERRT_SUBSCRIPTION_REQUIRED(Lang, Text),
?STANZA_ERRORT(<<"407">>, <<"auth">>,
<<"subscription-required">>, Lang, Text)).
-define(ERRT_UNEXPECTED_REQUEST(Lang, Text),
?STANZA_ERRORT(<<"400">>, <<"wait">>,
<<"unexpected-request">>, Lang, Text)).
-define(ERR_AUTH_NO_RESOURCE_PROVIDED(Lang),
?ERRT_NOT_ACCEPTABLE(Lang, <<"No resource provided">>)).
-define(ERR_AUTH_BAD_RESOURCE_FORMAT(Lang),
?ERRT_NOT_ACCEPTABLE(Lang,
<<"Illegal resource format">>)).
-define(ERR_AUTH_RESOURCE_CONFLICT(Lang),
?ERRT_CONFLICT(Lang, <<"Resource conflict">>)).
-define(STREAM_ERROR(Condition, Cdata),
#xmlel{name = <<"stream:error">>, attrs = [],
children =
[#xmlel{name = Condition,
attrs = [{<<"xmlns">>, ?NS_STREAMS}],
children = [{xmlcdata, Cdata}]}]}).
-define(SERR_BAD_FORMAT,
?STREAM_ERROR(<<"bad-format">>, <<"">>)).
-define(SERR_BAD_NAMESPACE_PREFIX,
?STREAM_ERROR(<<"bad-namespace-prefix">>, <<"">>)).
-define(SERR_CONFLICT,
?STREAM_ERROR(<<"conflict">>, <<"">>)).
-define(SERR_CONNECTION_TIMEOUT,
?STREAM_ERROR(<<"connection-timeout">>, <<"">>)).
-define(SERR_HOST_GONE,
?STREAM_ERROR(<<"host-gone">>, <<"">>)).
-define(SERR_HOST_UNKNOWN,
?STREAM_ERROR(<<"host-unknown">>, <<"">>)).
-define(SERR_IMPROPER_ADDRESSING,
?STREAM_ERROR(<<"improper-addressing">>, <<"">>)).
-define(SERR_INTERNAL_SERVER_ERROR,
?STREAM_ERROR(<<"internal-server-error">>, <<"">>)).
-define(SERR_INVALID_FROM,
?STREAM_ERROR(<<"invalid-from">>, <<"">>)).
-define(SERR_INVALID_ID,
?STREAM_ERROR(<<"invalid-id">>, <<"">>)).
-define(SERR_INVALID_NAMESPACE,
?STREAM_ERROR(<<"invalid-namespace">>, <<"">>)).
-define(SERR_INVALID_XML,
?STREAM_ERROR(<<"invalid-xml">>, <<"">>)).
-define(SERR_NOT_AUTHORIZED,
?STREAM_ERROR(<<"not-authorized">>, <<"">>)).
-define(SERR_POLICY_VIOLATION,
?STREAM_ERROR(<<"policy-violation">>, <<"">>)).
-define(SERR_REMOTE_CONNECTION_FAILED,
?STREAM_ERROR(<<"remote-connection-failed">>, <<"">>)).
-define(SERR_RESOURSE_CONSTRAINT,
?STREAM_ERROR(<<"resource-constraint">>, <<"">>)).
-define(SERR_RESTRICTED_XML,
?STREAM_ERROR(<<"restricted-xml">>, <<"">>)).
-define(SERR_SEE_OTHER_HOST(Host),
?STREAM_ERROR(<<"see-other-host">>, Host)).
-define(SERR_SYSTEM_SHUTDOWN,
?STREAM_ERROR(<<"system-shutdown">>, <<"">>)).
-define(SERR_UNSUPPORTED_ENCODING,
?STREAM_ERROR(<<"unsupported-encoding">>, <<"">>)).
-define(SERR_UNSUPPORTED_STANZA_TYPE,
?STREAM_ERROR(<<"unsupported-stanza-type">>, <<"">>)).
-define(SERR_UNSUPPORTED_VERSION,
?STREAM_ERROR(<<"unsupported-version">>, <<"">>)).
-define(SERR_XML_NOT_WELL_FORMED,
?STREAM_ERROR(<<"xml-not-well-formed">>, <<"">>)).
%-define(SERR_,
% ?STREAM_ERROR("", "")).
-define(STREAM_ERRORT(Condition, Cdata, Lang, Text),
#xmlel{name = <<"stream:error">>, attrs = [],
children =
[#xmlel{name = Condition,
attrs = [{<<"xmlns">>, ?NS_STREAMS}],
children = [{xmlcdata, Cdata}]},
#xmlel{name = <<"text">>,
attrs =
[{<<"xml:lang">>, Lang},
{<<"xmlns">>, ?NS_STREAMS}],
children =
[{xmlcdata,
translate:translate(Lang, Text)}]}]}).
-define(SERRT_BAD_FORMAT(Lang, Text),
?STREAM_ERRORT(<<"bad-format">>, <<"">>, Lang, Text)).
-define(SERRT_BAD_NAMESPACE_PREFIX(Lang, Text),
?STREAM_ERRORT(<<"bad-namespace-prefix">>, <<"">>, Lang,
Text)).
-define(SERRT_CONFLICT(Lang, Text),
?STREAM_ERRORT(<<"conflict">>, <<"">>, Lang, Text)).
-define(SERRT_CONNECTION_TIMEOUT(Lang, Text),
?STREAM_ERRORT(<<"connection-timeout">>, <<"">>, Lang,
Text)).
-define(SERRT_HOST_GONE(Lang, Text),
?STREAM_ERRORT(<<"host-gone">>, <<"">>, Lang, Text)).
-define(SERRT_HOST_UNKNOWN(Lang, Text),
?STREAM_ERRORT(<<"host-unknown">>, <<"">>, Lang, Text)).
-define(SERRT_IMPROPER_ADDRESSING(Lang, Text),
?STREAM_ERRORT(<<"improper-addressing">>, <<"">>, Lang,
Text)).
-define(SERRT_INTERNAL_SERVER_ERROR(Lang, Text),
?STREAM_ERRORT(<<"internal-server-error">>, <<"">>,
Lang, Text)).
-define(SERRT_INVALID_FROM(Lang, Text),
?STREAM_ERRORT(<<"invalid-from">>, <<"">>, Lang, Text)).
-define(SERRT_INVALID_ID(Lang, Text),
?STREAM_ERRORT(<<"invalid-id">>, <<"">>, Lang, Text)).
-define(SERRT_INVALID_NAMESPACE(Lang, Text),
?STREAM_ERRORT(<<"invalid-namespace">>, <<"">>, Lang,
Text)).
-define(SERRT_INVALID_XML(Lang, Text),
?STREAM_ERRORT(<<"invalid-xml">>, <<"">>, Lang, Text)).
-define(SERRT_NOT_AUTHORIZED(Lang, Text),
?STREAM_ERRORT(<<"not-authorized">>, <<"">>, Lang,
Text)).
-define(SERRT_POLICY_VIOLATION(Lang, Text),
?STREAM_ERRORT(<<"policy-violation">>, <<"">>, Lang,
Text)).
-define(SERRT_REMOTE_CONNECTION_FAILED(Lang, Text),
?STREAM_ERRORT(<<"remote-connection-failed">>, <<"">>,
Lang, Text)).
-define(SERRT_RESOURSE_CONSTRAINT(Lang, Text),
?STREAM_ERRORT(<<"resource-constraint">>, <<"">>, Lang,
Text)).
-define(SERRT_RESTRICTED_XML(Lang, Text),
?STREAM_ERRORT(<<"restricted-xml">>, <<"">>, Lang,
Text)).
-define(SERRT_SEE_OTHER_HOST(Host, Lang, Text),
?STREAM_ERRORT(<<"see-other-host">>, Host, Lang, Text)).
-define(SERRT_SYSTEM_SHUTDOWN(Lang, Text),
?STREAM_ERRORT(<<"system-shutdown">>, <<"">>, Lang,
Text)).
-define(SERRT_UNSUPPORTED_ENCODING(Lang, Text),
?STREAM_ERRORT(<<"unsupported-encoding">>, <<"">>, Lang,
Text)).
-define(SERRT_UNSUPPORTED_STANZA_TYPE(Lang, Text),
?STREAM_ERRORT(<<"unsupported-stanza-type">>, <<"">>,
Lang, Text)).
-define(SERRT_UNSUPPORTED_VERSION(Lang, Text),
?STREAM_ERRORT(<<"unsupported-version">>, <<"">>, Lang,
Text)).
-define(SERRT_XML_NOT_WELL_FORMED(Lang, Text),
?STREAM_ERRORT(<<"xml-not-well-formed">>, <<"">>, Lang,
Text)).
-record(jid, {user = <<"">> :: binary(),
server = <<"">> :: binary(),
resource = <<"">> :: binary(),
luser = <<"">> :: binary(),
lserver = <<"">> :: binary(),
lresource = <<"">> :: binary()}).
-type(jid() :: #jid{}).
-type(ljid() :: {binary(), binary(), binary()}).
-record(iq, {id = <<"">> :: binary(),
type = get :: get | set | result | error,
xmlns = <<"">> :: binary(),
lang = <<"">> :: binary(),
sub_el = #xmlel{} :: xmlel() | [xmlel()]}).
-type(iq_get()
:: #iq{
id :: binary(),
type :: get,
xmlns :: binary(),
lang :: binary(),
sub_el :: xmlel()
}
).
-type(iq_set()
:: #iq{
id :: binary(),
type :: set,
xmlns :: binary(),
lang :: binary(),
sub_el :: xmlel()
}
).
-type iq_request() :: iq_get() | iq_set().
-type(iq_result()
:: #iq{
id :: binary(),
type :: result,
xmlns :: binary(),
lang :: binary(),
sub_el :: [xmlel()]
}
).
-type(iq_error()
:: #iq{
id :: binary(),
type :: error,
xmlns :: binary(),
lang :: binary(),
sub_el :: [xmlel()]
}
).
-type iq_reply() :: iq_result() | iq_error() .
-type(iq() :: iq_request() | iq_reply()).
-record(rsm_in, {max :: integer(),
direction :: before | aft,
id :: binary(),
index :: integer()}).
-record(rsm_out, {count :: integer(),
index :: integer(),
first :: binary(),
last :: binary()}).
-type(rsm_in() :: #rsm_in{}).
-type(rsm_out() :: #rsm_out{}).
-type broadcast() :: {broadcast, broadcast_data()}.
-type broadcast_data() ::
{rebind, pid(), binary()} | %% ejabberd_c2s
{item, ljid(), mod_roster:subscription()} | %% mod_roster/mod_shared_roster
{exit, binary()} | %% mod_roster/mod_shared_roster
{privacy_list, mod_privacy:userlist(), binary()} | %% mod_privacy
{blocking, unblock_all | {block | unblock, [ljid()]}}. %% mod_blocking
-record(xmlelement, {name = "" :: string(),
attrs = [] :: [{string(), string()}],
children = [] :: [{xmlcdata, iodata()} | xmlelement()]}).
-type xmlelement() :: #xmlelement{}.
+56
View File
@@ -0,0 +1,56 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(PRINT(Format, Args), io:format(Format, Args)).
-ifdef(LAGER).
-compile([{parse_transform, lager_transform}]).
-define(DEBUG(Format, Args),
lager:debug(Format, Args)).
-define(INFO_MSG(Format, Args),
lager:info(Format, Args)).
-define(WARNING_MSG(Format, Args),
lager:warning(Format, Args)).
-define(ERROR_MSG(Format, Args),
lager:error(Format, Args)).
-define(CRITICAL_MSG(Format, Args),
lager:critical(Format, Args)).
-else.
-define(DEBUG(Format, Args),
p1_logger:debug_msg(?MODULE, ?LINE, Format, Args)).
-define(INFO_MSG(Format, Args),
p1_logger:info_msg(?MODULE, ?LINE, Format, Args)).
-define(WARNING_MSG(Format, Args),
p1_logger:warning_msg(?MODULE, ?LINE, Format, Args)).
-define(ERROR_MSG(Format, Args),
p1_logger:error_msg(?MODULE, ?LINE, Format, Args)).
-define(CRITICAL_MSG(Format, Args),
p1_logger:critical_msg(?MODULE, ?LINE, Format, Args)).
-endif.
+116
View File
@@ -0,0 +1,116 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(MAX_USERS_DEFAULT, 200).
-define(SETS, gb_sets).
-define(DICT, dict).
-record(lqueue,
{
queue :: queue(),
len :: integer(),
max :: integer()
}).
-type lqueue() :: #lqueue{}.
-record(config,
{
title = <<"">> :: binary(),
description = <<"">> :: binary(),
allow_change_subj = true :: boolean(),
allow_query_users = true :: boolean(),
allow_private_messages = true :: boolean(),
allow_private_messages_from_visitors = anyone :: anyone | moderators | nobody ,
allow_visitor_status = true :: boolean(),
allow_visitor_nickchange = true :: boolean(),
public = true :: boolean(),
public_list = true :: boolean(),
persistent = false :: boolean(),
moderated = true :: boolean(),
captcha_protected = false :: boolean(),
members_by_default = true :: boolean(),
members_only = false :: boolean(),
allow_user_invites = false :: boolean(),
password_protected = false :: boolean(),
password = <<"">> :: binary(),
anonymous = true :: boolean(),
allow_voice_requests = true :: boolean(),
voice_request_min_interval = 1800 :: non_neg_integer(),
max_users = ?MAX_USERS_DEFAULT :: non_neg_integer() | none,
logging = false :: boolean(),
vcard = <<"">> :: boolean(),
captcha_whitelist = (?SETS):empty() :: gb_set()
}).
-type config() :: #config{}.
-type role() :: moderator | participant | visitor | none.
-record(user,
{
jid :: jid(),
nick :: binary(),
role :: role(),
last_presence :: xmlel()
}).
-record(activity,
{
message_time = 0 :: integer(),
presence_time = 0 :: integer(),
message_shaper :: shaper:shaper(),
presence_shaper :: shaper:shaper(),
message :: xmlel(),
presence :: {binary(), xmlel()}
}).
-record(state,
{
room = <<"">> :: binary(),
host = <<"">> :: binary(),
server_host = <<"">> :: binary(),
access = {none,none,none,none} :: {atom(), atom(), atom(), atom()},
jid = #jid{} :: jid(),
config = #config{} :: config(),
users = (?DICT):new() :: dict(),
last_voice_request_time = treap:empty() :: treap:treap(),
robots = (?DICT):new() :: dict(),
nicks = (?DICT):new() :: dict(),
affiliations = (?DICT):new() :: dict(),
history :: lqueue(),
subject = <<"">> :: binary(),
subject_author = <<"">> :: binary(),
just_created = false :: boolean(),
activity = treap:empty() :: treap:treap(),
room_shaper = none :: shaper:shaper(),
room_queue = queue:new() :: queue()
}).
-record(muc_online_users, {us = {<<>>, <<>>} :: {binary(), binary()},
resource = <<>> :: binary() | '_',
room = <<>> :: binary() | '_',
host = <<>> :: binary() | '_'}).
-type muc_online_users() :: #muc_online_users{}.
-type muc_room_state() :: #state{}.
+43
View File
@@ -0,0 +1,43 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-record(privacy, {us = {<<"">>, <<"">>} :: {binary(), binary()},
default = none :: none | binary(),
lists = [] :: [{binary(), [listitem()]}]}).
-record(listitem, {type = none :: none | jid | group | subscription,
value = none :: none | both | from | to | ljid() | binary(),
action = allow :: allow | deny,
order = 0 :: integer(),
match_all = false :: boolean(),
match_iq = false :: boolean(),
match_message = false :: boolean(),
match_presence_in = false :: boolean(),
match_presence_out = false :: boolean()}).
-type listitem() :: #listitem{}.
-record(userlist, {name = none :: none | binary(),
list = [] :: [listitem()],
needdb = false :: boolean()}).
-type userlist() :: #userlist{}.
-export_type([userlist/0]).
@@ -2,7 +2,7 @@
%%% RFC 1928 constants.
%%%
%%%
%%% ejabberd, Copyright (C) 2002-2011 ProcessOne
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
@@ -14,10 +14,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License
%%% along with this program; if not, write to the Free Software
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
%%% 02111-1307 USA
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
@@ -26,36 +25,49 @@
%% Authentication methods
-define(AUTH_ANONYMOUS, 0).
-define(AUTH_GSSAPI, 1).
-define(AUTH_PLAIN, 2).
-define(AUTH_NO_METHODS, 16#FF).
%% Address Type
-define(AUTH_NO_METHODS, 255).
-define(ATYP_IPV4, 1).
-define(ATYP_DOMAINNAME, 3).
-define(ATYP_IPV6, 4).
%% Commands
-define(CMD_CONNECT, 1).
-define(CMD_BIND, 2).
-define(CMD_UDP, 3).
%% RFC 1928 replies
-define(SUCCESS, 0).
-define(ERR_GENERAL_FAILURE, 1).
-define(ERR_NOT_ALLOWED, 2).
-define(ERR_NETWORK_UNREACHABLE, 3).
-define(ERR_HOST_UNREACHABLE, 4).
-define(ERR_CONNECTION_REFUSED, 5).
-define(ERR_TTL_EXPIRED, 6).
-define(ERR_COMMAND_NOT_SUPPORTED, 7).
-define(ERR_ADDRESS_TYPE_NOT_SUPPORTED, 8).
%% RFC 1928 defined timeout.
-define(SOCKS5_REPLY_TIMEOUT, 10000).
-record(s5_request, {
rsv = 0,
cmd,
sha1
}).
-record(s5_request, {rsv = 0 :: integer(),
cmd = connect :: connect | udp,
sha1 = <<"">> :: binary()}).
+41
View File
@@ -0,0 +1,41 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-record(roster,
{
usj = {<<>>, <<>>, {<<>>, <<>>, <<>>}} :: {binary(), binary(), ljid()} | '_',
us = {<<>>, <<>>} :: {binary(), binary()} | '_',
jid = {<<>>, <<>>, <<>>} :: ljid(),
name = <<>> :: binary() | '_',
subscription = none :: subscription() | '_',
ask = none :: ask() | '_',
groups = [] :: [binary()] | '_',
askmessage = <<"">> :: binary() | '_',
xs = [] :: [xmlel()] | '_'
}).
-record(roster_version,
{
us = {<<>>, <<>>} :: {binary(), binary()},
version = <<>> :: binary()
}).
-type ask() :: none | in | out | both | subscribe | unsubscribe.
-type subscription() :: none | both | from | to | remove.
+152
View File
@@ -0,0 +1,152 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2015 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
%%% published by the Free Software Foundation; either version 2 of the
%%% License, or (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
-define(NS_DISCO_ITEMS,
<<"http://jabber.org/protocol/disco#items">>).
-define(NS_DISCO_INFO,
<<"http://jabber.org/protocol/disco#info">>).
-define(NS_VCARD, <<"vcard-temp">>).
-define(NS_VCARD_UPDATE, <<"vcard-temp:x:update">>).
-define(NS_AUTH, <<"jabber:iq:auth">>).
-define(NS_AUTH_ERROR, <<"jabber:iq:auth:error">>).
-define(NS_REGISTER, <<"jabber:iq:register">>).
-define(NS_SEARCH, <<"jabber:iq:search">>).
-define(NS_ROSTER, <<"jabber:iq:roster">>).
-define(NS_ROSTER_VER,
<<"urn:xmpp:features:rosterver">>).
-define(NS_PRIVACY, <<"jabber:iq:privacy">>).
-define(NS_BLOCKING, <<"urn:xmpp:blocking">>).
-define(NS_PRIVATE, <<"jabber:iq:private">>).
-define(NS_VERSION, <<"jabber:iq:version">>).
-define(NS_TIME90, <<"jabber:iq:time">>).
-define(NS_TIME, <<"urn:xmpp:time">>).
-define(NS_LAST, <<"jabber:iq:last">>).
-define(NS_XDATA, <<"jabber:x:data">>).
-define(NS_IQDATA, <<"jabber:iq:data">>).
-define(NS_DELAY91, <<"jabber:x:delay">>).
-define(NS_DELAY, <<"urn:xmpp:delay">>).
-define(NS_HINTS, <<"urn:xmpp:hints">>).
-define(NS_EXPIRE, <<"jabber:x:expire">>).
-define(NS_EVENT, <<"jabber:x:event">>).
-define(NS_CHATSTATES,
<<"http://jabber.org/protocol/chatstates">>).
-define(NS_XCONFERENCE, <<"jabber:x:conference">>).
-define(NS_STATS,
<<"http://jabber.org/protocol/stats">>).
-define(NS_MUC, <<"http://jabber.org/protocol/muc">>).
-define(NS_MUC_USER,
<<"http://jabber.org/protocol/muc#user">>).
-define(NS_MUC_ADMIN,
<<"http://jabber.org/protocol/muc#admin">>).
-define(NS_MUC_OWNER,
<<"http://jabber.org/protocol/muc#owner">>).
-define(NS_MUC_UNIQUE,
<<"http://jabber.org/protocol/muc#unique">>).
-define(NS_PUBSUB,
<<"http://jabber.org/protocol/pubsub">>).
-define(NS_PUBSUB_EVENT,
<<"http://jabber.org/protocol/pubsub#event">>).
-define(NS_PUBSUB_META_DATA,
<<"http://jabber.org/protocol/pubsub#meta-data">>).
-define(NS_PUBSUB_OWNER,
<<"http://jabber.org/protocol/pubsub#owner">>).
-define(NS_PUBSUB_NMI,
<<"http://jabber.org/protocol/pubsub#node-meta-info">>).
-define(NS_PUBSUB_ERRORS,
<<"http://jabber.org/protocol/pubsub#errors">>).
-define(NS_PUBSUB_NODE_CONFIG,
<<"http://jabber.org/protocol/pubsub#node_config">>).
-define(NS_PUBSUB_SUB_OPTIONS,
<<"http://jabber.org/protocol/pubsub#subscribe_options">>).
-define(NS_PUBSUB_SUBSCRIBE_OPTIONS,
<<"http://jabber.org/protocol/pubsub#subscribe_options">>).
-define(NS_PUBSUB_PUBLISH_OPTIONS,
<<"http://jabber.org/protocol/pubsub#publish_options">>).
-define(NS_PUBSUB_SUB_AUTH,
<<"http://jabber.org/protocol/pubsub#subscribe_authorization">>).
-define(NS_PUBSUB_GET_PENDING,
<<"http://jabber.org/protocol/pubsub#get-pending">>).
-define(NS_COMMANDS,
<<"http://jabber.org/protocol/commands">>).
-define(NS_BYTESTREAMS,
<<"http://jabber.org/protocol/bytestreams">>).
-define(NS_ADMIN,
<<"http://jabber.org/protocol/admin">>).
-define(NS_ADMIN_ANNOUNCE,
<<"http://jabber.org/protocol/admin#announce">>).
-define(NS_ADMIN_ANNOUNCE_ALL,
<<"http://jabber.org/protocol/admin#announce-all">>).
-define(NS_ADMIN_SET_MOTD,
<<"http://jabber.org/protocol/admin#set-motd">>).
-define(NS_ADMIN_EDIT_MOTD,
<<"http://jabber.org/protocol/admin#edit-motd">>).
-define(NS_ADMIN_DELETE_MOTD,
<<"http://jabber.org/protocol/admin#delete-motd">>).
-define(NS_ADMIN_ANNOUNCE_ALLHOSTS,
<<"http://jabber.org/protocol/admin#announce-allhosts">>).
-define(NS_ADMIN_ANNOUNCE_ALL_ALLHOSTS,
<<"http://jabber.org/protocol/admin#announce-all-allhosts">>).
-define(NS_ADMIN_SET_MOTD_ALLHOSTS,
<<"http://jabber.org/protocol/admin#set-motd-allhosts">>).
-define(NS_ADMIN_EDIT_MOTD_ALLHOSTS,
<<"http://jabber.org/protocol/admin#edit-motd-allhosts">>).
-define(NS_ADMIN_DELETE_MOTD_ALLHOSTS,
<<"http://jabber.org/protocol/admin#delete-motd-allhosts">>).
-define(NS_SERVERINFO,
<<"http://jabber.org/network/serverinfo">>).
-define(NS_RSM, <<"http://jabber.org/protocol/rsm">>).
-define(NS_EJABBERD_CONFIG, <<"ejabberd:config">>).
-define(NS_STREAM,
<<"http://etherx.jabber.org/streams">>).
-define(NS_STANZAS,
<<"urn:ietf:params:xml:ns:xmpp-stanzas">>).
-define(NS_STREAMS,
<<"urn:ietf:params:xml:ns:xmpp-streams">>).
-define(NS_TLS, <<"urn:ietf:params:xml:ns:xmpp-tls">>).
-define(NS_SASL,
<<"urn:ietf:params:xml:ns:xmpp-sasl">>).
-define(NS_SESSION,
<<"urn:ietf:params:xml:ns:xmpp-session">>).
-define(NS_BIND,
<<"urn:ietf:params:xml:ns:xmpp-bind">>).
-define(NS_FEATURE_IQAUTH,
<<"http://jabber.org/features/iq-auth">>).
-define(NS_FEATURE_IQREGISTER,
<<"http://jabber.org/features/iq-register">>).
-define(NS_FEATURE_COMPRESS,
<<"http://jabber.org/features/compress">>).
-define(NS_FEATURE_MSGOFFLINE, <<"msgoffline">>).
-define(NS_COMPRESS,
<<"http://jabber.org/protocol/compress">>).
-define(NS_CAPS, <<"http://jabber.org/protocol/caps">>).
-define(NS_SHIM, <<"http://jabber.org/protocol/shim">>).
-define(NS_ADDRESS,
<<"http://jabber.org/protocol/address">>).
-define(NS_OOB, <<"jabber:x:oob">>).
-define(NS_CAPTCHA, <<"urn:xmpp:captcha">>).
-define(NS_MEDIA, <<"urn:xmpp:media-element">>).
-define(NS_BOB, <<"urn:xmpp:bob">>).
-define(NS_PING, <<"urn:xmpp:ping">>).
-define(NS_CARBONS_2, <<"urn:xmpp:carbons:2">>).
-define(NS_CARBONS_1, <<"urn:xmpp:carbons:1">>).
-define(NS_FORWARD, <<"urn:xmpp:forward:0">>).
-define(NS_CLIENT_STATE, <<"urn:xmpp:csi:0">>).
-define(NS_STREAM_MGMT_2, <<"urn:xmpp:sm:2">>).
-define(NS_STREAM_MGMT_3, <<"urn:xmpp:sm:3">>).
@@ -5,25 +5,28 @@
%%% Erlang Public License along with this software. If not, it can be
%%% retrieved via the world wide web at http://www.erlang.org/.
%%%
%%%
%%% Software distributed under the License is distributed on an "AS IS"
%%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%%% the License for the specific language governing rights and limitations
%%% under the License.
%%%
%%%
%%% The Initial Developer of the Original Code is ProcessOne.
%%% Portions created by ProcessOne are Copyright 2006-2011, ProcessOne
%%% Portions created by ProcessOne are Copyright 2006-2015, ProcessOne
%%% All Rights Reserved.''
%%% This software is copyright 2006-2011, ProcessOne.
%%% This software is copyright 2006-2015, ProcessOne.
%%%
%%%
%%% copyright 2006-2011 ProcessOne
%%% copyright 2006-2015 ProcessOne
%%%
%%% This file contains pubsub types definition.
%%% ====================================================================
%% -------------------------------
%% Pubsub constants
-define(ERR_EXTENDED(E,C), mod_pubsub:extended_error(E,C)).
-define(ERR_EXTENDED(E, C),
mod_pubsub:extended_error(E, C)).
%% The actual limit can be configured with mod_pubsub's option max_items_node
-define(MAXITEMS, 10).
@@ -36,9 +39,11 @@
%% Pubsub types
%% @type hostPubsub() = string().
-type(hostPubsub() :: binary()).
%% <p><tt>hostPubsub</tt> is the name of the PubSub service. For example, it can be
%% <tt>"pubsub.localhost"</tt>.</p>
-type(hostPEP() :: {binary(), binary(), <<>>}).
%% @type hostPEP() = {User, Server, Resource}
%% User = string()
%% Server = string()
@@ -46,23 +51,31 @@
%% <p>For example, it can be :
%% ```{"bob", "example.org", []}'''.</p>
-type(host() :: hostPubsub() | hostPEP()).
%% @type host() = hostPubsub() | hostPEP().
-type(nodeId() :: binary()).
%% @type nodeId() = binary().
%% <p>A node is defined by a list of its ancestors. The last element is the name
%% of the current node. For example:
%% of the current node. For example:
%% ```<<"/home/localhost/user">>'''</p>
-type(nodeIdx() :: pos_integer()).
%% @type nodeIdx() = integer().
-type(itemId() :: binary()).
%% @type itemId() = string().
-type(subId() :: binary()).
%% @type subId() = string().
%% @type payload() = [#xmlelement{} | #xmlcdata{}].
%% @type stanzaError() = #xmlelement{}.
%% Example:
%% Example:
%% ```{xmlelement, "error",
%% [{"code", Code}, {"type", Type}],
%% [{xmlelement, Condition, [{"xmlns", ?NS_STANZAS}], []}]}'''
@@ -73,12 +86,26 @@
%% [{xmlelement, "affiliations", [],
%% []}]}'''
-type(nodeOption() ::
{Option::atom(),
Value::binary() | [binary()] | boolean() | non_neg_integer()
}).
-type(nodeOptions() :: [NodeOption::mod_pubsub:nodeOption(),...]).
%% @type nodeOption() = {Option, Value}
%% Option = atom()
%% Value = term().
%% Example:
%% ```{deliver_payloads, true}'''
-type(subOption() ::
{Option::atom(),
Value::binary() | [binary()] | boolean()
}).
-type(subOptions() :: [SubOption::mod_pubsub:subOption(),...]).
%% @type nodeType() = string().
%% <p>The <tt>nodeType</tt> is a string containing the name of the PubSub
%% plugin to use to manage a given node. For example, it can be
@@ -92,15 +119,34 @@
%% LServer = string()
%% LResource = string().
%-type(ljid() :: {binary(), binary(), binary()}).
%% @type ljid() = {User, Server, Resource}
%% User = string()
%% Server = string()
%% Resource = string().
-type(affiliation() :: 'none'
| 'owner'
| 'publisher'
%| 'publish-only'
| 'member'
| 'outcast'
).
%% @type affiliation() = 'none' | 'owner' | 'publisher' | 'publish-only' | 'member' | 'outcast'.
-type(subscription() :: 'none'
| 'pending'
| 'unconfigured'
| 'subscribed'
).
%% @type subscription() = 'none' | 'pending' | 'unconfigured' | 'subscribed'.
-type(accessModel() :: 'open'
| 'presence'
| 'roster'
| 'authorize'
| 'whitelist'
).
%% @type accessModel() = 'open' | 'presence' | 'roster' | 'authorize' | 'whitelist'.
%% @type pubsubIndex() = {pubsub_index, Index, Last, Free}
@@ -108,11 +154,17 @@
%% Last = integer()
%% Free = [integer()].
%% internal pubsub index table
-type(publishModel() :: 'publishers'
| 'subscribers'
| 'open'
).
-record(pubsub_index,
{
index,
last,
free
index :: atom(),
last :: mod_pubsub:nodeIdx(),
free :: [mod_pubsub:nodeIdx()]
}).
%% @type pubsubNode() = {pubsub_node, NodeId, Id, Parents, Type, Owners, Options}
@@ -128,12 +180,12 @@
%% <tt>id</tt> can be anything you want.
-record(pubsub_node,
{
nodeid,
id,
parents = [],
type = "flat",
owners = [],
options = []
nodeid ,%:: {Host::mod_pubsub:host(), NodeId::mod_pubsub:nodeId()},
id ,%:: mod_pubsub:nodeIdx(),
parents = [] ,%:: [Parent_NodeId::mod_pubsub:nodeId()],
type = <<"flat">> ,%:: binary(),
owners = [] ,%:: [Owner::ljid(),...],
options = [] %:: mod_pubsub:nodeOptions()
}).
%% @type pubsubState() = {pubsub_state, StateId, Items, Affiliation, Subscriptions}
@@ -143,12 +195,16 @@
%% Subscriptions = [{subscription(), subId()}].
%% <p>This is the format of the <tt>affiliations</tt> table. The type of the
%% table is: <tt>set</tt>,<tt>ram/disc</tt>.</p>
%-record(pubsub_state,
% {stateid, items = [], affiliation = none,
% subscriptions = []}).
-record(pubsub_state,
{
stateid,
items = [],
affiliation = 'none',
subscriptions = []
stateid ,%:: {Entity::ljid(), NodeIdx::mod_pubsub:nodeIdx()},
items = [] ,%:: [ItemId::mod_pubsub:itemId()],
affiliation = 'none' ,%:: mod_pubsub:affiliation(),
subscriptions = [] %:: [{mod_pubsub:subscription(), mod_pubsub:subId()}]
}).
%% @type pubsubItem() = {pubsub_item, ItemId, Creation, Modification, Payload}
@@ -158,12 +214,16 @@
%% Payload = payload().
%% <p>This is the format of the <tt>published items</tt> table. The type of the
%% table is: <tt>set</tt>,<tt>disc</tt>,<tt>fragmented</tt>.</p>
%-record(pubsub_item,
% {itemid, creation = {unknown, unknown},
% modification = {unknown, unknown}, payload = []}).
-record(pubsub_item,
{
itemid,
creation = {'unknown','unknown'},
modification = {'unknown','unknown'},
payload = []
itemid ,%:: {mod_pubsub:itemId(), mod_pubsub:nodeIdx()},
creation = {unknown, unknown} ,%:: {erlang:timestamp(), ljid()},
modification = {unknown, unknown} ,%:: {erlang:timestamp(), ljid()},
payload = [] %:: mod_pubsub:payload()
}).
%% @type pubsubSubscription() = {pubsub_subscription, SubId, Options}
@@ -171,10 +231,11 @@
%% Options = [nodeOption()].
%% <p>This is the format of the <tt>subscriptions</tt> table. The type of the
%% table is: <tt>set</tt>,<tt>ram/disc</tt>.</p>
%-record(pubsub_subscription, {subid, options}).
-record(pubsub_subscription,
{
subid,
options
subid ,%:: mod_pubsub:subId(),
options %:: [] | mod_pubsub:subOptions()
}).
%% @type pubsubLastItem() = {pubsub_last_item, NodeId, ItemId, Creation, Payload}
@@ -184,10 +245,13 @@
%% Payload = payload().
%% <p>This is the format of the <tt>last items</tt> table. it stores last item payload
%% for every node</p>
%-record(pubsub_last_item,
% {nodeid, itemid, creation, payload}).
-record(pubsub_last_item,
{
nodeid,
itemid,
creation,
payload
nodeid ,%:: mod_pubsub:nodeIdx(),
itemid ,%:: mod_pubsub:itemId(),
creation ,%:: {erlang:timestamp(), ljid()},
payload %:: mod_pubsub:payload()
}).
View File
View File
+13
View File
@@ -0,0 +1,13 @@
defmodule Ejabberd.Hooks do
# Generic hook setting features
def add(hook_name, host, module, function, priority) do
:ejabberd_hooks.add(hook_name, host, module, function, priority)
end
# Should be named 'removed'
def delete(hook_name, host, module, function, priority) do
:ejabberd_hooks.delete(hook_name, host, module, function, priority)
end
end
+9
View File
@@ -0,0 +1,9 @@
defmodule Ejabberd.Logger do
def critical(message, args \\ []), do: :lager.log(:critical, [], message, args)
def error(message, args \\ []), do: :lager.log(:error, [], message, args)
def warning(message, args \\ []), do: :lager.log(:warning, [], message, args)
def info(message, args \\ []), do: :lager.log(:info, [], message, args)
def debug(message, args \\ []), do: :lager.log(:debug, [], message, args)
end
+2
View File
@@ -0,0 +1,2 @@
defmodule Ejabberd do
end
+21
View File
@@ -0,0 +1,21 @@
defmodule ModPresenceDemo do
import Ejabberd.Logger # this allow using info, error, etc for logging
@behaviour :gen_mod
def start(host, _opts) do
info('Starting ejabberd module Presence Demo')
Ejabberd.Hooks.add(:set_presence_hook, host, __ENV__.module, :on_presence, 50)
:ok
end
def stop(host) do
info('Stopping ejabberd module Presence Demo')
Ejabberd.Hooks.delete(:set_presence_hook, host, __ENV__.module, :on_presence, 50)
:ok
end
def on_presence(user, _server, _resource, _packet) do
info('Receive presence for #{user}')
:none
end
end
+86
View File
@@ -0,0 +1,86 @@
dnl erlang-extra.m4
AC_DEFUN([ERLANG_SUBST_LIB_VER],
[AC_ERLANG_CHECK_LIB([$1])
ERLANG_LIB_VER_SUBST="$ERLANG_LIB_VER_SUBST -e 's,[@]ERLANG_LIB_VER_$1[@],\$(ERLANG_LIB_VER_$1),g'"
AC_SUBST([ERLANG_LIB_VER_SUBST])
]) # ERLANG_SUBST_LIB_VER
AC_DEFUN([ERLANG_VERSION_CHECK],
[ AC_MSG_CHECKING([Erlang/OTP version])
cat > conftest.erl <<EOF
-module(conftest).
-export([[start/0]]).
start() ->
ERTS = erlang:system_info(version),
RequiredMin = "$1",
RequiredMax = "$2",
Status =
case {string:tokens(RequiredMin, " "),
string:tokens(RequiredMax, " ")} of
{[[MinStr | _]], [[MaxStr | _]]} ->
case check(ERTS, {MinStr, MaxStr}) of
less ->
list_to_binary([[ERTS, " found, ", RequiredMin, " required"]]);
greater ->
list_to_binary([[ERTS, " found, ", RequiredMax, " or earlier required"]]);
ok ->
<<"ok">>
end;
_ ->
list_to_binary([[ERTS, " found, ", RequiredMin, " required"]])
end,
file:write_file("conftest.out", Status),
halt().
check(CurStr, {MinStr, MaxStr}) ->
Cur = parse(CurStr),
Min = parse(MinStr),
Max = parse(MaxStr),
case {less_or_equal(Min, Cur), less_or_equal(Cur, Max)} of
{false, true} -> less;
{true, true} -> ok;
{true, false} -> greater
end.
parse(Version) ->
lists:map(fun(A) -> {Int,[[]]} = string:to_integer(A), Int end,
string:tokens(Version, ".")).
less_or_equal([[]], [[]]) ->
true;
less_or_equal([[]], _Any) ->
true;
less_or_equal(_Any, [[]]) ->
false;
less_or_equal([[Left| Rl]], [[Right| Rr]]) ->
case {Left < Right, Left == Right} of
{true, _} ->
true;
{false, false} ->
false;
{false, true} ->
less_or_equal(Rl, Rr)
end.
EOF
$ERLC conftest.erl || AC_MSG_ERROR(["Could not compile Erlang/OTP version check program using '$ERLC'"])
if ! $ERL -s conftest -noshell -o ! -f conftest.out ; then
AC_MSG_ERROR(["Could not run Erlang/OTP version check program using '$ERL'"])
fi
if test "x`cat conftest.out`" != "xok"; then
AC_MSG_RESULT([failed])
X="`cat conftest.out`"
if test "[$3]" == "warn"; then
AC_MSG_WARN([$X])
else
AC_MSG_FAILURE([$X])
fi
else
AC_MSG_RESULT([ok])
fi
]) dnl ERLANG_VERSION_CHECK
+68 -23
View File
@@ -20,11 +20,13 @@
{"Allow users to send invites","Permetre que els usuaris envien invitacions"}.
{"Allow users to send private messages","Permetre que els usuaris envien missatges privats"}.
{"Allow visitors to change nickname","Permetre als visitants canviar el Nickname"}.
{"Allow visitors to send private messages to","Permetre als visitants enviar missatges privats a"}.
{"Allow visitors to send status text in presence updates","Permetre als visitants enviar text d'estat en les actualitzacions de presència"}.
{"Allow visitors to send voice requests","Permetre als visitants enviar peticions de veu"}.
{"All Users","Tots els usuaris"}.
{"Announcements","Anuncis"}.
{"anyone","qualsevol"}.
{"A password is required to enter this room","Es necessita password per a entrar en aquesta sala"}.
{"A password is required to enter this room","Es necessita contrasenya per a entrar en aquesta sala"}.
{"April","Abril"}.
{"August","Agost"}.
{"Backup","Guardar còpia de seguretat"}.
@@ -33,15 +35,17 @@
{"Backup to File at ","Desar còpia de seguretat a fitxer en "}.
{"Bad format","Format erroni"}.
{"Birthday","Aniversari"}.
{"Change Password","Canviar password"}.
{"Change User Password","Canviar Password d'Usuari"}.
{"CAPTCHA web page","Pàgina web del CAPTCHA"}.
{"Change Password","Canviar Contrasenya"}.
{"Change User Password","Canviar Contrasenya d'Usuari"}.
{"Characters not allowed:","Caràcters no permesos:"}.
{"Chatroom configuration modified","Configuració de la sala de xat modificada"}.
{"Chatroom is created","La sala s'ha creat"}.
{"Chatroom is destroyed","La sala s'ha destruït"}.
{"Chatroom is started","La sala s'ha iniciat"}.
{"Chatroom is stopped","La sala s'ha aturat"}.
{"Chatrooms","Sales de xat"}.
{"Choose a username and password to register with this server","Tria nom d'usuari i password per a registrar-te en aquest servidor"}.
{"Choose a username and password to register with this server","Tria nom d'usuari i contrasenya per a registrar-te en aquest servidor"}.
{"Choose modules to stop","Selecciona mòduls a detindre"}.
{"Choose storage type of tables","Selecciona el tipus d'almacenament de les taules"}.
{"Choose whether to approve this entity's subscription.","Tria si aprova aquesta entitat de subscripció"}.
@@ -69,12 +73,14 @@
{"Description:","Descripció:"}.
{"Disc only copy","Còpia sols en disc"}.
{"Displayed Groups:","Mostrar grups:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","No li donis la teva contrasenya a ningú, ni tan sols als administradors del servidor Jabber."}.
{"Dump Backup to Text File at ","Exporta còpia de seguretat a fitxer de text en "}.
{"Dump to Text File","Exportar a fitxer de text"}.
{"Edit Properties","Editar propietats"}.
{"Either approve or decline the voice request.","Aprova o denega la petició de veu"}.
{"ejabberd IRC module","mòdul ejabberd IRC"}.
{"ejabberd MUC module","mòdul ejabberd MUC"}.
{"ejabberd Publish-Subscribe module","Mòdul ejannerd Publicar-Subscriure"}.
{"ejabberd Publish-Subscribe module","Mòdul ejabberd Publicar-Subscriure"}.
{"ejabberd SOCKS5 Bytestreams module","mòdul ejabberd SOCKS5 Bytestreams"}.
{"ejabberd vCard module","Mòdul ejabberd vCard"}.
{"ejabberd Web Admin","Web d'administració del ejabberd"}.
@@ -89,14 +95,16 @@
{"Enter path to jabberd14 spool dir","Introdueix la ruta al directori de jabberd14 spools"}.
{"Enter path to jabberd14 spool file","Introdueix ruta al fitxer jabberd14 spool"}.
{"Enter path to text file","Introdueix ruta al fitxer de text"}.
{"Enter the text you see","Introdueix el textque veus"}.
{"Enter the text you see","Introdueix el text que veus"}.
{"Enter username and encodings you wish to use for connecting to IRC servers. Press 'Next' to get more fields to fill in. Press 'Complete' to save settings.","Introdueix el nom d'usuari i les codificacions de caràcters per a utilitzar als servidors de IRC. Apreta \"Seguent\" per veure més caps per omplir. Apreta \"Completar\" per guardar la configuració. "}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Introdueix el nom d'usuari, les codificacions de caràcters, els ports i contrassenyes per a utilitzar al connectar als servidors de IRC "}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Introdueix el nom d'usuari, les codificacions de caràcters, els ports i contrasenyes per a utilitzar al connectar als servidors de IRC"}.
{"Erlang Jabber Server","Servidor Erlang Jabber"}.
{"Error","Error"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Exemple: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Excloure Jabber IDs de la comprovació CAPTCHA"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar dades de tots els usuaris del servidor a arxius PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportar dades d'usuaris d'un host a arxius PIEFXIS (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","No s'ha pogut extraure el JID de la teva aprovació de petició de veu"}.
{"Family Name","Cognom"}.
{"February","Febrer"}.
{"Fill in fields to search for any matching Jabber User","Emplena camps per a buscar usuaris Jabber que concorden"}.
@@ -108,8 +116,9 @@
{"Get Number of Online Users","Obtenir Número d'Usuaris Connectats"}.
{"Get Number of Registered Users","Obtenir Número d'Usuaris Registrats"}.
{"Get User Last Login Time","Obtenir la última connexió d'Usuari"}.
{"Get User Password","Obtenir Password d'usuari"}.
{"Get User Password","Obtenir Contrasenya d'usuari"}.
{"Get User Statistics","Obtenir Estadístiques d'Usuari"}.
{"Grant voice to this person?","Concedir veu a aquesta persona?"}.
{"Group ","Grup "}.
{"Groups","Grups"}.
{"has been banned","Has sigut banejat"}.
@@ -119,7 +128,8 @@
{"has been kicked","Has sigut expulsat"}.
{" has set the subject to: "," ha posat l'assumpte: "}.
{"Host","Host"}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Si vols especificar codificacions de caràcters diferents per a cada servidor IRC emplena aquesta llista amb els valors amb el format '{\"servidor irc\", \"codificació\", port, \"contrassenya\"}'. Aquest servei utilitza per defecte la codificació \"~s\", port ~p, no contrassenya."}.
{"If you don't see the CAPTCHA image here, visit the web page.","Si no veus la imatge CAPTCHA açí, visita la pàgina web."}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Si vols especificar codificacions de caràcters diferents per a cada servidor IRC emplena aquesta llista amb els valors amb el format '{\"servidor irc\", \"codificació\", port, \"contrasenya\"}'. Aquest servei utilitza per defecte la codificació \"~s\", port ~p, no contrasenya."}.
{"Import Directory","Importar directori"}.
{"Import File","Importar fitxer"}.
{"Import user data from jabberd14 spool file:","Importar dades d'usuaris de l'arxiu de spool de jabberd14"}.
@@ -129,7 +139,7 @@
{"Import Users from Dir at ","Importar usuaris des del directori en "}.
{"Import Users From jabberd14 Spool Files","Importar usuaris de jabberd14"}.
{"Improper message type","Tipus de missatge incorrecte"}.
{"Incorrect password","Password incorrecte"}.
{"Incorrect password","Contrasenya incorrecta"}.
{"Invalid affiliation: ~s","Afiliació invàlida: ~s"}.
{"Invalid role: ~s","Rol invàlid: ~s"}.
{"IP addresses","Adreça IP"}.
@@ -143,7 +153,8 @@
{"is now known as","ara es conegut com"}.
{"It is not allowed to send private messages","No està permés enviar missatges privats"}.
{"It is not allowed to send private messages of type \"groupchat\"","No està permés enviar missatges del tipus \"groupchat\""}.
{"It is not allowed to send private messages to the conference","No està permés l'enviament de missatges privats a la sala"}.
{"It is not allowed to send private messages to the conference","No està permès l'enviament de missatges privats a la sala"}.
{"Jabber Account Registration","Registre de compte Jabber"}.
{"Jabber ID","ID Jabber"}.
{"Jabber ID ~s is invalid","El Jabber ID ~s no és vàlid"}.
{"January","Gener"}.
@@ -163,10 +174,10 @@
{"List of modules to start","Llista de mòduls a iniciar"}.
{"Low level update script","Script d'actualització de baix nivell"}.
{"Make participants list public","Crear una llista de participants pública"}.
{"Make room captcha protected","Crear una sala protegida per captcha"}.
{"Make room CAPTCHA protected","Crear una sala protegida per CAPTCHA"}.
{"Make room members-only","Crear una sala de \"només membres\""}.
{"Make room moderated","Crear una sala moderada"}.
{"Make room password protected","Crear una sala amb password"}.
{"Make room password protected","Crear una sala amb contrasenya"}.
{"Make room persistent","Crear una sala persistent"}.
{"Make room public searchable","Crear una sala pública"}.
{"March","Març"}.
@@ -176,9 +187,11 @@
{"May","Maig"}.
{"Membership is required to enter this room","Necessites ser membre d'aquesta sala per a poder entrar"}.
{"Members:","Membre:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Memoritza la teva contrasenya, o escriu-la en un paper guardat a un lloc segur.A Jabber no hi ha una forma automatitzada de recuperar la teva contrasenya si la oblides."}.
{"Memory","Memòria"}.
{"Message body","Missatge"}.
{"Middle Name","Segon nom"}.
{"Minimum interval between voice requests (in seconds)","Interval mínim entre peticions de veu (en segons)"}.
{"Moderator privileges required","Es necessita tenir privilegis de moderador"}.
{"moderators only","només moderadors"}.
{"Modified modules","Mòduls modificats"}.
@@ -189,9 +202,11 @@
{"Name:","Nom:"}.
{"Name","Nom"}.
{"Never","Mai"}.
{"New Password:","Nova Contrasenya:"}.
{"Nickname","Nickname"}.
{"Nickname Registration at ","Registre del Nickname en "}.
{"Nickname ~s does not exist in the room","El Nickname ~s no existeix a la sala"}.
{"nobody","ningú"}.
{"No body provided for announce message","No hi ha proveedor per al missatge anunci"}.
{"No Data","No hi ha dades"}.
{"Node ID","ID del Node"}.
@@ -213,14 +228,16 @@
{"Offline Messages:","Missatges fora de línia:"}.
{"Offline Messages","Missatges offline"}.
{"OK","Acceptar"}.
{"Old Password:","Antiga contrasenya:"}.
{"Online","Connectat"}.
{"Online Users","Usuaris conectats"}.
{"Online Users:","Usuaris en línia:"}.
{"Only deliver notifications to available users","Sols enviar notificacions als usuaris disponibles"}.
{"Only moderators and participants are allowed to change the subject in this room","Només els moderadors i participants poden canviar l'assumpte d'aquesta sala"}.
{"Only moderators are allowed to change the subject in this room","Només els moderadors poden canviar l'assumpte d'aquesta sala"}.
{"Only moderators can approve voice requests","Només els moderadors poden aprovar les peticions de veu"}.
{"Only occupants are allowed to send messages to the conference","Sols els ocupants poden enviar missatges a la sala"}.
{"Only occupants are allowed to send queries to the conference","Sols els ocupants poden enviar solicituts a la sala"}.
{"Only occupants are allowed to send queries to the conference","Sols els ocupants poden enviar sol·licituds a la sala"}.
{"Only service administrators are allowed to send service messages","Sols els administradors del servei tenen permís per a enviar missatges de servei"}.
{"Options","Opcions"}.
{"Organization Name","Nom de la organizació"}.
@@ -230,10 +247,11 @@
{"Outgoing s2s Servers:","Servidors d'eixida de s2s"}.
{"Owner privileges required","Es requerixen privilegis de propietari de la sala"}.
{"Packet","Paquet"}.
{"Password ~b","Password ~b"}.
{"Password:","Password:"}.
{"Password","Password"}.
{"Password Verification","Verificació del Password"}.
{"Password ~b","Contrasenya ~b"}.
{"Password:","Contrasenya:"}.
{"Password","Contrasenya"}.
{"Password Verification:","Verificació de la Contrasenya:"}.
{"Password Verification","Verificació de la Contrasenya"}.
{"Path to Dir","Ruta al directori"}.
{"Path to File","Ruta al fitxer"}.
{"Pending","Pendent"}.
@@ -241,6 +259,7 @@
{"Persist items to storage","Persistir elements al guardar"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Recorda que aquestes opcions només fan còpia de seguretat de la base de dades Mnesia. Si estàs utilitzant el mòdul d'ODBC també deus de fer una còpia de seguretat de la base de dades de SQL a part."}.
{"Please, wait for a while before sending new voice request","Si us plau, espera una mica abans d'enviar una nova petició de veu"}.
{"Pong","Pong"}.
{"Port ~b","Port ~b"}.
{"Port","Port"}.
@@ -250,14 +269,16 @@
{"Publish-Subscribe","Publicar-subscriure't"}.
{"PubSub subscriber request","Petició de subscriptor PubSub"}.
{"Purge all items when the relevant publisher goes offline","Eliminar tots els elements quan el publicant relevant es desconnecti"}.
{"Queries to the conference members are not allowed in this room"," En aquesta sala no es permeten solicituts als membres de la sala"}.
{"Queries to the conference members are not allowed in this room"," En aquesta sala no es permeten sol·licituds als membres de la conferència"}.
{"RAM and disc copy","Còpia en RAM i disc"}.
{"RAM copy","Còpia en RAM"}.
{"Raw","en format text"}.
{"Really delete message of the day?","Segur que vols eliminar el missatge del dia?"}.
{"Recipient is not in the conference room","El receptor no està en la sala de conferència"}.
{"Register a Jabber account","Registrar un compte Jabber"}.
{"Registered Users:","Usuaris registrats:"}.
{"Registered Users","Usuaris registrats"}.
{"Register","Registrar"}.
{"Registration in mod_irc for ","Registre en mod_irc per a"}.
{"Remote copy","Còpia remota"}.
{"Remove All Offline Messages","Eliminar tots els missatges offline"}.
@@ -294,6 +315,7 @@
{"Send announcement to all users on all hosts","Enviar anunci a tots els usuaris de tots els hosts"}.
{"September","Setembre"}.
{"Server ~b","Servidor ~b"}.
{"Server:","Servidor:"}.
{"Set message of the day and send to online users","Configurar el missatge del dia i enviar a tots els usuaris"}.
{"Set message of the day on all hosts and send to online users","Escriure missatge del dia en tots els hosts i enviar-ho als usuaris connectats"}.
{"Shared Roster Groups","Grups de contactes compartits"}.
@@ -301,6 +323,7 @@
{"Show Ordinary Table","Mostrar Taula Ordinaria"}.
{"Shut Down Service","Apager el Servei"}.
{"~s invites you to the room ~s","~s et convida a la sala ~s"}.
{"Some Jabber clients can store your password in your computer. Use that feature only if you trust your computer is safe.","Alguns clients Jabber poden emmagatzemar la teva contrasenya al teu ordinador. Fes servir aquesta característica només si saps que el teu ordinador és segur."}.
{"Specify the access model","Especificar el model d'accés"}.
{"Specify the event message type","Especifica el tipus de missatge d'event"}.
{"Specify the publisher model","Especificar el model del publicant"}.
@@ -325,9 +348,18 @@
{"Sunday","Diumenge"}.
{"That nickname is already in use by another occupant","El Nickname està siguent utilitzat per una altra persona"}.
{"That nickname is registered by another person","El nickname ja està registrat per una altra persona"}.
{"The captcha is valid.","El captcha es vàlid."}.
{"The CAPTCHA is valid.","El CAPTCHA es vàlid."}.
{"The CAPTCHA verification has failed","La verificació CAPTCHA ha fallat"}.
{"The collections with which a node is affiliated","Les col.leccions amb les que un node està afiliat"}.
{"the password is","el password és"}.
{"the password is","la contrasenya és"}.
{"The password is too weak","La contrasenya és massa simple"}.
{"The password of your Jabber account was successfully changed.","La contrasenya del teu compte Jabber s'ha canviat correctament."}.
{"There was an error changing the password: ","Hi ha hagut un error canviant la contrasenya: "}.
{"There was an error creating the account: ","Hi ha hagut un error creant el compte: "}.
{"There was an error deleting the account: ","Hi ha hagut un error esborrant el compte: "}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Això no distingeix majúscules de minúscules: macbeth es el mateix que MacBeth i Macbeth."}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Aquesta pàgina permet crear un compte Jabber en aquest servidor Jabber. El teu JID (Jabber IDentifier; Identificador Jabber) tindrà aquesta forma: usuari@servidor. Si us plau, llegeix amb cura les instruccions per emplenar correctament els camps."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Aquesta pàgina permet anul·lar el registre d'un compte Jabber en aquest servidor Jabber."}.
{"This participant is kicked from the room because he sent an error message","Aquest participant ha sigut expulsat de la sala perque ha enviat un missatge d'error"}.
{"This participant is kicked from the room because he sent an error message to another participant","Aquest participant ha sigut expulsat de la sala perque ha enviat un missatge erroni a un altre participant"}.
{"This participant is kicked from the room because he sent an error presence","Aquest participant ha sigut expulsat de la sala perque ha enviat un error de presencia"}.
@@ -335,6 +367,7 @@
{"Thursday","Dijous"}.
{"Time","Data"}.
{"Time delay","Temps de retard"}.
{"Too many CAPTCHA requests","Massa peticions de CAPTCHA"}.
{"To","Per a"}.
{"To ~s","A ~s"}.
{"Traffic rate limit is exceeded","El llímit de tràfic ha sigut sobrepassat"}.
@@ -343,8 +376,10 @@
{"Transactions Logged:","Transaccions registrades"}.
{"Transactions Restarted:","Transaccions reiniciades"}.
{"Tuesday","Dimarts"}.
{"Unable to generate a captcha","No s'ha pogut generar un captcha"}.
{"Unable to generate a CAPTCHA","No s'ha pogut generar un CAPTCHA"}.
{"Unauthorized","No autoritzat"}.
{"Unregister a Jabber account","Anul·lar el registre d'un compte Jabber"}.
{"Unregister","Anul·lar el registre"}.
{"Update ","Actualitzar"}.
{"Update","Actualitzar"}.
{"Update message of the day (don't send)","Actualitzar el missatge del dia (no enviar)"}.
@@ -353,7 +388,9 @@
{"Update script","Script d'actualització"}.
{"Uptime:","Temps en marxa"}.
{"Use of STARTTLS required","És obligatori utilitzar STARTTLS"}.
{"User JID","JID del usuari "}.
{"User Management","Gestió d'Usuaris"}.
{"Username:","Nom d'usuari:"}.
{"Users are not allowed to register accounts so quickly","Els usuaris no tenen permís per a crear comptes tan depresa"}.
{"Users Last Activity","Última activitat d'usuari"}.
{"Users","Usuaris"}.
@@ -364,13 +401,21 @@
{"Virtual Hosts","Hosts virtuals"}.
{"Visitors are not allowed to change their nicknames in this room","Els visitants no tenen permés canviar el seus Nicknames en esta sala"}.
{"Visitors are not allowed to send messages to all occupants","Els visitants no poden enviar missatges a tots els ocupants"}.
{"Voice request","Petició de veu"}.
{"Voice requests are disabled in this conference","Les peticions de veu es troben desactivades en aquesta conferència"}.
{"Wednesday","Dimecres"}.
{"When to send the last published item","Quan s'ha enviat l'última publicació"}.
{"Whether to allow subscriptions","Permetre subscripcions"}.
{"You can later change your password using a Jabber client.","Podràs canviar la teva contrasenya més endavant utilitzant un client Jabber."}.
{"You have been banned from this room","Has sigut bloquejat en aquesta sala"}.
{"You must fill in field \"Nickname\" in the form","Deus d'omplir el camp \"Nickname\" al formulari"}.
{"You need a client that supports x:data and CAPTCHA to register","Necessites un client amb suport x:data i de CAPTCHA para poder registrar-te"}.
{"You need a client that supports x:data to register the nickname","Necessites un client amb suport x:data per a poder registrar el Nickname"}.
{"You need an x:data capable client to configure mod_irc settings","Necessites un client amb suport x:data per a configurar les opcions de mod_irc"}.
{"You need an x:data capable client to configure room","Necessites un client amb suport x:data per a configurar la sala"}.
{"You need an x:data capable client to search","Necesites un client amb suport x:data per a poder buscar"}.
{"You need an x:data capable client to search","Necessites un client amb suport x:data per a poder buscar"}.
{"Your active privacy list has denied the routing of this stanza.","La teva llista de privacitat activa ha denegat l'encaminament d'aquesta stanza."}.
{"Your contact offline message queue is full. The message has been discarded.","La cua de missatges offline és plena. El missatge ha sigut descartat"}.
{"Your Jabber account was successfully created.","El teu compte Jabber ha sigut creat correctament."}.
{"Your Jabber account was successfully deleted.","El teu compte Jabber ha sigut esborrat correctament."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Els teus missatges per ~s s'estan bloquejant. Per desbloquejar-los, visita ~s"}.
File diff suppressed because it is too large Load Diff
+18 -5
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Povolit uživatelům posílání pozvánek"}.
{"Allow users to send private messages","Povolit uživatelům odesílat soukromé zprávy"}.
{"Allow visitors to change nickname","Povolit návštěvníkům měnit přezdívku"}.
{"Allow visitors to send private messages to","Povolit návštěvníkům odesílat soukromé zprávy"}.
{"Allow visitors to send status text in presence updates","Povolit návštěvníkům posílat stavové zprávy ve statusu"}.
{"Allow visitors to send voice requests","Povolit uživatelům posílat žádosti o voice práva"}.
{"All Users","Všichni uživatelé"}.
{"Announcements","Oznámení"}.
{"anyone","každému"}.
@@ -75,6 +77,7 @@
{"Dump Backup to Text File at ","Uložit zálohu do textového souboru na "}.
{"Dump to Text File","Uložit do textového souboru"}.
{"Edit Properties","Upravit vlastnosti"}.
{"Either approve or decline the voice request.","Povolit nebo odmítnout voice žádost."}.
{"ejabberd IRC module","ejabberd IRC modul"}.
{"ejabberd MUC module","ejabberd MUC modul"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe modul"}.
@@ -98,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","Chyba"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Příklad: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].2\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Vyloučit Jabber ID z procesu CAPTCHA ověřování"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportovat všechny uživatele do souboru ve formátu PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportovat uživatele na hostiteli do souboru ve formátu PIEFXIS (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Došlo k chybě při získávání Jabber ID z vaší žádosti o voice práva"}.
{"Family Name","Příjmení"}.
{"February",". února"}.
{"Fill in fields to search for any matching Jabber User","Vyplňte políčka pro vyhledání uživatele Jabberu"}.
@@ -113,6 +118,7 @@
{"Get User Last Login Time","Získat čas podleního přihlášení uživatele"}.
{"Get User Password","Získat heslo uživatele"}.
{"Get User Statistics","Získat statistiky uživatele"}.
{"Grant voice to this person?","Udělit voice práva této osobě?"}.
{"Group ","Skupina "}.
{"Groups","Skupiny"}.
{"has been banned","byl(a) zablokován(a)"}.
@@ -122,7 +128,7 @@
{"has been kicked","byl(a) vyhozen(a) z místnosti"}.
{" has set the subject to: "," změnil(a) téma na: "}.
{"Host","Hostitel"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Pokud zde nevidíte obrázek CAPTCHE, přejděte na webovou stránku."}.
{"If you don't see the CAPTCHA image here, visit the web page.","Pokud zde nevidíte obrázek CAPTCHA, přejděte na webovou stránku."}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Pokud chcete zadat jiné kódování pro IRC servery, vyplňte seznam s hodnotami ve formátu '{\"irc server\",\"encoding\", port, \"password\"}'. Výchozí kódování pro tuto službu je \"~s\", port ~p, empty password."}.
{"Import Directory","Import adresáře"}.
{"Import File","Import souboru"}.
@@ -168,7 +174,7 @@
{"List of modules to start","Seznam modulů, které mají být spuštěné"}.
{"Low level update script","Nízkoúrovňový aktualizační skript"}.
{"Make participants list public","Nastavit seznam účastníků jako veřejný"}.
{"Make room captcha protected","Chránit místnost pomocí CAPTCHA"}.
{"Make room CAPTCHA protected","Chránit místnost pomocí CAPTCHA"}.
{"Make room members-only","Zpřístupnit místnost jen členům"}.
{"Make room moderated","Nastavit místnost jako moderovanou"}.
{"Make room password protected","Chránit místnost heslem"}.
@@ -185,6 +191,7 @@
{"Memory","Paměť"}.
{"Message body","Tělo zprávy"}.
{"Middle Name","Druhé jméno"}.
{"Minimum interval between voice requests (in seconds)","Minimální interval mezi žádostmi o voice práva (v sekundách)"}.
{"Moderator privileges required","Potřebujete práva moderátora"}.
{"moderators only","moderátorům"}.
{"Modified modules","Aktualizované moduly"}.
@@ -199,6 +206,7 @@
{"Nickname","Přezdívka"}.
{"Nickname Registration at ","Registrace přezdívky na "}.
{"Nickname ~s does not exist in the room","Přezdívka ~s v místnosti neexistuje"}.
{"nobody","nikdo"}.
{"No body provided for announce message","Zpráva neobsahuje text"}.
{"No Data","Žádná data"}.
{"Node ID","ID uzlu"}.
@@ -227,6 +235,7 @@
{"Only deliver notifications to available users","Doručovat upozornění jen právě přihlášeným uživatelům"}.
{"Only moderators and participants are allowed to change the subject in this room","Jen moderátoři a účastníci mají povoleno měnit téma této místnosti"}.
{"Only moderators are allowed to change the subject in this room","Jen moderátoři mají povoleno měnit téma místnosti"}.
{"Only moderators can approve voice requests","Pouze moderátoři mohou schválit žádosti o voice práva"}.
{"Only occupants are allowed to send messages to the conference","Jen členové mají povolené zasílat zprávy do konference"}.
{"Only occupants are allowed to send queries to the conference","Jen členové mohou odesílat požadavky (query) do konference"}.
{"Only service administrators are allowed to send service messages","Pouze správci služby smí odesílat servisní zprávy"}.
@@ -250,6 +259,7 @@
{"Persist items to storage","Uložit položky natrvalo do úložiště"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Podotýkáme, že tato nastavení budou zálohována do zabudované databáze Mnesia. Pokud používáte ODBC modul, musíte zálohovat svoji SQL databázi samostatně."}.
{"Please, wait for a while before sending new voice request","Prosím, počkejte chvíli před posláním nové žádosti o voice práva"}.
{"Pong","Pong"}.
{"Port ~b","Port ~b"}.
{"Port","Port"}.
@@ -338,7 +348,7 @@
{"Sunday","Neděle"}.
{"That nickname is already in use by another occupant","Přezdívka je již používána jiným členem"}.
{"That nickname is registered by another person","Přezdívka je zaregistrována jinou osobou"}.
{"The captcha is valid.","CAPTCHA souhlasí."}.
{"The CAPTCHA is valid.","CAPTCHA souhlasí."}.
{"The CAPTCHA verification has failed","Ověření CAPTCHA se nezdařilo"}.
{"The collections with which a node is affiliated","Kolekce, se kterými je uzel spřízněn"}.
{"the password is","heslo je"}.
@@ -357,6 +367,7 @@
{"Thursday","Čtvrtek"}.
{"Time","Čas"}.
{"Time delay","Časový posun"}.
{"Too many CAPTCHA requests","Přiliš mnoho CAPTCHA žádostí"}.
{"To","Pro"}.
{"To ~s","Pro ~s"}.
{"Traffic rate limit is exceeded","Byl překročen limit"}.
@@ -365,7 +376,6 @@
{"Transactions Logged:","Transakce zaznamenána"}.
{"Transactions Restarted:","Transakce restartována"}.
{"Tuesday","Úterý"}.
{"Unable to generate a captcha","Nebylo možné vygenerovat CAPTCHA"}.
{"Unable to generate a CAPTCHA","Nebylo možné vygenerovat CAPTCHA"}.
{"Unauthorized","Nemáte oprávnění"}.
{"Unregister a Jabber account","Zrušte registraci účtu Jabberu"}.
@@ -377,7 +387,8 @@
{"Update plan","Aktualizovat plán"}.
{"Update script","Aktualizované skripty"}.
{"Uptime:","Čas běhu:"}.
{"Use of STARTTLS required","Je vyžadováno STARTTLS."}.
{"Use of STARTTLS required","Je vyžadováno STARTTLS"}.
{"User JID","Jabber ID uživatele"}.
{"User Management","Správa uživatelů"}.
{"Username:","Uživatelské jméno:"}.
{"Users are not allowed to register accounts so quickly","Je zakázáno registrovat účty v tak rychlém sledu"}.
@@ -390,6 +401,8 @@
{"Virtual Hosts","Virtuální hostitelé"}.
{"Visitors are not allowed to change their nicknames in this room","Návštěvníkům této místnosti je zakázáno měnit přezdívku"}.
{"Visitors are not allowed to send messages to all occupants","Návštevníci nemají povoleno zasílat zprávy všem účastníkům konference"}.
{"Voice requests are disabled in this conference","Voice žádosti jsou v této konferenci zakázány"}.
{"Voice request","Žádost o voice práva"}.
{"Wednesday","Středa"}.
{"When to send the last published item","Kdy odeslat poslední publikovanou položku"}.
{"Whether to allow subscriptions","Povolit odebírání"}.
File diff suppressed because it is too large Load Diff
+25 -12
View File
@@ -7,7 +7,7 @@
{"Access Rules","Zugangsregeln"}.
{"Action on user","Aktion auf Benutzer"}.
{"Add Jabber ID","Jabber-ID hinzufügen"}.
{"Add New","Neuen hinzufügen"}.
{"Add New","Neue hinzufügen"}.
{"Add User","Benutzer hinzufügen"}.
{"Administration of ","Administration von "}.
{"Administration","Verwaltung"}.
@@ -16,14 +16,16 @@
{"All activity","Alle Aktivitäten"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Dieser Jabber-ID das Abonnement dieses pubsub-Knotens erlauben?"}.
{"Allow users to change the subject","Erlaube Benutzern das Thema zu ändern"}.
{"Allow users to query other users","Erlaube Benutzern andere Benutzer abzufragen"}.
{"Allow users to query other users","Erlaube Benutzern Informationen über andere Benutzer abzufragen"}.
{"Allow users to send invites","Erlaube Benutzern Einladungen zu senden"}.
{"Allow users to send private messages","Erlaube Benutzern private Nachrichten zu senden"}.
{"Allow visitors to change nickname","Erlaube Besuchern ihren Spitznamen zu ändern"}.
{"Allow visitors to send status text in presence updates","Erlaube Besuchern einen Text bei Statusänderung zu setzen"}.
{"Allow visitors to send private messages to","Erlaube Besuchern das Senden von privaten Nachrichten an"}.
{"Allow visitors to send status text in presence updates","Erlaube Besuchern einen Text bei Statusänderung zu senden"}.
{"Allow visitors to send voice requests","Anfragen von Sprachrechten für Benutzer erlauben"}.
{"All Users","Alle Benutzer"}.
{"Announcements","Ankündigungen"}.
{"anyone","jeder"}.
{"anyone","jeden"}.
{"A password is required to enter this room","Sie brauchen ein Passwort um diesen Raum zu betreten"}.
{"April","April"}.
{"August","August"}.
@@ -67,7 +69,7 @@
{"Delete Selected","Markierte löschen"}.
{"Delete User","Benutzer löschen"}.
{"Deliver event notifications","Ereignisbenachrichtigung zustellen"}.
{"Deliver payloads with event notifications","Nachrichten mit mit Ereignis-Benachrichtigungen zustellen"}.
{"Deliver payloads with event notifications","Nachrichten mit Ereignis-Benachrichtigungen zustellen"}.
{"Description:","Beschreibung:"}.
{"Disc only copy","Nur auf Festplatte"}.
{"Displayed Groups:","Angezeigte Gruppen:"}.
@@ -75,6 +77,7 @@
{"Dump Backup to Text File at ","Ausgabe der Sicherung in diese Textdatei "}.
{"Dump to Text File","Ausgabe in Textdatei"}.
{"Edit Properties","Einstellungen ändern"}.
{"Either approve or decline the voice request.","Diese Anfrage für Sprachrechte bestätigen oder ablehnen."}.
{"ejabberd IRC module","ejabberd IRC-Modul"}.
{"ejabberd MUC module","ejabberd MUC-Modul"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe-Modul"}.
@@ -98,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","Fehler"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Beispiel: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Von CAPTCHA Überprüfung ausgeschlossene Jabber IDs"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Alle Benutzerdaten des Servers in PIEFXIS Dateien (XEP-0227) exportieren:"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Alle Benutzerdaten des Hosts in PIEFXIS Dateien (XEP-0227) exportieren:"}.
{"Failed to extract JID from your voice request approval","Fehler beim Auslesen der JID aus der Anfragenbestätigung für Sprachrechte"}.
{"Family Name","Nachname"}.
{"February","Februar"}.
{"Fill in fields to search for any matching Jabber User","Füllen Sie die Felder aus, um nach passenden Jabber-Benutzern zu suchen"}.
@@ -113,6 +118,7 @@
{"Get User Last Login Time","letzte Anmeldezeit abrufen"}.
{"Get User Password","Benutzer-Passwort abrufen"}.
{"Get User Statistics","Benutzer-Statistiken abrufen"}.
{"Grant voice to this person?","Sprachrechte dieser Person erteilen?"}.
{"Group ","Gruppe "}.
{"Groups","Gruppen"}.
{"has been banned","wurde gebannt"}.
@@ -136,7 +142,7 @@
{"Incorrect password","Falsches Passwort"}.
{"Invalid affiliation: ~s","Ungültige Mitgliedschaft: ~s"}.
{"Invalid role: ~s","Ungültige Rolle: ~s"}.
{"IP addresses","IP Addresse"}.
{"IP addresses","IP Adressen"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","IRC Channel (ohne dem ersten #)"}.
{"IRC server","IRC Server"}.
@@ -153,7 +159,7 @@
{"Jabber ID ~s is invalid","Die Jabber-ID ~s ist ungültig"}.
{"January","Januar"}.
{"Join IRC channel","IRC Channel beitreten"}.
{"joins the room","kommt in den Raum"}.
{"joins the room","betretet den Raum"}.
{"Join the IRC channel here.","Hier den IRC Channel beitreten."}.
{"Join the IRC channel in this Jabber ID: ~s","Den IRC Channel mit dieser Jabber ID beitreten: ~s"}.
{"July","Juli"}.
@@ -168,7 +174,7 @@
{"List of modules to start","Liste der zu startenden Module"}.
{"Low level update script","Low level Aktualisierungsscript"}.
{"Make participants list public","Teilnehmerliste öffentlich machen"}.
{"Make room captcha protected","Raum mit Verifizierung (Captcha) versehen"}.
{"Make room CAPTCHA protected","Raum mit Verifizierung (Captcha) versehen"}.
{"Make room members-only","Raum nur für Mitglieder zugänglich machen"}.
{"Make room moderated","Raum moderiert machen"}.
{"Make room password protected","Raum mit Passwort schützen"}.
@@ -185,6 +191,7 @@
{"Memory","Speicher"}.
{"Message body","Nachrichtentext"}.
{"Middle Name","Zweiter Vorname"}.
{"Minimum interval between voice requests (in seconds)","Mindestdauer zwischen Anfragen für Sprachrechte (in Sekunden)"}.
{"Moderator privileges required","Moderatorrechte benötigt"}.
{"moderators only","ausschliesslich Moderatoren"}.
{"Modified modules","Geänderte Module"}.
@@ -199,6 +206,7 @@
{"Nickname","Benutzername"}.
{"Nickname Registration at ","Registrieren des Benutzernames auf"}.
{"Nickname ~s does not exist in the room","Der Benutzername ~s existiert im Raum nicht"}.
{"nobody","niemanden"}.
{"No body provided for announce message","Kein Text für die Ankündigung angegeben"}.
{"No Data","Keine Daten"}.
{"Node ID","Knoten-ID"}.
@@ -227,6 +235,7 @@
{"Only deliver notifications to available users","Benachrichtigungen nur an verfügbare Benutzer schicken"}.
{"Only moderators and participants are allowed to change the subject in this room","Nur Moderatoren und Mitglieder dürfen das Thema in diesem Raum ändern"}.
{"Only moderators are allowed to change the subject in this room","Nur Moderatoren dürfen das Thema in diesem Raum ändern"}.
{"Only moderators can approve voice requests","Nur Moderatoren können Anfragen für Sprachrechte bestätigen"}.
{"Only occupants are allowed to send messages to the conference","Nur Teilnehmer dürfen Nachrichten an den Raum schicken"}.
{"Only occupants are allowed to send queries to the conference","Nur Teilnehmer sind berechtigt Anfragen an die Konferenz zu senden"}.
{"Only service administrators are allowed to send service messages","Nur Service-Administratoren sind berechtigt, Servicenachrichten zu versenden"}.
@@ -250,6 +259,7 @@
{"Persist items to storage","Einträge dauerhaft speichern"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Beachten sie, das diese Optionen nur die eingebaute Mnesia-Datenbank sichern. Wenn sie das ODBC-Modul verwenden, müssen sie die SQL-Datenbank manuell sichern."}.
{"Please, wait for a while before sending new voice request","Bitte warten sie ein wenig, bevor sie eine weitere Anfrage für Sprachrechte senden"}.
{"Pong","Pong"}.
{"Port ~b","Port ~b"}.
{"Port","Port"}.
@@ -338,7 +348,7 @@
{"Sunday","Sonntag"}.
{"That nickname is already in use by another occupant","Dieser Benutzername wird bereits von einem Teilnehmer genutzt"}.
{"That nickname is registered by another person","Dieser Benutzername wurde bereits von jemand anderem registriert"}.
{"The captcha is valid.","Die Verifizierung ist gültig."}.
{"The CAPTCHA is valid.","Die Verifizierung ist gültig."}.
{"The CAPTCHA verification has failed","Die CAPTCHA Verifizierung schlug fehl"}.
{"The collections with which a node is affiliated","Sammlungen, mit denen ein Knoten verknüpft ist"}.
{"the password is","das Passwort lautet"}.
@@ -350,14 +360,15 @@
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Groß/Klein-Schreibung spielt hierbei keine Rolle: macbeth ist gleich MacBeth und Macbeth."}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Diese Seite erlaubt das anlegen eines Jabber Kontos auf diesem Jabber Server. Ihre JID (Jabber IDentifier) setzt sich folgend zusammen: benutzername@server. Bitte lesen sie die Hinweise genau durch, um die Felder korrekt auszufüllen."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Diese Seite erlaubt es, ein Jabber Konto von diesem Server zu entfernen."}.
{"This participant is kicked from the room because he sent an error message","Dieser Teilnehmer wurde aus dem Raum geworfen, da er eine Fehlernachricht gesendet hat"}.
{"This participant is kicked from the room because he sent an error message to another participant","Dieser Teilnehmer wurde aus dem Raum geworfen, da er eine Fehlernachricht an einen anderen Teilnehmer gesendet hat"}.
{"This participant is kicked from the room because he sent an error message","Dieser Teilnehmer wurde aus dem Raum geworfen, da er eine fehlerhafte Nachricht gesendet hat"}.
{"This participant is kicked from the room because he sent an error message to another participant","Dieser Teilnehmer wurde aus dem Raum geworfen, da er eine fehlerhafte Nachricht an einen anderen Teilnehmer gesendet hat"}.
{"This participant is kicked from the room because he sent an error presence","Dieser Teilnehmer wurde aus dem Raum gekickt, da er einen fehlerhaften Status gesendet hat"}.
{"This room is not anonymous","Dieser Raum ist nicht anonym"}.
{"Thursday","Donnerstag"}.
{"Time delay","Zeitverzögerung"}.
{"Time","Zeit"}.
{"To","An"}.
{"Too many CAPTCHA requests","Zu viele CAPTCHA Anfragen"}.
{"To ~s","An ~s"}.
{"Traffic rate limit is exceeded","Datenratenlimit wurde überschritten"}.
{"Transactions Aborted:","Abgebrochene Transaktionen:"}.
@@ -365,7 +376,6 @@
{"Transactions Logged:","Protokollierte Transaktionen:"}.
{"Transactions Restarted:","Neu gestartete Transaktionen:"}.
{"Tuesday","Dienstag"}.
{"Unable to generate a captcha","Konnte Captcha nicht erstellen"}.
{"Unable to generate a CAPTCHA","Konnte CAPTCHA nicht erstellen"}.
{"Unauthorized","Nicht berechtigt"}.
{"Unregister","Abmelden"}.
@@ -380,6 +390,7 @@
{"Use of STARTTLS required","Verwendung von STARTTLS erforderlich"}.
{"User ","Benutzer "}.
{"User","Benutzer"}.
{"User JID","Benutzer JID"}.
{"User Management","Benutzerverwaltung"}.
{"Username:","Benutzername:"}.
{"Users are not allowed to register accounts so quickly","Benutzer dürfen Konten nicht so schnell registrieren"}.
@@ -390,6 +401,8 @@
{"Virtual Hosts","Virtuelle Hosts"}.
{"Visitors are not allowed to change their nicknames in this room","Besucher dürfen in diesem Raum ihren Benutzernamen nicht ändern"}.
{"Visitors are not allowed to send messages to all occupants","Besucher dürfen nicht an alle Teilnehmer Nachrichten verschicken"}.
{"Voice request","Anfrage für Sprachrechte"}.
{"Voice requests are disabled in this conference","Anfragen für Sprachrechte sind in diesem Raum deaktiviert"}.
{"Wednesday","Mittwoch"}.
{"When to send the last published item","Wann soll das letzte veröffentlichte Objekt gesendet werden"}.
{"Whether to allow subscriptions","Ob Abonnements erlaubt sind"}.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+17 -4
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Επιτρέψετε στους χρήστες να αποστέλλουν προσκλήσεις"}.
{"Allow users to send private messages","Επιτρέψετε στους χρήστες να αποστέλλουν ιδιωτικά μηνύματα"}.
{"Allow visitors to change nickname","Επιτρέψετε στους επισκέπτες να αλλάζου ψευδώνυμο"}.
{"Allow visitors to send private messages to","Επιτρέψετε στους χρήστες να αποστέλλουν ιδιωτικά μηνύματα σε"}.
{"Allow visitors to send status text in presence updates","Επιτρέψτε στους επισκέπτες να αποστέλλουν κατάσταση στις ενημερώσεις παρουσίας"}.
{"Allow visitors to send voice requests","Επιτρέψτε στους επισκέπτες να στέλνουν αιτήματα φωνής"}.
{"All Users","Όλοι οι χρήστες"}.
{"Announcements","Ανακοινώσεις"}.
{"anyone","οποιοσδήποτε"}.
@@ -75,6 +77,7 @@
{"Dump Backup to Text File at ","Αποθήκευση Αντιγράφου Ασφαλείας σε αρχείο κειμένου στο "}.
{"Dump to Text File","Αποθήκευση σε αρχείο κειμένου"}.
{"Edit Properties","Επεξεργασία ιδιοτήτων"}.
{"Either approve or decline the voice request.","Είτε εγκρίνετε ή απορρίψτε το αίτημα φωνής."}.
{"ejabberd IRC module","ejabberd IRC module"}.
{"ejabberd MUC module","ejabberd MUC module"}.
{"ejabberd Publish-Subscribe module","ejabberd module Δημοσίευσης-Εγγραφής"}.
@@ -98,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Διακομιστής"}.
{"Error","Σφάλμα"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Παράδειγμα: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Εξαίρεση από τις ταυτότητες Jabber, ή CAPTCHA πρόκληση"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Εξαγωγή δεδομένων όλων των χρηστών του διακομιστή σε PIEFXIS αρχεία (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Εξαγωγή δεδομένων των χρηστών κεντρικού υπολογιστή σε PIEFXIS αρχεία (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Απέτυχε η εξαγωγή JID από την έγκριση του αιτήματος φωνής σας"}.
{"Family Name","Επώνυμο"}.
{"February","Φεβρουάριος"}.
{"Fill in fields to search for any matching Jabber User","Συμπληρώστε τα πεδία για να αναζητήσετε οποιαδήποτε ταιριάζοντα Jabber χρήστη"}.
@@ -113,6 +118,7 @@
{"Get User Last Login Time","Έκθεση Τελευταίας Ώρας Σύνδεσης Χρήστη"}.
{"Get User Password","Έκθεση Κωδικού Πρόσβασης Χρήστη"}.
{"Get User Statistics","Έκθεση Στατιστικών Χρήστη"}.
{"Grant voice to this person?","Παραχώρηση φωνής σε αυτό το άτομο;"}.
{"Groups","Ομάδες"}.
{"Group ","Ομάδα"}.
{"has been banned","έχει απαγορευθεί"}.
@@ -168,7 +174,7 @@
{"List of modules to start","Λίστα των Module για Εκκίνηση"}.
{"Low level update script","Προγράμα ενημέρωσης χαμηλού επίπεδου "}.
{"Make participants list public","Κάντε κοινό τον κατάλογο συμμετεχόντων"}.
{"Make room captcha protected","Κάντε την αίθουσα CAPTCHA προστατεύονομενη"}.
{"Make room CAPTCHA protected","Κάντε την αίθουσα CAPTCHA προστατεύονομενη"}.
{"Make room members-only","Κάντε την αίθουσα μόνο για μέλη"}.
{"Make room moderated","Κάντε την αίθουσα εποπτεύονομενη"}.
{"Make room password protected","Κάντε την αίθουσα προστατεύομενη με κωδικό πρόσβασης"}.
@@ -185,6 +191,7 @@
{"Memory","Μνήμη"}.
{"Message body","Περιεχόμενο μηνυμάτως"}.
{"Middle Name","Πατρώνυμο"}.
{"Minimum interval between voice requests (in seconds)","Ελάχιστο χρονικό διάστημα μεταξύ αιτημάτων φωνής (σε δευτερόλεπτα)"}.
{"Moderator privileges required","Aπαιτούνται προνόμια συντονιστή"}.
{"moderators only","συντονιστές μόνο"}.
{"Modified modules","Τροποποιημένα modules"}.
@@ -200,6 +207,7 @@
{"Nickname ~s does not exist in the room","Ψευδώνυμο ~s δεν υπάρχει σε αυτή την αίθουσα"}.
{"Nickname","Ψευδώνυμο"}.
{"No body provided for announce message","Δεν προμηθεύτικε περιεχόμενο ανακοινώσης"}.
{"nobody","κανείς"}.
{"No Data","Κανένα στοιχείο"}.
{"Node ID","Ταυτότητα Κόμβου"}.
{"Node not found","Κόμβος δεν βρέθηκε"}.
@@ -227,6 +235,7 @@
{"Only deliver notifications to available users","Παράδωση κοινοποιήσεων μόνο σε διαθέσιμους χρήστες"}.
{"Only moderators and participants are allowed to change the subject in this room","Μόνο οι συντονιστές και οι συμμετέχοντες μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}.
{"Only moderators are allowed to change the subject in this room","Μόνο οι συντονιστές μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}.
{"Only moderators can approve voice requests","Μόνο οι συντονιστές μπορούν να εγκρίνουν τις αιτήσεις φωνής"}.
{"Only occupants are allowed to send messages to the conference","Μόνο οι συμμετέχωντες μπορούν να στέλνουν μηνύματα στο συνέδριο"}.
{"Only occupants are allowed to send queries to the conference","Μόνο οι συμετεχόντες μπορούν να στείλουν ερωτήματα στη διάσκεψη"}.
{"Only service administrators are allowed to send service messages","Μόνο οι διαχειριστές των υπηρεσιών επιτρέπεται να στείλουν υπηρεσιακά μηνύματα"}.
@@ -250,6 +259,7 @@
{"Persist items to storage","Μονιμη αποθήκευση στοιχείων"}.
{"Ping","Πινγκ"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Παρακαλώ σημειώστε ότι οι επιλογές αυτές θα αποθήκευσουν Αντιγράφο Ασφαλείας μόνο της ενσωματωμένης βάσης δεδομένων Mnesia. Εάν χρησιμοποιείτε το module ODBC, θα πρέπει επίσης να κάνετε χωριστά Αντιγράφο Ασφαλείας της SQL βάση δεδομένων σας ."}.
{"Please, wait for a while before sending new voice request","Παρακαλώ, περιμένετε για λίγο πριν την αποστολή νέου αιτήματος φωνής"}.
{"Pong","Πονγκ"}.
{"Port ~b","Θύρα ~b"}.
{"Port","Θύρα"}.
@@ -338,7 +348,7 @@
{"Sunday","Κυριακή"}.
{"That nickname is already in use by another occupant","Αυτό το ψευδώνυμο είναι ήδη σε χρήση από άλλον συμμετέχων"}.
{"That nickname is registered by another person","Αυτό το ψευδώνυμο είναι καταχωρημένο από άλλο πρόσωπο"}.
{"The captcha is valid.","Το captcha είναι έγκυρο."}.
{"The CAPTCHA is valid.","Το CAPTCHA είναι έγκυρο."}.
{"The CAPTCHA verification has failed","Η επαλήθευση της εικόνας CAPTCHA απέτυχε"}.
{"The collections with which a node is affiliated","Οι συλλογές με την οποία είναι ένας κόμβος συνδέεται"}.
{"The password is too weak","Ο κωδικός πρόσβασης είναι πολύ ασθενές"}.
@@ -357,6 +367,7 @@
{"Thursday","Πέμπτη"}.
{"Time delay","Χρόνος καθυστέρησης"}.
{"Time","Χρόνος"}.
{"Too many CAPTCHA requests","Πάρα πολλά αιτήματα CAPTCHA"}.
{"To ~s","Πρώς ~s"}.
{"To","Πρώς"}.
{"Traffic rate limit is exceeded","Υπέρφορτωση"}.
@@ -365,8 +376,7 @@
{"Transactions Logged:","Καταγραμμένες συναλλαγές:"}.
{"Transactions Restarted:","Επανειλημμένες συναλλαγές:"}.
{"Tuesday","Τρίτη"}.
{"Unable to generate a captcha","Αδήνατο να δημιουργηθεί CAPTCHA"}.
{"Unable to generate a CAPTCHA","Αδήνατο να δημιουργηθεί εικόνα CAPTCHA"}.
{"Unable to generate a CAPTCHA","Αδήνατο να δημιουργηθεί CAPTCHA"}.
{"Unauthorized","Χορίς Εξουσιοδότηση"}.
{"Unregister a Jabber account","Καταργήστε την εγγραφή ενός λογαριασμού Jabber"}.
{"Unregister","Καταργήση εγγραφής"}.
@@ -378,6 +388,7 @@
{"Update","Ενημέρωση"}.
{"Uptime:","Uptime:"}.
{"Use of STARTTLS required","Απαιτείται χρήση STARTTLS "}.
{"User JID","JID Χρήστη"}.
{"User Management","Διαχείριση χρηστών"}.
{"Username:","Όνομα χρήστη"}.
{"Users are not allowed to register accounts so quickly","Οι χρήστες δεν επιτρέπεται να εγγραφούν λογαριασμούς τόσο γρήγορα"}.
@@ -390,6 +401,8 @@
{"Virtual Hosts","εικονικοί κεντρικοί υπολογιστές"}.
{"Visitors are not allowed to change their nicknames in this room","Οι επισκέπτες δεν επιτρέπεται να αλλάξουν τα ψευδώνυμα τους σε αυτή την αίθουσα"}.
{"Visitors are not allowed to send messages to all occupants","Οι επισκέπτες δεν επιτρέπεται να στείλουν μηνύματα σε όλους τους συμμετέχωντες"}.
{"Voice requests are disabled in this conference","Τα αιτήματα φωνής είναι απενεργοποιημένα, σε αυτό το συνέδριο"}.
{"Voice request","Αίτημα φωνής"}.
{"Wednesday","Τετάρτη"}.
{"When to send the last published item","Πότε να αποσταλθεί το τελευταίο στοιχείο που δημοσιεύθηκε"}.
{"Whether to allow subscriptions","Εάν επιτρέποντε συνδρομές"}.
File diff suppressed because it is too large Load Diff
+48 -4
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Permesu uzantojn sendi invitojn"}.
{"Allow users to send private messages","Permesu uzantojn sendi privatajn mesaĝojn"}.
{"Allow visitors to change nickname","Permesu al vizitantoj ŝanĝi siajn kaŝnomojn"}.
{"Allow visitors to send private messages to","Permesu uzantojn sendi privatajn mesaĝojn al"}.
{"Allow visitors to send status text in presence updates","Permesu al vizitantoj sendi statmesaĝon en ĉeest-sciigoj"}.
{"Allow visitors to send voice requests","Permesu uzantojn sendi voĉ-petojn"}.
{"All Users","Ĉiuj Uzantoj"}.
{"Announcements","Anoncoj"}.
{"anyone","iu ajn"}.
@@ -33,8 +35,10 @@
{"Backup to File at ","Faru sekurkopion je "}.
{"Bad format","Malĝusta formo"}.
{"Birthday","Naskiĝtago"}.
{"CAPTCHA web page","CAPTCHA teksaĵ-paĝo"}.
{"Change Password","Ŝanĝu pasvorton"}.
{"Change User Password","Ŝanĝu pasvorton de uzanto"}.
{"Characters not allowed:","Karaktroj ne permesata:"}.
{"Chatroom configuration modified","Agordo de babilejo ŝanĝita"}.
{"Chatroom is created","Babilejo kreita"}.
{"Chatroom is destroyed","Babilejo neniigita"}.
@@ -69,9 +73,11 @@
{"Description:","Priskribo:"}.
{"Disc only copy","Nur disk-kopio"}.
{"Displayed Groups:","Montrataj grupoj:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Ne donu vian pasvorton al iun ajn, eĉ ne al la administrantoj de la Ĵabber-servilo."}.
{"Dump Backup to Text File at ","Skribu sekurkopion en plata teksto al "}.
{"Dump to Text File","Skribu en plata tekst-dosiero"}.
{"Edit Properties","Redaktu atributojn"}.
{"Either approve or decline the voice request.","Ĉu aprobu, aŭ malaprobu la voĉ-peton."}.
{"ejabberd IRC module","ejabberd IRC-modulo"}.
{"ejabberd MUC module","ejabberd MUC-modulo"}.
{"ejabberd Publish-Subscribe module","ejabberd Public-Abonada modulo"}.
@@ -90,13 +96,14 @@
{"Enter path to jabberd14 spool file","Enmetu vojon al jabberd14-uzantdosiero"}.
{"Enter path to text file","Enmetu vojon al plata teksto"}.
{"Enter the text you see","Enmetu montrita teksto"}.
{"Enter username and encodings you wish to use for connecting to IRC servers. Press 'Next' to get more fields to fill in. Press 'Complete' to save settings.","Enmetu uzantnomon kaj enkodigoj kiujn vi volas uzi por konektoj al IRC-serviloj. Elektu \"Sekvonto\" por ekhavi pliajn kampojn. Elektu \"Kompletigu\" por savi agordojn."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Enmetu uzantnomon,j enkodigojn, pordojn kaj pasvortojn kiujn vi volas uzi por konektoj al IRC-serviloj"}.
{"Erlang Jabber Server","Erlang-a Jabber-Servilo"}.
{"Error","Eraro"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Ekzemplo: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"sekreto\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.iutestservilo.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Esceptu Ĵabber-identigilojn je CAPTCHA-defio"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksportu datumojn de ĉiuj uzantoj en servilo al PIEFXIS dosieroj (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Eksportu datumoj de uzantoj en gastigo al PIEFXIS dosieroj (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Malsukcesis ekstrakti JID-on de via voĉ-pet-aprobo"}.
{"Family Name","Lasta Nomo"}.
{"February","Februaro"}.
{"Fill in fields to search for any matching Jabber User","Kompletigu la formon por serĉi rekonata Jabber-uzanto"}.
@@ -110,6 +117,7 @@
{"Get User Last Login Time","Montru tempon de lasta ensaluto"}.
{"Get User Password","Montru pasvorton de uzanto"}.
{"Get User Statistics","Montru statistikojn de uzanto"}.
{"Grant voice to this person?","Koncedu voĉon al ĉi-persono?"}.
{"Group ","Grupo "}.
{"Groups","Grupoj"}.
{"has been banned","estas forbarita"}.
@@ -119,6 +127,7 @@
{"has been kicked","estas forpelita"}.
{" has set the subject to: "," ŝanĝis la temon al: "}.
{"Host","Gastigo"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Se vi ne vidas la CAPTCHA-imagon jene, vizitu la teksaĵ-paĝon."}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Se vi volas specifi diversajn pordojn, pasvortojn, enkodigojn por IRC-serviloj, kompletigu la jenan liston kun la formo '{\"irc-servilo\", \"enkodigo\", porto, \"pasvorto\"}'. Se ne specifita, ĉi tiu servilo uzas la enkodigo \"~s\", porto ~p, malplena pasvorto."}.
{"Import Directory","Importu dosierujo"}.
{"Import File","Importu dosieron"}.
@@ -144,6 +153,7 @@
{"It is not allowed to send private messages","Ne estas permesata sendi privatajn mesaĝojn"}.
{"It is not allowed to send private messages of type \"groupchat\"","Malpermesas sendi mesaĝojn de tipo \"groupchat\""}.
{"It is not allowed to send private messages to the conference","Nur partoprenantoj rajtas sendi privatajn mesaĝojn al la babilejo"}.
{"Jabber Account Registration","Ĵabber-konto registrado"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","Jabber ID ~s estas nevalida"}.
{"January","Januaro"}.
@@ -163,7 +173,7 @@
{"List of modules to start","Listo de moduloj por starti"}.
{"Low level update script","Bazanivela ĝisdatigo-skripto"}.
{"Make participants list public","Farigu partoprento-liston publika"}.
{"Make room captcha protected","Farigu babilejon protektata per aŭtomata Turingtesto"}.
{"Make room CAPTCHA protected","Farigu babilejon protektata per CAPTCHA"}.
{"Make room members-only","Farigu babilejon sole por membroj"}.
{"Make room moderated","Farigu babilejon moderigata"}.
{"Make room password protected","Farigu babilejon protektata per pasvorto"}.
@@ -176,9 +186,11 @@
{"May","Majo"}.
{"Membership is required to enter this room","Membreco estas bezonata por eniri ĉi tiun babilejon"}.
{"Members:","Membroj:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Memoru vian pasvorton, aŭ skribu ĝin sur papero formetata je sekura loko. Je Ĵabber ne ekzistas aŭtomata metodo por reakiri vian pasvorton se vi forgesas ĝin."}.
{"Memory","Memoro"}.
{"Message body","Teksto de mesaĝo"}.
{"Middle Name","Meza Nomo"}.
{"Minimum interval between voice requests (in seconds)","Minimuma intervalo inter voĉ-petoj (je sekundoj)"}.
{"Moderator privileges required","Moderantaj rajtoj bezonata"}.
{"moderators only","moderantoj sole"}.
{"Modified modules","Ĝisdatigitaj moduloj"}.
@@ -189,9 +201,11 @@
{"Name:","Nomo:"}.
{"Name","Nomo"}.
{"Never","Neniam"}.
{"New Password:","Nova Pasvorto:"}.
{"Nickname","Kaŝnomo"}.
{"Nickname Registration at ","Kaŝnomo-registrado je "}.
{"Nickname ~s does not exist in the room","Kaŝnomo ~s ne ekzistas en la babilejo"}.
{"nobody","neniu"}.
{"No body provided for announce message","Neniu teksto donita por anonc-mesaĝo"}.
{"No Data","Neniu datumo"}.
{"Node ID","Nodo ID"}.
@@ -213,12 +227,14 @@
{"Offline Messages:","Liverontaj mesaĝoj"}.
{"Offline Messages","Liverontaj mesaĝoj"}.
{"OK","Bone"}.
{"Old Password:","Malnova Pasvorto:"}.
{"Online","Konektata"}.
{"Online Users:","Konektataj uzantoj:"}.
{"Online Users","Konektataj Uzantoj"}.
{"Only deliver notifications to available users","Nur liveru sciigojn al konektataj uzantoj"}.
{"Only moderators and participants are allowed to change the subject in this room","Nur moderigantoj kaj partoprenantoj rajtas ŝanĝi la temon en ĉi tiu babilejo"}.
{"Only moderators are allowed to change the subject in this room","Nur moderigantoj rajtas ŝanĝi la temon en ĉi tiu babilejo"}.
{"Only moderators can approve voice requests","Nur moderigantoj povas aprobi voĉ-petojn"}.
{"Only occupants are allowed to send messages to the conference","Nur partoprenantoj rajtas sendi mesaĝojn al la babilejo"}.
{"Only occupants are allowed to send queries to the conference","Nur partoprenantoj rajtas sendi informmendojn al la babilejoj"}.
{"Only service administrators are allowed to send service messages","Nur servo-administrantoj rajtas sendi serv-mesaĝojn"}.
@@ -233,6 +249,7 @@
{"Password ~b","Pasvorto ~b"}.
{"Password:","Pasvorto:"}.
{"Password","Pasvorto"}.
{"Password Verification:","Pasvortkontrolo:"}.
{"Password Verification","Pasvortkontrolo"}.
{"Path to Dir","Vojo al dosierujo"}.
{"Path to File","Voje de dosiero"}.
@@ -241,6 +258,7 @@
{"Persist items to storage","Savu erojn en konservado"}.
{"Ping","Sondaĵo"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Rimarku ke ĉi tiuj elektebloj nur sekurkopias la propran Mnesia-datumbazon. Se vi uzas la ODBC-modulon, vi ankaŭ devas sekurkopii tiujn SQL-datumbazoj aparte."}.
{"Please, wait for a while before sending new voice request","Bonvolu atendi iomete antaŭ ol sendi plian voĉ-peton"}.
{"Pong","Resondaĵo"}.
{"Port ~b","Pordo ~b"}.
{"Port","Pordo"}.
@@ -256,8 +274,10 @@
{"Raw","Kruda"}.
{"Really delete message of the day?","Ĉu vere forigi mesaĝon de la tago?"}.
{"Recipient is not in the conference room","Ricevanto ne ĉeestas en la babilejo "}.
{"Register a Jabber account","Registru Ĵabber-konton"}.
{"Registered Users:","Registritaj uzantoj:"}.
{"Registered Users","Registritaj uzantoj"}.
{"Register","Registru"}.
{"Registration in mod_irc for ","Registraĵo en mod_irc de "}.
{"Remote copy","Fora kopio"}.
{"Remove All Offline Messages","Forigu ĉiujn liverontajn mesaĝojn"}.
@@ -294,6 +314,7 @@
{"Send announcement to all users","Sendu anoncon al ĉiu uzanto"}.
{"September","Septembro"}.
{"Server ~b","Servilo ~b"}.
{"Server:","Servilo:"}.
{"Set message of the day and send to online users","Enmetu mesaĝon de la tago kaj sendu al konektataj uzantoj"}.
{"Set message of the day on all hosts and send to online users","Enmetu mesaĝon de la tago je ĉiu gastigo kaj sendu al konektataj uzantoj"}.
{"Shared Roster Groups","Komuna Kontaktlist-grupo"}.
@@ -301,6 +322,7 @@
{"Show Ordinary Table","Montru ordinaran tabelon"}.
{"Shut Down Service","Haltigu Servon"}.
{"~s invites you to the room ~s","~s invitas vin al la babilejo ~s"}.
{"Some Jabber clients can store your password in your computer. Use that feature only if you trust your computer is safe.","Kelkaj Ĵabber-klientoj povas memori vian pasvorton je via komputilo. Nur uzu tiun eblon se vi fidas ke via komputilo estas sekura."}.
{"Specify the access model","Specifu atingo-modelon"}.
{"Specify the event message type","Specifu tipo de event-mesaĝo"}.
{"Specify the publisher model","Enmetu publikadan modelon"}.
@@ -325,9 +347,18 @@
{"Sunday","Dimanĉo"}.
{"That nickname is already in use by another occupant","Tiu kaŝnomo jam estas uzata de alia partoprenanto"}.
{"That nickname is registered by another person","Kaŝnomo estas registrita de alia persono"}.
{"The captcha is valid.","La aŭtomata Turingtesto estas ĝusta"}.
{"The CAPTCHA is valid.","La CAPTCHA ĝustas"}.
{"The CAPTCHA verification has failed","La CAPTCHA-kontrolado malsukcesis"}.
{"The collections with which a node is affiliated","Aro kun kiu nodo estas filigita"}.
{"the password is","la pasvorto estas"}.
{"The password is too weak","La pasvorto estas ne sufiĉe forta"}.
{"The password of your Jabber account was successfully changed.","La pasvorto de via Ĵabber-konto estas sukcese ŝanĝata."}.
{"There was an error changing the password: ","Estis eraro dum ŝanĝi de la pasvortro:"}.
{"There was an error creating the account: ","Estis eraro dum kreado de la konto:"}.
{"There was an error deleting the account: ","Estis eraro dum forigado de la konto:"}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Uskleco ne signifas: macbeth estas la sama ol MacBeth kaj Macbeth."}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Jena paĝo ebligas kreadon de Ĵabber-konto je ĉi-Ĵabber-servilo. Via JID (Ĵabber-IDentigilo) estos ĉi-tiel: uzantnomo@servilo. Bonvolu legu bone la instrukciojn por korekta enmetigo de la kampoj. "}.
{"This page allows to unregister a Jabber account in this Jabber server.","Jena pagxo ebligas malregistri Jxabber-konton je ĉi-servilo."}.
{"This participant is kicked from the room because he sent an error message","Ĉi tiu partoprenanta estas forpelata de la babilejo pro sendado de erar-mesaĝo"}.
{"This participant is kicked from the room because he sent an error message to another participant","Ĉi tiu partoprenanto estas forpelata de la babilejo pro sendo de erar-mesaĝo al alia partoprenanto"}.
{"This participant is kicked from the room because he sent an error presence","Ĉi tiu partoprenanto estas forpelata de la babilejo pro sendo de erar-ĉeesto"}.
@@ -336,6 +367,7 @@
{"Time delay","Prokrasto"}.
{"Time","Tempo"}.
{"To","Ĝis"}.
{"Too many CAPTCHA requests","Tro multaj CAPTCHA-petoj"}.
{"To ~s","Al ~s"}.
{"Traffic rate limit is exceeded","Trafikrapida limigo superita"}.
{"Transactions Aborted:","Transakcioj nuligitaj"}.
@@ -343,8 +375,10 @@
{"Transactions Logged:","Transakcioj protokolitaj"}.
{"Transactions Restarted:","Transakcioj restartitaj"}.
{"Tuesday","Mardo"}.
{"Unable to generate a captcha","Ne eblis krei aŭtomatas turingteston"}.
{"Unable to generate a CAPTCHA","Ne eblis krei CAPTCHA"}.
{"Unauthorized","Nepermesita"}.
{"Unregister a Jabber account","Malregistru Ĵabber-konton"}.
{"Unregister","Malregistru"}.
{"Update ","Ĝisdatigu "}.
{"Update","Ĝisdatigu"}.
{"Update message of the day (don't send)","Ŝanĝu mesaĝon de la tago (ne sendu)"}.
@@ -353,7 +387,9 @@
{"Update script","Ĝisdatigo-skripto"}.
{"Uptime:","Daŭro de funkciado"}.
{"Use of STARTTLS required","Uzo de STARTTLS bezonata"}.
{"User JID","Uzant-JID"}.
{"User Management","Uzanto-administrado"}.
{"Username:","Uzantnomo"}.
{"Users are not allowed to register accounts so quickly","Ne estas permesata al uzantoj registri tiel rapide"}.
{"Users Last Activity","Lasta aktiveco de uzanto"}.
{"Users","Uzantoj"}.
@@ -364,13 +400,21 @@
{"Virtual Hosts","Virtual-gastigoj"}.
{"Visitors are not allowed to change their nicknames in this room","Ne estas permesata al vizitantoj ŝanĝi siajn kaŝnomojn en ĉi tiu ĉambro"}.
{"Visitors are not allowed to send messages to all occupants","Vizitantoj ne rajtas sendi mesaĝojn al ĉiuj partoprenantoj"}.
{"Voice requests are disabled in this conference","Voĉ-petoj estas malebligita en jena babilejo"}.
{"Voice request","Voĉ-peto"}.
{"Wednesday","Merkredo"}.
{"When to send the last published item","Kiam sendi la laste publicitan eron"}.
{"Whether to allow subscriptions","Ĉu permesi aboni"}.
{"You can later change your password using a Jabber client.","Poste vi povas ŝanĝi vian pasvorton per Ĵabber-kliento."}.
{"You have been banned from this room","Vi estas malpermesata en ĉi tiu babilejo"}.
{"You must fill in field \"Nickname\" in the form","Vi devas kompletigi la \"Kaŝnomo\" kampon"}.
{"You need a client that supports x:data and CAPTCHA to register","Vi bezonas klienton subtenante x:data-funkcio kaj CAPTCHA por registri kaŝnomon"}.
{"You need a client that supports x:data to register the nickname","Vi bezonas klienton subtenante x:data-funkcio por registri kaŝnomon"}.
{"You need an x:data capable client to configure mod_irc settings","Vi bezonas klienton kun x:data-funkcio por agordi mod_irc"}.
{"You need an x:data capable client to configure room","Vi bezonas klienton kun x:data-funkcio por agordi la babilejon"}.
{"You need an x:data capable client to search","Vi bezonas klienton kun x:data-funkcio por serĉado"}.
{"Your active privacy list has denied the routing of this stanza.","Via aktiva privatec-listo malpermesas enkursigi ĉi-tiun pakaĵon"}.
{"Your contact offline message queue is full. The message has been discarded.","Mesaĝo-atendovico de la senkonekta kontakto estas plena. La mesaĝo estas forĵetita"}.
{"Your Jabber account was successfully created.","Via Ĵabber-konto estis sukcese kreata."}.
{"Your Jabber account was successfully deleted.","Via Ĵabber-konto estas sukcese forigita."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Viaj mesaĝoj al ~s estas blokata. Por malbloki ilin, iru al ~s"}.
File diff suppressed because it is too large Load Diff
+17 -4
View File
@@ -14,13 +14,15 @@
{"Administrator privileges required","Se necesita privilegios de administrador"}.
{"A friendly name for the node","Un nombre sencillo para el nodo"}.
{"All activity","Toda la actividad"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","¿Deseas permitir a este JabberID que se subscriba a este nodo PubSub?"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","¿Deseas permitir a este Jabber ID que se subscriba a este nodo PubSub?"}.
{"Allow users to change the subject","Permitir a los usuarios cambiar el asunto"}.
{"Allow users to query other users","Permitir a los usuarios consultar a otros usuarios"}.
{"Allow users to send invites","Permitir a los usuarios enviar invitaciones"}.
{"Allow users to send private messages","Permitir a los usuarios enviar mensajes privados"}.
{"Allow visitors to change nickname","Permitir a los visitantes cambiarse el apodo"}.
{"Allow visitors to send private messages to","Permitir a los visitantes enviar mensajes privados a"}.
{"Allow visitors to send status text in presence updates","Permitir a los visitantes enviar texto de estado en las actualizaciones de presencia"}.
{"Allow visitors to send voice requests","Permitir a los visitantes enviar peticiones de voz"}.
{"All Users","Todos los usuarios"}.
{"Announcements","Anuncios"}.
{"anyone","cualquiera"}.
@@ -75,6 +77,7 @@
{"Dump Backup to Text File at ","Exporta copia de seguridad a fichero de texto en "}.
{"Dump to Text File","Exportar a fichero de texto"}.
{"Edit Properties","Editar propiedades"}.
{"Either approve or decline the voice request.","Aprueba o rechaza la petición de voz."}.
{"ejabberd IRC module","Módulo de IRC para ejabberd"}.
{"ejabberd MUC module","Módulo de MUC para ejabberd"}.
{"ejabberd Publish-Subscribe module","Módulo de Publicar-Subscribir de ejabberd"}.
@@ -98,8 +101,10 @@
{"Erlang Jabber Server","Servidor Jabber en Erlang"}.
{"Error","Error"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Ejemplo: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Excluir Jabber IDs de las pruebas de CAPTCHA"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar datos de todos los usuarios del servidor a ficheros PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportar datos de los usuarios de un dominio a ficheros PIEFXIS (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Fallo al extraer el Jabber ID de tu aprobación de petición de voz"}.
{"Family Name","Apellido"}.
{"February","febrero"}.
{"Fill in fields to search for any matching Jabber User","Rellena campos para buscar usuarios Jabber que concuerden"}.
@@ -113,6 +118,7 @@
{"Get User Last Login Time","Ver fecha de la última conexión de usuario"}.
{"Get User Password","Ver contraseña de usuario"}.
{"Get User Statistics","Ver estadísticas de usuario"}.
{"Grant voice to this person?","¿Conceder voz a esta persona?"}.
{"Group ","Grupo "}.
{"Groups","Grupos"}.
{"has been banned","ha sido bloqueado"}.
@@ -168,7 +174,7 @@
{"List of modules to start","Lista de módulos a iniciar"}.
{"Low level update script","Script de actualización a bajo nivel"}.
{"Make participants list public","La lista de participantes es pública"}.
{"Make room captcha protected","Proteger la sala con captcha"}.
{"Make room CAPTCHA protected","Proteger la sala con CAPTCHA"}.
{"Make room members-only","Sala sólo para miembros"}.
{"Make room moderated","Sala moderada"}.
{"Make room password protected","Proteger la sala con contraseña"}.
@@ -185,6 +191,7 @@
{"Memory","Memoria"}.
{"Message body","Cuerpo del mensaje"}.
{"Middle Name","Segundo nombre"}.
{"Minimum interval between voice requests (in seconds)","Intervalo mínimo entre peticiones de voz (en segundos)"}.
{"Moderator privileges required","Se necesita privilegios de moderador"}.
{"moderators only","solo moderadores"}.
{"Modified modules","Módulos modificados"}.
@@ -199,6 +206,7 @@
{"Nickname","Apodo"}.
{"Nickname Registration at ","Registro del apodo en "}.
{"Nickname ~s does not exist in the room","El apodo ~s no existe en la sala"}.
{"nobody","nadie"}.
{"No body provided for announce message","No se ha proporcionado cuerpo de mensaje para el anuncio"}.
{"No Data","Sin datos"}.
{"Node ID","Nodo ID"}.
@@ -227,6 +235,7 @@
{"Only deliver notifications to available users","Solo enviar notificaciones a los usuarios disponibles"}.
{"Only moderators and participants are allowed to change the subject in this room","Solo los moderadores y participantes pueden cambiar el asunto de esta sala"}.
{"Only moderators are allowed to change the subject in this room","Solo los moderadores pueden cambiar el asunto de esta sala"}.
{"Only moderators can approve voice requests","Solo los moderadores pueden aprobar peticiones de voz"}.
{"Only occupants are allowed to send messages to the conference","Solo los ocupantes pueden enviar mensajes a la sala"}.
{"Only occupants are allowed to send queries to the conference","Solo los ocupantes pueden enviar solicitudes a la sala"}.
{"Only service administrators are allowed to send service messages","Solo los administradores del servicio tienen permiso para enviar mensajes de servicio"}.
@@ -250,6 +259,7 @@
{"Persist items to storage","Persistir elementos al almacenar"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Ten en cuenta que estas opciones solo harán copia de seguridad de la base de datos Mnesia embebida. Si estás usando ODBC tendrás que hacer también copia de seguridad de tu base de datos SQL."}.
{"Please, wait for a while before sending new voice request","Por favor, espera un poco antes de enviar otra petición de voz"}.
{"Pong","Pong"}.
{"Port ~b","Puerto ~b"}.
{"Port","Puerto"}.
@@ -338,7 +348,7 @@
{"Sunday","domingo"}.
{"That nickname is already in use by another occupant","Ese apodo ya está siendo usado por otro ocupante"}.
{"That nickname is registered by another person","El apodo ya está registrado por otra persona"}.
{"The captcha is valid.","El captcha es válido."}.
{"The CAPTCHA is valid.","El CAPTCHA es válido."}.
{"The CAPTCHA verification has failed","La verificación de CAPTCHA ha fallado"}.
{"The collections with which a node is affiliated","Las colecciones a las que un nodo está afiliado"}.
{"the password is","la contraseña es"}.
@@ -357,6 +367,7 @@
{"Thursday","jueves"}.
{"Time delay","Retraso temporal"}.
{"Time","Fecha"}.
{"Too many CAPTCHA requests","Demasiadas peticiones de CAPTCHA"}.
{"To","Para"}.
{"To ~s","A ~s"}.
{"Traffic rate limit is exceeded","Se ha exedido el límite de tráfico"}.
@@ -365,7 +376,6 @@
{"Transactions Logged:","Transacciones registradas:"}.
{"Transactions Restarted:","Transacciones reiniciadas:"}.
{"Tuesday","martes"}.
{"Unable to generate a captcha","No se pudo generar un captcha."}.
{"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}.
{"Unauthorized","No autorizado"}.
{"Unregister a Jabber account","Borrar una cuenta Jabber"}.
@@ -378,6 +388,7 @@
{"Update script","Script de actualización"}.
{"Uptime:","Tiempo desde el inicio:"}.
{"Use of STARTTLS required","Es obligatorio usar STARTTLS"}.
{"User JID","Jabber ID del usuario"}.
{"User Management","Administración de usuarios"}.
{"Username:","Nombre de usuario:"}.
{"Users are not allowed to register accounts so quickly","Los usuarios no tienen permitido crear cuentas con tanta rapidez"}.
@@ -390,6 +401,8 @@
{"Virtual Hosts","Dominios Virtuales"}.
{"Visitors are not allowed to change their nicknames in this room","Los visitantes no tienen permitido cambiar sus apodos en esta sala"}.
{"Visitors are not allowed to send messages to all occupants","Los visitantes no pueden enviar mensajes a todos los ocupantes"}.
{"Voice request","Petición de voz"}.
{"Voice requests are disabled in this conference","Las peticiones de voz están desactivadas en esta sala"}.
{"Wednesday","miércoles"}.
{"When to send the last published item","Cuando enviar el último elemento publicado"}.
{"Whether to allow subscriptions","Permitir subscripciones"}.
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -168,7 +168,7 @@
{"List of modules to start","Liste des modules à démarrer"}.
{"Low level update script","Script de mise à jour de bas-niveau"}.
{"Make participants list public","Rendre la liste des participants publique"}.
{"Make room captcha protected","Protéger le salon par un captcha"}.
{"Make room CAPTCHA protected","Protéger le salon par un CAPTCHA"}.
{"Make room members-only","Réserver le salon aux membres uniquement"}.
{"Make room moderated","Rendre le salon modéré"}.
{"Make room password protected","Protéger le salon par mot de passe"}.
@@ -338,7 +338,7 @@
{"Sunday","Dimanche"}.
{"That nickname is already in use by another occupant","Le pseudo est déjà utilisé par un autre occupant"}.
{"That nickname is registered by another person","Le pseudo est enregistré par une autre personne"}.
{"The captcha is valid.","Le captcha est valide"}.
{"The CAPTCHA is valid.","Le CAPTCHA est valide"}.
{"The CAPTCHA verification has failed","La vérification du CAPTCHA a échoué"}.
{"The collections with which a node is affiliated","Les collections avec lesquelle un nœud est affilié"}.
{"the password is","le mot de passe est"}.
@@ -365,7 +365,6 @@
{"Transactions Logged:","Transactions journalisées :"}.
{"Transactions Restarted:","Transactions redémarrées :"}.
{"Tuesday","Mardi"}.
{"Unable to generate a captcha","Impossible de générer le captcha"}.
{"Unable to generate a CAPTCHA","Impossible de générer le CAPTCHA"}.
{"Unauthorized","Non autorisé"}.
{"Unregister a Jabber account","Effacer un compte Jabber"}.
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -159,7 +159,7 @@
{"List of modules to start","Lista de módulos a iniciar"}.
{"Low level update script","Script de actualización a baixo nivel"}.
{"Make participants list public","A lista de participantes é pública"}.
{"Make room captcha protected","Protexer a sala con captcha"}.
{"Make room CAPTCHA protected","Protexer a sala con CAPTCHA"}.
{"Make room members-only","Sala só para membros"}.
{"Make room moderated","Facer sala moderada"}.
{"Make room password protected","Protexer a sala con contrasinal"}.
@@ -319,7 +319,7 @@
{"Sunday","Domingo"}.
{"That nickname is already in use by another occupant","Ese alcume que xa está en uso por outro ocupante"}.
{"That nickname is registered by another person","O alcume xa está rexistrado por outra persoa"}.
{"The captcha is valid.","O Captcha é válido."}.
{"The CAPTCHA is valid.","O CAPTCHA é válido."}.
{"The collections with which a node is affiliated","As coleccións coas que un nodo está afiliado"}.
{"the password is","a contrasinal é"}.
{"This participant is kicked from the room because he sent an error message","Este participante é expulsado da sala, xa que enviou unha mensaxe de erro"}.
@@ -337,7 +337,6 @@
{"Transactions Logged:","Transaccións rexistradas:"}.
{"Transactions Restarted:","Transaccións reiniciadas:"}.
{"Tuesday","Martes"}.
{"Unable to generate a captcha","Non se pode xerar un Captcha"}.
{"Unauthorized","Non autorizado"}.
{"Update ","Actualizar"}.
{"Update","Actualizar"}.
File diff suppressed because it is too large Load Diff
+283
View File
@@ -0,0 +1,283 @@
{"Access Configuration","כניסה אל תצורה"}.
{"Access Control List Configuration","כניסה אל תצורת בקרת רשימות"}.
{"Access control lists","כניסה אל בקרת רשימות"}.
{"Access Control Lists","כניסה אל בקרת רשימות"}.
{"Add Jabber ID","הוספת JID"}.
{"Add User","הוספת משתמש"}.
{"Administration","הנהלה"}.
{"Administrator privileges required","נדרשות הרשאות מנהל"}.
{"A friendly name for the node","שם ידידותי עבור הממסר"}.
{"All activity","כל פעילות"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","האם להתיר לכתובת JID זו להירשם אל ממסר PubSub זה?"}.
{"Allow users to change the subject","התר למשתמשים לשנות את הנושא"}.
{"Allow users to query other users","התר למשתמשים לתשאל משתמשים אחרים"}.
{"Allow users to send invites","התר למשתמשים לשלוח הזמנות"}.
{"Allow users to send private messages","התר למשתמשים לשלוח הודעות פרטיות"}.
{"Allow visitors to change nickname","התר למבקרים לשנות כינויים"}.
{"Allow visitors to send status text in presence updates","התר למבקרים לשלוח תמליל מצב בעדכוני נוכחות"}.
{"All Users","כל המשתמשים"}.
{"Announcements","מודעות"}.
{"anyone","לכל אחד"}.
{"A password is required to enter this room","נדרשת מילת־מעבר כדי להיכנס אל חדר זה"}.
{"April","אפריל"}.
{"August","אוגוסט"}.
{"Backup Management","ניהול גיבוי"}.
{"Backup of ","גיבוי של "}.
{"Backup to File at ","גיבוי אל קובץ אצל "}.
{"Backup","גיבוי"}.
{"Bad format","פורמט פגום"}.
{"Birthday","יום הולדת"}.
{"Change Password","שינוי סיסמה"}.
{"Change User Password","שינוי סיסמת משתמש"}.
{"Choose a username and password to register with this server","נא לבחור שם משתמש וסיסמה להירשם עם שרת זה"}.
{"Choose modules to stop","בחירת מודולים להפסקה"}.
{"Choose storage type of tables","נא לבחור צורת אחסון של טבלאות"}.
{"Choose whether to approve this entity's subscription.","נא לבחור האם לאשר את המנוי של ישות זו."}.
{"City","עיר"}.
{"Commands","פקודות"}.
{"Configuration of room ~s","תצורת חדר ~s"}.
{"Configuration","תצורה"}.
{"Connected Resources:","משאבים מחוברים:"}.
{"Country","מדינה"}.
{"CPU Time:","זמן מחשב (CPU):"}.
{"Database","מסד נתונים"}.
{"December","דצמבר"}.
{"Default users as participants","משתמשים משתמטים כמשתתפים"}.
{"Delete message of the day on all hosts","מחיקת הודעת היום אצל כל המארחים"}.
{"Delete message of the day","מחיקת הודעת היום"}.
{"Delete User","מחיקת משתמש"}.
{"Delete","מחיקה"}.
{"Deliver event notifications","מסירת התראות אירוע"}.
{"Deliver payloads with event notifications","מסירת מטען ייעוד (מטע״ד) יחד עם התראות אירוע"}.
{"Description:","תיאור:"}.
{"Dump Backup to Text File at ","השלכת גיבוי אל קובץ תמליל אצל "}.
{"Dump to Text File","השלכה אל קובץ תמליל"}.
{"Edit Properties","עריכת מאפיינים"}.
{"ejabberd MUC module","מודול MUC של ejabberd"}.
{"ejabberd Publish-Subscribe module","מודול Publish-Subscribe של ejabberd"}.
{"ejabberd SOCKS5 Bytestreams module","מודול SOCKS5 Bytestreams של ejabberd"}.
{"ejabberd vCard module","מודול vCard של ejabberd"}.
{"ejabberd Web Admin","מנהל רשת ejabberd"}.
{"Elements","אלמנטים"}.
{"Email","דוא״ל"}.
{"Enable logging","אפשור רישום פעילות"}.
{"End User Session","סיום סשן משתמש"}.
{"Enter nickname you want to register","נא להזין כינוי שברצונך לרושמו"}.
{"Enter path to backup file","נא להזין נתיב אל קובץ גיבוי"}.
{"Enter path to jabberd14 spool dir","נא להזין נתיב אל מדור סליל (spool dir) של jabberd14"}.
{"Enter path to jabberd14 spool file","נא להזין נתיב אל קובץ סליל (spool file) של jabberd14"}.
{"Enter path to text file","נא להזין נתיב אל קובץ תמליל"}.
{"Enter the text you see","נא להזין את התמליל אותו הינך רואה"}.
{"Error","שגיאה"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","ייצוא מידע של כל המשתמשים שבשרת אל קבצי PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","ייצוא מידע של כל המשתמשים אצל מארח אל קבצי PIEFXIS (XEP-0227):"}.
{"Family Name","שם משפחה"}.
{"February","פברואר"}.
{"Fill in fields to search for any matching Jabber User","נא למלא שדות אלו כדי לחפש עבור כל משתמש Jabber מבוקש"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","נא למלא התבניות כדי לחפש עבור כל משתמש Jabber מבוקש (באפשרותך להוסיף * בסוף שדה כדי להתאים אל מחרוזת-משנה)"}.
{"Friday","יום שישי"}.
{"From ~s","מאת ~s"}.
{"From","מן"}.
{"Full Name","שם מלא"}.
{"Get Number of Online Users","השגת מספר של משתמשים מקוונים"}.
{"Get Number of Registered Users","השגת מספר של משתמשים רשומים"}.
{"Get User Last Login Time","השגת זמן התחברות אחרון של משתמש"}.
{"Get User Password","השגת סיסמת משתמש"}.
{"Get User Statistics","השגת סטטיסטיקת משתמש"}.
{"Groups","קבוצות"}.
{"Group ","קבוצה "}.
{"has been banned","נאסר/ה"}.
{"has been kicked because of an affiliation change","נבעט/ה משום שינוי שיוך"}.
{"has been kicked because of a system shutdown","נבעט/ה משום כיבוי מערכת"}.
{"has been kicked because the room has been changed to members-only","נבעט/ה משום שהחדר שונה אל חברים-בלבד"}.
{"has been kicked","נבעט/ה"}.
{" has set the subject to: "," הגדיר/ה את הנושא אל: "}.
{"Host","מארח"}.
{"Import Directory","ייבוא מדור"}.
{"Import File","ייבוא קובץ"}.
{"Import user data from jabberd14 spool file:","ייבוא נתוני משתמש מן קובץ סליל (spool file) של jabberd14:"}.
{"Import User from File at ","ייבוא משתמש מן קובץ אצל "}.
{"Import users data from a PIEFXIS file (XEP-0227):","ייבוא מידע משתמשים מן קובץ PIEFXIS (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","ייבוא נתוני משתמשים מן מדור סליל (spool directory) של jabberd14:"}.
{"Import Users from Dir at ","ייבוא משתמשים מן מדור אצל "}.
{"Import Users From jabberd14 Spool Files","ייבוא משתמשים מן קבצי סליל (Spool Files) של jabberd14"}.
{"Improper message type","צורת הודעה לא מתאימה"}.
{"Incorrect password","מילת־מעבר שגויה"}.
{"Invalid affiliation: ~s","שיוך שגוי: ~s"}.
{"Invalid role: ~s","תפקיד שגוי: ~s"}.
{"IP addresses","כתובות IP"}.
{"IP","IP"}.
{"is now known as","ידועה כעת בכינוי"}.
{"It is not allowed to send private messages of type \"groupchat\"","אין זה מותר לשלוח הודעות פרטיות מן סוג של \"groupchat\""}.
{"It is not allowed to send private messages","אין זה מותר לשלוח הודעות פרטיות"}.
{"Jabber ID","JID"}.
{"Jabber ID ~s is invalid","כתובת JID ~s הינה שגויה"}.
{"January","ינואר"}.
{"joins the room","נכנס/ת אל החדר"}.
{"July","יולי"}.
{"June","יוני"}.
{"Last Activity","פעילות אחרונה"}.
{"Last login","התחברות אחרונה"}.
{"Last month","חודש אחרון"}.
{"Last year","שנה אחרונה"}.
{"leaves the room","עוזב/ת אל החדר"}.
{"List of modules to start","רשימה של מודולים להפעלה"}.
{"Make participants list public","הפיכת רשימת משתתפים אל פומבית"}.
{"Make room members-only","הפיכת חדר אל חברים-בלבד"}.
{"Make room moderated","הפיכת חדר אל מבוקר"}.
{"Make room password protected","הפיכת חדר אל מוגן במילת־מעבר"}.
{"Make room persistent","הפיכת חדר אל קבוע"}.
{"Make room public searchable","הפיכת חדר אל בר־חיפוש פומבי"}.
{"March","מרץ"}.
{"Maximum Number of Occupants","מספר מרבי של נוכחים"}.
{"Max # of items to persist","מספר מרבי של פריטים לקיבוע"}.
{"Max payload size in bytes","גודל מרבי של מטען הייעוד בבייטים (bytes)"}.
{"May","מאי"}.
{"Membership is required to enter this room","נדרשת חברות כדי להיכנס אל חדר זה"}.
{"Members:","חברים:"}.
{"Memory","זיכרון"}.
{"Message body","גוף הודעה"}.
{"Middle Name","שם אמצעי"}.
{"Moderator privileges required","נדרשות הרשאות אחראי"}.
{"moderators only","לאחראים בלבד"}.
{"Modified modules","מודולים שהותאמו"}.
{"Modules at ","מודולים אצל "}.
{"Modules","מודולים"}.
{"Module","מודול"}.
{"Monday","יום שני"}.
{"Name:","שם:"}.
{"Name","שם"}.
{"Nickname Registration at ","הרשמת כינוי אצל "}.
{"Nickname ~s does not exist in the room","כינוי ~s לא קיים בחדר"}.
{"Nickname","כינוי"}.
{"No Data","אין מידע"}.
{"Node ID","ממסר (NID)"}.
{"Node not found","ממסר לא נמצא"}.
{"Nodes","ממסרים"}.
{"Node ","ממסר"}.
{"No limit","ללא הגבלה"}.
{"Not Found","לא נמצא"}.
{"Notify subscribers when items are removed from the node","הודע מנויים כאשר פריטים מוסרים מן הממסר"}.
{"Notify subscribers when the node configuration changes","הודע מנויים כאשר תצורת הממסר משתנה"}.
{"Notify subscribers when the node is deleted","הודע מנויים כאשר הממסר נמחק"}.
{"November","נובמבר"}.
{"Number of occupants","מספר של נוכחים"}.
{"Number of online users","מספר של משתמשים מקוונים"}.
{"Number of registered users","מספר של משתמשים רשומים"}.
{"October","אוקטובר"}.
{"Offline Messages:","הודעות לא מקוונות:"}.
{"Offline Messages","הודעות לא מקוונות"}.
{"OK","אישור"}.
{"Online Users:","משתמשים מקוונים:"}.
{"Online Users","משתמשים מקוונים"}.
{"Only deliver notifications to available users","מסירת התראות אל משתמשים זמינים בלבד"}.
{"Only moderators and participants are allowed to change the subject in this room","רק אחראים ומשתתפים רשאים לשנות את הנושא בחדר זה"}.
{"Only moderators are allowed to change the subject in this room","רק אחראים רשאים לשנות את הנושא בחדר זה"}.
{"Options","אפשרויות"}.
{"Organization Name","שם ארגון"}.
{"Organization Unit","יחידת איגוד"}.
{"Outgoing s2s Connections:","חיבורי s2s יוצאים:"}.
{"Outgoing s2s Connections","חיבורי s2s יוצאים"}.
{"Outgoing s2s Servers:","שרתי s2s יוצאים:"}.
{"Owner privileges required","נדרשות הרשאות בעלים"}.
{"Password Verification","אימות סיסמה"}.
{"Password:","סיסמה:"}.
{"Password","סיסמה"}.
{"Path to Dir","נתיב אל מדור"}.
{"Path to File","נתיב אל קובץ"}.
{"Period: ","משך זמן: "}.
{"Persist items to storage","פריטים קבועים לאחסון"}.
{"Ping","פינג"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","נא לשים לב שלאפשרויות אלו יגבו את מסד הנתונים המובנה Mnesia בלבד. אם הינך עושה שימוש במודול ODBC, עליך גם לגבות את מסד הנתונים SQL שברשותך לחוד."}.
{"Pong","פונג"}.
{"Port","פורט"}.
{"Present real Jabber IDs to","הצגת כתובות JID ממשיות"}.
{"Protocol","פרוטוקול"}.
{"Publish-Subscribe","Publish-Subscribe"}.
{"PubSub subscriber request","בקשת מנוי PubSub"}.
{"Purge all items when the relevant publisher goes offline","טיהור כל הפריטים כאשר המפרסם הרלוונטי "}.
{"Really delete message of the day?","האם באמת למחוק את הודעת היום?"}.
{"Registered Users:","משתמשים רשומים:"}.
{"Registered Users","משתמשים רשומים"}.
{"Remote copy","עותק מרוחק"}.
{"Remove All Offline Messages","הסרת כל ההודעות הלא מקוונות"}.
{"Remove User","הסרת משתמש"}.
{"Resources","משאבים"}.
{"Restart Service","אתחול שירות"}.
{"Restart","אתחול"}.
{"Restore Backup from File at ","שחזור גיבוי מן קובץ אצל "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","שחזור גיבוי בינארי לאחר האתחול הבא של ejabberd (מצריך פחות זיכרון):"}.
{"Restore binary backup immediately:","שחזור גיבוי בינארי לאלתר:"}.
{"Restore plain text backup immediately:","שחזור גיבוי תמליל גלוי (plain text) לאלתר:"}.
{"Restore","שחזור"}.
{"Room Configuration","תצורת חדר"}.
{"Room description","תיאור חדר"}.
{"Room Occupants","נוכחי חדר"}.
{"Room title","כותרת חדר"}.
{"Roster size","גודל רשימה (Roster)"}.
{"Roster","רשימה"}.
{"RPC Call Error","שגיאת קריאת RPC"}.
{"Running Nodes","ממסרים שמורצים כעת"}.
{"Saturday","יום שבת"}.
{"Search Results for ","תוצאות חיפוש עבור "}.
{"Search users in ","חיפוש משתמשים אצל "}.
{"Send announcement to all online users on all hosts","שליחת מודעות אל כל המשתמשים המקוונים אצל כל המארחים"}.
{"Send announcement to all online users","שליחת מודעות אל כל המשתמשים המקוונים"}.
{"Send announcement to all users on all hosts","שליחת מודעות אל כל המשתמשים אצל כל המארחים"}.
{"Send announcement to all users","שליחת מודעות אל כל המשתמשים"}.
{"September","ספטמבר"}.
{"Set message of the day and send to online users","שליחת הודעת היום ושליחה אל משתמשים מקוונים"}.
{"Set message of the day on all hosts and send to online users","שליחת הודעת היום אצל כל המארחים ושליחה אל משתמשים מקוונים"}.
{"Show Integral Table","הצגת טבלה אינטגרלית"}.
{"Show Ordinary Table","הצגת טבלה רגילה"}.
{"Shut Down Service","שירות כיבוי"}.
{"~s invites you to the room ~s","~s מזמינך אל החדר ~s"}.
{"Specify the access model","נא לציין את מודל הגישה"}.
{"Specify the event message type","נא לציין את סוג הודעת האירוע"}.
{"Specify the publisher model","נא לציין את מודל הפרסום"}.
{"Start Modules","הפעלת מודולים"}.
{"Statistics of ~p","סטטיסטיקות עבור ~p"}.
{"Statistics","סטטיסטיקה"}.
{"Stop Modules","עצירת מודולים"}.
{"Stopped Nodes","ממסרים שנעצרו"}.
{"Storage Type","צורת אחסון"}.
{"Store binary backup:","אחסון גיבוי בינארי:"}.
{"Store plain text backup:","אחסון גיבוי תמליל גלוי (plain text):"}.
{"Subject","נושא"}.
{"Submit","שליחה"}.
{"Subscriber Address","כתובת מנוי"}.
{"Subscription","מִנּוּי"}.
{"Sunday","יום ראשון"}.
{"That nickname is already in use by another occupant","כינוי זה כבר מצוי בשימוש על ידי נוכח אחר"}.
{"That nickname is registered by another person","כינוי זה הינו רשום על ידי מישהו אחר"}.
{"the password is","הסיסמה היא"}.
{"This participant is kicked from the room because he sent an error message to another participant","משתתף זה נבעט מן החדר משום שהוא שלח הודעת שגיאה אל משתתף אחר"}.
{"This participant is kicked from the room because he sent an error message","משתתף זה נבעט מן החדר משום שהוא שלח הודעת שגיאה"}.
{"This participant is kicked from the room because he sent an error presence","משתתף זה נבעט מן החדר משום שהוא שלח נוכחות שגויה"}.
{"This room is not anonymous","חדר זה אינו אנונימי"}.
{"Thursday","יום חמישי"}.
{"Time","זמן"}.
{"To ~s","אל ~s"}.
{"To","אל"}.
{"Traffic rate limit is exceeded","מגבלת שיעור תעבורה נחצתה"}.
{"Tuesday","יום שלישי"}.
{"Unauthorized","לא מורשה"}.
{"Update message of the day (don't send)","עדכון הודעת היום (אל תשלח)"}.
{"Update message of the day on all hosts (don't send)","עדכון הודעת היום אצל כל המארחים (אל תשלח)"}.
{"Uptime:","זמן פעילות:"}.
{"User Management","ניהול משתמשים"}.
{"Users Last Activity","פעילות משתמשים אחרונה"}.
{"Users","משתמשים"}.
{"User ","משתמש"}.
{"User","משתמש"}.
{"Virtual Hosts","מארחים מדומים"}.
{"Visitors are not allowed to change their nicknames in this room","מבקרים אינם מורשים לשנות את כינויַם בחדר זה"}.
{"Visitors are not allowed to send messages to all occupants","מבקרים אינם מורשים לשלוח הודעות אל כל הנוכחים"}.
{"Wednesday","יום רביעי"}.
{"When to send the last published item","מתי לשלוח פריט מפורסם אחרון"}.
{"Whether to allow subscriptions","האם להתיר מנויים"}.
{"You have been banned from this room","נאסרת מן חדר זה"}.
{"You must fill in field \"Nickname\" in the form","עליך למלא את השדה \"כינוי\" בתוך התבנית"}.
{"You need an x:data capable client to configure room","עליך לעשות שימוש בלקוח שביכולתו להבין x:data בכדי להגדיר חדר"}.
{"You need an x:data capable client to search","עליך לעשות שימוש בלקוח שביכולתו להבין x:data בכדי לחפש"}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","הודעותייך אל ~s הינן חסומות. כדי למנוע את חסימתן, נא לבקר ~s"}.
+1953
View File
File diff suppressed because it is too large Load Diff
+3 -4
View File
@@ -120,7 +120,7 @@
{"has been kicked because of a system shutdown","telah dikick karena sistem shutdown"}.
{"has been kicked because the room has been changed to members-only","telah dikick karena ruangan telah diubah menjadi hanya untuk member"}.
{"has been kicked","telah dikick"}.
{" has set the subject to: ","telah menetapkan topik yaitu:"}.
{" has set the subject to: "," telah menetapkan topik yaitu: "}.
{"Host","Host"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Jika Anda tidak melihat gambar CAPTCHA disini, silahkan kunjungi halaman web."}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Jika Anda ingin menentukan port yang berbeda, sandi, pengkodean untuk layanan IRC, isi daftar ini dengan nilai-nilai dalam format '{\"server irc \", \"encoding \", port, \"sandi \"}'. Secara default ini menggunakan layanan \"~s \" pengkodean, port ~p, kata sandi kosong."}.
@@ -168,7 +168,7 @@
{"List of modules to start","Daftar modul untuk memulai"}.
{"Low level update script","Perbaruan naskah tingkat rendah"}.
{"Make participants list public","Buat daftar participant diketahui oleh public"}.
{"Make room captcha protected","Buat ruangan dilindungi dengan chapta"}.
{"Make room CAPTCHA protected","Buat ruangan dilindungi dengan CAPTCHA"}.
{"Make room members-only","Buat ruangan hanya untuk member saja"}.
{"Make room moderated","Buat ruangan hanya untuk moderator saja"}.
{"Make room password protected","Buat ruangan yang dilindungi dengan kata sandi"}.
@@ -338,7 +338,7 @@
{"Sunday","Minggu"}.
{"That nickname is already in use by another occupant","Julukan itu sudah digunakan oleh penghuni lain"}.
{"That nickname is registered by another person","Julukan tersebut telah didaftarkan oleh orang lain"}.
{"The captcha is valid.","Captcha ini benar."}.
{"The CAPTCHA is valid.","Captcha ini benar."}.
{"The CAPTCHA verification has failed","Verifikasi CAPTCHA telah gagal"}.
{"The collections with which a node is affiliated","Koleksi dengan yang berafiliasi dengan sebuah node"}.
{"the password is","kata sandi yaitu:"}.
@@ -365,7 +365,6 @@
{"Transactions Logged:","Transaksi yang ditempuh:"}.
{"Transactions Restarted:","Transaksi yang dijalankan ulang:"}.
{"Tuesday","Selasa"}.
{"Unable to generate a captcha","Tidak dapat menghasilkan captcha"}.
{"Unable to generate a CAPTCHA","Tidak dapat menghasilkan CAPTCHA"}.
{"Unauthorized","Ditolak"}.
{"Unregister a Jabber account","Nonaktifkan akun jabber"}.
File diff suppressed because it is too large Load Diff
+48 -3
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Consentire agli utenti l'invio di inviti"}.
{"Allow users to send private messages","Consentire agli utenti l'invio di messaggi privati"}.
{"Allow visitors to change nickname","Consentire ai visitatori di cambiare il nickname"}.
{"Allow visitors to send private messages to","Consentire agli ospiti l'invio di messaggi privati a"}.
{"Allow visitors to send status text in presence updates","Consentire ai visitatori l'invio di testo sullo stato in aggiornamenti sulla presenza"}.
{"Allow visitors to send voice requests","Consentire agli ospiti l'invio di richieste di parola"}.
{"All Users","Tutti gli utenti"}.
{"Announcements","Annunci"}.
{"anyone","tutti"}.
@@ -33,8 +35,10 @@
{"Backup to File at ","Salvataggio sul file "}.
{"Bad format","Formato non valido"}.
{"Birthday","Compleanno"}.
{"CAPTCHA web page","Pagina web CAPTCHA"}.
{"Change Password","Modificare la password"}.
{"Change User Password","Cambiare la password dell'utente"}.
{"Characters not allowed:","Caratteri non consentiti:"}.
{"Chatroom configuration modified","Configurazione della stanza modificata"}.
{"Chatroom is created","La stanza è creata"}.
{"Chatroom is destroyed","La stanza è eliminata"}.
@@ -69,9 +73,11 @@
{"Description:","Descrizione:"}.
{"Disc only copy","Copia su disco soltanto"}.
{"Displayed Groups:","Gruppi visualizzati:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Non comunicare la tua password a nessuno, neppure agli amministratori del server Jabber."}.
{"Dump Backup to Text File at ","Trascrivere il salvataggio sul file di testo "}.
{"Dump to Text File","Trascrivere su file di testo"}.
{"Edit Properties","Modificare le proprietà"}.
{"Either approve or decline the voice request.","Approva oppure respingi la richiesta di parola."}.
{"ejabberd IRC module","Modulo IRC per ejabberd"}.
{"ejabberd MUC module","Modulo MUC per ejabberd"}.
{"ejabberd Publish-Subscribe module","Modulo Pubblicazione/Iscrizione (PubSub) per ejabberd"}.
@@ -95,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","Errore"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Esempio: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"segreto\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.serverdiprova.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Escludi degli ID Jabber dal passaggio CAPTCHA"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Esportare i dati di tutti gli utenti nel server in file PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Esportare i dati degli utenti di un host in file PIEFXIS (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Impossibile estrarre il JID dall'approvazione della richiesta di parola"}.
{"Family Name","Cognome"}.
{"February","Febbraio"}.
{"Fill in fields to search for any matching Jabber User","Riempire i campi per la ricerca di utenti Jabber corrispondenti ai criteri"}.
@@ -110,6 +118,7 @@
{"Get User Last Login Time","Ottenere la data di ultimo accesso dell'utente"}.
{"Get User Password","Ottenere la password dell'utente"}.
{"Get User Statistics","Ottenere le statistiche dell'utente"}.
{"Grant voice to this person?","Dare parola a questa persona?"}.
{"Group ","Gruppo "}.
{"Groups","Gruppi"}.
{"has been banned","è stata/o bandita/o"}.
@@ -119,6 +128,7 @@
{"has been kicked","è stata/o espulsa/o"}.
{" has set the subject to: "," ha modificato l'oggetto in: "}.
{"Host","Host"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Se qui non vedi l'immagine CAPTCHA, visita la pagina web."}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Se si vogliono specificare differenti porte, password, codifiche per i server IRC, si riempia questo elenco con valori nel formato '{\"server IRC\", \"codifica\", porta, \"password\"}'. Per default questo servizio utilizza la codifica \"~s\", la porta ~p, la password vuota."}.
{"Import Directory","Importare una directory"}.
{"Import File","Importare un file"}.
@@ -144,6 +154,7 @@
{"It is not allowed to send private messages","Non è consentito l'invio di messaggi privati"}.
{"It is not allowed to send private messages of type \"groupchat\"","Non è consentito l'invio di messaggi privati di tipo \"groupchat\""}.
{"It is not allowed to send private messages to the conference","Non è consentito l'invio di messaggi privati alla conferenza"}.
{"Jabber Account Registration","Registrazione account Jabber"}.
{"Jabber ID","Jabber ID (Jabber ID)"}.
{"Jabber ID ~s is invalid","Il Jabber ID ~s non è valido"}.
{"January","Gennaio"}.
@@ -163,7 +174,7 @@
{"List of modules to start","Elenco dei moduli da avviare"}.
{"Low level update script","Script di aggiornamento di basso livello"}.
{"Make participants list public","Rendere pubblica la lista dei partecipanti"}.
{"Make room captcha protected","Rendere la stanza protetta da captcha"}.
{"Make room CAPTCHA protected","Rendere la stanza protetta da CAPTCHA"}.
{"Make room members-only","Rendere la stanza riservata ai membri"}.
{"Make room moderated","Rendere la stanza moderata"}.
{"Make room password protected","Rendere la stanza protetta da password"}.
@@ -176,9 +187,11 @@
{"May","Maggio"}.
{"Membership is required to enter this room","Per entrare in questa stanza è necessario essere membro"}.
{"Members:","Membri:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Memorizza la password, o scrivila su un foglio di carta da conservare in un luogo sicuro. Jabber non prevede una modalità automatica per il recupero di una password dimenticata."}.
{"Memory","Memoria"}.
{"Message body","Corpo del messaggio"}.
{"Middle Name","Altro nome"}.
{"Minimum interval between voice requests (in seconds)","Intervallo minimo fra due richieste di parola (in secondi)"}.
{"Moderator privileges required","Necessari i privilegi di moderatore"}.
{"moderators only","moderatori soltanto"}.
{"Modified modules","Moduli modificati"}.
@@ -189,9 +202,11 @@
{"Name:","Nome:"}.
{"Name","Nome"}.
{"Never","Mai"}.
{"New Password:","Nuova password:"}.
{"Nickname","Nickname"}.
{"Nickname Registration at ","Registrazione di un nickname su "}.
{"Nickname ~s does not exist in the room","Il nickname ~s non esiste nella stanza"}.
{"nobody","nessuno"}.
{"No body provided for announce message","Nessun corpo fornito per il messaggio di annuncio"}.
{"No Data","Nessuna informazione"}.
{"Node ID","ID del nodo"}.
@@ -213,12 +228,14 @@
{"Offline Messages:","Messaggi offline:"}.
{"Offline Messages","Messaggi offline"}.
{"OK","OK"}.
{"Old Password:","Vecchia password:"}.
{"Online","Online"}.
{"Online Users:","Utenti connessi:"}.
{"Online Users","Utenti online"}.
{"Only deliver notifications to available users","Inviare le notifiche solamente agli utenti disponibili"}.
{"Only moderators and participants are allowed to change the subject in this room","La modifica dell'oggetto di questa stanza è consentita soltanto ai moderatori e ai partecipanti"}.
{"Only moderators are allowed to change the subject in this room","La modifica dell'oggetto di questa stanza è consentita soltanto ai moderatori"}.
{"Only moderators can approve voice requests","Soltanto i moderatori possono approvare richieste di parola"}.
{"Only occupants are allowed to send messages to the conference","L'invio di messaggi alla conferenza è consentito soltanto ai presenti"}.
{"Only occupants are allowed to send queries to the conference","L'invio di query alla conferenza è consentito ai soli presenti"}.
{"Only service administrators are allowed to send service messages","L'invio di messaggi di servizio è consentito solamente agli amministratori del servizio"}.
@@ -233,6 +250,7 @@
{"Password ~b","Password ~b"}.
{"Password:","Password:"}.
{"Password","Password"}.
{"Password Verification:","Verifica della password:"}.
{"Password Verification","Verifica della password"}.
{"Path to Dir","Percorso della directory"}.
{"Path to File","Percorso del file"}.
@@ -241,6 +259,7 @@
{"Persist items to storage","Conservazione persistente degli elementi"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","N.B.: Queste opzioni comportano il salvataggio solamente del database interno Mnesia. Se si sta utilizzando il modulo ODBC, è necessario salvare anche il proprio database SQL separatamente."}.
{"Please, wait for a while before sending new voice request","Attendi qualche istante prima di inviare una nuova richiesta di parola"}.
{"Pong","Pong"}.
{"Port ~b","Porta ~b"}.
{"Port","Porta"}.
@@ -256,8 +275,10 @@
{"Raw","Grezzo"}.
{"Really delete message of the day?","Si conferma l'eliminazione del messaggio del giorno (MOTD)?"}.
{"Recipient is not in the conference room","Il destinatario non è nella stanza per conferenze"}.
{"Register a Jabber account","Registra un account Jabber"}.
{"Registered Users:","Utenti registrati:"}.
{"Registered Users","Utenti registrati"}.
{"Register","Registra"}.
{"Registration in mod_irc for ","Registrazione in mod_irc per "}.
{"Remote copy","Copia remota"}.
{"Remove All Offline Messages","Eliminare tutti i messaggi offline"}.
@@ -294,6 +315,7 @@
{"Send announcement to all users on all hosts","Inviare l'annuncio a tutti gli utenti su tutti gli host"}.
{"September","Settembre"}.
{"Server ~b","Server ~b"}.
{"Server:","Server:"}.
{"Set message of the day and send to online users","Impostare il messaggio del giorno (MOTD) ed inviarlo agli utenti online"}.
{"Set message of the day on all hosts and send to online users","Impostare il messaggio del giorno (MOTD) su tutti gli host e inviarlo agli utenti online"}.
{"Shared Roster Groups","Gruppi di liste di contatti comuni"}.
@@ -301,6 +323,7 @@
{"Show Ordinary Table","Mostrare la tabella normale"}.
{"Shut Down Service","Terminare il servizio"}.
{"~s invites you to the room ~s","~s ti invita nella stanza ~s"}.
{"Some Jabber clients can store your password in your computer. Use that feature only if you trust your computer is safe.","Alcuni client Jabber possono conservare la password nel tuo computer. Utilizza tale funzione soltanto se ritieni che il tuo computer sia sicuro."}.
{"Specify the access model","Specificare il modello di accesso"}.
{"Specify the event message type","Specificare il tipo di messaggio di evento"}.
{"Specify the publisher model","Definire il modello di pubblicazione"}.
@@ -325,9 +348,18 @@
{"Sunday","Domenica"}.
{"That nickname is already in use by another occupant","Il nickname è già in uso all'interno della conferenza"}.
{"That nickname is registered by another person","Questo nickname è registrato da un'altra persona"}.
{"The captcha is valid.","Il captcha è valido."}.
{"The CAPTCHA is valid.","Il CAPTCHA è valido."}.
{"The CAPTCHA verification has failed","La verifica del CAPTCHA ha avuto esito negativo"}.
{"The collections with which a node is affiliated","Le collezioni a cui è affiliato un nodo"}.
{"the password is","la password è"}.
{"The password is too weak","La password è troppo debole"}.
{"The password of your Jabber account was successfully changed.","Il cambio di password del tuo account Jabber è andato a buon fine."}.
{"There was an error changing the password: ","Si è verificato un errore nel cambio di password: "}.
{"There was an error creating the account: ","Si è verificato un errore nella creazione dell'account: "}.
{"There was an error deleting the account: ","Si è verificato un errore nella cancellazione dell'account: "}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Non fa differenza fra minuscolo e maiuscolo: macbeth, MacBeth e Macbeth si equivalgono."}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Questa pagina consente di creare un account Jabber in questo server Jabber. Il tuo JID (Jabber IDentifier) avrà la forma: nome_utente@server. Leggi attentamente le istruzioni per compilare i campi correttamente."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Questa pagina consente di eliminare un account Jabber da questo server Jabber."}.
{"This participant is kicked from the room because he sent an error message","Partecipante espulso dalla stanza perché ha inviato un messaggio non valido"}.
{"This participant is kicked from the room because he sent an error message to another participant","Partecipante espulso dalla stanza perché ha inviato un messaggio non valido a un altro partecipante"}.
{"This participant is kicked from the room because he sent an error presence","Partecipante espulso dalla stanza perché ha inviato una presenza non valido"}.
@@ -336,6 +368,7 @@
{"Time delay","Ritardo"}.
{"Time","Ora"}.
{"To","A"}.
{"Too many CAPTCHA requests","Troppe richieste CAPTCHA"}.
{"To ~s","A ~s"}.
{"Traffic rate limit is exceeded","Limite di traffico superato"}.
{"Transactions Aborted:","Transazioni abortite:"}.
@@ -343,8 +376,10 @@
{"Transactions Logged:","Transazioni con log:"}.
{"Transactions Restarted:","Transazioni riavviate:"}.
{"Tuesday","Martedì"}.
{"Unable to generate a captcha","Impossibile generare un captcha"}.
{"Unable to generate a CAPTCHA","Impossibile generare un CAPTCHA"}.
{"Unauthorized","Non autorizzato"}.
{"Unregister a Jabber account","Elimina un account Jabber"}.
{"Unregister","Elimina"}.
{"Update ","Aggiornare "}.
{"Update","Aggiornare"}.
{"Update message of the day (don't send)","Aggiornare il messaggio del giorno (MOTD) (non inviarlo)"}.
@@ -353,7 +388,9 @@
{"Update script","Script di aggiornamento"}.
{"Uptime:","Tempo dall'avvio:"}.
{"Use of STARTTLS required","Utilizzo di STARTTLS obbligatorio"}.
{"User JID","JID utente"}.
{"User Management","Gestione degli utenti"}.
{"Username:","Nome utente:"}.
{"Users are not allowed to register accounts so quickly","Non è consentito agli utenti registrare account così rapidamente"}.
{"Users Last Activity","Ultima attività degli utenti"}.
{"Users","Utenti"}.
@@ -364,13 +401,21 @@
{"Virtual Hosts","Host Virtuali"}.
{"Visitors are not allowed to change their nicknames in this room","Non è consentito ai visitatori cambiare il nickname in questa stanza"}.
{"Visitors are not allowed to send messages to all occupants","Non è consentito ai visitatori l'invio di messaggi a tutti i presenti"}.
{"Voice request","Richiesta di parola"}.
{"Voice requests are disabled in this conference","In questa conferenza le richieste di parola sono escluse"}.
{"Wednesday","Mercoledì"}.
{"When to send the last published item","Quando inviare l'ultimo elemento pubblicato"}.
{"Whether to allow subscriptions","Consentire iscrizioni?"}.
{"You can later change your password using a Jabber client.","Potrai in seguito cambiare la password utilizzando un client Jabber."}.
{"You have been banned from this room","Sei stata/o bandita/o da questa stanza"}.
{"You must fill in field \"Nickname\" in the form","Si deve riempire il campo \"Nickname\" nel modulo"}.
{"You need a client that supports x:data and CAPTCHA to register","La registrazione richiede un client che supporti x:data e CAPTCHA"}.
{"You need a client that supports x:data to register the nickname","Per registrare il nickname è necessario un client che supporti x:data"}.
{"You need an x:data capable client to configure mod_irc settings","Per la configurazione del modulo IRC è necessario un client che supporti x:data"}.
{"You need an x:data capable client to configure room","Per la configurazione della stanza è necessario un client che supporti x:data"}.
{"You need an x:data capable client to search","Per effettuare ricerche è necessario un client che supporti x:data"}.
{"Your active privacy list has denied the routing of this stanza.","In base alla tua attuale lista privacy questa stanza è stata esclusa dalla navigazione."}.
{"Your contact offline message queue is full. The message has been discarded.","La coda dei messaggi offline del contatto è piena. Il messaggio è stato scartato"}.
{"Your Jabber account was successfully created.","La creazione del tuo account Jabber è andata a buon fine."}.
{"Your Jabber account was successfully deleted.","La cancellazione del tuo account Jabber è andata a buon fine."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","I messaggi verso ~s sono bloccati. Per sbloccarli, visitare ~s"}.
File diff suppressed because it is too large Load Diff
+89 -76
View File
@@ -15,16 +15,18 @@
{"A friendly name for the node","ノードのフレンドリネーム"}.
{"All activity","すべて"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","この Jabber ID に、この pubsubノードの購読を許可しますか ?"}.
{"Allow users to change the subject","ユーザーによる件名の変更を許可"}.
{"Allow users to change the subject","ユーザーによるの変更を許可"}.
{"Allow users to query other users","ユーザーによる他のユーザーへのクエリーを許可"}.
{"Allow users to send invites","ユーザーによる招待を許可"}.
{"Allow users to send private messages","ユーザーによるプライベートメッセージの送信を許可"}.
{"Allow visitors to change nickname","ビジターのニックネームの変更を許可"}.
{"Allow visitors to send status text in presence updates","ビジターによるプレゼンス更新のステータス文の送信を許可"}.
{"Allow visitors to change nickname","傍聴者のニックネームの変更を許可"}.
{"Allow visitors to send private messages to","傍聴者によるプライベートメッセージの送信を次の相手に許可"}.
{"Allow visitors to send status text in presence updates","傍聴者によるプレゼンス更新のステータス文の送信を許可"}.
{"Allow visitors to send voice requests","傍聴者による発言権の要求を許可"}.
{"All Users","全ユーザー"}.
{"Announcements","アナウンス"}.
{"anyone","誰でも"}.
{"A password is required to enter this room","チャットルームに入るにはパスワードが必要です"}.
{"anyone","誰でも"}.
{"A password is required to enter this room","この談話室に入るにはパスワードが必要です"}.
{"April","4月"}.
{"August","8月"}.
{"Backup","バックアップ"}.
@@ -33,27 +35,27 @@
{"Backup to File at ","ファイルにバックアップ: "}.
{"Bad format","不正なフォーマット"}.
{"Birthday","誕生日"}.
{"CAPTCHA web page","CAPTCHA web ページ"}.
{"CAPTCHA web page","CAPTCHA ウェブページ"}.
{"Change Password","パスワードを変更"}.
{"Change User Password","パスワードを変更"}.
{"Characters not allowed:","使用できない文字:"}.
{"Chatroom configuration modified","チャットルームの設定が変更されました"}.
{"Chatroom is created","チャットルームを作りました"}.
{"Chatroom is destroyed","チャットルームを削除しました"}.
{"Chatroom is started","チャットルームを開始しました"}.
{"Chatroom is stopped","チャットルームを停止しました"}.
{"Chatrooms","チャットルーム"}.
{"Chatroom configuration modified","談話室の設定が変更されました"}.
{"Chatroom is created","談話室を作りました"}.
{"Chatroom is destroyed","談話室を削除しました"}.
{"Chatroom is started","談話室を開始しました"}.
{"Chatroom is stopped","談話室を停止しました"}.
{"Chatrooms","談話室"}.
{"Choose a username and password to register with this server","サーバーに登録するユーザー名とパスワードを選択してください"}.
{"Choose modules to stop","停止するモジュールを選択"}.
{"Choose storage type of tables","テーブルのストレージタイプを選択"}.
{"Choose whether to approve this entity's subscription.","このエントリを承認するかどうかを選択してください"}.
{"City","都道府県"}.
{"Commands","コマンド"}.
{"Conference room does not exist","カンファレンスルームは存在しません"}.
{"Configuration of room ~s","チャットルーム ~s の設定"}.
{"Conference room does not exist","会議室は存在しません"}.
{"Configuration of room ~s","談話室 ~s の設定"}.
{"Configuration","設定"}.
{"Connected Resources:","接続リソース:"}.
{"Connections parameters","接続パラメータ"}.
{"Connections parameters","接続パラメータ"}.
{"Country","国"}.
{"CPU Time:","CPU時間:"}.
{"Database","データーベース"}.
@@ -75,12 +77,13 @@
{"Dump Backup to Text File at ","テキストファイルにバックアップ: "}.
{"Dump to Text File","テキストファイルに出力"}.
{"Edit Properties","プロパティを編集"}.
{"Either approve or decline the voice request.","発言権の要求を承認または却下します。"}.
{"ejabberd IRC module","ejabberd IRC module"}.
{"ejabberd MUC module","ejabberd MUC module"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe module"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}.
{"ejabberd vCard module","ejabberd vCard module"}.
{"ejabberd Web Admin","ejabberd Web 管理"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe モジュール"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams モジュール"}.
{"ejabberd vCard module","ejabberd vCard モジュール"}.
{"ejabberd Web Admin","ejabberd ウェブ管理"}.
{"Elements","要素"}.
{"Email","メールアドレス"}.
{"Enable logging","ロギングを有効"}.
@@ -98,12 +101,14 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","エラー"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","例: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","CAPTCHA 試験を免除する Jabber ID"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","サーバーにあるすべてのユーザーデータを PIEFXIS ファイルにエクスポート (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","ホストのユーザーデータを PIEFXIS ファイルにエクスポート (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","発言権要求の承認から JID を取り出すことに失敗しました"}.
{"Family Name","姓"}.
{"February","2月"}.
{"Fill in fields to search for any matching Jabber User","項目を埋めて Jabber User を検索してください"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","フォームを埋めて Jabber User を検索してさい(* を使用すると部分文字列にマッチします)"}.
{"Fill in fields to search for any matching Jabber User","を埋めて Jabber User を検索してください"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","を埋めて Jabber User を検索してください (* を使用すると部分文字列にマッチします)"}.
{"Friday","金曜日"}.
{"From ~s","差出人 ~s"}.
{"From","差出人"}.
@@ -113,16 +118,17 @@
{"Get User Last Login Time","最終ログイン時間を取得"}.
{"Get User Password","パスワードを取得"}.
{"Get User Statistics","ユーザー統計を取得"}.
{"Grant voice to this person?","この人に発言権を与えますか ?"}.
{"Group ","グループ"}.
{"Groups","グループ"}.
{"has been banned","はバンされました"}.
{"has been kicked","はキックされました"}.
{"has been kicked because of an affiliation change","は分掌が変更されたためキックされました"}.
{"has been kicked because of a system shutdown","はシステムシャットダウンのためキックされました"}.
{"has been kicked because the room has been changed to members-only","はチャットルームのメンバーのみに変更されたためキックされました"}.
{" has set the subject to: "," は件名を設定しました: "}.
{"has been kicked because the room has been changed to members-only","は談話室がメンバーに変更されたためキックされました"}.
{" has set the subject to: "," はを設定しました: "}.
{"Host","ホスト"}.
{"If you don't see the CAPTCHA image here, visit the web page.","ここに CAPTCHA 画像が表示されない場合、web ページを参照してください。"}.
{"If you don't see the CAPTCHA image here, visit the web page.","ここに CAPTCHA 画像が表示されない場合、ウェブページを参照してください。"}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","別のポートやパスワード、文字エンコーディングを使用したい場合、'{\"irc server\", \"encoding\", port, \"password\"}' という形式のリストを入力してください。デフォルトでエンコーディングは \"~s\" を使用し、ポートは ~p、パスワードは空になっています。"}.
{"Import Directory","ディレクトリインポート"}.
{"Import File","ファイルからインポート"}.
@@ -136,7 +142,7 @@
{"Incorrect password","パスワードが違います"}.
{"Invalid affiliation: ~s","無効な分掌です: ~s"}.
{"Invalid role: ~s","無効な役です: ~s"}.
{"IP addresses","IPアドレス"}.
{"IP addresses","IP アドレス"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","IRC チャンネル (先頭に#は不要)"}.
{"IRC server","IRC サーバー"}.
@@ -146,14 +152,14 @@
{"IRC Username","IRC ユーザー名"}.
{"is now known as","は名前を変更しました: "}.
{"It is not allowed to send private messages of type \"groupchat\"","種別が\"groupchat\" であるプライベートメッセージを送信することはできません"}.
{"It is not allowed to send private messages to the conference","カンファレンスルームにプライベートメッセージを送信することはできません"}.
{"It is not allowed to send private messages to the conference","この会議にプライベートメッセージを送信することはできません"}.
{"It is not allowed to send private messages","プライベートメッセージを送信することはできません"}.
{"Jabber Account Registration","Jabber アカウント登録"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","Jabber ID ~s は無効です"}.
{"January","1月"}.
{"Join IRC channel","IRC チャンネルに参加"}.
{"joins the room","がチャットルームに参加しました"}.
{"joins the room","が談話室に参加しました"}.
{"Join the IRC channel here.","この IRC チャンネルに参加します。"}.
{"Join the IRC channel in this Jabber ID: ~s","Jabber ID: ~s でこの IRC チャンネルに参加"}.
{"July","7月"}.
@@ -162,31 +168,32 @@
{"Last login","最終ログイン"}.
{"Last month","先月"}.
{"Last year","去年"}.
{"leaves the room","がチャットルームから退出しました"}.
{"leaves the room","が談話室から退出しました"}.
{"Listened Ports at ","Listen ポート "}.
{"Listened Ports","Listenポート"}.
{"Listened Ports","Listen ポート"}.
{"List of modules to start","起動モジュールの一覧"}.
{"Low level update script","低レベル更新スクリプト"}.
{"Make participants list public","参加者一覧を公開"}.
{"Make room captcha protected","チャットルームを CAPTCHA で保護"}.
{"Make room members-only","チャットルームをメンバーのみに制限"}.
{"Make room moderated","チャットルームをモデレート化"}.
{"Make room password protected","チャットルームにパスワードを設定"}.
{"Make room persistent","チャットルームを永続化"}.
{"Make room public searchable","チャットルームを検索可"}.
{"Make room CAPTCHA protected","談話室を CAPTCHA で保護"}.
{"Make room members-only","談話室をメンバーのみに制限"}.
{"Make room moderated","談話室をモデレート化"}.
{"Make room password protected","談話室をパスワードで保護"}.
{"Make room persistent","談話室を永続化"}.
{"Make room public searchable","談話室を検索可"}.
{"March","3月"}.
{"Maximum Number of Occupants","最大在室者数"}.
{"Max # of items to persist","アイテムの最大保存数"}.
{"Max payload size in bytes","最大ぺイロードサイズ (byte)"}.
{"May","5月"}.
{"Members:","メンバー:"}.
{"Membership is required to enter this room","チャットルームに入るにはメンバーでなければなりません"}.
{"Membership is required to enter this room","この談話室に入るにはメンバーでなければなりません"}.
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","パスワードは記憶するか、紙に書いて安全な場所に保管してください。もしあなたがパスワードを忘れてしまった場合、Jabber ではパスワードのリカバリを自動的に行うことはできません。"}.
{"Memory","メモリ"}.
{"Message body","本文"}.
{"Middle Name","ミドルネーム"}.
{"Minimum interval between voice requests (in seconds)","発言権の要求の最小時間間隔 (秒)"}.
{"Moderator privileges required","モデレーター権限が必要です"}.
{"moderators only","モデレーターのみ"}.
{"moderators only","モデレーターのみ"}.
{"Modified modules","変更されたモジュール"}.
{"Module","モジュール"}.
{"Modules","モジュール"}.
@@ -198,8 +205,9 @@
{"New Password:","新しいパスワード:"}.
{"Nickname","ニックネーム"}.
{"Nickname Registration at ","ニックネーム登録: "}.
{"Nickname ~s does not exist in the room","ニックネーム ~s はこのチャットルームにいません"}.
{"Nickname ~s does not exist in the room","ニックネーム ~s はこの談話室にいません"}.
{"No body provided for announce message","アナウンスメッセージはありませんでした"}.
{"nobody","誰にも許可しない"}.
{"No Data","データなし"}.
{"Node ","ノード "}.
{"Node ID","ノードID"}.
@@ -225,10 +233,11 @@
{"Online Users:","オンラインユーザー:"}.
{"Online Users","オンラインユーザー"}.
{"Only deliver notifications to available users","有効なユーザーにのみ告知を送信する"}.
{"Only moderators and participants are allowed to change the subject in this room","モデレーターと参加者のみがチャットルームの件名を変更できます"}.
{"Only moderators are allowed to change the subject in this room","モデレーターのみがチャットルームの件名を変更できます"}.
{"Only occupants are allowed to send messages to the conference","在室者のみがカンファレンスにメッセージを送ることができます"}.
{"Only occupants are allowed to send queries to the conference","在室者のみがカンファレンスにクエリーを送信することができます"}.
{"Only moderators and participants are allowed to change the subject in this room","モデレーターと参加者のみが談話室の題を変更できます"}.
{"Only moderators are allowed to change the subject in this room","モデレーターのみが談話室の題を変更できます"}.
{"Only moderators can approve voice requests","モデレーターだけが発言権の要求を承認できます"}.
{"Only occupants are allowed to send messages to the conference","在室者のみがこの会議にメッセージを送ることができます"}.
{"Only occupants are allowed to send queries to the conference","在室者のみが会議にクエリーを送信することができます"}.
{"Only service administrators are allowed to send service messages","サービス管理者のみがサービスメッセージを送信できます"}.
{"Options","オプション"}.
{"Organization Name","会社名"}.
@@ -236,7 +245,7 @@
{"Outgoing s2s Connections:","外向き s2s コネクション:"}.
{"Outgoing s2s Connections","外向き s2s コネクション"}.
{"Outgoing s2s Servers:","外向き s2s サービス:"}.
{"Owner privileges required","オーナー権限が必要です"}.
{"Owner privileges required","主宰者の権限が必要です"}.
{"Packet","パケット"}.
{"Password:","パスワード"}.
{"Password","パスワード"}.
@@ -250,6 +259,7 @@
{"Persist items to storage","アイテムをストレージに保存する"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","これらのオプションは組み込みの Mnesia データーベースのバックアップのみを行うことに注意してください。もし ODBC モジュールを使用している場合は、SQL データーベースのバックアップを別に行う必要があります。"}.
{"Please, wait for a while before sending new voice request","新しい発言権の要求を送るまで少し間をおいてください"}.
{"Pong","Pong"}.
{"Port","ポート"}.
{"Port ~b","ポート ~b"}.
@@ -259,12 +269,12 @@
{"Publish-Subscribe","Publish-Subscribe"}.
{"PubSub subscriber request","PubSub 購読者のリクエスト"}.
{"Purge all items when the relevant publisher goes offline","公開者がオフラインになるときに、すべてのアイテムを削除"}.
{"Queries to the conference members are not allowed in this room","このチャットルームでは、カンファレンスメンバーへのクエリーは禁止されています"}.
{"Queries to the conference members are not allowed in this room","この談話室では、会議のメンバーへのクエリーは禁止されています"}.
{"RAM and disc copy","RAM, ディスクコピー"}.
{"RAM copy","RAMコピー"}.
{"RAM copy","RAM コピー"}.
{"Raw","Raw"}.
{"Really delete message of the day?","本当にお知らせメッセージを削除しますか ?"}.
{"Recipient is not in the conference room","受信者がカンファレンスルームにいません"}.
{"Recipient is not in the conference room","受信者はこの会議室にいません"}.
{"Register a Jabber account","Jabber アカウントを登録"}.
{"Registered Users:","登録ユーザー:"}.
{"Registered Users","登録ユーザー"}.
@@ -283,11 +293,11 @@
{"Restore binary backup after next ejabberd restart (requires less memory):","ejabberd の再起動時にバイナリバックアップからリストア (メモリ少):"}.
{"Restore binary backup immediately:","直ちにバイナリバックアップからリストア:"}.
{"Restore plain text backup immediately:","直ちにプレーンテキストバックアップからリストア:"}.
{"Room Configuration","チャットルーム設定"}.
{"Room creation is denied by service policy","サービスポリシーによってチャットルームの作成が禁止されています"}.
{"Room description","チャットルームの説明"}.
{"Room Occupants","在室者の数"}.
{"Room title","チャットルームタイトル"}.
{"Room Configuration","談話室の設定"}.
{"Room creation is denied by service policy","サービスポリシーによって談話室の作成が禁止されています"}.
{"Room description","談話室の説明"}.
{"Room Occupants","在室者"}.
{"Room title","談話室のタイトル"}.
{"Roster groups allowed to subscribe","名簿グループは購読を許可しました"}.
{"Roster of ","名簿: "}.
{"Roster size","名簿サイズ"}.
@@ -309,11 +319,11 @@
{"Set message of the day and send to online users","お知らせメッセージを設定し、オンラインユーザーに送信"}.
{"Set message of the day on all hosts and send to online users","全ホストのお知らせメッセージを設定し、オンラインユーザーに送信"}.
{"Shared Roster Groups","共有名簿グループ"}.
{"Show Integral Table","Integral テーブルを表示"}.
{"Show Ordinary Table","Ordinary テーブルを表示"}.
{"Show Integral Table","累積の表を表示"}.
{"Show Ordinary Table","通常の表を表示"}.
{"Shut Down Service","サービスを停止"}.
{"~s invites you to the room ~s","~s はあなたをチャットルーム ~s に招待しています"}.
{"Some Jabber clients can store your password in your computer. Use that feature only if you trust your computer is safe.","Jabber クライアントはコンピューターにあなたのパスワードを記憶できます。この機能を使用する場合、コンピューターが安全であることを確認してください。"}.
{"~s invites you to the room ~s","~s はあなたを談話室 ~s に招待しています"}.
{"Some Jabber clients can store your password in your computer. Use that feature only if you trust your computer is safe.","Jabber クライアントはコンピューターにパスワードを記憶できます。コンピューターが安全であると信頼できる場合にのみ、この機能を使用してください。"}.
{"Specify the access model","アクセスモデルを設定する"}.
{"Specify the event message type","イベントメッセージ種別を設定"}.
{"Specify the publisher model","公開モデルを指定する"}.
@@ -330,15 +340,15 @@
{"Storage Type","ストレージタイプ"}.
{"Store binary backup:","バイナリバックアップを保存:"}.
{"Store plain text backup:","プレーンテキストバックアップを保存:"}.
{"Subject","件名"}.
{"Subject",""}.
{"Submitted","送信完了"}.
{"Submit","送信"}.
{"Subscriber Address","購読者のアドレス"}.
{"Subscription","認可"}.
{"Sunday","日曜日"}.
{"That nickname is already in use by another occupant","ニックネームは既にほかの在室者によって使用されています"}.
{"That nickname is already in use by another occupant","そのニックネームは既にほかの在室者によって使用されています"}.
{"That nickname is registered by another person","ニックネームはほかの人によって登録されています"}.
{"The captcha is valid.","CAPTCHA は有効です。"}.
{"The CAPTCHA is valid.","CAPTCHA は有効です。"}.
{"The CAPTCHA verification has failed","CAPTCHA 検証は失敗しました"}.
{"The collections with which a node is affiliated","提携されたノードの集合です"}.
{"the password is","パスワードは"}.
@@ -348,15 +358,16 @@
{"There was an error creating the account: ","アカウントの作成中にエラーが発生しました: "}.
{"There was an error deleting the account: ","アカウントの削除中にエラーが発生しました: "}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","大文字と小文字は区別しません: macbeth は MacBeth や Macbeth と同じです。"}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","ここは Jabber サーバーにアカウントを作成するページです。あなたの JID (JabberID) は username@server のような形式になります。注意事項どおり、正しく項目を記入してください。"}.
{"This page allows to unregister a Jabber account in this Jabber server.","ここはサーバーの Jabber アカウント削除を行うページです。"}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","ここはこの Jabber サーバーにアカウントを作成するページです。あなたの JID (JabberID) は username@server のような形式になります。注意事項どおり、正しく項目を記入してください。"}.
{"This page allows to unregister a Jabber account in this Jabber server.","ここはの Jabber サーバーのアカウント削除するページです。"}.
{"This participant is kicked from the room because he sent an error message to another participant","他の参加者にエラーメッセージを送信したため、この参加者はキックされました"}.
{"This participant is kicked from the room because he sent an error message","エラーメッセージを送信したため、この参加者はキックされました"}.
{"This participant is kicked from the room because he sent an error presence","エラープレゼンスを送信したため、この参加者はキックされました"}.
{"This room is not anonymous","このチャットルームは非匿名です"}.
{"This room is not anonymous","この談話室は非匿名です"}.
{"Thursday","木曜日"}.
{"Time delay","遅延時間"}.
{"Time","時間"}.
{"Too many CAPTCHA requests","CAPTCHA 要求が多すぎます"}.
{"To ~s","宛先 ~s"}.
{"To","宛先"}.
{"Traffic rate limit is exceeded","トラフィックレートの制限を超えました"}.
@@ -365,8 +376,7 @@
{"Transactions Logged:","トランザクションのログ: "}.
{"Transactions Restarted:","トランザクションの再起動:"}.
{"Tuesday","火曜日"}.
{"Unable to generate a captcha","CAPTCHA を生成することができません"}.
{"Unable to generate a CAPTCHA","CAPTCHA を生成できませんでした"}.
{"Unable to generate a CAPTCHA","CAPTCHA を生成できません"}.
{"Unauthorized","認証されていません"}.
{"Unregister a Jabber account","Jabber アカウントを削除"}.
{"Unregister","削除"}.
@@ -380,29 +390,32 @@
{"Use of STARTTLS required","STARTTLS の使用が必要です"}.
{"User ","ユーザー "}.
{"User","ユーザー"}.
{"User JID","ユーザー JID"}.
{"User Management","ユーザー管理"}.
{"Username:","ユーザー名:"}.
{"Users","ユーザー"}.
{"Users are not allowed to register accounts so quickly","早すぎるユーザーアカウント登録は許可されていません"}.
{"Users are not allowed to register accounts so quickly","それほど速くアカウント登録することはできません"}.
{"Users Last Activity","ユーザーの活動履歴"}.
{"Validate","検証"}.
{"vCard User Search","vCard ユーザー検索"}.
{"Virtual Hosts","ヴァーチャルホスト"}.
{"Visitors are not allowed to change their nicknames in this room","ビジターはこのチャットルームでニックネームを変更することはできません"}.
{"Visitors are not allowed to send messages to all occupants","ビジターはすべての在室者にメッセージを送信することはできません"}.
{"Visitors are not allowed to change their nicknames in this room","傍聴者はこの談話室でニックネームを変更することはできません"}.
{"Visitors are not allowed to send messages to all occupants","傍聴者はすべての在室者にメッセージを送信することはできません"}.
{"Voice requests are disabled in this conference","この会議では、発言権の要求はできません"}.
{"Voice request","発言権を要求"}.
{"Wednesday","水曜日"}.
{"When to send the last published item","最後の公開アイテムを送信するタイミングで"}.
{"Whether to allow subscriptions","購読を許可するかどうか"}.
{"You can later change your password using a Jabber client.","あなたは後から Jabber クライアントを使用してパスワードを変更することができます。"}.
{"You have been banned from this room","あなたはチャットルームからバンされています"}.
{"You must fill in field \"Nickname\" in the form","フォームの\"ニックネーム\"フィールドを入力する必要があります"}.
{"You need a client that supports x:data and CAPTCHA to register","登録を行うにはクライアントが x:data と CAPTCHA をサポートする必要があります"}.
{"You need a client that supports x:data to register the nickname","ニックネームを登録するにはクライアントが x:data をサポートする必要があります"}.
{"You need an x:data capable client to configure mod_irc settings","mod_irc の設定にはクライアントが x:data をサポートする必要があります"}.
{"You need an x:data capable client to configure room","チャットルームを設定するにはクライアントが x:data をサポートする必要があります"}.
{"You need an x:data capable client to search","検索を行うためにはクライアントが x:data をサポートする必要があります"}.
{"You can later change your password using a Jabber client.","あなたは後 Jabber クライアントを使用してパスワードを変更できます。"}.
{"You have been banned from this room","あなたはこの談話室からバンされています"}.
{"You must fill in field \"Nickname\" in the form","フォームの\"ニックネーム\"を入力する必要があります"}.
{"You need a client that supports x:data and CAPTCHA to register","登録を行うには x:data と CAPTCHA をサポートするクライアントが必要です"}.
{"You need a client that supports x:data to register the nickname","ニックネームを登録するには x:data をサポートするクライアントが必要です"}.
{"You need an x:data capable client to configure mod_irc settings","mod_irc の設定には x:data をサポートするクライアントが必要です"}.
{"You need an x:data capable client to configure room","談話室を設定するには x:data をサポートするクライアントが必要です"}.
{"You need an x:data capable client to search","検索を行うためには x:data をサポートするクライアントが必要です"}.
{"Your active privacy list has denied the routing of this stanza.","あなたのプライバシーリストはこのスタンザのルーティングを拒否しました。"}.
{"Your contact offline message queue is full. The message has been discarded.","先のオフラインメッセージキューが一杯です。このメッセージは破棄されます。"}.
{"Your contact offline message queue is full. The message has been discarded.","相手先のオフラインメッセージキューが一杯です。このメッセージは破棄されます。"}.
{"Your Jabber account was successfully created.","Jabber アカウントの作成に成功しました。"}.
{"Your Jabber account was successfully deleted.","Jabber アカウントの削除に成功しました。"}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","~s 宛のメッセージはブロックされています解除するにはこちらを見てください ~s"}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","~s 宛のメッセージはブロックされています解除するにはこちらを見てください ~s"}.
File diff suppressed because it is too large Load Diff
+48 -3
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Gebruikers mogen uitnodigingen verzenden"}.
{"Allow users to send private messages","Gebruikers mogen privéberichten verzenden"}.
{"Allow visitors to change nickname","Sta bezoekers toe hun naam te veranderen"}.
{"Allow visitors to send private messages to","Gebruikers mogen privéberichten verzenden aan"}.
{"Allow visitors to send status text in presence updates","Sta bezoekers toe hun statusbericht in te stellen"}.
{"Allow visitors to send voice requests","Gebruikers mogen stemaanvragen verzenden"}.
{"All Users","Alle gebruikers"}.
{"Announcements","Mededelingen"}.
{"anyone","iedereen"}.
@@ -33,8 +35,10 @@
{"Backup to File at ","Binaire backup maken op "}.
{"Bad format","Slecht formaat"}.
{"Birthday","Geboortedatum"}.
{"CAPTCHA web page","CAPTCHA webpagina."}.
{"Change Password","Wachtwoord wijzigen"}.
{"Change User Password","Verander Gebruikerswachtwoord"}.
{"Characters not allowed:","Niet-toegestane karakters:"}.
{"Chatroom configuration modified","De instellingen van de chatruimte werden veranderd"}.
{"Chatroom is created","Gespreksruimte gecreëerd"}.
{"Chatroom is destroyed","Gespreksruimte vernietigd"}.
@@ -69,9 +73,11 @@
{"Description:","Beschrijving:"}.
{"Disc only copy","Harde schijf"}.
{"Displayed Groups:","Weergegeven groepen:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Geef Uw wachtwoord aan niemand, zelfs niet aan de beheerders van deze Jabber-server."}.
{"Dump Backup to Text File at ","Backup naar een tekstbestand schrijven op "}.
{"Dump to Text File","Backup naar een tekstbestand schrijven"}.
{"Edit Properties","Eigenschappen bewerken"}.
{"Either approve or decline the voice request.","Keur stemaanvraag goed of af."}.
{"ejabberd IRC module","ejabberd's IRC-module"}.
{"ejabberd MUC module","ejabberd's MUC module"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe module"}.
@@ -95,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","Fout"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Voorbeeld: [{\"irc.example.org\", \"koi8-r\", 6667, \"geheim\"}, {\"vendetta.example.net\", \"iso8859-1\", 7000}, {irc,testserver.nl\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Geen CAPTCHA test voor Jabber IDs"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exporteer data van alle gebruikers in de server naar PIEFXIS-bestanden (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exporteer data van alle gebruikers van een host naar PIEXFIS-bestanden (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Er kon geen JID worden ontleend uit deze stemaanvraag"}.
{"Family Name","Achternaam"}.
{"February","Februari"}.
{"Fill in fields to search for any matching Jabber User","Vul de velden in om te zoeken naar Jabber-gebruikers op deze server"}.
@@ -110,6 +118,7 @@
{"Get User Last Login Time","Tijd van Laatste Aanmelding Opvragen"}.
{"Get User Password","Gebruikerswachtwoord Opvragen"}.
{"Get User Statistics","Gebruikers-statistieken Opvragen"}.
{"Grant voice to this person?","Stemaanvraag honoreren voor deze persoon?"}.
{"Group ","Groep "}.
{"Groups","Groepen"}.
{"has been banned","werd verbannen"}.
@@ -119,6 +128,7 @@
{"has been kicked","werd gekicked"}.
{" has set the subject to: "," veranderde het onderwerp in: "}.
{"Host","Host"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Als U het CAPTCHA-plaatje niet ziet, bezoek dan de webpagina."}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Als u verschillende poorten, wachtwoorden en coderingen wilt opgeven voor elke IRC-server, vul dan deze lijst met het volgende formaat: '{\"IRC-server\", \"codering\", poort, \"wachtwoord\"}'. Standaard gebruikt deze service de codering \"~s\", poort ~p, leeg wachtwoord."}.
{"Import Directory","Directory importeren"}.
{"Import File","Bestand importeren"}.
@@ -144,6 +154,7 @@
{"It is not allowed to send private messages","Het is niet toegestaan priveberichten te sturen"}.
{"It is not allowed to send private messages of type \"groupchat\"","Er mogen geen privéberichten van het type \"groupchat\" worden verzonden"}.
{"It is not allowed to send private messages to the conference","Er mogen geen privéberichten naar de chatruimte worden verzonden"}.
{"Jabber Account Registration","Jabber-account registratie"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","De Jabber ID ~s is ongeldig"}.
{"January","Januari"}.
@@ -163,7 +174,7 @@
{"List of modules to start","Lijst met op te starten modules"}.
{"Low level update script","Lowlevel script voor de opwaardering"}.
{"Make participants list public","Deelnemerslijst publiek maken"}.
{"Make room captcha protected","Chatruimte beveiligen met een geautomatiseerde Turing test"}.
{"Make room CAPTCHA protected","Chatruimte beveiligen met een geautomatiseerde Turing test"}.
{"Make room members-only","Chatruimte enkel toegankelijk maken voor leden"}.
{"Make room moderated","Chatruimte gemodereerd maken"}.
{"Make room password protected","Chatruimte beveiligen met een wachtwoord"}.
@@ -176,9 +187,11 @@
{"May","Mei"}.
{"Members:","Groepsleden:"}.
{"Membership is required to enter this room","U moet lid zijn om deze chatruimte te kunnen betreden"}.
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Onthou het wachtwoord, of schrijf het op en bewaar het op een veilige plaats. Met Jabber is er geen geautomatiseerde manier om het wachtwoord terug te halen als U het vergeet."}.
{"Memory","Geheugen"}.
{"Message body","Bericht"}.
{"Middle Name","Tussennaam"}.
{"Minimum interval between voice requests (in seconds)","Minimale interval tussen stemaanvragen (in seconden)"}.
{"Moderator privileges required","U hebt moderatorprivileges nodig"}.
{"moderators only","moderators"}.
{"Modified modules","Gewijzigde modules"}.
@@ -189,9 +202,11 @@
{"Name:","Naam:"}.
{"Name","Naam"}.
{"Never","Nooit"}.
{"New Password:","Nieuw Wachtwoord:"}.
{"Nickname","Bijnaam"}.
{"Nickname Registration at ","Registratie van een bijnaam op "}.
{"Nickname ~s does not exist in the room","De bijnaam ~s bestaat niet in deze chatruimte"}.
{"nobody","niemand"}.
{"No body provided for announce message","De mededeling bevat geen bericht"}.
{"No Data","Geen gegevens"}.
{"Node ID","Node ID"}.
@@ -213,12 +228,14 @@
{"Offline Messages:","Offline berichten:"}.
{"Offline Messages","Offline berichten"}.
{"OK","OK"}.
{"Old Password:","Oud Wachtwoord:"}.
{"Online","Online"}.
{"Online Users:","Online gebruikers:"}.
{"Online Users","Online gebruikers"}.
{"Only deliver notifications to available users","Notificaties alleen verzenden naar online gebruikers"}.
{"Only moderators and participants are allowed to change the subject in this room","Alleen moderators en deelnemers mogen het onderwerp van deze chatruimte veranderen"}.
{"Only moderators are allowed to change the subject in this room","Alleen moderators mogen het onderwerp van deze chatruimte veranderen"}.
{"Only moderators can approve voice requests","Alleen moderators kunnen stemaanvragen goedkeuren"}.
{"Only occupants are allowed to send messages to the conference","Alleen aanwezigen mogen berichten naar de chatruimte verzenden"}.
{"Only occupants are allowed to send queries to the conference","Alleen aanwezigen mogen verzoeken verzenden naar de chatruimte"}.
{"Only service administrators are allowed to send service messages","Alleen beheerders van deze dienst mogen mededelingen verzenden naar alle chatruimtes"}.
@@ -231,6 +248,7 @@
{"Owner privileges required","U hebt eigenaarsprivileges nodig"}.
{"Packet","Pakket"}.
{"Password ~b","Wachtwoord ~b"}.
{"Password Verification:","Wachtwoord Bevestiging:"}.
{"Password Verification","Wachtwoord Bevestiging"}.
{"Password:","Wachtwoord:"}.
{"Password","Wachtwoord"}.
@@ -241,6 +259,7 @@
{"Persist items to storage","Items in het geheugen bewaren"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Merk op dat volgende opties enkel backups maken van de ingebouwde database Mnesia. Als U de ODBC module gebruikt dan moeten daarvan afzonderlijke backups gemaakt worden."}.
{"Please, wait for a while before sending new voice request","Wacht s.v.p. met het maken van een nieuwe stemaanvraag."}.
{"Pong","Pong"}.
{"Port ~b","Poort ~b"}.
{"Port","Poort"}.
@@ -256,8 +275,10 @@
{"Raw","Ruw"}.
{"Really delete message of the day?","Wilt u het bericht van de dag verwijderen?"}.
{"Recipient is not in the conference room","De ontvanger is niet in de chatruimte"}.
{"Register a Jabber account","Registreer een Jabber-account"}.
{"Registered Users:","Geregistreerde gebruikers:"}.
{"Registered Users","Geregistreerde gebruikers"}.
{"Register","Registreer"}.
{"Registration in mod_irc for ","Registratie van "}.
{"Remote copy","Op andere nodes in de cluster"}.
{"Remove All Offline Messages","Verwijder alle offline berichten"}.
@@ -294,6 +315,7 @@
{"Send announcement to all users on all hosts","Stuur aankondiging aan alle gebruikers op alle hosts"}.
{"September","September"}.
{"Server ~b","Server ~b"}.
{"Server:","Server:"}.
{"Set message of the day and send to online users","Bericht van de dag instellen en verzenden naar online gebruikers"}.
{"Set message of the day on all hosts and send to online users","Stel bericht-van-de-dag in op alle hosts en stuur naar aanwezige gebruikers"}.
{"Shared Roster Groups","Gedeelde rostergroepen"}.
@@ -301,6 +323,7 @@
{"Show Ordinary Table","Deel van tabel laten zien"}.
{"Shut Down Service","Stop Service"}.
{"~s invites you to the room ~s","~s nodigt je uit voor het groepsgesprek ~s"}.
{"Some Jabber clients can store your password in your computer. Use that feature only if you trust your computer is safe.","Sommige Jabber-clienten kunnen het wachtwoord opslaan op Uw computer. Gebruik deze mogelijkheid alleen als U vertrouwd dat Uw computer afdoende beveiligd is."}.
{"Specify the access model","Geef toegangsmodel"}.
{"Specify the event message type","Geef type van eventbericht"}.
{"Specify the publisher model","Publicatietype opgeven"}.
@@ -325,9 +348,18 @@
{"Sunday","Zondag"}.
{"That nickname is already in use by another occupant","Deze bijnaam is al in gebruik door een andere aanwezige"}.
{"That nickname is registered by another person","Deze bijnaam is al geregistreerd door iemand anders"}.
{"The captcha is valid.","De geautomatiseerde Turing-test is geslaagd."}.
{"The CAPTCHA is valid.","De geautomatiseerde Turing-test is geslaagd."}.
{"The CAPTCHA verification has failed","De CAPTCHA-verificatie is mislukt"}.
{"The collections with which a node is affiliated","De collecties waar een node mee is gerelateerd"}.
{"the password is","het wachtwoord is"}.
{"The password is too weak","Het wachtwoord is te zwak"}.
{"The password of your Jabber account was successfully changed.","Het wachtwoord van Uw Jabber-account is succesvol veranderd."}.
{"There was an error changing the password: ","Er was een fout bij het veranderen van het wachtwoord:"}.
{"There was an error creating the account: ","Er was een fout bij het creeern van de account:"}.
{"There was an error deleting the account: ","Er was een fout bij het verwijderen van de account."}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Dit is niet hoofdlettergevoelig: macbeth is hetzelfde als MacBeth en Macbeth."}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Deze pagina maakt het mogelijk een Jabber-account te registreren op deze server. Uw JID (Jabber IDentiteit) zal er als volg uit zien: gebruikersnaam@server. Lees de instructies zorgvuldig teneinde de velden correct in te vullen."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Deze pagina maakt het mogelijk een Jabber-account op deze server op te heffen."}.
{"This participant is kicked from the room because he sent an error message","Deze deelnemer wordt weggestuurd vanwege het sturen van een foutmeldingsbericht"}.
{"This participant is kicked from the room because he sent an error message to another participant","Deze deelnemer wordt weggestuurd vanwege het sturen van een foutmeldingsbericht aan een andere deelnemer"}.
{"This participant is kicked from the room because he sent an error presence","Deze deelnemer wordt weggestuurd vanwege het sturen van een foutmelding-aanwezigheid"}.
@@ -336,6 +368,7 @@
{"Time delay","Vertraging"}.
{"Time","Tijd"}.
{"To","Aan"}.
{"Too many CAPTCHA requests","Te veel CAPTCHA-aanvragen"}.
{"To ~s","Naar ~s"}.
{"Traffic rate limit is exceeded","Dataverkeerslimiet overschreden"}.
{"Transactions Aborted:","Afgebroken transacties:"}.
@@ -343,8 +376,10 @@
{"Transactions Logged:","Gelogde transacties:"}.
{"Transactions Restarted:","Herstarte transacties:"}.
{"Tuesday","Dinsdag"}.
{"Unable to generate a captcha","Het generen van een gautomatiseerde Turing test is mislukt"}.
{"Unable to generate a CAPTCHA","Het generen van een CAPTCHA is mislukt"}.
{"Unauthorized","Niet geautoriseerd"}.
{"Unregister a Jabber account","Opheffen van Jabber-account"}.
{"Unregister","Opheffen"}.
{"Update","Bijwerken"}.
{"Update message of the day (don't send)","Bericht van de dag bijwerken (niet verzenden)"}.
{"Update message of the day on all hosts (don't send)","Verander bericht-van-de-dag op alle hosts (niet versturen)"}.
@@ -355,7 +390,9 @@
{"Use of STARTTLS required","Gebruik van STARTTLS is vereist"}.
{"User ","Gebruiker "}.
{"User","Gebruiker"}.
{"User JID","JID Gebruiker"}.
{"User Management","Gebruikersbeheer"}.
{"Username:","Gebruikersnaam:"}.
{"Users are not allowed to register accounts so quickly","Het is gebruikers niet toegestaan zo snel achter elkaar te registreren"}.
{"Users","Gebruikers"}.
{"Users Last Activity","Laatste activiteit van gebruikers"}.
@@ -364,13 +401,21 @@
{"Virtual Hosts","Virtuele hosts"}.
{"Visitors are not allowed to change their nicknames in this room","Het is bezoekers niet toegestaan hun naam te veranderen in dit kanaal"}.
{"Visitors are not allowed to send messages to all occupants","Bezoekers mogen geen berichten verzenden naar alle aanwezigen"}.
{"Voice requests are disabled in this conference","Stemaanvragen zijn uitgeschakeld voor deze chatruimte"}.
{"Voice request","Stemaanvraag"}.
{"Wednesday","Woensdag"}.
{"When to send the last published item","Wanneer het laatst gepubliceerde item verzonden moet worden"}.
{"Whether to allow subscriptions","Abonnementsaanvraag toestaan"}.
{"You can later change your password using a Jabber client.","U can het wachtwoord later veranderen met een Jabber-client."}.
{"You have been banned from this room","U werd verbannen uit deze chatruimte"}.
{"You must fill in field \"Nickname\" in the form","U moet het veld \"bijnaam\" invullen"}.
{"You need a client that supports x:data and CAPTCHA to register","U hebt een client nodig die x:data en CAPTCHA ondersteunt om een bijnaam te registreren"}.
{"You need a client that supports x:data to register the nickname","U hebt een client nodig die x:data ondersteunt om een bijnaam te registreren"}.
{"You need an x:data capable client to configure mod_irc settings","U hebt een client nodig die x:data ondersteunt om dit IRC-transport in te stellen"}.
{"You need an x:data capable client to configure room","U hebt een client nodig die x:data ondersteunt om deze chatruimte in te stellen"}.
{"You need an x:data capable client to search","U hebt een client nodig die x:data ondersteunt om te zoeken"}.
{"Your active privacy list has denied the routing of this stanza.","Uw actieve privacy-lijst verbied het routeren van dit stanza."}.
{"Your contact offline message queue is full. The message has been discarded.","Te veel offline berichten voor dit contactpersoon. Het bericht is niet opgeslagen."}.
{"Your Jabber account was successfully created.","Uw Jabber-account is succesvol gecreeerd."}.
{"Your Jabber account was successfully deleted.","Uw Jabber-account is succesvol verwijderd."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Uw berichten aan ~s worden geblokkeerd. Om ze te deblokkeren, ga naar ~s"}.
File diff suppressed because it is too large Load Diff
+48 -3
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Tillat brukere å sende invitasjoner"}.
{"Allow users to send private messages","Tillat brukere å sende private meldinger"}.
{"Allow visitors to change nickname","Tillat besøkende å endre kallenavn"}.
{"Allow visitors to send private messages to","Tillat brukere å sende private meldinger til"}.
{"Allow visitors to send status text in presence updates","Tillat besøkende å sende status tekst i "}.
{"Allow visitors to send voice requests","Tillat brukere å sende lyd forespørsler"}.
{"All Users","Alle Brukere"}.
{"Announcements","Kunngjøringer"}.
{"anyone","hvem som helst"}.
@@ -33,8 +35,10 @@
{"Backup to File at ","Sikkerhetskopiere til Fil på "}.
{"Bad format","Feil format"}.
{"Birthday","Fødselsdag"}.
{"CAPTCHA web page","CAPTCHA web side"}.
{"Change Password","Endre Passord"}.
{"Change User Password","Endre Brukers Passord"}.
{"Characters not allowed:","Ikke godtatte tegn:"}.
{"Chatroom configuration modified","Samtalerommets konfigurasjon er endret"}.
{"Chatroom is created","Samtalerom er opprettet"}.
{"Chatroom is destroyed","Samtalerom er fjernet"}.
@@ -69,9 +73,11 @@
{"Description:","Beskrivelse:"}.
{"Disc only copy","Kun diskkopi"}.
{"Displayed Groups:","Viste grupper:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Ikke fortell passordet til noen, ikke en gang til administratoren av Jabber serveren."}.
{"Dump Backup to Text File at ","Dump Sikkerhetskopi til Tekstfil på "}.
{"Dump to Text File","Dump til Tekstfil"}.
{"Edit Properties","Redigere Egenskaper"}.
{"Either approve or decline the voice request.","Enten godkjenn eller forby lyd forespørselen"}.
{"ejabberd IRC module","ejabberd IRC modul"}.
{"ejabberd MUC module","ejabberd MUC modul"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe modul"}.
@@ -95,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","Feil"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Eksempel: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Ekskluder Jabber IDer fra CAPTCHA utfordring"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksporter data om alle brukere i en server til PIEFXIS filer"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Eksporter data om alle brukere i en host til PIEFXIS filer (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Feilet i forsøk på å hente JID fra din lyd forespørsel godkjenning"}.
{"Family Name","Etternavn"}.
{"February","februar"}.
{"Fill in fields to search for any matching Jabber User","Fyll inn felt for å søke etter Jabber brukere"}.
@@ -110,6 +118,7 @@
{"Get User Last Login Time","Vis Brukers Siste Påloggings Tidspunkt"}.
{"Get User Password","Hent Brukers Passord"}.
{"Get User Statistics","Vis Bruker Statistikk"}.
{"Grant voice to this person?","Gi lyd til denne personen?"}.
{"Group ","Gruppe "}.
{"Groups","Grupper"}.
{"has been banned","har blitt bannlyst"}.
@@ -119,6 +128,7 @@
{"has been kicked","har blitt kastet ut"}.
{" has set the subject to: "," har satt emnet til: "}.
{"Host","Maskin"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Dersom du ikke ser CAPTCHA bilde her, besøk web siden. "}.
{"If you want to specify different ports, passwords, encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\", port, \"password\"}'. By default this service use \"~s\" encoding, port ~p, empty password.","Om du ønsker å spesifisere tekstkoding for IRC tjenere, fyller du ut en liste med verdier i formatet '{\"irc server\", \"encoding\", port, \"password\"}'. Denne tjenesten bruker \"~s\" som standard, port ~p, empty password."}.
{"Import Directory","Importer Katalog"}.
{"Import File","Importer File"}.
@@ -144,6 +154,7 @@
{"It is not allowed to send private messages","Det er ikke tillatt å sende private meldinger"}.
{"It is not allowed to send private messages of type \"groupchat\"","Det er ikke tillatt å sende private meldinger med typen "}.
{"It is not allowed to send private messages to the conference","Det er ikke tillatt å sende private meldinger til "}.
{"Jabber Account Registration","Jabber Konto Registrering"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","Ugyldig Jabber ID ~s"}.
{"January","januar"}.
@@ -163,7 +174,7 @@
{"List of modules to start","Liste over moduler som skal startes"}.
{"Low level update script","Lavnivå oppdaterings skript"}.
{"Make participants list public","Gjør deltakerlisten offentlig"}.
{"Make room captcha protected","Gjør rommet captcha beskyttet"}.
{"Make room CAPTCHA protected","Gjør rommet CAPTCHA beskyttet"}.
{"Make room members-only","Gjør rommet tilgjengelig kun for medlemmer"}.
{"Make room moderated","Gjør rommet redaktørstyrt"}.
{"Make room password protected","Passordbeskytt rommet"}.
@@ -176,9 +187,11 @@
{"May","mai"}.
{"Membership is required to enter this room","Medlemskap kreves for tilgang til samtalerommet"}.
{"Members:","Medlemmer:"}.
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Husk passordet, eller skriv det ned på et papir lagret på et trygt sted. I Jabber er det ingen automatisert måte å gjenskape passordet om du glemmer det. "}.
{"Memory","Minne"}.
{"Message body","Meldingskropp"}.
{"Middle Name","Mellomnavn"}.
{"Minimum interval between voice requests (in seconds)","Minimums interval mellom lyd forespørsler (i sekunder)"}.
{"Moderator privileges required","Redaktørprivilegier kreves"}.
{"moderators only","kun for redaktører"}.
{"Modified modules","Endrede moduler"}.
@@ -189,9 +202,11 @@
{"Name:","Navn:"}.
{"Name","Navn"}.
{"Never","Aldri"}.
{"New Password:","Nytt Passord:"}.
{"Nickname","Kallenavn"}.
{"Nickname Registration at ","Registrer Kallenavn på "}.
{"Nickname ~s does not exist in the room","Kallenavn ~s eksisterer ikke i dette rommet"}.
{"nobody","ingen"}.
{"No body provided for announce message","Ingen meldingskropp gitt for kunngjørings melding"}.
{"No Data","Ingen Data"}.
{"Node ID","Node ID"}.
@@ -213,12 +228,14 @@
{"Offline Messages:","Frakoblede Meldinger:"}.
{"Offline Messages","Frakoblede Meldinger"}.
{"OK","OK"}.
{"Old Password:","Gammelt Passord:"}.
{"Online","Tilkoblet"}.
{"Online Users:","Tilkoblede Brukere:"}.
{"Online Users","Tilkoblede Brukere"}.
{"Only deliver notifications to available users","Send kunngjøringer bare til tilgjengelige brukere"}.
{"Only moderators and participants are allowed to change the subject in this room","Bare redaktører og deltakere kan endre emnet i dette rommet"}.
{"Only moderators are allowed to change the subject in this room","Bare ordstyrer tillates å endre emnet i dette rommet"}.
{"Only moderators can approve voice requests","Bare ordstyrer kan godkjenne lyd forespørsler"}.
{"Only occupants are allowed to send messages to the conference","Bare deltakere får sende normale meldinger til konferansen"}.
{"Only occupants are allowed to send queries to the conference","Bare deltakere er tillatt å sende forespørsler til "}.
{"Only service administrators are allowed to send service messages","Bare tjeneste administratorer er tilatt å sende tjeneste "}.
@@ -233,6 +250,7 @@
{"Password ~b","Passord ~b"}.
{"Password:","Passord:"}.
{"Password","Passord"}.
{"Password Verification:","Passord Bekreftelse:"}.
{"Password Verification","Passord Bekreftelse"}.
{"Path to Dir","Sti til Katalog"}.
{"Path to File","Sti til Fil"}.
@@ -241,6 +259,7 @@
{"Persist items to storage","Vedvarende elementer til lagring"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Merk at disse valgene vil bare sikkerhetskopiere den innebygde Mnesia databasen. Dersom du bruker ODBC modulen må du også ta backup av din SQL database."}.
{"Please, wait for a while before sending new voice request","Vennligst vent en stund før du sender en ny lyd forespørsel"}.
{"Pong","Pong"}.
{"Port ~b","Port ~b"}.
{"Port","Port"}.
@@ -256,8 +275,10 @@
{"Raw","Rå"}.
{"Really delete message of the day?","Virkelig slette melding for dagen?"}.
{"Recipient is not in the conference room","Mottakeren er ikke i konferanserommet"}.
{"Register a Jabber account","Registrer en Jabber konto"}.
{"Registered Users:","Registrerte Brukere:"}.
{"Registered Users","Registrerte Brukere"}.
{"Register","Registrer"}.
{"Registration in mod_irc for ","Registrering i mod_irc for "}.
{"Remote copy","Lagres ikke lokalt"}.
{"Remove All Offline Messages","Fjern Alle Frakoblede Meldinger"}.
@@ -294,6 +315,7 @@
{"Send announcement to all users","Send kunngjøring til alle brukere"}.
{"September","september"}.
{"Server ~b","Server ~b"}.
{"Server:","Server:"}.
{"Set message of the day and send to online users","Angi melding for dagen og send til tilkoblede brukere"}.
{"Set message of the day on all hosts and send to online users","Angi melding for dagen på alle maskiner og send til "}.
{"Shared Roster Groups","Delte Kontaktgrupper"}.
@@ -301,6 +323,7 @@
{"Show Ordinary Table","Vis Ordinær Tabell"}.
{"Shut Down Service","Avslutt Tjeneste"}.
{"~s invites you to the room ~s","~s inviterer deg til rommet ~s"}.
{"Some Jabber clients can store your password in your computer. Use that feature only if you trust your computer is safe.","Noen Jabber klienter kan lagre passordet på datamaskinen. Bruk bare den funksjonen dersom du er sikker på at maskinen er trygg."}.
{"Specify the access model","Spesifiser aksess modellen"}.
{"Specify the event message type","Spesifiser hendelsesbeskjed type"}.
{"Specify the publisher model","Angi publiserings modell"}.
@@ -325,9 +348,18 @@
{"Sunday","søndag"}.
{"That nickname is already in use by another occupant","Det kallenavnet er allerede i bruk av en annen deltaker"}.
{"That nickname is registered by another person","Det kallenavnet er registrert av en annen person"}.
{"The captcha is valid.","Captchaen er ikke gyldig"}.
{"The CAPTCHA is valid.","Captchaen er ikke gyldig"}.
{"The CAPTCHA verification has failed","CAPTCHA godkjenningen har feilet"}.
{"The collections with which a node is affiliated","Samlingene som en node er assosiert med"}.
{"the password is","passordet er"}.
{"The password is too weak","Passordet er for svakt"}.
{"The password of your Jabber account was successfully changed.","Passordet for din Jabber konto ble endret."}.
{"There was an error changing the password: ","En feil skjedde under endring av passordet:"}.
{"There was an error creating the account: ","En feil skjedde under oppretting av kontoen:"}.
{"There was an error deleting the account: ","En feil skjedde under sletting av kontoen: "}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Denne er ufølsom for små og store bokstaver: macbeth er det samme som MacBeth og Macbeth. "}.
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Denne siden lar deg lage en Jabber konto på denne Jabber serveren. Din JID (Jabber ID) vil være i formatet: brukernavn@server. Vennligst les instruksjonene nøye slik at du fyller ut skjemaet riktig."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Denne siden lar deg avregistrere en Jabber konto på denne Jabber serveren."}.
{"This participant is kicked from the room because he sent an error message","Denne deltakeren er kastet ut av rommet fordi han sendte en feilmelding"}.
{"This participant is kicked from the room because he sent an error message to another participant","Denne deltakeren er kastet ut av rommet fordi han sendte en feilmelding til en annen deltaker"}.
{"This participant is kicked from the room because he sent an error presence","Denne deltakeren er kastet ut av rommet fordi han sendte feil tilstederværelse"}.
@@ -335,6 +367,7 @@
{"Thursday","torsdag"}.
{"Time delay","Tids forsinkelse"}.
{"Time","Tid"}.
{"Too many CAPTCHA requests","For mange CAPTCHA forespørsler"}.
{"To ~s","Til ~s"}.
{"To","Til"}.
{"Traffic rate limit is exceeded","Trafikkmengde grense overskredet"}.
@@ -343,8 +376,10 @@
{"Transactions Logged:","Loggede Transasksjoner:"}.
{"Transactions Restarted:","Omstartede Transasksjoner:"}.
{"Tuesday","tirsdag"}.
{"Unable to generate a captcha","Umulig å generere en captcha"}.
{"Unable to generate a CAPTCHA","Umulig å generere en CAPTCHA"}.
{"Unauthorized","Uautorisert"}.
{"Unregister a Jabber account","Avregistrer en Jabber konto"}.
{"Unregister","Avregistrer"}.
{"Update message of the day (don't send)","Oppdater melding for dagen (ikke send)"}.
{"Update message of the day on all hosts (don't send)","Oppdater melding for dagen på alle maskiner (ikke send)"}.
{"Update ","Oppdater "}.
@@ -355,7 +390,9 @@
{"Use of STARTTLS required","Bruk av STARTTLS kreves"}.
{"User ","Bruker "}.
{"User","Bruker"}.
{"User JID","Bruker JID"}.
{"User Management","Bruker Behandling"}.
{"Username:","Brukernavn:"}.
{"Users are not allowed to register accounts so quickly","Brukere får ikke lov til registrere kontoer så fort"}.
{"Users","Brukere"}.
{"Users Last Activity","Brukers Siste Aktivitet"}.
@@ -364,13 +401,21 @@
{"Virtual Hosts","Virtuella Maskiner"}.
{"Visitors are not allowed to change their nicknames in this room","Besøkende får ikke lov å endre kallenavn i dette "}.
{"Visitors are not allowed to send messages to all occupants","Besøkende får ikke sende meldinger til alle deltakere"}.
{"Voice request","Lyd forespørsel"}.
{"Voice requests are disabled in this conference","Lyd forespørsler er blokkert i denne konferansen"}.
{"Wednesday","onsdag"}.
{"When to send the last published item","Når skal siste publiserte artikkel sendes"}.
{"Whether to allow subscriptions","Om man skal tillate abonnenter"}.
{"You can later change your password using a Jabber client.","Du kan når som helst endre passordet via en Jabber klient."}.
{"You have been banned from this room","Du har blitt bannlyst i dette rommet."}.
{"You must fill in field \"Nickname\" in the form","Du må fylle inn feltet \"Nickname\" i skjemaet"}.
{"You need a client that supports x:data and CAPTCHA to register","Du trenger en klient som støtter x:data og CAPTCHA for registrering "}.
{"You need a client that supports x:data to register the nickname","Du trenger en klient som støtter x:data for å registrere kallenavnet"}.
{"You need an x:data capable client to configure mod_irc settings","Du trenger en x:data kompatibel klient for å konfigurere mod_irc instillinger"}.
{"You need an x:data capable client to configure room","Du trenger en klient som støtter x:data for å "}.
{"You need an x:data capable client to search","Du tregner en klient som støtter x:data for å kunne "}.
{"Your active privacy list has denied the routing of this stanza.","Din aktive privat liste har blokkert rutingen av denne strofen."}.
{"Your contact offline message queue is full. The message has been discarded.","Kontaktens frakoblede meldingskø er full. Meldingen har blitt kassert."}.
{"Your Jabber account was successfully created.","Din Jabber konto ble opprettet"}.
{"Your Jabber account was successfully deleted.","Dni Jabber konto er blitt sltettet."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Dine meldinger til ~s blir blokkert. For å åpne igjen, besøk ~s"}.
File diff suppressed because it is too large Load Diff
+19 -6
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Pozwól użytkownikom wysyłać zaproszenia"}.
{"Allow users to send private messages","Pozwól użytkownikom wysyłać prywatne wiadomości"}.
{"Allow visitors to change nickname","Pozwól uczestnikom na zmianę nicka"}.
{"Allow visitors to send private messages to","Pozwól użytkownikom wysyłać prywatne wiadomości"}.
{"Allow visitors to send status text in presence updates","Pozwól uczestnikom na wysyłanie statusów opisowych"}.
{"Allow visitors to send voice requests","Pozwól użytkownikom wysyłać zaproszenia"}.
{"All Users","Wszyscy użytkownicy"}.
{"Announcements","Powiadomienia"}.
{"anyone","wszystkich"}.
@@ -75,6 +77,7 @@
{"Dump Backup to Text File at ","Zapisz kopię zapasową w pliku tekstowym na "}.
{"Dump to Text File","Wykonaj kopie do pliku tekstowego"}.
{"Edit Properties","Edytuj właściwości"}.
{"Either approve or decline the voice request.","Zatwierdź lub odrzuć żądanie głosowe"}.
{"ejabberd IRC module","Moduł IRC ejabberd"}.
{"ejabberd MUC module","Moduł MUC"}.
{"ejabberd Publish-Subscribe module","Moduł Publish-Subscribe"}.
@@ -98,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","Błąd"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Przykład: [{\"wroclaw.irc.pl\",\"utf-8\"}, {\"warszawa.irc.pl\", \"iso8859-2\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Pomiń Jabber ID z żądania CAPTCHA"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksportuj dane wszystkich użytkowników serwera do plików w formacie PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Eksportuj dane użytkowników z hosta do plików w formacie PIEFXIS (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Nie udało się wydobyć JID-u z twojego żądania"}.
{"Family Name","Nazwisko"}.
{"February","Luty"}.
{"Fill in fields to search for any matching Jabber User","Wypełnij pola aby znaleźć pasujących użytkowników Jabbera"}.
@@ -113,6 +118,7 @@
{"Get User Last Login Time","Pokaż czas ostatniego zalogowania uzytkownika"}.
{"Get User Password","Pobierz hasło użytkownika"}.
{"Get User Statistics","Pobierz statystyki użytkownika"}.
{"Grant voice to this person?","Udzielić głosu tej osobie?"}.
{"Group ","Grupa "}.
{"Groups","Grupy"}.
{"has been banned","został wykluczony"}.
@@ -168,7 +174,7 @@
{"List of modules to start","Lista modułów do uruchomienia"}.
{"Low level update script","Skrypt aktualizacji niskiego poziomu"}.
{"Make participants list public","Upublicznij listę uczestników"}.
{"Make room captcha protected","Pokój zabezpieczony captchą"}.
{"Make room CAPTCHA protected","Pokój zabezpieczony captchą"}.
{"Make room members-only","Pokój tylko dla członków"}.
{"Make room moderated","Pokój moderowany"}.
{"Make room password protected","Pokój zabezpieczony hasłem"}.
@@ -185,6 +191,7 @@
{"Memory","Pamięć"}.
{"Message body","Treść wiadomości"}.
{"Middle Name","Drugie imię"}.
{"Minimum interval between voice requests (in seconds)","Minimalny odstęp między żądaniami głosowymi (w sekundach)"}.
{"Moderator privileges required","Wymagane uprawnienia moderatora"}.
{"moderators only","tylko moderatorzy"}.
{"Modified modules","Zmodyfikowane moduły"}.
@@ -199,6 +206,7 @@
{"Nickname","Nazwa użytkownika"}.
{"Nickname Registration at ","Rejestracja nazwy użytkownika na "}.
{"Nickname ~s does not exist in the room","Nie ma nicka ~s w tym pokoju"}.
{"nobody","nikt"}.
{"No body provided for announce message","Brak treści powiadomienia"}.
{"No Data","Brak danych"}.
{"Node ID","ID węzła"}.
@@ -227,6 +235,7 @@
{"Only deliver notifications to available users","Dostarczaj powiadomienia tylko dostępnym użytkownikom"}.
{"Only moderators and participants are allowed to change the subject in this room","Tylko moderatorzy i uczestnicy mogą zmienić temat tego pokoju"}.
{"Only moderators are allowed to change the subject in this room","Tylko moderatorzy mogą zmienić temat tego pokoju"}.
{"Only moderators can approve voice requests","Tylko moderatorzy mogą zatwierdzać żądania głosowe"}.
{"Only occupants are allowed to send messages to the conference","Tylko uczestnicy mogą wysyłać wiadomości na konferencję"}.
{"Only occupants are allowed to send queries to the conference","Tylko uczestnicy mogą wysyłać zapytania do konferencji"}.
{"Only service administrators are allowed to send service messages","Tylko administratorzy mogą wysyłać wiadomości"}.
@@ -250,6 +259,7 @@
{"Persist items to storage","Przechowuj na stałe dane PubSub"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Te opcje kopii zapasowych dotyczą tylko wbudowanej bazy danych typu Mnesia. Jeśli korzystasz z modułu ODBC, musisz wykonać kopie bazy we własnym zakresie."}.
{"Please, wait for a while before sending new voice request","Proszę poczekać chwile, zanim wyślesz nowe żądanie głosowe"}.
{"Pong","Pong"}.
{"Port ~b","Port ~b"}.
{"Port","Port"}.
@@ -274,7 +284,7 @@
{"Remove All Offline Messages","Usuń wszystkie wiadomości typu 'Offline'"}.
{"Remove User","Usuń użytkownika"}.
{"Remove","Usuń"}.
{"Replaced by new connection","Zastąpione przez nowe połączenie"}.
{"Replaced by new connection","Połączenie zostało zastąpione"}.
{"Resources","Zasoby"}.
{"Restart Service","Restart usługi"}.
{"Restart","Uruchom ponownie"}.
@@ -338,7 +348,7 @@
{"Sunday","Niedziela"}.
{"That nickname is already in use by another occupant","Ta nazwa użytkownika jest używana przez kogoś innego"}.
{"That nickname is registered by another person","Ta nazwa użytkownika jest już zarejestrowana przez inną osobę"}.
{"The captcha is valid.","Captcha jest poprawna."}.
{"The CAPTCHA is valid.","Captcha jest poprawna."}.
{"The CAPTCHA verification has failed","Weryfikacja CAPTCHA nie powiodła się."}.
{"The collections with which a node is affiliated","Grupy, do których należy węzeł"}.
{"the password is","hasło to:"}.
@@ -358,6 +368,7 @@
{"Time","Czas"}.
{"Time delay","Opóźnienie"}.
{"To","Do"}.
{"Too many CAPTCHA requests","Za dużo żądań CAPTCHA"}.
{"To ~s","Do ~s"}.
{"Traffic rate limit is exceeded","Limit transferu przekroczony"}.
{"Transactions Aborted:","Transakcje anulowane:"}.
@@ -365,7 +376,6 @@
{"Transactions Logged:","Transakcje zalogowane:"}.
{"Transactions Restarted:","Transakcje uruchomione ponownie:"}.
{"Tuesday","Wtorek"}.
{"Unable to generate a captcha","Nie można wygenerować captcha"}.
{"Unable to generate a CAPTCHA","Nie można wygenerować CAPTCHA"}.
{"Unauthorized","Nie autoryzowano"}.
{"Unregister a Jabber account","Usuń konto Jabber"}.
@@ -377,7 +387,8 @@
{"Update script","Skrypt aktualizacji"}.
{"Update ","Uaktualnij "}.
{"Uptime:","Czas pracy:"}.
{"Use of STARTTLS required","Wymagane użycie STARTTLS"}.
{"Use of STARTTLS required","Wymagane jest użycie STARTTLS"}.
{"User JID","Użytkownik "}.
{"User Management","Zarządzanie użytkownikami"}.
{"Username:","Nazwa użytkownika:"}.
{"Users are not allowed to register accounts so quickly","Użytkowncy nie mogą tak szybko rejestrować nowych kont"}.
@@ -390,6 +401,8 @@
{"Virtual Hosts","Wirtualne Hosty"}.
{"Visitors are not allowed to change their nicknames in this room","Uczestnicy tego pokoju nie mogą zmieniać swoich nicków"}.
{"Visitors are not allowed to send messages to all occupants","Odwiedzający nie mogą wysyłać wiadomości do wszystkich obecnych"}.
{"Voice requests are disabled in this conference","Głosowe żądania są wyłączone w tym pokoju"}.
{"Voice request","Żądanie głosowe"}.
{"Wednesday","Środa"}.
{"When to send the last published item","Kiedy wysłać ostatnio opublikowaną rzecz"}.
{"Whether to allow subscriptions","Czy pozwolić na subskrypcje"}.
@@ -401,7 +414,7 @@
{"You need an x:data capable client to configure mod_irc settings","Potrzebujesz klienta obsługującego x:data aby skonfigurować mod_irc"}.
{"You need an x:data capable client to configure room","Potrzebujesz klienta obsługującego x:data aby skonfigurować pokój"}.
{"You need an x:data capable client to search","Potrzebujesz klienta obsługującego x:data aby wyszukiwać"}.
{"Your active privacy list has denied the routing of this stanza.","Twoja aktywna lista prywatności zabrania"}.
{"Your active privacy list has denied the routing of this stanza.","Aktualna lista prywatności zabrania przesyłania tej stanzy"}.
{"Your contact offline message queue is full. The message has been discarded.","Kolejka wiadomości offline adresata jest pełna. Wiadomość została odrzucona."}.
{"Your Jabber account was successfully created.","Twoje konto zostało stworzone."}.
{"Your Jabber account was successfully deleted.","Twoje konto zostało usunięte."}.
File diff suppressed because it is too large Load Diff
+21 -10
View File
@@ -73,6 +73,7 @@
{"Dump Backup to Text File at ","Exportar backup para texto em "}.
{"Dump to Text File","Exportar para arquivo de texto"}.
{"Edit Properties","Editar propriedades"}.
{"Either approve or decline the voice request.","Você deve aprovar/desaprovar a requisição de voz."}.
{"ejabberd IRC module","Módulo de IRC para ejabberd"}.
{"ejabberd MUC module","Módulo de MUC para ejabberd"}.
{"ejabberd Publish-Subscribe module","Módulo para Publicar Tópicos do ejabberd"}.
@@ -96,8 +97,10 @@
{"Erlang Jabber Server","Servidor Jabber em Erlang"}.
{"Error","Erro"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Exemplo: [{\"irc.teste.net\", \"koi8-r\"}, 6667, \"senha\"}, {\"dominio.foo.net\", \"iso8859-1\", 7000}, {\"irc.servidordeteste.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Excluir IDs Jabber de serem submetidos ao CAPTCHA"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar todos os dados de todos os usuários no servidor, para arquivos formato PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportar dados dos usuários em um host, para arquivos PIEFXIS (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Não foi possível extrair o JID (Jabber ID) da requisição de voz"}.
{"Family Name","Sobrenome"}.
{"February","Fevereiro"}.
{"Fill in fields to search for any matching Jabber User","Preencha campos para buscar usuários Jabber que concordem"}.
@@ -132,7 +135,7 @@
{"Improper message type","Tipo de mensagem incorreto"}.
{"Incorrect password","Senha incorreta"}.
{"Invalid affiliation: ~s","Afiliação não válida: ~s"}.
{"Invalid role: ~s","Rol não válido: ~s"}.
{"Invalid role: ~s","Cargo (role) é não válido: ~s"}.
{"IP addresses","Endereços IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","Canal IRC (não coloque o #)"}.
@@ -144,7 +147,7 @@
{"is now known as","é agora conhecido como"}.
{"It is not allowed to send private messages","Não é permitido enviar mensagens privadas"}.
{"It is not allowed to send private messages of type \"groupchat\"","No está permitido enviar mensagens privados do tipo \"groupchat\""}.
{"It is not allowed to send private messages to the conference","Impedir o envio de mensagens privados a la sala"}.
{"It is not allowed to send private messages to the conference","Impedir o envio de mensagens privadas para a sala"}.
{"Jabber Account Registration","Registros de Contas Jabber"}.
{"Jabber ID","ID Jabber"}.
{"Jabber ID ~s is invalid","O Jabber ID ~s não es válido"}.
@@ -165,7 +168,7 @@
{"List of modules to start","Listas de módulos para inicializar"}.
{"Low level update script","Script de atualização low level"}.
{"Make participants list public","Tornar pública a lista de participantes"}.
{"Make room captcha protected","Tornar protegida a senha da sala"}.
{"Make room CAPTCHA protected","Tornar protegida a senha da sala"}.
{"Make room members-only","Tornar sala apenas para membros"}.
{"Make room moderated","Tornar a sala moderada"}.
{"Make room password protected","Tornar protegida a senha da sala"}.
@@ -182,6 +185,7 @@
{"Memory","Memória"}.
{"Message body","Corpo da mensagem"}.
{"Middle Name","Nome do meio"}.
{"Minimum interval between voice requests (in seconds)","O intervalo mínimo entre requisições de voz (em segundos)"}.
{"Moderator privileges required","Se necessita privilégios de moderador"}.
{"moderators only","apenas moderadores"}.
{"Modified modules","Módulos atualizados"}.
@@ -195,6 +199,7 @@
{"Nickname","Apelido"}.
{"Nickname Registration at ","Registro do apelido em "}.
{"Nickname ~s does not exist in the room","O nick ~s não existe em la sala"}.
{"nobody","ninguém"}.
{"No body provided for announce message","Nenhum corpo de texto fornecido para anunciar mensagem"}.
{"No Data","Nenhum dado"}.
{"Node ID","ID do Tópico"}.
@@ -203,7 +208,7 @@
{"Nodes","Nós"}.
{"No limit","Ilimitado"}.
{"None","Nenhum"}.
{"No resource provided","Recurso não foi fornecido"}.
{"No resource provided","Nenhum recurso foi informado"}.
{"Not Found","Não encontrado"}.
{"Notify subscribers when items are removed from the node","Notificar subscritores quando os elementos se eliminem do nodo"}.
{"Notify subscribers when the node configuration changes","Notificar subscritores quando cambia la configuração do nodo"}.
@@ -222,6 +227,7 @@
{"Only deliver notifications to available users","Solo enviar notificações aos usuários disponíveis"}.
{"Only moderators and participants are allowed to change the subject in this room","Somente os moderadores e os participamentes podem alterar o assunto desta sala"}.
{"Only moderators are allowed to change the subject in this room","Somente os moderadores podem alterar o assunto desta sala"}.
{"Only moderators can approve voice requests","Somente moderadores podem aprovar requisições de voz"}.
{"Only occupants are allowed to send messages to the conference","Solo os ocupantes podem enviar mensagens a la sala"}.
{"Only occupants are allowed to send queries to the conference","Solo os ocupantes podem enviar consultas a la sala"}.
{"Only service administrators are allowed to send service messages","Apenas administradores possuem permissão para enviar mensagens de serviço"}.
@@ -244,11 +250,12 @@
{"Persist items to storage","Persistir elementos ao armazenar"}.
{"Ping","Ping"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Observe que tais opções farão backup apenas da base de dados Mnesia. Caso você esteja utilizando o modulo ODBC, você precisará fazer backup de sua base de dados SQL separadamente."}.
{"Please, wait for a while before sending new voice request","Por favor, espere antes de enviar uma nova requisição de voz"}.
{"Pong","Pong"}.
{"Port ~b","Porta ~b"}.
{"Port","Porta"}.
{"Present real Jabber IDs to","Tornar o Jabber ID real visível por"}.
{"private, ","privado"}.
{"private, ","privado, "}.
{"Protocol","Porta"}.
{"Publish-Subscribe","Publicação de Tópico"}.
{"PubSub subscriber request","PubSub requisição de assinante"}.
@@ -265,7 +272,7 @@
{"Registration in mod_irc for ","Registro em mod_irc para "}.
{"Remote copy","Copia remota"}.
{"Remove All Offline Messages","Remover Todas as Mensagens Offline"}.
{"Remove","Borrar"}.
{"Remove","Remover"}.
{"Remove User","Remover usuário"}.
{"Replaced by new connection","Substituído por nova conexão"}.
{"Resources","Recursos"}.
@@ -330,7 +337,8 @@
{"Sunday","Domingo"}.
{"That nickname is already in use by another occupant","O apelido (nick) já está sendo utilizado"}.
{"That nickname is registered by another person","O nick já está registrado por outra pessoa"}.
{"The captcha is valid.","O captcha é inválido."}.
{"The CAPTCHA is valid.","O CAPTCHA é inválido."}.
{"The CAPTCHA verification has failed","A verificação do CAPTCHA falhou"}.
{"The collections with which a node is affiliated","As coleções com as quais o nó está relacionado"}.
{"the password is","a senha é"}.
{"The password of your Jabber account was successfully changed.","A senha da sua conta Jabber foi mudada com sucesso."}.
@@ -347,6 +355,7 @@
{"Thursday","Quinta"}.
{"Time delay","Intervalo (Tempo)"}.
{"Time","Fecha"}.
{"Too many CAPTCHA requests","Número excessivo de requisições para o CAPTCHA"}.
{"To","Para"}.
{"To ~s","Para ~s"}.
{"Traffic rate limit is exceeded","Limite de banda excedido"}.
@@ -355,7 +364,7 @@
{"Transactions Logged:","Transações de log:"}.
{"Transactions Restarted:","Transações reiniciadas:"}.
{"Tuesday","Terça"}.
{"Unable to generate a captcha","Impossível gerar um captcha"}.
{"Unable to generate a CAPTCHA","Impossível gerar um CAPTCHA"}.
{"Unauthorized","Não Autorizado"}.
{"Unregister a Jabber account","Deletar conta Jabber"}.
{"Unregister","Deletar registro"}.
@@ -366,7 +375,7 @@
{"Update plan","Plano de Atualização"}.
{"Update script","Script de atualização"}.
{"Uptime:","Uptime:"}.
{"Use of STARTTLS required","É obrigatório usar STARTTLS"}.
{"Use of STARTTLS required","É obrigatório uso de STARTTLS"}.
{"User Management","Gerenciamento de Usuários"}.
{"Users are not allowed to register accounts so quickly","Usuários não estão autorizados a registrar contas imediatamente"}.
{"Users Last Activity","Ultimas atividades dos usuários"}.
@@ -378,6 +387,8 @@
{"Virtual Hosts","Hosts virtuais"}.
{"Visitors are not allowed to change their nicknames in this room","Nesta sala, os visitantes não pode mudar seus apelidos"}.
{"Visitors are not allowed to send messages to all occupants","Os visitantes não podem enviar mensagens a todos os ocupantes"}.
{"Voice request","Requisição de voz"}.
{"Voice requests are disabled in this conference","Requisições de voz estào desabilitadas nesta conferência"}.
{"Wednesday","Quarta"}.
{"When to send the last published item","Quando enviar o último tópico publicado"}.
{"Whether to allow subscriptions","Permitir subscrições"}.
@@ -387,7 +398,7 @@
{"You need an x:data capable client to configure mod_irc settings","Necessitas um cliente com suporte de x:data para configurar las opções de mod_irc"}.
{"You need an x:data capable client to configure room","Necessitas um cliente com suporte de x:data para configurar la sala"}.
{"You need an x:data capable client to search","Necessitas um cliente com suporte de x:data para poder buscar"}.
{"Your active privacy list has denied the routing of this stanza.","Sua lista de privacidade ativa negou o roteamento desta estada."}.
{"Your active privacy list has denied the routing of this stanza.","Sua lista de privacidade ativa negou o roteamento deste."}.
{"Your contact offline message queue is full. The message has been discarded.","Sua fila de mensagens offline esta cheia. Sua mensagem foi descartada"}.
{"Your Jabber account was successfully created.","Sua conta jabber foi criada corretamente."}.
{"Your Jabber account was successfully deleted.","Sua conta Jabber foi deletada com sucesso."}.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+16 -3
View File
@@ -20,7 +20,9 @@
{"Allow users to send invites","Разрешить пользователям посылать приглашения"}.
{"Allow users to send private messages","Разрешить приватные сообщения"}.
{"Allow visitors to change nickname","Разрешить посетителям изменять псевдоним"}.
{"Allow visitors to send private messages to","Разрешить посетителям посылать приватные сообщения"}.
{"Allow visitors to send status text in presence updates","Разрешить посетителям вставлять текcт статуса в сообщения о присутствии"}.
{"Allow visitors to send voice requests","Разрешить посетителям запрашивать право голоса"}.
{"All Users","Все пользователи"}.
{"Announcements","Объявления"}.
{"anyone","всем участникам"}.
@@ -75,6 +77,7 @@
{"Dump Backup to Text File at ","Копирование в текстовый файл на "}.
{"Dump to Text File","Копирование в текстовый файл"}.
{"Edit Properties","Изменить параметры"}.
{"Either approve or decline the voice request.","Подтвердите или отклоните право голоса."}.
{"ejabberd IRC module","ejabberd IRC модуль"}.
{"ejabberd MUC module","ejabberd MUC модуль"}.
{"ejabberd Publish-Subscribe module","Модуль ejabberd Публикации-Подписки"}.
@@ -98,8 +101,10 @@
{"Erlang Jabber Server","Erlang Jabber Server"}.
{"Error","Ошибка"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Пример: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Exclude Jabber IDs from CAPTCHA challenge","Исключить показ капчи для списка Jabber ID"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Экспорт данных всех пользователей сервера в файлы формата PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Экспорт пользовательских данных домена в файлы формата PIEFXIS (XEP-0227):"}.
{"Failed to extract JID from your voice request approval","Ошибка обработки JID из вашего запроса на право голоса"}.
{"Family Name","Фамилия"}.
{"February","февраля"}.
{"Fill in fields to search for any matching Jabber User","Заполните форму для поиска пользователя Jabber"}.
@@ -113,6 +118,7 @@
{"Get User Last Login Time","Получить время последнего подключения пользователя"}.
{"Get User Password","Получить пароль пользователя"}.
{"Get User Statistics","Получить статистику по пользователю"}.
{"Grant voice to this person?","Предоставить голос?"}.
{"Groups","Группы"}.
{"Group ","Группа "}.
{"has been banned","запретили входить в комнату"}.
@@ -168,7 +174,7 @@
{"List of modules to start","Список запускаемых модулей"}.
{"Low level update script","Низкоуровневый сценарий обновления"}.
{"Make participants list public","Сделать список участников видимым всем"}.
{"Make room captcha protected","Сделать комнату защищённой капчей"}.
{"Make room CAPTCHA protected","Сделать комнату защищённой капчей"}.
{"Make room members-only","Комната только для зарегистрированных участников"}.
{"Make room moderated","Сделать комнату модерируемой"}.
{"Make room password protected","Сделать комнату защищённой паролем"}.
@@ -185,6 +191,7 @@
{"Memory","Память"}.
{"Message body","Тело сообщения"}.
{"Middle Name","Отчество"}.
{"Minimum interval between voice requests (in seconds)","Минимальный интервал между запросами на право голоса"}.
{"Moderator privileges required","Требуются права модератора"}.
{"moderators only","только модераторам"}.
{"Modified modules","Изменённые модули"}.
@@ -200,6 +207,7 @@
{"Nickname ~s does not exist in the room","Псевдоним ~s в комнате отсутствует"}.
{"Nickname","Псевдоним"}.
{"No body provided for announce message","Тело объявления не должно быть пустым"}.
{"nobody","никто"}.
{"No Data","Нет данных"}.
{"Node ID","ID узла"}.
{"Node not found","Узел не найден"}.
@@ -227,6 +235,7 @@
{"Only deliver notifications to available users","Доставлять уведомления только доступным пользователям"}.
{"Only moderators and participants are allowed to change the subject in this room","Только модераторы и участники могут изменять тему в этой комнате"}.
{"Only moderators are allowed to change the subject in this room","Только модераторы могут изменять тему в этой комнате"}.
{"Only moderators can approve voice requests","Только модераторы могут утверждать запросы на право голоса"}.
{"Only occupants are allowed to send messages to the conference","Только присутствующим разрешается посылать сообщения в конференцию"}.
{"Only occupants are allowed to send queries to the conference","Только присутствующим разрешается посылать запросы в конференцию"}.
{"Only service administrators are allowed to send service messages","Только администратор службы может посылать служебные сообщения"}.
@@ -250,6 +259,7 @@
{"Persist items to storage","Сохранять публикации в хранилище"}.
{"Ping","Пинг"}.
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Заметьте, что здесь производится резервное копирование только встроенной базы данных Mnesia. Если Вы также используете другое хранилище данных (например с помощью модуля ODBC), то его резервное копирование следует осуществлять отдельно."}.
{"Please, wait for a while before sending new voice request","Пожалуйста, подождите перед тем как подать новый запрос на право голоса"}.
{"Pong","Понг"}.
{"Port ~b","Порт ~b"}.
{"Port","Порт"}.
@@ -338,7 +348,7 @@
{"Sunday","Воскресенье"}.
{"That nickname is already in use by another occupant","Этот псевдоним уже занят другим участником"}.
{"That nickname is registered by another person","Этот псевдоним зарегистрирован кем-то другим"}.
{"The captcha is valid.","Проверка капчи прошла успешно."}.
{"The CAPTCHA is valid.","Проверка капчи прошла успешно."}.
{"The CAPTCHA verification has failed","Проверка капчи не пройдена"}.
{"The collections with which a node is affiliated","Имя коллекции, в которую входит узел"}.
{"The password is too weak","Слишком слабый пароль"}.
@@ -357,6 +367,7 @@
{"Thursday","Четверг"}.
{"Time delay","По истечение"}.
{"Time","Время"}.
{"Too many CAPTCHA requests","Слишком много запросов капчи"}.
{"To ~s","К ~s"}.
{"To","Кому"}.
{"Traffic rate limit is exceeded","Превышен лимит скорости посылки информации"}.
@@ -365,7 +376,6 @@
{"Transactions Logged:","Транзакции запротоколированные:"}.
{"Transactions Restarted:","Транзакции перезапущенные:"}.
{"Tuesday","Вторник"}.
{"Unable to generate a captcha","Не получилось создать капчу"}.
{"Unable to generate a CAPTCHA","Не получилось создать капчу"}.
{"Unauthorized","Не авторизован"}.
{"Unregister a Jabber account","Удалить Jabber-аккаунт"}.
@@ -378,6 +388,7 @@
{"Update ","Обновление "}.
{"Uptime:","Время работы:"}.
{"Use of STARTTLS required","Вы обязаны использовать STARTTLS"}.
{"User JID","JID пользователя"}.
{"User Management","Управление пользователями"}.
{"Username:","Имя пользователя:"}.
{"Users are not allowed to register accounts so quickly","Пользователи не могут регистрировать учётные записи так быстро"}.
@@ -390,6 +401,8 @@
{"Virtual Hosts","Виртуальные хосты"}.
{"Visitors are not allowed to change their nicknames in this room","Посетителям запрещено изменять свои псевдонимы в этой комнате"}.
{"Visitors are not allowed to send messages to all occupants","Посетителям не разрешается посылать сообщения всем присутствующим"}.
{"Voice requests are disabled in this conference","Запросы на право голоса отключены в этой конференции"}.
{"Voice request","Запрос на право голоса"}.
{"Wednesday","Среда"}.
{"When to send the last published item","Когда посылать последний опубликованный элемент"}.
{"Whether to allow subscriptions","Разрешить подписку"}.
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -163,7 +163,7 @@
{"List of modules to start","Zoznam modulov, ktoré majú byť spustené"}.
{"Low level update script","Nízkoúrovňový aktualizačný skript"}.
{"Make participants list public","Nastaviť zoznam zúčastnených ako verejný"}.
{"Make room captcha protected","Chrániť miestnosť systémom captcha"}.
{"Make room CAPTCHA protected","Chrániť miestnosť systémom CAPTCHA"}.
{"Make room members-only","Nastaviť miestnosť len pre členov"}.
{"Make room moderated","Nastaviť miestnosť ako moderovanú"}.
{"Make room password protected","Chrániť miestnosť heslom"}.
@@ -325,7 +325,7 @@
{"Sunday","Nedeľa"}.
{"That nickname is already in use by another occupant","Prezývka je už používaná iným členom"}.
{"That nickname is registered by another person","Prezývka je už zaregistrovaná inou osobou"}.
{"The captcha is valid.","Platná captcha."}.
{"The CAPTCHA is valid.","Platná CAPTCHA."}.
{"The collections with which a node is affiliated","Kolekcie asociované s uzlom"}.
{"the password is","heslo je"}.
{"This participant is kicked from the room because he sent an error message to another participant","Účastník bol vyhodený z miestnosti, pretože poslal chybovú správu inému účastníkovi"}.
@@ -343,7 +343,6 @@
{"Transactions Logged:","Transakcie zaznamenaná"}.
{"Transactions Restarted:","Transakcie reštartovaná"}.
{"Tuesday","Utorok"}.
{"Unable to generate a captcha","Nepodarilo sa vygenerovat captcha"}.
{"Unauthorized","Neautorizovaný"}.
{"Update ","Aktualizovať "}.
{"Update","Aktualizovať"}.
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -312,7 +312,7 @@
{"Subscription","Prenumeration"}.
{"Sunday","Söndag"}.
{"That nickname is registered by another person","Smeknamnet är reserverat"}.
{"The captcha is valid.","Din captcha är godkänd."}.
{"The CAPTCHA is valid.","Din CAPTCHA är godkänd."}.
{"the password is","Lösenordet är"}.
{"This participant is kicked from the room because he sent an error message","Deltagaren har blivit kickad fran rummet p.g.a att han skickade ett errormeddelande"}.
{"This participant is kicked from the room because he sent an error message to another participant","Deltagaren har blivit kickad från rummet p.g.a att han skickade ett errormeddelande till en annan deltagare"}.
@@ -329,7 +329,6 @@
{"Transactions Logged:","Transaktioner loggade "}.
{"Transactions Restarted:","Transaktioner omstartade"}.
{"Tuesday","Tisdag"}.
{"Unable to generate a captcha","Kunde inte generera ett captcha"}.
{"Unauthorized","Ej auktoriserad"}.
{"Update message of the day (don't send)","Uppdatera dagens status meddelande (skicka inte)"}.
{"Update message of the day on all hosts (don't send)","Uppdatera dagens status meddelande på alla värdar (skicka inte)"}.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More