Compare commits

..

309 Commits

Author SHA1 Message Date
Badlop 4419e9f90a Revert the misplaced 2055 2058 and 2062 which were intended for trunk.
SVN Revision: 2065
2009-05-07 23:03:31 +00:00
Mickaël Rémond 98ad6ccbca * src/ejabberd_debug.erl: Fix small typo.
SVN Revision: 2062
2009-05-07 07:17:29 +00:00
Mickaël Rémond 79f9911c33 * /src/ejabberd_debug.erl: Catch profiler stop errors.
SVN Revision: 2058
2009-05-06 20:05:13 +00:00
Mickaël Rémond 6d4161334d * src/ejabberd_app.erl: Better support for profiling.
* src/ejabberd_debug.erl: Likewise.

SVN Revision: 2055
2009-05-06 14:54:24 +00:00
Badlop 09bedc839b Fix mistake when calling win32_dns.
SVN Revision: 1990
2009-03-11 18:36:27 +00:00
Christophe Romain 503663e884 ejabberd 2.0.4 release
SVN Revision: 1989
2009-03-11 12:56:48 +00:00
Christophe Romain b6abe1b926 fix typo in previous patch backport
SVN Revision: 1988
2009-03-10 21:10:42 +00:00
Badlop 69b11b677d * doc/release_notes_2.0.4.txt: Added file for new release
SVN Revision: 1987
2009-03-10 16:25:20 +00:00
Badlop 8f41436cd8 * src/tls/tls_drv.c: Fix encryption problem for ejabberd_http
after timeout (thanks to Alexey Shchepin)(EJAB-880)

SVN Revision: 1986
2009-03-10 15:21:36 +00:00
Christophe Romain b0864396ec typo fix on roster access_model
SVN Revision: 1983
2009-03-10 12:08:12 +00:00
Christophe Romain dcac4ed8c8 Fix PEP with other domains and s2s (EJAB-825)
SVN Revision: 1981
2009-03-10 10:46:19 +00:00
Badlop 74c202a714 * src/tls/tls_drv.c: Fix to support OpenSSL older than
0.9.8f (EJAB-877)(thanks to Jonathan Schleifer)
* doc/guide.tex: It is again supported OpenSSL older than 0.9.8f
* doc/guide.html: Likewise

SVN Revision: 1979
2009-03-09 19:17:53 +00:00
Badlop 10b22b52ef Merge 1925 from trunk.
* src/mod_proxy65/mod_proxy65_service.erl: if an ip option is not
defined, the module takes an IP address of a local
hostname (thanks to Evgeniy Khramtsov)

SVN Revision: 1978
2009-03-09 14:44:46 +00:00
Badlop a6145084f1 * src/ejabberd_c2s.erl: Enforce privacy rules also for
subscription requests (EJAB-300)
* src/ejabberd_sm.erl: Likewise

SVN Revision: 1976
2009-03-07 08:59:26 +00:00
Badlop 367002f89a Merge 1856 from trunk.
* src/eldap/eldap.erl: moves waiting for response queries to
pending queue on an LDAP connection failure (thanks to Evgeniy
Khramtsov)

SVN Revision: 1974
2009-03-06 11:50:23 +00:00
Badlop 75a8ebf293 Merge 1855 from trunk.
* src/eldap/eldap.erl: implemented queue for pending
queries (thanks to Evgeniy Khramtsov)

SVN Revision: 1973
2009-03-06 11:42:56 +00:00
Badlop 4e17b1463b Merge 1851 from trunk.
* src/eldap/eldap.erl: Close a connection on tcp_error (thanks to
Evgeniy Khramtsov)

SVN Revision: 1972
2009-03-06 11:39:12 +00:00
Badlop 5c73d160cc Merge 1682 from trunk.
* src/eldap/Makefile.in: added +optimize and +driver compilation
options (thanks to Evgeniy Khramtsov)
* src/eldap/Makefile.win32: Likewise

SVN Revision: 1971
2009-03-06 11:34:27 +00:00
Badlop ac69fbb24d * src/ejabberd_app.erl: In a Windows machine, explicitly add the
nameservers, as it seems Erlang does not do itself (EJAB-860)
* src/win32_dns.erl: Get name servers from Windows registy (thanks
to Geoff Cant)

SVN Revision: 1968
2009-03-05 20:03:18 +00:00
Badlop 3454f2fe04 * doc/guide.tex: Require OpenSSL 0.9.8f or higher (EJAB-877)
* doc/guide.html: Likewise

SVN Revision: 1967
2009-03-05 19:48:24 +00:00
Badlop 5374c0b069 * src/ejabberd_auth.erl: If anonymous auth is enabled, when
checking if the account already exists in other auth methods, take
into account if the auth method failed (EJAB-882)
* src/ejabberd_auth_anonymous.erl: Likewise
* src/ejabberd_auth_external.erl: Likewise
* src/ejabberd_auth_internal.erl: Likewise
* src/ejabberd_auth_ldap.erl: Likewise
* src/ejabberd_auth_odbc.erl: Likewise
* src/ejabberd_auth_pam.erl: Likewise

SVN Revision: 1966
2009-03-04 18:34:02 +00:00
Christophe Romain e4db030f4e Allow node creation without configure item
SVN Revision: 1962
2009-03-04 01:10:44 +00:00
Christophe Romain abbfa96fc4 backport typo fix from trunk
SVN Revision: 1959
2009-03-04 00:01:19 +00:00
Christophe Romain 55942d1f4a Add roster subscriptions handling and make PEP events sent to all resources
SVN Revision: 1957
2009-03-03 22:42:52 +00:00
Badlop 06abf6331b Merge fix from trunk r1910
* src/web/ejabberd_http.erl: Added a workaround for inet:peername
returning 'ebadf'

SVN Revision: 1928
2009-02-27 16:19:19 +00:00
Badlop 8be6b8df76 Merge fix from trunk r1190
* src/cyrsasl_digest.erl: Unquote backslash in DIGEST-MD5 quoted
strings (EJAB-304)

SVN Revision: 1927
2009-02-27 15:57:35 +00:00
Badlop a1e7e737bf * src/tls/tls_drv.c: S2S connection with STARTTLS fails to Gtalk
and recent Openfire (thanks to Philipp Hancke)(EJAB-877)

SVN Revision: 1926
2009-02-27 15:42:27 +00:00
Badlop fa08801574 * doc/guide.tex: No mention to the release date in ejabberd Guide
or release notes. The date of an ejabberd release is determined by
the date of the corresponding release announcement.

SVN Revision: 1922
2009-02-26 23:10:28 +00:00
Christophe Romain dcb05c4061 Do not call mod_caps:clear_caps as it breaks PubSub/PEP (EJAB-854)
SVN Revision: 1911
2009-02-23 15:51:01 +00:00
Badlop 6ea29663a3 Merge r1880 from trunk:
* src/mod_muc/mod_muc_room.erl: Owner of a password protected room
must provide the password, like other participants (EJAB-867)

SVN Revision: 1906
2009-02-21 09:37:05 +00:00
Badlop ad48607327 Merge r1879 from trunk:
* src/mod_muc/mod_muc_log.erl: Prevent XSS in MUC logs by
linkifying only a few known protocols (EJAB-850)

SVN Revision: 1905
2009-02-21 09:30:23 +00:00
Badlop fea7eac245 Merge r1877 from trunk:
* src/mod_roster.erl: When account is deleted, cancel presence
subscription for all roster items (EJAB-790)
* src/mod_roster_odbc.erl: Likewise

SVN Revision: 1904
2009-02-21 09:28:58 +00:00
Badlop b1f3d56beb Merge r1874 from trunk:
* src/mod_shared_roster.erl: Fix bug: a pending subscription
request, and later the requester added to the roster due to a
shared roster group, that request could neither be accepted or
rejected (thanks to Brian Cully)(EJAB-869)

SVN Revision: 1903
2009-02-21 09:27:27 +00:00
Badlop 7c6ccbb744 Merge r1864 from trunk:
* src/mod_pubsub/mod_pubsub.erl: The table pubsub_node in ejabberd
older than 2.0.2 had indexes for parentid and type. This is not
required since ejabberd 2.0.2, so those indexes can be
deleted. (EJAB-669)

SVN Revision: 1902
2009-02-21 09:26:12 +00:00
Badlop 02d7d0aa4c Merge r1862 from trunk:
* doc/Makefile: In Clean do not remove html. In new Distclean, remove also html.

SVN Revision: 1901
2009-02-21 09:24:57 +00:00
Badlop 7b10b69031 Merge r1861 from trunk:
* doc/Makefile: When cleaning, remove contributed_modules.tex

SVN Revision: 1900
2009-02-21 09:23:42 +00:00
Badlop 606b1d1b52 Merge r1858 from trunk:
* doc/guide.tex: Provide only an example of language option
* doc/guide.html: Likewise

SVN Revision: 1899
2009-02-21 09:22:51 +00:00
Badlop 2cd587bec5 Merge r1854 from trunk:
* doc/guide.tex: mod_muc can run in several nodes of cluster
* doc/guide.html: Likewise

SVN Revision: 1898
2009-02-21 09:21:31 +00:00
Badlop f6ee802960 Merge r1850 from trunk:
* src/odbc/mysql.sql: Fix complain about comment syntax
* src/odbc/pg.sql: Likewise

SVN Revision: 1897
2009-02-21 09:19:56 +00:00
Badlop e6ecb38ed9 Merge r1836 from trunk:
* doc/guide.tex: Explain that account creation is only supported
by internal and odbc authentication methods
* doc/guide.html: Likewise

SVN Revision: 1896
2009-02-21 09:19:11 +00:00
Badlop cd29a77759 Merge r1822 and partial r1834 from trunk:
* src/mod_privacy.erl: Privacy list items must be processed in the
specified order (EJAB-848)
* src/mod_privacy_odbc.erl: Likewise

SVN Revision: 1895
2009-02-21 09:15:43 +00:00
Badlop 677387bc80 Merge r1666 from trunk:
* src/ejabberd_c2s.erl: Ensure unique ID in roster push (EJAB-721)
* src/mod_roster.erl: Likewise
* src/mod_roster_odbc.erl: Likewise
* src/mod_shared_roster.erl: Likewise

SVN Revision: 1894
2009-02-21 09:12:59 +00:00
Christophe Romain f362fe93ec fix nodetree plugin resolver
SVN Revision: 1888
2009-02-19 11:24:26 +00:00
Christophe Romain 9b6343faa4 prevent from calling get_vh_registered_users/2 when not available
SVN Revision: 1870
2009-02-13 13:30:20 +00:00
Badlop 1b0ea74818 * doc/release_notes_2.0.3.txt: Minor changes
SVN Revision: 1818
2009-01-13 18:05:06 +00:00
Mickaël Rémond d87336e12e * src/tls/Makefile.win32: Windows compilation support.
* src/tls/tls_drv.c: Likewise.
* src/tls/stdint.h: Likewise.
* doc/guide.tex: Update Erlang version in Windows compilation documentation.

SVN Revision: 1817
2009-01-13 16:36:10 +00:00
Badlop 32805c3ba1 * src/msgs/pl.po: Fix typo (thanks to Apag0r)(EJAB-844)
SVN Revision: 1814
2009-01-12 23:47:07 +00:00
Badlop 19966a7353 * doc/guide.tex: Update copyright date 2008 to 2009 (EJAB-842)
* doc/guide.html: Likewise
* src/*/*.erl: Likewise
* src/*/*.erl: Remove unneeded blankspaces in license text

SVN Revision: 1805
2009-01-12 14:52:59 +00:00
Christophe Romain be99c4b0eb prevent unauthorized entity to gain none-affiliation for given entity
SVN Revision: 1801
2009-01-11 04:07:39 +00:00
Christophe Romain da893f4293 fix owners cache and fix unsubscribe permissions (EJAB-840)
SVN Revision: 1798
2009-01-11 01:41:22 +00:00
Christophe Romain 6e04bcbbf8 fix unsubscription of full jid subscribed node (EJAB-839)
SVN Revision: 1793
2009-01-10 13:35:34 +00:00
Badlop 053f45ab39 * doc/release_notes_2.0.3.txt: New file for new release
SVN Revision: 1790
2009-01-09 14:10:14 +00:00
Badlop 3e12700e11 * doc/guide.tex: Improve explanation of backup commands
* doc/guide.html: Likewise

SVN Revision: 1789
2009-01-09 14:04:56 +00:00
Badlop 048b1a5db3 * src/web/ejabberd_web_admin.erl: New appearance of WebAdmin logo,
fixed logo-fill.

SVN Revision: 1788
2009-01-09 13:42:15 +00:00
Badlop 012a0529a8 * src/mod_configure.erl: Fix access check for vhost configuration
SVN Revision: 1787
2009-01-09 00:39:57 +00:00
Christophe Romain 553b402d03 fix EJAB-701 and EJAB-836
SVN Revision: 1786
2009-01-08 21:53:23 +00:00
Mickaël Rémond efaf182d54 * src/ejabberd_listener.erl: Define send timeout option to avoid blocking on socket send (EJAB-746).
* src/ejabberd_s2s_out.erl: Likewise.

SVN Revision: 1785
2009-01-08 21:01:27 +00:00
Badlop 2c5b0fb896 * src/msgs/ru.po: Fix typo (thanks to Dominges)
* src/msgs/ru.msg: Likewise

SVN Revision: 1776
2009-01-06 15:09:53 +00:00
Alexey Shchepin 04ff0c2f6f * src/tls/tls_drv.c: Added a flag to avoid certificate validation
* src/tls/tls.erl: Likewise
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 1775
2009-01-05 17:27:30 +00:00
Badlop b32793efcf * src/*.erl: Fix EDoc comments
SVN Revision: 1772
2009-01-03 21:31:36 +00:00
Christophe Romain ee02b0b57f PubSub cleanup, EJAB-827 fix, EJAB-701 partial fix
SVN Revision: 1765
2009-01-03 00:23:58 +00:00
Mickaël Rémond 5141edd757 * src/ejabberd_c2s.erl: Remove useless comment and port Alexey fix to 2.0.x branch.
SVN Revision: 1764
2008-12-29 12:06:34 +00:00
Mickaël Rémond c0cc236196 * src/ejabberd_c2s.erl: Add resource to the from packet attribute if missing (EJAB-812).
SVN Revision: 1760
2008-12-28 12:23:20 +00:00
Badlop 3a3a89007a * src/aclocal.m4: Fixes in configure script: fix
disable-disable_zlib and disable-pam; in case of problems, PAM
verification aborts with error instead of warning. (EJAB-787)
* src/configure.ac: Likewise
* src/configure: Likewise

SVN Revision: 1754
2008-12-24 12:03:13 +00:00
Badlop 919914d8ac * src/acl.erl: New ACL: shared_group (thanks to Maxim Ryazanov)
* doc/guide.tex: Likewise

* src/mod_shared_roster.erl: Push new group members when
registered or manually added to group: EJAB-730 EJAB-731 EJAB-732
EJAB-767 EJAB-794. When user is added to group, push it to other
members, and other members to it. When user is removed from group,
push deletion to other members, and other members to it. When user
is registered, push him to members of group @all@. When user is
deleted, push deletion to members of group @all@. Document several
functions in mod_shared_roster.

* src/ejabberd_auth.erl: Rename hook user_registered to
register_user, for name consistency with the widely used hook
remove_user. Run hook register_user in ejabberd_auth, so it's run
when account is created with any method. Run hook remove_user in
ejabberd_auth, so it's run when account is deleted with any
method.
* src/ejabberd_auth_internal.erl: Likewise
* src/ejabberd_auth_ldap.erl: Likewise
* src/ejabberd_auth_odbc.erl: Likewise
* src/ejabberd_auth_pam.erl: Likewise
* src/mod_register.erl: Likewise

SVN Revision: 1753
2008-12-23 19:24:45 +00:00
Christophe Romain d153b773a3 make caps store only required user_caps_default
SVN Revision: 1749
2008-12-23 10:54:25 +00:00
Christophe Romain 252a08e037 Improve handling of PEP sent to external contacts (EJAB-825)
SVN Revision: 1746
2008-12-23 10:25:00 +00:00
Badlop 9539a50c33 * src/cyrsasl_digest.erl: Check digest-uri in SASL digest
authentication (thanks to Paul Guyot)(EJAB-569)

SVN Revision: 1743
2008-12-23 01:02:44 +00:00
Badlop 2bcee1f85d * src/odbc/odbc_queries.erl: Fix removal of private_storage of an
account when the account is removed

* src/mod_privacy.erl: Remove privacy lists of an account when the
account is removed (EJAB-720)
* src/mod_privacy_odbc.erl: Likewise

SVN Revision: 1742
2008-12-23 00:48:09 +00:00
Christophe Romain 2890c01979 Fix send_last_published_item issue when running on clustered table (EJAB-793)
SVN Revision: 1739
2008-12-19 23:21:26 +00:00
Badlop cd1eddde1a * src/mod_pubsub/mod_pubsub.erl: Fix update pubsub tables from
ejabberd 1.x to 2.x (EJAB-817)

SVN Revision: 1734
2008-12-16 17:44:48 +00:00
Badlop a61b838ad9 * doc/guide.tex: Fix capitalization of some section titles
* doc/guide.tex: Mention as optional Requirements: mysql, pgsql
and pam

* src/ejabberd_ctl.erl: Command reopen-log must also rotate
sasl.log (thanks to Alexander Tsvyashchenko)(EJAB-711)
* src/ejabberd_logger_h.erl: Export the function rotate_log/1
* doc/guide.tex: Improve explanation of log files rotation

* doc/guide.tex: Improve explanation of watchdog admins
option: only useful for developers (EJAB-816)
* src/ejabberd.cfg.example: Likewise

* doc/guide.tex: Say 'higher' instead of 'newer' in requirements
* README: Likewise

* doc/guide.tex: Simplify example mod_muc configuration

SVN Revision: 1733
2008-12-16 17:39:05 +00:00
Christophe Romain bba71d464e remove pubsub_state record when unsubscribing node without affiliation (EJAB-776)
SVN Revision: 1718
2008-12-08 21:49:40 +00:00
Christophe Romain 6f71558e18 typo fix
SVN Revision: 1714
2008-12-08 19:47:23 +00:00
Christophe Romain feb0bceb41 ignore unknown configuration fields (EJAB-762); fix node authorization bug (EJAB-798)
SVN Revision: 1713
2008-12-08 19:38:59 +00:00
Christophe Romain 6349ff898f Reduce memory consumption due to caps handling
SVN Revision: 1711
2008-12-08 14:08:58 +00:00
Mickaël Rémond 197246bad8 * src/ejabberd_c2s.erl: Enforce client stanza from attribute (EJAB-812).
* src/jlib.erl: Likewise.

SVN Revision: 1707
2008-12-08 09:31:40 +00:00
Badlop cc9990fcaa Fix default value of default_room_options (thanks to Aleksey Shchepin)
SVN Revision: 1702
2008-12-03 15:06:21 +00:00
Badlop bd553be6cd * doc/guide.tex: New subsection Database Connection
* doc/guide.html: Likewise

SVN Revision: 1697
2008-12-01 17:45:01 +00:00
Christophe Romain 84bc6844b9 Don't create a SSL context on every connection and disable SSLv2 on outgoing connections (EJAB-781)
SVN Revision: 1694
2008-12-01 15:29:59 +00:00
Christophe Romain efb6615cfd Hibernate ejabberd_receiver and ejabberd_frontend_socket processes after timeout
SVN Revision: 1693
2008-12-01 15:16:40 +00:00
Badlop db8eeb78e5 Remove debug line from SVN r1685
SVN Revision: 1689
2008-11-28 19:51:30 +00:00
Badlop 693e32aecf * src/mod_irc/mod_irc.erl: Announce disco#info (thanks to Spike)
* src/mod_muc/mod_muc.erl: Announce disco#info disco#items
* src/mod_proxy65/mod_proxy65_service.erl: No announce disco#items
* src/mod_pubsub/mod_pubsub.erl: Announce disco#info disco#items
* src/mod_vcard.erl: Announce disco#info

SVN Revision: 1686
2008-11-26 16:04:27 +00:00
Badlop 34d93528ae * src/gen_mod.erl: First store module options in ETS and Mnesia,
then start the module. In case of failure, remove options from
ETS. Until now the module was started before the options were
stored in database, and some modules started incorrectly because
they couldn't access the options from database; for instance
mod_muc_room required this for reading max_users option.

* src/mod_muc/mod_muc_room.erl: Include the value of max_users
service option and the current max_users room option in the list
of allowed room limit values.

SVN Revision: 1685
2008-11-26 15:10:38 +00:00
Christophe Romain 8ef0fe6b56 pubsub/pep: get_node_affiliations resultset bugfix
SVN Revision: 1683
2008-11-25 23:04:22 +00:00
Badlop ba258b0a3e * doc/guide.tex: Improve legibility of mod_irc example config
SVN Revision: 1677
2008-11-12 00:21:47 +00:00
Mickaël Rémond 3dd58372fe * src/ejabberd_s2s_out.erl: exports the DNS resolution function.
SVN Revision: 1674
2008-11-08 17:50:54 +00:00
Badlop 2042a7ab27 * src/ejabberd_app.erl: Open ejabberd.log before parsing
ejabberd.cfg and translation files (EJAB-777)

SVN Revision: 1670
2008-10-27 10:56:46 +00:00
Christophe Romain 26cf780476 does not write item when max_items set to 0 (solves EJAB-768)
SVN Revision: 1660
2008-10-17 00:42:20 +00:00
Christophe Romain a2b8263a20 fix remove_user not unsubscribing user (EJAB-684)
SVN Revision: 1658
2008-10-16 23:07:06 +00:00
Christophe Romain e950adc0ef fix badarg issue on get_roster_info when allowed roster groups is not defined
SVN Revision: 1657
2008-10-16 22:14:04 +00:00
Jérôme Sautret 184251b162 * src/odbc/ejabberd_odbc.erl: log MySQL driver messages (merge 1652 from trunk).
SVN Revision: 1653
2008-10-13 15:29:05 +00:00
Jérôme Sautret 1effe2be49 Merge commit 1612 from trunk:
* src/mod_roster_odbc.erl: fix MySQL multiple requests issue.

SVN Revision: 1613
2008-10-07 12:34:23 +00:00
Badlop 8a12914fd6 * doc/guide.html: Regenerated
* doc/guide.tex: Fix a problem in SVN merge from trunk

SVN Revision: 1605
2008-10-06 15:01:06 +00:00
Jérôme Sautret a4ee23edfe Merge from trunk r1600:
* src/ejabberd_rdbms.erl: fix SQL database reconnection
issues (EJAB-764) and add odbc_start_interval configuration
directive (default to 30 seconds).
* src/odbc/ejabberd_odbc.erl: likewise.
* src/odbc/ejabberd_odbc_sup.erl: likewise.
* doc/guide.tex: likewise.

SVN Revision: 1601
2008-10-06 14:27:48 +00:00
Jérôme Sautret 7224ec8cb4 * src/odbc/odbc_queries.erl: Fix syntax error on update_roster_sql query.
SVN Revision: 1599
2008-10-03 15:49:24 +00:00
Jérôme Sautret 096825fc55 * src/odbc/odbc_queries.erl: Fix empty query that fails on MySQL (merged from trunk).
SVN Revision: 1598
2008-10-03 15:47:30 +00:00
Mickaël Rémond c9aef303a2 * src/mod_shared_roster.erl: Correct roster push when changing a shared roster entry name (EJAB-738).
SVN Revision: 1590
2008-10-01 14:52:25 +00:00
Badlop 3ced58c239 * src/*/Makefile.win32: Provide explicit beam filenames because
nmake does not accept wildcards (thanks to Attila
Vangel)(EJAB-543)

SVN Revision: 1588
2008-09-30 16:12:05 +00:00
Badlop 404c2dc0e5 * contrib/ejabberd-modules.repo: Include 2.0.x branches
SVN Revision: 1586
2008-09-29 15:16:45 +00:00
Mickaël Rémond 2a0823f423 * src/mod_configure.erl: Fix adhoc commands reply types for "get-online-users-num" and "get-registered-users-num" (EJAB-756).
SVN Revision: 1569
2008-09-22 16:08:37 +00:00
Badlop 995941b593 * doc/guide.tex: Fix explanation of mod_muc's anonymous
option. Make clear that an ejabberd_service can only serve a
single external component. Provide Mnesia directory when setting
clustering (thanks to Matthew Reilly)

SVN Revision: 1563
2008-09-15 18:38:52 +00:00
Badlop 2493bb99d4 * doc/guide.tex: Fix mod_proxy configuration example
* doc/guide.html: Likewise

SVN Revision: 1560
2008-09-02 17:31:10 +00:00
Badlop e0fdf9a4e9 Fix release date of ejabberd 2.0.2 to 28 August 2008
SVN Revision: 1557
2008-08-30 11:17:03 +00:00
Christophe Romain 55b586e51c send last published events now supports PEP events from unavailable users nodes (EJAB-698)
SVN Revision: 1549
2008-08-27 09:25:24 +00:00
Badlop 0b217097dd * doc/release_notes_2.0.2.txt: Update for final release
* doc/guide.tex: Windows binary installer requires MSVC++ 5
* doc/guide.html: Likewise

SVN Revision: 1548
2008-08-26 14:26:56 +00:00
Christophe Romain d5df314295 get_items bugfix (EJAB-716)
SVN Revision: 1541
2008-08-25 22:51:17 +00:00
Christophe Romain 28c34a844a Prevent case_clause error when ejabber_odbc:sql_query returns {error, Reason}
SVN Revision: 1539
2008-08-25 13:34:53 +00:00
Christophe Romain 3c88ab49f0 Prevent case_clause error when ejabber_odbc:sql_query returns {error, Reason}
SVN Revision: 1537
2008-08-25 13:11:25 +00:00
Badlop b338dd671f * src/ejabberd_check.erl: Detect correctly MSSQL and ODBC
configuration (EJAB-710)

SVN Revision: 1536
2008-08-25 12:08:22 +00:00
Geoff Cant 2cda62dceb EJAB-624: fixes mod_muc_room:is_visitor/2 to use get_role not get_affiliation
SVN Revision: 1535
2008-08-23 23:23:51 +00:00
Badlop 5d6fe1a055 * src/ejabberd_router.erl: Fix call to mnesia match_object
SVN Revision: 1533
2008-08-22 11:35:32 +00:00
Badlop 7ecbc0cd89 * doc/guide.tex: Fix names of chatroom to room, user to occupant
* doc/guide.html: Likewise

SVN Revision: 1532
2008-08-21 15:13:25 +00:00
Badlop 2f4db862f4 * src/mod_register.erl: Change password using mod_register always
returns success regardless of real result (EJAB-723)
* src/ejabberd_auth.erl: Likewise
* src/ejabberd_auth_external.erl: Likewise
* src/ejabberd_auth_internal.erl: Likewise
* src/ejabberd_auth_odbc.erl: Likewise

SVN Revision: 1530
2008-08-18 18:21:10 +00:00
Badlop 11f68cf7fd * src/msgs/sv.msg: Fixed formatting typos
SVN Revision: 1526
2008-08-16 12:06:13 +00:00
Badlop 5a05eb8d62 * src/gen_mod.erl: Export stop_module_keep_config/2 (EJAB-706)
SVN Revision: 1525
2008-08-16 12:03:21 +00:00
Badlop 79a0a44505 * doc/guide.tex: Explain that LDAP is read-only storage (thanks to
Evgeniy Khramtsov)
* doc/guide.html: Likewise

SVN Revision: 1521
2008-08-13 11:00:21 +00:00
Badlop 54842e7585 * src/msgs/sk.msg: Updated (thanks to Marek Becka)
SVN Revision: 1519
2008-08-11 00:48:57 +00:00
Badlop 76b19660e3 * src/msgs/eo.msg: Updated (thanks to Andreas van Cranenburgh)
* src/msgs/nl.msg: Updated (thanks to Andreas van Cranenburgh)
* src/msgs/sv.msg: Updated (thanks to Thore Alstromer and Heysan)

SVN Revision: 1518
2008-08-10 11:40:41 +00:00
Badlop 68ecc1f082 Retract from previous commit the code that checked the connection is attempted to a known served component (EJAB-717)
SVN Revision: 1517
2008-08-09 20:09:37 +00:00
Badlop 9147a1d2dd * src/ejabberd_service.erl: Fix XEP-0114 compliance: define xmlns
in header of error response; check the connection is attempted to
a served component; include in response the JID of served
component not server (thanks to Sergei Golovan)

SVN Revision: 1516
2008-08-09 18:08:00 +00:00
Badlop 469f1c43a6 * doc/release_notes_2.0.2.txt: Added for ejabberd 2.0.2-beta1
SVN Revision: 1503
2008-08-01 10:31:39 +00:00
Badlop 9dd66c241c * src/web/ejabberd_http.erl: Temporary solution for check of
packet size when HTTPS (EJAB-611)(EJAB-507)(EJAB-574)

SVN Revision: 1502
2008-08-01 08:50:19 +00:00
Badlop f5e489c764 * doc/guide.tex: Update Process-one name to ProcessOne (EJAB-708)
* doc/guide.html: Likewise
* doc/api/overview.edoc: Likewise
* src/*/*.erl: Likewise
* src/*/*.hrl: Likewise
* src/*/*.c: Likewise
* src/odbc/*.sql: Likewise

SVN Revision: 1499
2008-07-31 11:18:49 +00:00
Badlop 31b00c25c8 * src/mod_muc/mod_muc_room.erl: Support Reasons for all
affiliation and role changes (EJAB-306)

SVN Revision: 1498
2008-07-30 18:24:08 +00:00
Badlop 4f1fe31627 * src/gen_mod.erl: When ejabberd is kindly stopped, don't forget
modules configuration (EJAB-706)
* src/ejabberd_app.erl: Likewise

SVN Revision: 1497
2008-07-30 18:11:14 +00:00
Badlop d22154a2d4 * src/msgs/uk.msg: Fix: each string in a single line
* src/msgs/wa.msg: Likewise

* src/msgs/es.msg: Fix typo
* src/msgs/gl.msg: Likewise
* src/msgs/pt-br.msg: Likewise

* src/msgs/zh.msg: Fix some strings (thanks to Zhan Caibao)

SVN Revision: 1496
2008-07-30 14:09:36 +00:00
Badlop 751a8fbd37 * src/msgs/ca.msg: Updated (thanks to Badlop)
* src/msgs/cs.msg: Updated (thanks to Lukas Poliuvk)
* src/msgs/de.msg: Updated (thanks to Nikolaus Polak)
* src/msgs/es.msg: Updated (thanks to Badlop)
* src/msgs/fr.msg: Updated (thanks to Christophe Romain)
* src/msgs/it.msg: Updated (thanks to Luca Brivio)
* src/msgs/ja.msg: Updated (thanks to Tsukasa Hamano)
* src/msgs/no.msg: Updated (thanks to Stian B. Barmen)
* src/msgs/pl.msg: Updated (thanks to Zbyszek Zolkiewski)
* src/msgs/pt-br.msg: Updated (thanks to Otavio Fernandes)
* src/msgs/ru.msg: Updated (thanks to Evgeniy Khramtsov)
* src/msgs/tr.msg: Updated (thanks to Doruk Fisek)
* src/msgs/uk.msg: Updated (thanks to Ruslan Rakhmanin)
* src/msgs/wa.msg: Updated (thanks to Pablo Saratxaga)
* src/msgs/zh.msg: Updated (thanks to Shelley Shyan)

SVN Revision: 1495
2008-07-29 11:21:53 +00:00
Badlop 971165cb88 * doc/guide.tex: Document how to get error message when ejabberd
crash dumps at start (EJAB-660)
* doc/guide.html: Likewise

SVN Revision: 1494
2008-07-28 16:55:01 +00:00
Badlop 6ea15171f7 * src/mod_muc/mod_muc_room.erl: Add 'description' to the
mod_muc_room config record; it will be used in ejabberd 2.1.x
branch (EJAB-670)

SVN Revision: 1493
2008-07-28 16:15:51 +00:00
Christophe Romain 782ee63266 Speedup startup with many pubsub nodes (EJAB-669)
SVN Revision: 1490
2008-07-25 09:06:09 +00:00
Badlop d9f3c87899 * doc/guide.tex: Include example PAM configuration file
ejabberd.pam (thanks to Evgeniy Khramtsov)(EJAB-704)
* doc/guide.html: Likewise

SVN Revision: 1489
2008-07-24 18:21:40 +00:00
Badlop 2d5fdbab64 * src/mod_proxy65/mod_proxy65_lib.erl: Send protocol compliant
SOCKS5 reply; this breaks support of uncompliant Psi<0.10 (thanks
to Felix Geyer)(EJAB-632)
* src/mod_proxy65/mod_proxy65_stream.erl: Likewise

SVN Revision: 1488
2008-07-24 18:03:28 +00:00
Badlop f841acb21f * src/mod_register.erl: When a registration is blocked due to IP
limitation, return description in error stanza (EJAB-692)

SVN Revision: 1487
2008-07-24 17:49:37 +00:00
Christophe Romain 71e87aef6e allow owner to subscribe/get its one node (EJAB-705)
SVN Revision: 1485
2008-07-24 14:06:28 +00:00
Badlop df21b2d48c * src/Makefile.in: Support for parallel compilation with 'make -j'
in multi core CPUs: fix compilation dependencies; compile
behaviors before other source code (EJAB-697)(thanks to Jonathan
Schleifer)
* src/mod_pubsub/Makefile.in: Likewise
* src/eldap/Makefile.in: Likewise

SVN Revision: 1484
2008-07-24 11:53:00 +00:00
Badlop 35f520e3d9 * doc/guide.tex: Document room options allow_visitor_nickchange
and allow_visitor_status (EJAB-624)
* doc/guide.html: Likewise

SVN Revision: 1483
2008-07-24 11:22:43 +00:00
Geoff Cant 318823fe68 Altering XForms text for allow_visitor_status mod_muc_room option. (EJAB-624)
SVN Revision: 1481
2008-07-23 17:45:39 +00:00
Geoff Cant 102281194f Remove allow_visitor_presence, add allow_visitor_status [merge from trunk@1477-1478] (EJAB-624)
SVN Revision: 1479
2008-07-23 16:58:52 +00:00
Geoff Cant 6768a21d36 Implementing muc_room visitor presence restrictions. [merge from trunk@1475] (EJAB-624)
SVN Revision: 1476
2008-07-23 13:03:30 +00:00
Christophe Romain 895e104b6a subscribing to a node sends only last items (EJAB-700), send_last_items bugfix
SVN Revision: 1473
2008-07-23 01:13:36 +00:00
Christophe Romain c6090dd8ca pubsub improvement, fixes EJAB-684 EJAB-675 EJAB-663
SVN Revision: 1471
2008-07-22 23:41:40 +00:00
Badlop 293676d2a6 * src/ejabberd_config.erl: If syntax mistake in config file, show
specific error message (EJAB-616)

SVN Revision: 1470
2008-07-22 16:08:57 +00:00
Badlop 4ebaf3efa0 * src/mod_muc/mod_muc_room.erl: Fix to allow a server admin to add
himself as owner of a room (EJAB-687)

SVN Revision: 1460
2008-07-17 17:32:11 +00:00
Badlop 82e8b16a39 * src/Makefile.in: ejabberctl doesn't use the erl found by the
configure script (EJAB-676)
* src/ejabberdctl.template: Likewise

SVN Revision: 1459
2008-07-17 17:13:01 +00:00
Christophe Romain fc2ea76a45 use -DSSL39 if compiling with R12
SVN Revision: 1455
2008-07-16 22:23:58 +00:00
Badlop ae939c5f80 * src/ejabberd_c2s.erl: Put auth_module in Info always (EJAB-549)
SVN Revision: 1454
2008-07-16 18:05:46 +00:00
Christophe Romain 745106c83d Rolled back the previous IP getting patch, and Report connection's IP address
SVN Revision: 1452
2008-07-16 13:30:37 +00:00
Christophe Romain 546bb02153 Rolled back the previous IP getting patch, and Report connection's IP address
SVN Revision: 1451
2008-07-16 13:29:57 +00:00
Badlop 663f6f76a7 * doc/guide.tex: Improve explanation of option 'hosts' in
ejabberd_service
* doc/guide.html: Likewise

SVN Revision: 1448
2008-07-16 10:21:45 +00:00
Badlop b1ca88a5eb * src/configure.ac: Improve legibility
* src/aclocal.m4: Likewise
* src/configure: Likewise

* src/ejabberdctl.template: Remove garbage variable. Document node
option

* doc/guide.tex: Add references to sections.
* doc/guide.html: Likewise

SVN Revision: 1438
2008-07-12 21:32:45 +00:00
Badlop cdcc3a2520 * doc/guide.tex: Document how to insert a newline character in
welcome_message (EJAB-501)
* src/ejabberd.cfg.example: Likewise

SVN Revision: 1437
2008-07-11 13:47:15 +00:00
Christophe Romain 3c90d7c2b9 change needed to support previous blacklist support
SVN Revision: 1432
2008-07-11 07:13:41 +00:00
Christophe Romain bc18e89d61 Backport C2S blacklist support from trunk
SVN Revision: 1431
2008-07-11 06:59:45 +00:00
Badlop e956ca4fe3 * src/configure.ac: Don't check for erlang header file (EJAB-232)
* src/configure: Likewise

SVN Revision: 1430
2008-07-10 18:09:18 +00:00
Badlop 53c994825c * src/configure.ac: Check for erlang header files (EJAB-232)
* src/configure: Likewise

SVN Revision: 1429
2008-07-09 21:33:34 +00:00
Badlop 085d979037 * src/mod_pubsub/mod_pubsub.erl: Fix compilation warnings
* src/mod_pubsub/node_zoo.erl: Likewise
* src/mod_shared_roster.erl: Likewise

SVN Revision: 1428
2008-07-09 21:26:25 +00:00
Badlop 49b02c0a9f * src/mod_muc/mod_muc_log.erl: Fix XHTML compliance: ensure some
language is set, include ID attribute in each message, add
microseconds to ensure unique value (EJAB-497)

SVN Revision: 1426
2008-07-09 18:39:41 +00:00
Badlop d8405b694e * src/ejabberd_config.erl (load_file): error message on sasl.log
is not flattened (EJAB-616)

SVN Revision: 1424
2008-07-09 16:08:32 +00:00
Badlop 95bd9068f7 * doc/guide.tex: mod_muc_log XMPP URI supports the updated version
RFC 5122 (EJAB-631)
* doc/guide.html: Likewise

SVN Revision: 1423
2008-07-09 14:07:27 +00:00
Badlop 407d3b77b7 * tools/ejabberdctl: Work also when 'which' is unavailable
SVN Revision: 1419
2008-07-08 11:07:45 +00:00
Christophe Romain 3dfcc4c4d3 typo fix
SVN Revision: 1417
2008-07-08 10:31:29 +00:00
Christophe Romain 1de6329c41 typo on date fix
SVN Revision: 1415
2008-07-08 10:18:54 +00:00
Christophe Romain 8047ff0617 improve ip fetching patch
SVN Revision: 1414
2008-07-08 10:17:50 +00:00
Badlop 8032533f26 * src/Makefile.in: Spool, config and log dirs: writtable by owner,
readable by group, nothing by others (EJAB-686)
* doc/guide.tex: New section Securing sensible files
* doc/guide.html: Likewise

SVN Revision: 1413
2008-07-07 14:52:47 +00:00
Badlop 00c3bc2450 * doc/guide.tex: Solaris Makefile install: use ginstall (thanks to
Jonathan Auer)(EJAB-649)
* doc/guide.html: Likewise

SVN Revision: 1412
2008-07-07 08:47:47 +00:00
Jérôme Sautret c76a009238 Removed non ascii characters in changelog
SVN Revision: 1411
2008-07-04 08:35:11 +00:00
Jérôme Sautret 8012133539 * src/mod_privacy_odbc.erl: Support for privacy lists in MySQL (thanks to Igor Goryachev)(EJAB-538)(merge r1409 from trunk)
SVN Revision: 1410
2008-07-03 16:20:47 +00:00
Christophe Romain 1e56a614f9 PubSub improvements, and solves (EJAB-453) (EJAB-608)
SVN Revision: 1407
2008-07-03 09:56:21 +00:00
Badlop 971c9ce5a5 * src/ejabberd_ctl.erl: Web Admin and Ad-hoc admin: dump only
persistent tables (EJAB-678)

SVN Revision: 1387
2008-06-29 11:59:06 +00:00
Badlop 7abfd51534 * src/mod_pubsub/node_pep.erl: Complain if mod_caps disabled and
mod_pubsub has PEP plugin enabled (EJAB-677)

SVN Revision: 1386
2008-06-29 11:34:30 +00:00
Badlop 7e86698606 * src/web/ejabberd_http.erl: Support PUT and DELETE methods in
ejabberd_http (thanks to Eric Cestari)(EJAB-662)

SVN Revision: 1373
2008-06-21 00:19:57 +00:00
Badlop 45ccda9961 * doc/guide.tex: Explain that S2S outgoing first tries IPv4 and if
that fails then tries IPv6
* doc/guide.html: Likewise

SVN Revision: 1372
2008-06-21 00:12:06 +00:00
Christophe Romain 2c9d424330 allow get_default on PEP nodes (EJAB-656)
SVN Revision: 1363
2008-06-19 09:08:30 +00:00
Badlop 541f381145 * src/ejabberd.app: The ejabberd version number is defined in the
OTP application resource file, in the key 'vsn' (EJAB-657)
* src/ejabberd.hrl: The macro VERSION now consults the ejabberd
application key vsn
* src/configure.erl: Load the ejabberd application description
* doc/Makefile: Read ejabberd version from ejabberd.app vsn
* doc/api/Makefile: Likewise

SVN Revision: 1361
2008-06-18 21:33:48 +00:00
Christophe Romain a7cd412a76 temporary roster_groups_allowed fix (EJAB-655)
SVN Revision: 1360
2008-06-18 16:35:17 +00:00
Christophe Romain ab310255d7 pubsub get_default bugfix (EJAB-656)
SVN Revision: 1357
2008-06-18 16:19:15 +00:00
Badlop d9241c9e75 * src/ejabberd.cfg.example: Add registration_timeout (EJAB-653)
SVN Revision: 1355
2008-06-13 17:51:01 +00:00
Badlop bc8294990a * doc/guide.tex: Title in HTML is shorter. Update several external URIs.
SVN Revision: 1354
2008-06-13 15:25:57 +00:00
Badlop 25d8e53735 * doc/guide.tex: Document ldap_local_filter (EJAB-179)
SVN Revision: 1353
2008-06-13 10:13:44 +00:00
Badlop f59c0c9eb2 * doc/guide.tex: Table of listener modules converted to
description. Table of modules overview simplified, and module
names link to their sections.
* doc/guide.html: Regenerated with all the latest changes

SVN Revision: 1352
2008-06-12 23:52:13 +00:00
Badlop aaae1339e1 * doc/guide.tex: Fix indentation of verbatim text
SVN Revision: 1351
2008-06-12 23:01:09 +00:00
Badlop 38d218c129 * doc/guide.tex:
Changes in CSS: verbatim text is indented and has grey background;
descriptions are indented; table borders are softer.

SVN Revision: 1350
2008-06-12 22:00:51 +00:00
Badlop c67eaeb534 * doc/guide.tex: Permanent reference URL for sections (EJAB-651)
SVN Revision: 1349
2008-06-12 21:54:30 +00:00
Badlop 8a140dd509 * doc/guide.tex: Small fixes (thanks to Christoph Anton Mitterer)
* doc/introduction.tex: Likewise
* doc/guide.html: Likewise

SVN Revision: 1347
2008-06-08 16:52:25 +00:00
Badlop 6924b4c3e8 * doc/guide.tex: Document ejabberdctl status code (EJAB-633)
* doc/guide.html: Likewise

SVN Revision: 1346
2008-06-05 12:04:43 +00:00
Badlop 73f40db258 * src/msgs/pl.msg: Bugfix in arguments of translated string that
could crash the room (thanks to Anastasia Gornostaeva)

SVN Revision: 1345
2008-06-04 13:21:36 +00:00
Badlop 56740871f1 * src/web/ejabberd_web.erl (make_xhtml/2): Allow to include
elements in the HTTP header

SVN Revision: 1344
2008-05-31 18:21:43 +00:00
Badlop 6c9eb98792 * src/odbc/odbc_queries.erl (del_user_return_password): Return
password (thanks to Oleg Palij)

SVN Revision: 1343
2008-05-31 17:09:13 +00:00
Badlop 50b133f6a2 * README: R12 support: remove compilation warning (EJAB-630)
SVN Revision: 1340
2008-05-22 00:01:18 +00:00
Badlop fef60fe1d3 Retract the changes that SVN commit 1326 made in branches/ejabberd-2.0.x
SVN Revision: 1339
2008-05-20 16:23:43 +00:00
Christophe Romain 31940f16c7 add release_notes_2.0.1
SVN Revision: 1338
2008-05-19 22:35:01 +00:00
Badlop 45c1bad6d8 * doc/guide.html: Updated
* doc/dev.html: Likewise
* doc/features.html: Likewise
* doc/version.tex: Likewise

* src/ejabberd.hrl: Version is 2.0.x

SVN Revision: 1336
2008-05-19 09:46:42 +00:00
Badlop 6916d7b552 * src/configure.ac: R12 support: remove compilation
warning (EJAB-630)
* src/configure: Likewise
* doc/guide.tex: Likewise

SVN Revision: 1334
2008-05-19 09:20:35 +00:00
Badlop 39e93fcbbf * doc/guide.tex: Describe how to disable registration
limitation (EJAB-614)

SVN Revision: 1333
2008-05-19 09:13:19 +00:00
Christophe Romain 7461cb5f72 Change FSMTIMEOUT to 30s
SVN Revision: 1327
2008-05-16 15:28:23 +00:00
Christophe Romain 8e069daa61 fixing 1324 commit issue on tagged versions
SVN Revision: 1326
2008-05-16 14:23:37 +00:00
Christophe Romain 8041c033a9 Don't activate a socket untill its receiver process is controlling it
SVN Revision: 1325
2008-05-16 12:56:24 +00:00
Badlop ca8c659804 * src/mod_muc/mod_muc_room.erl: Return Forbidden error message
when user sends private message in a room that disallows
it (EJAB-595)

SVN Revision: 1323
2008-05-12 20:35:43 +00:00
Badlop a96cf33df3 * src/web/ejabberd_http.erl (parse_auth): Allow password that
include colon character (EJAB-522)

SVN Revision: 1322
2008-05-12 17:56:27 +00:00
Christophe Romain d75577fa34 change contribs to trunk
SVN Revision: 1314
2008-05-01 22:37:56 +00:00
Christophe Romain 2f62e78c06 XEP-0115 patch (EJAB-618)
SVN Revision: 1312
2008-04-30 08:49:19 +00:00
Badlop fdae05c27d * src/ejabberd_s2s_out.erl: Improve confusing log message in s2s
connection: wait_for_validation connect timeout (EJAB-617)

SVN Revision: 1311
2008-04-29 16:59:03 +00:00
Badlop 58da3e4e99 * src/ejabberd.cfg.example: Small improvements in explanations
* doc/guide.tex: Document MUC room options (EJAB-619)

SVN Revision: 1310
2008-04-29 16:44:12 +00:00
Badlop 2c795957ac Merge changeset 1305 from ejabberd trunk.
2008-04-27  Alexey Shchepin  <alexey@process-one.net>

* src/mod_muc/mod_muc_room.erl: Fixed room shaper processing

SVN Revision: 1309
2008-04-28 18:44:28 +00:00
Badlop 6e5aaadf57 Merge changesets 1299, 1300 and 1302 from ejabberd trunk.
2008-04-26  Badlop  <badlop@process-one.net>

* doc/guide.tex: Document option registration_timeout (EJAB-614)

2008-04-23  Alexey Shchepin  <alexey@process-one.net>

* src/treap.erl: Bugfix

* src/mod_register.erl: Fixed table creation, timeout isn't
activated when registration fails

* src/mod_register.erl: Restrict registration frequency per IP or
user (EJAB-614)
* src/ejabberd_c2s.erl: Pass IP to the c2s_unauthenticated_iq hook
* src/ejabberd_config.erl: Added registration_timeout option

* src/treap.erl: Treaps implementation

SVN Revision: 1308
2008-04-28 18:41:13 +00:00
Badlop 0f4244a72c * doc/guide.tex: Document the option max_s2s_connections
SVN Revision: 1307
2008-04-28 18:07:23 +00:00
Badlop e9e52374f8 * src/mod_shared_roster.erl: Fix for new registered accounts not
being immediately shown in an 'all' special shared roster
group (thanks to Alexey Shchepin) (EJAB-71)
* src/mod_register.erl: New vhost event user_registered

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

SVN Revision: 1298
2008-04-22 18:56:29 +00:00
Badlop 2e12fd2b11 * src/ejabberd_s2s_out.erl: Fix long timeout when reconnecting s2s
after a remote server crash (EJAB-540)
* src/ejabberd_s2s_in.erl: Likewise
* src/ejabberd_s2s.erl: Likewise
* doc/guide.tex: Likewise

SVN Revision: 1296
2008-04-18 12:19:45 +00:00
Badlop 8d23ef3ed0 * doc/guide.tex: Clarification: PEP is enabled in default config
SVN Revision: 1295
2008-04-16 15:44:58 +00:00
Christophe Romain bd9d2cb97c Cache negative response (EJAB-474)
SVN Revision: 1293
2008-04-14 12:00:37 +00:00
Badlop bb5e7353a4 Merge SVN r1287 from trunk to 2.0.x branch:
* src/tls/tls_drv.c: Fixed gcc signedness warnings (EJAB-447)
* src/ejabberd_zlib/ejabberd_zlib_drv.c: Likewise

* src/expat_erl.c: Removed R9B workaround (EJAB-447)

SVN Revision: 1289
2008-04-11 09:25:54 +00:00
Christophe Romain cfeb6f9c2b pubsub identity and database update bugfix
SVN Revision: 1284
2008-04-10 14:08:35 +00:00
Mickaël Rémond 0623a04666 *src/ejabberd_c2s.erl: Uniform default value for empty privacy list. Fixes (EJAB-603).
SVN Revision: 1283
2008-04-10 09:53:07 +00:00
Badlop 397fbf5b73 * src/ejabberd_auth_ldap.erl: LDAP function to get the number of
registered users is too slow (EJAB-331): set timeout in LDAP
search queries (thanks to Evgeniy Khramtsov) and return the number
of registered users.

SVN Revision: 1280
2008-04-08 09:37:06 +00:00
Mickaël Rémond 6f205d2d2a * doc/guide.tex: Documented the IQ discipline {queue, N}.
SVN Revision: 1279
2008-04-07 13:27:03 +00:00
Badlop e8dd27d3fc * doc/guide.tex: Fix default_room_opts with default_room_options
* doc/guide.html: Likewise

SVN Revision: 1277
2008-04-05 10:53:32 +00:00
Badlop 73f061c02c * src/ejabberd_auth_ldap.erl (get_vh_registered_users_number): New
function that returns 0 registered users (EJAB-331).

SVN Revision: 1276
2008-04-04 18:57:01 +00:00
Badlop 6f19f7ebbb * src/ejabberd_c2s.erl (process_presence_probe): Don't route a
presence probe to oneself (EJAB-498)

SVN Revision: 1275
2008-04-03 22:35:26 +00:00
Christophe Romain 615dc9ff94 Do not ignore values passed from configure (EJAB-592)
SVN Revision: 1271
2008-04-02 14:24:00 +00:00
Christophe Romain cd26cb4ad6 clone iq_response table bugfix
SVN Revision: 1270
2008-04-02 12:18:22 +00:00
Christophe Romain 22b66e40e0 add condition inclusion of pep in disco identity (EJAB-564)
SVN Revision: 1269
2008-04-02 09:06:34 +00:00
Badlop 3f33ff0adf * doc/webadmmain.png: Updated to ejabberd 2.0.0
* doc/webadmmainru.png: Likewise

* doc/disco.png: Removed because not used

* doc/guide.tex: Fix Latex reference to webadmin section. Update
explanation of screenshots. Update xmpp addresses of Mickael
Remond and Sander Devrieze.
* doc/guide.html: Likewise

* doc/Makefile: Remove the Hevea deprecated option -noiso
* doc/guide.html: Likewise
* doc/dev.html: Likewise
* doc/features.html: Likewise

SVN Revision: 1262
2008-03-31 10:48:10 +00:00
Badlop fcb5788568 * doc/guide.tex: Fix epam location (thanks to Evgeniy Khramtsov)
* doc/guide.html: Likewise

SVN Revision: 1259
2008-03-27 00:28:44 +00:00
Badlop f404bac82a * src/Makefile.in: Only try to install epam if pam was enabled
in configure script (thanks to Etan Reisner)(EJAB-586)

SVN Revision: 1256
2008-03-25 18:59:45 +00:00
Badlop 7dcd189e27 * src/Makefile.in: Failure to install epam is not
critical (EJAB-573)

SVN Revision: 1255
2008-03-25 17:18:47 +00:00
Badlop 9c11783e05 * doc/guide.tex: mod_vcard_ldap replace NICK with NICKNAME (thanks
to Andreas Ntaflos)
* doc/guide.html: Likewise

SVN Revision: 1254
2008-03-24 18:57:41 +00:00
Badlop c74e7e8a17 * src/msgs/de.msg: Fix irc typo (thanks to Jonathan Schleifer)
* src/msgs/cs.msg: Likewise
* src/msgs/pl.msg: Likewise
* src/msgs/sk.msg: Likewise

SVN Revision: 1253
2008-03-24 01:28:55 +00:00
Mickaël Rémond 635565ecf3 * src/eldap/Makefile.in: Generate ELDAPv3.beam during first Makefile pass (EJAB-583).
SVN Revision: 1250
2008-03-22 16:44:23 +00:00
Badlop c25f960220 * doc/guide.tex: Document service_check_from (EJAB-576)
* doc/guide.html: Likewise

SVN Revision: 1248
2008-03-22 00:33:28 +00:00
Badlop 6aa2f740f4 * src/mod_caps.erl: Move two log calls ERROR_MSG to DEBUG
* src/shaper.erl: Move log call INFO_MSG to DEBUG

SVN Revision: 1247
2008-03-21 18:58:07 +00:00
Badlop 20ebe81384 * doc/guide.tex: Document s2s_default_policy and
s2s_host (EJAB-575)
* doc/guide.html: Likewise

SVN Revision: 1246
2008-03-21 16:17:37 +00:00
Christophe Romain 9e60b2b0a6 Pubsub subscription is now wrapped in pubsub tags (EJAB-580)
SVN Revision: 1245
2008-03-21 16:05:42 +00:00
Christophe Romain 01b4b77373 includes Makefile.in changes to EJAB-573
SVN Revision: 1242
2008-03-21 15:41:51 +00:00
Christophe Romain 6d7b71f13c Seek epam binary into priv/bin (EJAB-573)
SVN Revision: 1241
2008-03-21 15:35:40 +00:00
Christophe Romain dc37faf587 Rewrite io:format calls to loglevel macros (EJAB-555) so we do not loose debug anymore in detached nodes
SVN Revision: 1240
2008-03-21 15:00:59 +00:00
Badlop bc2f42132f * doc/guide.tex: Improve explanation of how to start ejabberd when
binary installer. Don't recommend R12 in Windows compilation.
Describe what happens if maxrate shaper is exceeded.
* doc/guide.html: Likewise

SVN Revision: 1238
2008-03-20 19:24:27 +00:00
Mickaël Rémond da5f069dd2 * src/eldap.erl: Improved logging. We now use ejabberd logging framework (EJAB-582).
* src/eldap.erl: Faster LDAP reconnection (Thanks to Christophe Romain) (EJAB-581)

SVN Revision: 1237
2008-03-20 16:38:29 +00:00
Mickaël Rémond 1a616a91ef * src/ejabberd_s2s.erl: API improvement: Added s2s_connect_hook (EJAB-566).
SVN Revision: 1233
2008-03-15 09:39:10 +00:00
Badlop c086292651 * src/odbc/ejabberd_odbc.erl: Start ODBC explicitely because
Erlang R12 doesn't start automatically like in R11 and
older (thanks to Sergei Golovan)(EJAB-541)

SVN Revision: 1231
2008-03-13 14:34:47 +00:00
Badlop c62a0562a1 * src/ejabberd.hrl: Removed unused ejabberd_debug and
PRIVACY_SUPPORT. Reordered the remaining options

SVN Revision: 1230
2008-03-13 14:13:29 +00:00
Badlop ffb1f97cf4 * doc/guide.tex: Describe option Matches in mod_vcard_ldap (thanks
to Evgeniy Khramtsov)(EJAB-530).  Fix typo in the description of
ldap_server option.
* doc/guide.html: Likewise

SVN Revision: 1229
2008-03-13 10:59:57 +00:00
Badlop 17e751521f * src/mod_echo.erl: Small change to avoid a compilation warning of
unused function

SVN Revision: 1228
2008-03-12 23:05:49 +00:00
Badlop 4be522ed0c * src/web/ejabberd_web_admin.erl (term_to_string): Show Erlang
terms in one line in Erlang R12 (EJAB-503)

SVN Revision: 1227
2008-03-12 22:29:53 +00:00
Badlop c4e89879bb * src/ejabberd_s2s_in.erl (get_cert_domains): When compiling with
Erlang R12, replace the calls to deprecated module PKIX1Explicit88
with OTP-PKIX (EJAB-556)

SVN Revision: 1226
2008-03-11 14:25:35 +00:00
Badlop 1643999c35 * src/ejabberd_update.erl: Fix crash when browsing the Update
page in Erlang R12 (EJAB-552)

SVN Revision: 1225
2008-03-10 11:59:53 +00:00
Badlop 5351f56ae1 * src/mod_proxy65/mod_proxy65_service.erl: Implement alternative
to the deprecated function inet:ip_to_bytes (thanks to Evgeniy
Khramtsov)(EJAB-542)

SVN Revision: 1222
2008-03-09 10:09:38 +00:00
Badlop c6f57c13da * doc/guide.tex: Improve documentation of host_config
add (EJAB-544)
* doc/guide.html: Likewise
* src/ejabberd.cfg.example: Likewise
* src/ejabberd_config.erl: Likewise

SVN Revision: 1219
2008-03-04 10:36:57 +00:00
Badlop a6e65dd5a9 * doc/guide.tex: mod_announce recommends, but doesn't require
mod_adhoc (thanks to Anastasia Gornostaeva)
* doc/guide.html: Likewise
* src/ejabberd.cfg.example: Likewise

SVN Revision: 1218
2008-03-04 09:07:43 +00:00
Mickaël Rémond 739a504bd5 * src/ejabberd_check.erl: Fixed missing clause (EJAB-533).
SVN Revision: 1216
2008-02-29 12:23:06 +00:00
Mickaël Rémond 45074f5349 * src/mod_roster.erl: Fixed "from" attribute in roster pushes
* src/mod_roster_odbc.erl: Likewise

SVN Revision: 1214
2008-02-29 07:54:24 +00:00
Badlop 4ee0f6a5ee * src/ejabberd_app.erl (prep_stop): Stop modules when stopping
ejabberd (EJAB-536)
* src/mod_caps.erl (stop): Probably not needed to stop supervisor
child (EJAB-536)
* src/mod_muc/mod_muc.erl (room_destroyed): Catch message
sending (EJAB-536)
* src/mod_muc/mod_muc_room.erl (init): Ensure rooms are called
when the process dies due to a linked die (EJAB-536)

SVN Revision: 1212
2008-02-28 00:30:23 +00:00
Mickaël Rémond 5171a8caec * src/ejabberd_check.erl: Separate config loading from configuration sanity checks (EJAB-533)
* src/src/ejabberd_app.erl: Likewise
* src/ejabberd_app.erl: Likewise

SVN Revision: 1211
2008-02-27 20:20:30 +00:00
Badlop 2e8e970395 * src/msgs/it.msg: Updated (thanks to Smart2128)
SVN Revision: 1209
2008-02-26 08:59:09 +00:00
Badlop 0f16fee833 * doc/release_notes_2.0.0.txt: Small fixes and update date
SVN Revision: 1207
2008-02-21 09:54:19 +00:00
Badlop 4af47f5f78 * README: Updated to match the content of the ejabberd Guide
SVN Revision: 1206
2008-02-20 19:07:19 +00:00
Badlop 01ee6284bf * doc/release_notes_2.0.0.txt: Updated version number and date
SVN Revision: 1205
2008-02-20 16:08:13 +00:00
Badlop 7006402cd7 * src/ejabberd.hrl: Updated version number
* doc/dev.html: Likewise
* doc/features.html: Likewise
* doc/guide.html: Likewise
* doc/version.tex: Likewise

* doc/guide.tex: Mentioned the problems about Windows service
* doc/guide.html: Likewise

SVN Revision: 1203
2008-02-20 16:04:36 +00:00
Badlop c496c9aae6 * src/msgs/ru.msg: Updated (thanks to Konstantin Khomoutov)
* src/msgs/zh.msg: Updated (thanks to Mike Wang and Zhan Caibao)

SVN Revision: 1202
2008-02-20 15:48:48 +00:00
Badlop 07cea7431b * src/msgs/ca.msg: Updated (thanks to Vicent Alberola Canet)
* src/msgs/cs.msg: Updated (thanks to Lukas Polivka)
* src/msgs/de.msg: Updated (thanks to Cord Beermann and Nikolaus
Polak)
* src/msgs/eo.msg: Updated (thanks to Andreas van Cranenburgh)
* src/msgs/es.msg: Updated
* src/msgs/fr.msg: Updated (thanks to Christophe Romain)
* src/msgs/gl.msg: Updated (thanks to Carlos E. Lopez)
* src/msgs/nl.msg: Updated (thanks to Andreas van Cranenburgh)
* src/msgs/no.msg: Updated (thanks to Stian B. Barmen)
* src/msgs/pt-br.msg: Updated (thanks to Otavio Fernandes)
* src/msgs/uk.msg: Updated (thanks to Stoune and Ruslan Rakhmanin)

SVN Revision: 1201
2008-02-19 19:15:28 +00:00
Christophe Romain c5d3974796 add pgsql driver monitoring
SVN Revision: 1200
2008-02-19 17:06:49 +00:00
Mickaël Rémond 6737a9ff95 * src/ejabberd_config.erl: dirty_get_registered_users now correctly returns all users for all vhosts no matter which back-end is used (EJAB-527)
* src/ejabberd_auth_odbc.erl: Likewise
* src/ejabberd_auth_internal.erl: Likewise
* src/ejabberd_auth.erl: Likewise
* src/ejabberd_auth_external.erl: Likewise
* src/ejabberd_auth_ldap.erl: Likewise

SVN Revision: 1199
2008-02-19 15:19:10 +00:00
Christophe Romain 327b4406db Bug in get_conn_type since SVN r1194 crashes http-bind and http-poll (thanks to Brian Cully) (EJAB-526)
SVN Revision: 1197
2008-02-18 09:55:06 +00:00
Badlop c72082d798 * src/mod_muc/mod_muc_room.erl: Merge SVN r1164, and fix the merge
of SVN r1179 (EJAB-496)

SVN Revision: 1196
2008-02-16 09:18:19 +00:00
Badlop 9a795401ae * doc/release_notes_2.0.0.txt: Describe in the Release Notes the
upgrade instructions (EJAB-522)

SVN Revision: 1195
2008-02-15 19:18:36 +00:00
Christophe Romain fad12caa5f Retreive connection type in sm_register_connection_hook
SVN Revision: 1194
2008-02-15 16:35:32 +00:00
Jérôme Sautret 86445aff3e * odbc_queries: fix list_users queries with limit/offset.
SVN Revision: 1193
2008-02-15 15:39:30 +00:00
Christophe Romain 746c6b7d24 use ejabberd-2.0.0 tag for contribs
SVN Revision: 1192
2008-02-14 22:50:42 +00:00
Badlop 28ca665ba4 * src/mod_muc/mod_muc_room.erl: Allow unmoderated rooms (EJAB-437)
* src/msgs/*: Recover old translations to several languages from
ejabberd 1.1.4

SVN Revision: 1191
2008-02-14 11:25:39 +00:00
Badlop 206d127af7 * src/web/ejabberd_web_admin.erl: Fixed native support for all the
ACL types (EJAB-253)

SVN Revision: 1186
2008-02-12 01:16:11 +00:00
Badlop 60e1972f61 * src/acl.erl: Normalize ACL before adding to the configuration
tables (EJAB-521)

SVN Revision: 1185
2008-02-12 01:04:47 +00:00
Christophe Romain 7d73151737 use if event instead of x when xmlns is pubsub#event (EJAB-518)
SVN Revision: 1181
2008-02-11 15:21:24 +00:00
Badlop a90606b104 * src/mod_muc/mod_muc_room.erl: Include the error condition in the
presence status when kicking a participant due to an error
stanza (EJAB-496)

SVN Revision: 1179
2008-02-09 10:38:47 +00:00
Badlop 0a6a45bf09 * src/ejabberd.cfg.example: Document options to SQL keep alive
interval and pool size (EJAB-206)
* doc/guide.tex: Likewise
* doc/guide.html: Likewise

SVN Revision: 1178
2008-02-08 18:28:36 +00:00
Mickaël Rémond 1b6a2b3660 * src/mod_pubsub/node_buddy.erl: Fixed typo
* src/mod_pubsub/node_club.erl: Likewise
* src/mod_pubsub/node_dispatch.erl: Likewise
* src/mod_pubsub/node_pep.erl: Likewise
* src/mod_pubsub/node_private.erl: Likewise
* src/mod_pubsub/node_public.erl: Likewise
* src/mod_pubsub/node.template: Likewise

SVN Revision: 1176
2008-02-07 08:05:59 +00:00
Mickaël Rémond 7ca44abb22 * src/mod_pubsub/nodetree_virtual.erl: Fixed error report at startup.
SVN Revision: 1170
2008-02-02 14:27:09 +00:00
Badlop 5e88123ec9 * doc/guide.tex: Removed the option served_hosts in mod_pubsub
because it does not work correctly yet (EJAB-504)
* doc/guide.html: Likewise

SVN Revision: 1167
2008-01-30 17:51:09 +00:00
Badlop ae90a16714 * src/mod_echo.erl: Put in comments the call to the educational
function do_client_version

SVN Revision: 1166
2008-01-30 16:07:59 +00:00
Badlop b29e6ef07f * src/mod_muc/mod_muc_room.erl: MUC kicks a participant if sends a
private message with type=error (EJAB-496)

SVN Revision: 1163
2008-01-29 14:49:08 +00:00
Badlop fbe26a9186 * doc/introduction.tex: Updated list of languages
* doc/release_notes_2.0.0.txt: Likewise

SVN Revision: 1162
2008-01-25 15:28:30 +00:00
Badlop 374e7ca38b * src/msgs/eo.msg: New Esperanto translation (thanks to Andreas
van Cranenburgh)

* src/msgs/no.msg: New Norwegian translation (thanks to Stian
B. Barmen)

* doc/Makefile: Fixed small problem with contributed_modules.tex

SVN Revision: 1161
2008-01-25 11:54:17 +00:00
Christophe Romain 326fc6d331 pubsub dirty_sync typo fix on node configuration transaction
SVN Revision: 1159
2008-01-25 10:17:59 +00:00
Christophe Romain 48e15804e3 pubsub configuration patch (EJAB-508) and (EJAB-509)
SVN Revision: 1158
2008-01-25 09:24:10 +00:00
Badlop 50f0c3a14b * doc/guide.tex: Updated the names of log files.
* doc/guide.html: Likewise

* src/mod_muc/mod_muc_room.erl: Added log messages for room
destroy

* src/mod_caps.erl: Small beautify of log error messages

SVN Revision: 1156
2008-01-16 10:16:14 +00:00
Badlop 21f9c7e2d2 * doc/guide.tex: Improved the documentation of Binary
installer. Updated the requirements, specifically: Erlang R10B-9
is required as minimum, and R12 is not yet supported. Added
section Upgrading ejabberd. Improved documentation about Erlang
runtime system environment variables and command-line parameters.
* doc/guide.html: Likewise

* doc/release_notes_2.0.0.txt: Updated to RC1
* doc/version.tex: Likewise
* src/ejabberd.hrl: Likewise

* doc/introduction.tex: Updated to 22 languages

* doc/Makefile: Ensure that Bash is used

SVN Revision: 1154
2008-01-15 17:53:40 +00:00
Badlop 8e72271730 * doc/guide.tex: Updated copyright dates to 2008
* src/*: Likewise

SVN Revision: 1153
2008-01-15 17:02:57 +00:00
Badlop 561cf36c81 Merge changesets 1150 and 1151 into branch ejabberd-2.0.x:
* src/Makefile.in: Allow compilation with Erlang R12 (EJAB-446)
(thanks to Sergei Golovan and Maxim Treskin). Erlang R12 version is
not supported and not recommended for production servers.
* src/aclocal.m4: Likewise
* src/configure.ac: Likewise
* src/configure: Likewise
* src/ejabberd_s2s_in.erl: Likewise

Small fixes in trunk/ChangeLog.

SVN Revision: 1152
2008-01-15 16:09:07 +00:00
Badlop 228eb9d333 * src/ejabberdctl.template: Instead of using the Erlang kernel
variable 'inetrc', use the ERL_INETRC environment variable that is
available since Erlang/OTP R10B-5.

SVN Revision: 1149
2008-01-13 22:46:00 +00:00
Christophe Romain 73bca8fbc0 set_subscription fix (EJAB-494)
SVN Revision: 1148
2008-01-12 19:47:19 +00:00
Christophe Romain ac31008ee0 don't ask capabilities to MUC room participants
SVN Revision: 1147
2008-01-11 13:57:29 +00:00
Christophe Romain c49a6e7176 EJAB-491 fix
SVN Revision: 1146
2008-01-11 01:39:35 +00:00
Christophe Romain 09fa4a0ca7 Force PEP parent node to be []
SVN Revision: 1144
2008-01-10 17:38:24 +00:00
Christophe Romain 3225edde24 Send last published PEP event now checks the correct peer caps (EJAB-491)
SVN Revision: 1143
2008-01-10 15:02:54 +00:00
Badlop 5868a9d1a5 * src/mod_muc/mod_muc_room.erl: MUC kicks a participant if sends a
private message with type=error (EJAB-496)

SVN Revision: 1142
2008-01-09 16:01:16 +00:00
Badlop bceea5fc73 Merged changesets 1139 and 1140 from trunk:
* doc/Makefile: fix version.tex generation bug

* src/ejabberdctl.template: Removed the option ERL_FULLSWEEP_AFTER
because it is almost useless regarding ejabberd's performance.
* src/ejabberdctl.cfg.example: Likewise

SVN Revision: 1141
2008-01-08 16:21:02 +00:00
Badlop bde4d2e79b * src/web/ejabberd_web_admin.erl: Uniformize the name of
ejabberd's web admin to: 'Web Admin' (EjAB-472)
* doc/guide.tex: Likewise
* doc/introduction.tex: Likewise

* src/web/ejabberd_web_admin.erl: Uniformize ejabberd name in the
text using the Latex command

SVN Revision: 1138
2008-01-01 18:25:00 +00:00
Badlop b8993d82bd * src/mod_muc/mod_muc_room.erl: Resend 'continue' elements in muc
room invitations (EJAB-490)

SVN Revision: 1136
2008-01-01 17:09:22 +00:00
Badlop ee4f623a71 * src/ejabberdctl.template: Create logs_dir if doesn't exist. New
parameters --config, --ctl-config, --logs, --spool. Crash dump
renamed to erl_crash_DATETIME.dump.

* src/ejabberdctl.template: Backport improvements from binary
installer (EJAB-488): options are simple values; enable Kernel
Poll by default, set SMP to auto, set max ports to 32000, max
processes to 250000.
* src/ejabberdctl.cfg.example: Likewise

* src/ejabberd.inetrc: Renamed ejabberd.inetrc to inetrc
* src/inetrc: Likewise
* src/Makefile.in: Likewise
* doc/guide.tex: Likewise

SVN Revision: 1134
2008-01-01 11:03:17 +00:00
Badlop a2a1c916fa * src/msgs/ca.msg: Updated (thanks to Vicent Alberola Canet)
SVN Revision: 1132
2008-01-01 10:41:34 +00:00
Badlop e1928fc84b * src/ejabberd_s2s_out.erl: Fixed behavior when outgoing_s2s_port
option is not defined (EJAB-487)

SVN Revision: 1130
2007-12-29 15:23:53 +00:00
Badlop 98c4c8fc74 * src/mod_vcard_ldap.erl: Fix some field names (EJAB-483)
SVN Revision: 1128
2007-12-27 16:42:39 +00:00
Badlop dea1a4619d * src/web/ejabberd_web_admin.erl: Translate menu items of webadmin
hooks in each module (EJAB-485)
* src/mod_shared_roster.erl: Likewise

SVN Revision: 1126
2007-12-26 14:56:00 +00:00
Badlop 892cec5651 * src/web/ejabberd_web_admin.erl: max_user_sessions access rule
contains an integer, but webadmin always expects atoms (EJAB-482)

SVN Revision: 1124
2007-12-26 12:29:15 +00:00
Badlop 62b1811ed2 * src/mod_configure.erl: Bugfix, update to match changes in
mod_announce SVN r1099

SVN Revision: 1122
2007-12-25 00:38:04 +00:00
Mickaël Rémond d3d9d2b701 * doc/release_notes_2.0.0.txt: minor fix.
SVN Revision: 1120
2007-12-24 15:14:37 +00:00
Mickaël Rémond 1208455db5 * doc/release_notes_2.0.0.txt: Small fix.
SVN Revision: 1119
2007-12-24 15:01:00 +00:00
Mickaël Rémond 7d8de382c8 * Small fixes in release notes
SVN Revision: 1116
2007-12-24 14:11:18 +00:00
Mickaël Rémond e4e57bcf38 * Branch for 2.0.x developments
SVN Revision: 1114
2007-12-24 14:08:59 +00:00
483 changed files with 87876 additions and 181254 deletions
-48
View File
@@ -1,48 +0,0 @@
#
# You can add personal rules in your file .git/info/exclude
*.swp
*~
\#*#
.#*
.edts
*.dump
/Makefile
/config.log
/config.status
/configure
/aclocal.m4
/contrib/extract_translations/extract_translations.beam
/*.cache
/deps/
/doc/*.aux
/doc/*.haux
/doc/*.html
/doc/*.htoc
/doc/*.idx
/doc/*.ilg
/doc/*.ind
/doc/*.log
/doc/*.out
/doc/*.pdf
/doc/*.toc
/doc/contributed_modules.tex
/doc/version.tex
/ebin/
/ejabberd.init
/ejabberdctl.example
XmppAddr.hrl
/rel/ejabberd/
/src/XmppAddr.asn1db
/src/XmppAddr.erl
/src/ejabberd.app.src
/src/eldap_filter_yecc.erl
/vars.config
/dialyzer/
/test/*.beam
/test/*.ctc
/logs/
/priv/sql
/rel/ejabberd
/_build
/mnesiadb
/.rebar
-57
View File
@@ -1,57 +0,0 @@
language: erlang
otp_release:
- 17.1
- 17.5
- 18.0
services:
- riak
- redis-server
before_install:
#
# We need MySQL 5.6 or newer in order to get support for FULLTEXT indexes
# with InnoDB. As soon as Travis ships that version, the following lines
# (except for the "apt-get update" call) can go away.
#
# See: https://github.com/travis-ci/travis-ci/issues/1986
#
- sudo sed -i -e s/table_cache/table_open_cache/ -e /log_slow_queries/d /etc/mysql/my.cnf
- sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5072E1F5
- sudo add-apt-repository 'deb http://repo.mysql.com/apt/ubuntu/ precise mysql-5.6'
- sudo apt-get -qq update
- sudo apt-get -qq -o Dpkg::Options::=--force-confold install mysql-server-5.6
install:
- sudo apt-get -qq install libexpat1-dev libyaml-dev libpam0g-dev libsqlite3-dev
before_script:
- mkdir "$PWD/ebin"
- echo "[{riak_kv, [{add_paths, [\"$PWD/ebin/\"]}]}]." > advanced.config
- sudo mv advanced.config /etc/riak/advanced.config
- sudo service riak restart
- 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 --prefix=/tmp/ejabberd --enable-all --disable-odbc --disable-elixir
- make
- make install
- make xref
- 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.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 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.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
+6760
View File
File diff suppressed because it is too large Load Diff
-341
View File
@@ -1,341 +0,0 @@
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/
LIBDIR = $(DESTDIR)@libdir@
# /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
# /usr/lib/ejabberd/priv/sql
SQLDIR = $(PRIVDIR)/sql
# /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
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 fxml_gen:compile("tools/xmpp_codec.spec") of ok -> halt(0); _ -> halt(1) end.'
JOIN_PATHS=$(if $(wordlist 2,1000,$(1)),$(firstword $(1))/$(call JOIN_PATHS,$(wordlist 2,1000,$(1))),$(1))
VERSIONED_DEP=$(if $(DEP_$(1)_VERSION),$(DEP_$(1)_VERSION),$(1))
ELIXIR_TO_DEST=$(LIBDIR) $(call VERSIONED_DEP,$(word 2,$(1))) $(wordlist 5,1000,$(1))
DEPS_TO_DEST=$(LIBDIR) $(call VERSIONED_DEP,$(word 2,$(1))) $(wordlist 3,1000,$(1))
MAIN_TO_DEST=$(LIBDIR) $(call VERSIONED_DEP,ejabberd) $(1)
TO_DEST_SINGLE=$(if $(subst XdepsX,,X$(word 1,$(1))X),$(call MAIN_TO_DEST,$(1)),$(if $(subst XlibX,,X$(word 3,$(1))X),$(call DEPS_TO_DEST,$(1)),$(call ELIXIR_TO_DEST,$(1))))
TO_DEST=$(foreach path,$(1),$(call JOIN_PATHS,$(call TO_DEST_SINGLE,$(subst /, ,$(path)))))
FILTER_DIRS=$(foreach path,$(1),$(if $(wildcard $(path)/*),,$(path)))
FILES_WILDCARD=$(call FILTER_DIRS,$(foreach w,$(1),$(wildcard $(w))))
ifeq ($(MAKECMDGOALS),copy-files-sub)
DEPS:=$(sort $(shell $(REBAR) list-deps|$(SED) -e '/^=/d;s/ .*//'))
DEPS_FILES=$(call FILES_WILDCARD,$(foreach DEP,$(DEPS),deps/$(DEP)/ebin/*.beam deps/$(DEP)/ebin/*.app deps/$(DEP)/priv/* deps/$(DEP)/priv/lib/* deps/$(DEP)/priv/bin/* deps/$(DEP)/include/*.hrl deps/$(DEP)/lib/*/ebin/*.beam deps/$(DEP)/lib/*/ebin/*.app))
DEPS_FILES_FILTERED=$(filter-out %/epam deps/elixir/ebin/elixir.app,$(DEPS_FILES))
DEPS_DIRS=$(sort deps/ $(foreach DEP,$(DEPS),deps/$(DEP)/) $(dir $(DEPS_FILES)))
MAIN_FILES=$(filter-out %/configure.beam,$(call FILES_WILDCARD,ebin/*.beam ebin/*.app priv/msgs/*.msg priv/lib/* include/*.hrl))
MAIN_DIRS=$(sort $(dir $(MAIN_FILES)) priv/bin priv/sql)
define DEP_VERSION_template
DEP_$(1)_VERSION:=$(shell $(SED) -e '/vsn/!d;s/.*, *"/$(1)-/;s/".*//' $(2) 2>/dev/null)
endef
$(foreach DEP,$(DEPS),$(eval $(call DEP_VERSION_template,$(DEP),deps/$(DEP)/ebin/$(DEP).app)))
$(eval $(call DEP_VERSION_template,ejabberd,ebin/ejabberd.app))
define COPY_template
$(call TO_DEST,$(1)): $(1) $(call TO_DEST,$(dir $(1))) ; $$(INSTALL) -m 644 $(1) $(call TO_DEST,$(1))
endef
$(foreach file,$(DEPS_FILES_FILTERED) $(MAIN_FILES),$(eval $(call COPY_template,$(file))))
$(sort $(call TO_DEST,$(MAIN_DIRS) $(DEPS_DIRS))):
$(INSTALL) -d $@
$(call TO_DEST,deps/p1_pam/priv/bin/epam): $(LIBDIR)/%: deps/p1_pam/priv/bin/epam $(call TO_DEST,deps/p1_pam/priv/bin/)
$(INSTALL) -m 750 $(O_USER) $< $@
$(call TO_DEST,priv/sql/lite.sql): sql/lite.sql $(call TO_DEST,priv/sql)
$(INSTALL) -m 644 $< $@
$(call TO_DEST,priv/bin/captcha.sh): tools/captcha.sh $(call TO_DEST,priv/bin)
$(INSTALL) -m 750 $(O_USER) $< $@
copy-files-sub2: $(call TO_DEST,$(DEPS_FILES) $(MAIN_FILES) priv/bin/captcha.sh priv/sql/lite.sql)
endif
copy-files:
$(MAKE) copy-files-sub
copy-files-sub: copy-files-sub2
install: all copy-files
#
# 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 || true
[ -f deps/elixir/bin/elixir ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/elixir $(BINDIR)/elixir || true
[ -f deps/elixir/bin/mix ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/mix $(BINDIR)/mix || true
#
# Init script
$(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*" \
-e "s*@installuser@*$(INIT_USER)*" ejabberd.init.template \
> ejabberd.init
chmod 755 ejabberd.init
#
# 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/guide.html ] \
&& $(INSTALL) -m 644 doc/guide.html $(DOCDIR) \
|| echo "Documentation not included in sources"
$(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 -f $(SQLDIR)/*.sql
rm -fr $(SQLDIR)
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 "*************************************************************************"
@cd priv && ln -sf ../sql
$(REBAR) skip_deps=true ct
quicktest:
$(REBAR) skip_deps=true ct suites=elixir
.PHONY: src edoc dialyzer Makefile TAGS clean clean-rel distclean rel \
install uninstall uninstall-binary uninstall-all translations deps test spec \
quicktest erlang_plt deps_plt ejabberd_plt
+29 -156
View File
@@ -1,174 +1,47 @@
ejabberd Community Edition
==========================
[![Build Status](https://travis-ci.org/processone/ejabberd.svg?branch=master)](https://travis-ci.org/processone/ejabberd) [![Hex version](https://img.shields.io/hexpm/v/ejabberd.svg "Hex version")](https://hex.pm/packages/ejabberd)
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.
ejabberd - High-Performance Enterprise Instant Messaging Server
Quickstart guide
----------------
### 0. Requirements
0. Requirements
To compile ejabberd you need:
- GNU Make.
- GCC.
- Libexpat 1.95 or higher.
- Libyaml 0.1.4 or higher.
- Erlang/OTP 17.1 or higher.
- OpenSSL 1.0.0 or higher, for STARTTLS, SASL and SSL encryption.
- 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.
- ImageMagick's Convert program. Optional. For CAPTCHA challenges.
- GNU Make
- GCC
- libexpat 1.95 or higher
- Erlang/OTP R10B-9 or higher
- OpenSSL 0.9.6 or higher, for STARTTLS, SASL and SSL
encryption. Optional, highly recommended.
- Zlib 1.2.3 or higher, for Stream Compression support
(XEP-0138). Optional.
- GNU Iconv 1.8 or higher, for the IRC Transport
(mod_irc). Optional. Not needed on systems with GNU Libc.
### 1. Compile and install on *nix systems
1. Compile and install on *nix systems
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 compile ejabberd, go to the directory src/ and execute the commands:
./configure
make
./autogen.sh
./configure
make
To install ejabberd, run this command with system administrator rights
(root user):
To install ejabberd, run this command with system administrator rights (root
user):
sudo make install
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 a startup script: /sbin/ejabberdctl
- Install ejabberd in /var/lib/ejabberd/
- Install the configuration files in /etc/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 available online and in the `doc` directory of the source
tarball.
Development
-----------
In order to assist in the development of ejabberd, and particularly the
execution of the test suite, a Vagrant environment is available at
https://github.com/processone/ejabberd-vagrant-dev.
To start ejabberd in development mode from the repository directory, you can
type a command like:
EJABBERD_CONFIG_PATH=ejabberd.yml erl -pa ebin -pa deps/*/ebin -pa test -pa deps/elixir/lib/*/ebin/ -s ejabberd
Links
-----
- Documentation: http://docs.ejabberd.im
- Community site: https://www.ejabberd.im
- ejabberd commercial offering and support: https://www.process-one.net/en/ejabberd
For detailed information please refer to the
ejabberd Installation and Operation Guide
-1
View File
@@ -1 +0,0 @@
README
-3
View File
@@ -1,3 +0,0 @@
# generate a new autoconf
aclocal -I m4
autoconf -f
-10
View File
@@ -1,10 +0,0 @@
use Mix.Config
# This is standard path in the context of ejabberd release
config :ejabberd,
file: "config/ejabberd.yml",
log_path: 'log/ejabberd.log'
# Customize Mnesia directory:
config :mnesia,
dir: 'mnesiadb/'
-262
View File
@@ -1,262 +0,0 @@
# -*- 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="6.1 (Erlang/OTP 17.1)"
REQUIRE_ERLANG_MAX="9.0.0 (No Max)"
AC_CONFIG_MACRO_DIR([m4])
# 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(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-odbc --enable-mysql --enable-pgsql --enable-sqlite --enable-pam --enable-zlib --enable-riak --enable-redis --enable-elixir --enable-iconv --enable-debug --enable-tools (useful for Dialyzer checks, default: no)])],
[case "${enableval}" in
yes) odbc=true mysql=true pgsql=true sqlite=true pam=true zlib=true riak=true redis=true elixir=true iconv=true debug=true tools=true ;;
no) odbc=false mysql=false pgsql=false sqlite=false pam=false zlib=false riak=false redis=false elixir=false iconv=false debug=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(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(sqlite,
[AC_HELP_STRING([--enable-sqlite], [enable SQLite support (default: no)])],
[case "${enableval}" in
yes) sqlite=true ;;
no) sqlite=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sqlite) ;;
esac],[if test "x$sqlite" = "x"; then sqlite=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(redis,
[AC_HELP_STRING([--enable-redis], [enable Redis support (default: no)])],
[case "${enableval}" in
yes) redis=true ;;
no) redis=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-redis) ;;
esac],[if test "x$redis" = "x"; then redis=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(latest_deps,
[AC_HELP_STRING([--enable-latest-deps], [makes rebar use latest commits for dependences instead of tagged versions (default: no)])],
[case "${enableval}" in
yes) latest_deps=true ;;
no) latest_deps=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-latest-deps) ;;
esac],[if test "x$latest_deps" = "x"; then latest_deps=false; 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
ERLANG_DEPRECATED_TYPES_CHECK
if test "$sqlite" = "true"; then
AX_LIB_SQLITE3([3.6.19])
if test "x$SQLITE3_VERSION" = "x"; then
AC_MSG_ERROR(SQLite3 library >= 3.6.19 was not found)
fi
fi
AC_SUBST(hipe)
AC_SUBST(roster_gateway_workaround)
AC_SUBST(full_xml)
AC_SUBST(db_type)
AC_SUBST(odbc)
AC_SUBST(mysql)
AC_SUBST(pgsql)
AC_SUBST(sqlite)
AC_SUBST(pam)
AC_SUBST(zlib)
AC_SUBST(riak)
AC_SUBST(redis)
AC_SUBST(elixir)
AC_SUBST(iconv)
AC_SUBST(debug)
AC_SUBST(tools)
AC_SUBST(latest_deps)
AC_SUBST(CFLAGS)
AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS)
AC_OUTPUT
+5
View File
@@ -0,0 +1,5 @@
% List of ejabberd-modules to add for ejabberd packaging (source archive and installer)
%
% HTTP-binding:
https://svn.process-one.net/ejabberd-modules/http_bind/tags/ejabberd-2.0.4
https://svn.process-one.net/ejabberd-modules/mod_http_fileserver/tags/ejabberd-2.0.4
@@ -20,14 +20,9 @@
start() ->
ets:new(translations, [named_table, public]),
ets:new(translations_obsolete, [named_table, public]),
ets:new(files, [named_table, public]),
ets:new(vars, [named_table, public]),
case init:get_plain_arguments() of
["-srcmsg2po", Dir, File] ->
print_po_header(File),
Status = process(Dir, File, srcmsg2po),
halt(Status);
["-unused", Dir, File] ->
Status = process(Dir, File, unused),
halt(Status);
@@ -55,11 +50,7 @@ process(Dir, File, Used) ->
unused ->
ets:foldl(fun({Key, _}, _) ->
io:format("~p~n", [Key])
end, ok, translations);
srcmsg2po ->
ets:foldl(fun({Key, Trans}, _) ->
print_translation_obsolete(Key, Trans)
end, ok, translations_obsolete);
end, ok, translations);
_ ->
ok
end,
@@ -68,7 +59,7 @@ process(Dir, File, Used) ->
parse_file(Dir, File, Used) ->
ets:delete_all_objects(vars),
case epp:parse_file(File, [Dir, filename:dirname(File) | code:get_path()], []) of
case epp:parse_file(File, [Dir, filename:dirname(File)], []) of
{ok, Forms} ->
lists:foreach(
fun(F) ->
@@ -80,73 +71,49 @@ parse_file(Dir, File, Used) ->
parse_form(Dir, File, Form, Used) ->
case Form of
%%{undefined, Something} ->
%% io:format("Undefined: ~p~n", [Something]);
{call,
_,
{remote, _, {atom, _, translate}, {atom, _, translate}},
[_, {string, Line, Str}]
[_, {string, _, 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);
process_string(Dir, File, Str, Used);
{call,
_,
{remote, _, {atom, _, translate}, {atom, _, translate}},
[_, {var, _, Name}]
} ->
case ets:lookup(vars, Name) of
[{_Name, Value, Line}] ->
process_string(Dir, File, Line, Value, Used);
[{_Name, Value}] ->
process_string(Dir, File, Value, Used);
_ ->
ok
end;
{match,
_,
{var, _, Name},
{string, Line, Value}
{string, _, Value}
} ->
ets:insert(vars, {Name, Value, Line});
{match,
_,
{var, _, Name},
{bin,Line,[{bin_element,_,{string,_,Value},_,_}]}
} ->
ets:insert(vars, {Name, Value, Line});
ets:insert(vars, {Name, Value});
L when is_list(L) ->
lists:foreach(
fun(F) ->
parse_form(Dir, File, F, Used)
parse_form(Dir, File, F, Used)
end, L);
T when is_tuple(T) ->
lists:foreach(
fun(F) ->
parse_form(Dir, File, F, Used)
parse_form(Dir, File, F, Used)
end, tuple_to_list(T));
_ ->
ok
end.
process_string(_Dir, _File, _Line, "", _Used) ->
ok;
process_string(_Dir, File, Line, Str, Used) ->
process_string(_Dir, File, Str, Used) ->
case {ets:lookup(translations, Str), Used} of
{[{_Key, _Trans}], unused} ->
ets:delete(translations, Str);
{[{_Key, _Trans}], used} ->
ok;
{[{_Key, Trans}], srcmsg2po} ->
ets:delete(translations_obsolete, Str),
print_translation(File, Line, Str, Trans);
{_, used} ->
case ets:lookup(files, File) of
[{_}] ->
@@ -160,15 +127,6 @@ process_string(_Dir, File, Line, Str, Used) ->
_ -> io:format("{~p, \"\"}.~n", [Str])
end,
ets:insert(translations, {Str, ""});
{_, srcmsg2po} ->
case ets:lookup(files, File) of
[{_}] ->
ok;
_ ->
ets:insert(files, {File})
end,
ets:insert(translations, {Str, ""}),
print_translation(File, Line, Str, "");
_ ->
ok
end.
@@ -182,8 +140,7 @@ load_file(File) ->
"" ->
ok;
_ ->
ets:insert(translations, {Orig, Trans}),
ets:insert(translations_obsolete, {Orig, Trans})
ets:insert(translations, {Orig, Trans})
end
end, Terms);
Err ->
@@ -234,77 +191,3 @@ print_usage() ->
" extract_translations . ./msgs/ru.msg~n"
).
%%%
%%% Gettext
%%%
print_po_header(File) ->
MsgProps = get_msg_header_props(File),
{Language, [LastT | AddT]} = prepare_props(MsgProps),
application:load(ejabberd),
{ok, Version} = application:get_key(ejabberd, vsn),
print_po_header(Version, Language, LastT, AddT).
get_msg_header_props(File) ->
{ok, F} = file:open(File, [read]),
Lines = get_msg_header_props(F, []),
file:close(F),
Lines.
get_msg_header_props(F, Lines) ->
String = io:get_line(F, ""),
case io_lib:fread("% ", String) of
{ok, [], RemString} ->
case io_lib:fread("~s", RemString) of
{ok, [Key], Value} when Value /= "\n" ->
%% The first character in Value is a blankspace:
%% And the last characters are 'slash n'
ValueClean = string:substr(Value, 2, string:len(Value)-2),
get_msg_header_props(F, Lines ++ [{Key, ValueClean}]);
_ ->
get_msg_header_props(F, Lines)
end;
_ ->
Lines
end.
prepare_props(MsgProps) ->
Language = proplists:get_value("Language:", MsgProps),
Authors = proplists:get_all_values("Author:", MsgProps),
{Language, Authors}.
print_po_header(Version, Language, LastTranslator, AdditionalTranslatorsList) ->
AdditionalTranslatorsString = build_additional_translators(AdditionalTranslatorsList),
HeaderString =
"msgid \"\"\n"
"msgstr \"\"\n"
"\"Project-Id-Version: " ++ Version ++ "\\n\"\n"
++ "\"X-Language: " ++ Language ++ "\\n\"\n"
"\"Last-Translator: " ++ LastTranslator ++ "\\n\"\n"
++ AdditionalTranslatorsString ++
"\"MIME-Version: 1.0\\n\"\n"
"\"Content-Type: text/plain; charset=UTF-8\\n\"\n"
"\"Content-Transfer-Encoding: 8bit\\n\"\n",
io:format("~s~n", [HeaderString]).
build_additional_translators(List) ->
lists:foldl(
fun(T, Str) ->
Str ++ "\"X-Additional-Translator: " ++ T ++ "\\n\"\n"
end,
"",
List).
print_translation(File, Line, Str, 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,
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]).
@@ -3,26 +3,17 @@
# Frontend for ejabberd's extract_translations.erl
# by Badlop
# How to create template files for a new language:
# NEWLANG=zh
# cp msgs/ejabberd.pot msgs/$NEWLANG.po
# echo \{\"\",\"\"\}. > msgs/$NEWLANG.msg
# ../../extract_translations/prepare-translation.sh -updateall
prepare_dirs ()
{
# Where is Erlang binary
ERL=`which erl`
EJA_SRC_DIR=$EJA_DIR/src/
EJA_MSGS_DIR=$EJA_DIR/priv/msgs/
EJA_DIR=`pwd`/../..
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
EBIN_DIR=$RUN_DIR/ebin
MSGS_DIR=$EJA_DIR/priv/msgs
EXTRACT_ERL=extract_translations.erl
EXTRACT_BEAM=extract_translations.beam
SRC_DIR=$EJA_DIR/src
MSGS_DIR=$SRC_DIR/msgs
if !([[ -n $EJA_DIR ]])
then
@@ -31,7 +22,9 @@ prepare_dirs ()
if !([[ -x $EXTRACT_BEAM ]])
then
echo -n "Compiling extract_translations.erl: "
sh -c "cd $EXTRACT_DIR; $ERL -compile $EXTRACT_ERL"
echo "ok"
fi
}
@@ -83,22 +76,22 @@ extract_lang ()
extract_lang_all ()
{
cd $MSGS_DIR
for i in $( ls *.msg ) ; do
for i in *.msg; do
extract_lang $i;
done
echo -e "File\tMissing\tLanguage\t\tLast translator"
echo -e "----\t-------\t--------\t\t---------------"
cd $MSGS_DIR
for i in $( ls *.msg ) ; do
for i in *.msg; do
MISSING=`cat $i.translate | grep "\", \"\"}." | wc -l`
LANGUAGE=`grep "X-Language:" $i.translate | sed 's/% Language: //g'`
LANGUAGE=`grep "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
cd $MSGS_DIR
REVISION=`git describe --always`
REVISION=`svn info | grep "^Rev" | head -1 | awk '{print $2}'`
zip $HOME/ejabberd-langs-$REVISION.zip *.translate;
rm *.translate
@@ -147,132 +140,6 @@ find_unused_full ()
cd ..
}
extract_lang_srcmsg2po ()
{
LANG=$1
LANG_CODE=$LANG.$PROJECT
MSGS_PATH=$MSGS_DIR/$LANG_CODE.msg
PO_PATH=$MSGS_DIR/$LANG_CODE.po
echo $MSGS_PATH
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
rm $PO_PATH.*
}
extract_lang_src2pot ()
{
LANG_CODE=$PROJECT
MSGS_PATH=$MSGS_DIR/$LANG_CODE.msg
POT_PATH=$MSGS_DIR/$LANG_CODE.pot
echo -n "" >$MSGS_PATH
echo "% Language: Language Name" >>$MSGS_PATH
echo "% Author: Translator name and contact method" >>$MSGS_PATH
echo "" >>$MSGS_PATH
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 >$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
msguniq --sort-by-file $POT_PATH.2 --output-file=$POT_PATH
rm $POT_PATH.*
rm $MSGS_PATH
# If the project is a specific module, not the main ejabberd
if [[ $PROJECT != ejabberd ]] ; then
# Remove from project.pot the strings that are already present in the general ejabberd
EJABBERD_MSG_FILE=$EJA_MSGS_DIR/es.po # This is just some file with translated strings
POT_PATH_TEMP=$POT_PATH.temp
msgattrib --set-obsolete --only-file=$EJABBERD_MSG_FILE -o $POT_PATH_TEMP $POT_PATH
mv $POT_PATH_TEMP $POT_PATH
fi
}
extract_lang_popot2po ()
{
LANG_CODE=$1
PO_PATH=$MSGS_DIR/$LANG_CODE.po
POT_PATH=$MSGS_DIR/$PROJECT.pot
msgmerge $PO_PATH $POT_PATH >$PO_PATH.translate 2>/dev/null
mv $PO_PATH.translate $PO_PATH
}
extract_lang_po2msg ()
{
LANG_CODE=$1
PO_PATH=$LANG_CODE.po
MS_PATH=$PO_PATH.ms
MSGID_PATH=$PO_PATH.msgid
MSGSTR_PATH=$PO_PATH.msgstr
MSGS_PATH=$LANG_CODE.msg
cd $MSGS_DIR
# Check PO has correct ~
# Let's convert to C format so we can use msgfmt
PO_TEMP=$LANG_CODE.po.temp
cat $PO_PATH | sed 's/%/perc/g' | sed 's/~/%/g' | sed 's/#:.*/#, c-format/g' >$PO_TEMP
msgfmt $PO_TEMP --check-format
result=$?
rm $PO_TEMP
if [ $result -ne 0 ] ; then
exit 1
fi
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
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
rm $MSGSTR_PATH
}
extract_lang_updateall ()
{
echo "Generating POT"
extract_lang_src2pot
cd $MSGS_DIR
echo ""
echo -e "File Missing Language Last translator"
echo -e "---- ------- -------- ---------------"
for i in $( ls *.msg ) ; do
LANG_CODE=${i%.msg}
echo -n $LANG_CODE | awk '{printf "%-6s", $1 }'
# Convert old MSG file to PO
PO=$LANG_CODE.po
[ -f $PO ] || extract_lang_srcmsg2po $LANG_CODE
extract_lang_popot2po $LANG_CODE
extract_lang_po2msg $LANG_CODE
MISSING=`msgfmt --statistics $PO 2>&1 | awk '{printf "%5s", $4 }'`
echo -n " $MISSING"
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'`
echo " $LASTAUTH"
done
echo ""
rm messages.mo
cd ..
}
translation_instructions ()
{
echo ""
@@ -291,76 +158,34 @@ translation_instructions ()
echo " $MSGS_PATH"
}
EJA_DIR=`pwd`
RUN_DIR=`pwd`
PROJECT=ejabberd
while [ $# -ne 0 ] ; do
PARAM=$1
shift
case $PARAM in
--) break ;;
-project)
PROJECT=$1
shift
;;
-ejadir)
EJA_DIR=$1
shift
;;
-rundir)
RUN_DIR=$1
shift
;;
-lang)
LANGU=$1
prepare_dirs
extract_lang $LANGU
shift
;;
-langall)
prepare_dirs
extract_lang_all
;;
-srcmsg2po)
LANG_CODE=$1
prepare_dirs
extract_lang_srcmsg2po $LANG_CODE
shift
;;
-popot2po)
LANG_CODE=$1
prepare_dirs
extract_lang_popot2po $LANG_CODE
shift
;;
-src2pot)
prepare_dirs
extract_lang_src2pot
;;
-po2msg)
LANG_CODE=$1
prepare_dirs
extract_lang_po2msg $LANG_CODE
shift
;;
-updateall)
prepare_dirs
extract_lang_updateall
;;
*)
case "$1" in
-help)
echo "Options:"
echo " -langall"
echo " -lang LANGUAGE_FILE"
echo " -srcmsg2po LANGUAGE Construct .msg file using source code to PO file"
echo " -src2pot Generate template POT file from source code"
echo " -popot2po LANGUAGE Update PO file with template POT file"
echo " -po2msg LANGUAGE Export PO file to MSG file"
echo " -updateall Generate POT and update all PO"
echo ""
echo "Example:"
echo " ./prepare-translation.sh -lang es.msg"
exit 0
;;
esac
done
-lang)
LANGU=$2
prepare_dirs
extract_lang $LANGU
shift
shift
;;
-langall)
prepare_dirs
extract_lang_all
shift
;;
*)
echo "unknown option: '$1 $2'"
shift
shift
;;
esac
echo ""
echo "End."
+65
View File
@@ -0,0 +1,65 @@
# $Id$
SHELL = /bin/bash
CONTRIBUTED_MODULES = ""
ifeq ($(shell ls mod_http_bind.tex),mod_http_bind.tex)
CONTRIBUTED_MODULES += "\\n\\setboolean{modhttpbind}{true}"
endif
ifeq ($(shell ls mod_http_fileserver.tex),mod_http_fileserver.tex)
CONTRIBUTED_MODULES += "\\n\\setboolean{modhttpfileserver}{true}"
endif
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.hrl!"
@echo "* Do not forget to update the features in introduction.tex (including \new{} and \improved{} tags)."
@echo "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
html: guide.html dev.html features.html
pdf: guide.pdf features.pdf
clean:
rm -f *.aux
rm -f *.haux
rm -f *.htoc
rm -f *.idx
rm -f *.ilg
rm -f *.ind
rm -f *.log
rm -f *.out
rm -f *.pdf
rm -f *.toc
[ ! -f contributed_modules.tex ] || rm contributed_modules.tex
distclean: clean
rm -f *.html
guide.html: guide.tex
hevea -fix -pedantic guide.tex
dev.html: dev.tex
hevea -fix -pedantic dev.tex
features.html: features.tex
hevea -fix -pedantic features.tex
guide.pdf: guide.tex
pdflatex guide.tex
pdflatex guide.tex
pdflatex guide.tex
makeindex guide.idx
pdflatex guide.tex
features.pdf: features.tex
pdflatex features.tex
+17
View File
@@ -0,0 +1,17 @@
APPNAME = ejabberd
VSN = $(shell sed '/vsn/!d;s/\(.*\)"\(.*\)"\(.*\)/\2/' ../../src/ejabberd.app)
DOCDIR=.
SRCDIR=../../src
.PHONY = all
all: docs
clean:
rm -f *.html
rm edoc-info
docs:
erl -noshell -run edoc_run application \
"'$(APPNAME)'" '"$(SRCDIR)"' '[{dir,"$(DOCDIR)"},{packages, false},{todo,true},{private,true},{def,{vsn,"$(VSN)"}},{stylesheet,"process-one.css"},{overview,"$(DOCDIR)/overview.edoc"}]' -s init stop
+10
View File
@@ -0,0 +1,10 @@
@author Mickael Remond <mickael.remond@process-one.net>
[http://www.process-one.net/]
@copyright 2007 ProcessOne
@version {@vsn}, {@date} {@time}
@title ejabberd Development API Documentation
@doc
== Introduction ==
TODO: Insert content from Jerome documentation.
+80
View File
@@ -0,0 +1,80 @@
html, body {
font-family: Verdana, sans-serif;
color: #000;
background-color: #fff;
}
h1 {
color: #4a5389;
border-bottom: solid 1px #000;
}
h2 {
font-size: 24px;
text-align: right;
color: #4a5389;
border-bottom: 1px solid #000;
}
h3 {
font-size: 18px;
color: #900;
}
h4 {
font-size: 14px;
color: #000;
}
a[href] {
color: #4a5389;
}
a[href]:hover {
background-color: #ecefff;
}
p, li, dd {
text-align: justify;
}
li {
margin-top: 0.3em;
}
li:first-child {
margin-top: 0px;
}
blockquote {
color: #555;
}
caption {
font-style: italic;
color: #009;
text-align: left;
margin-left: 20px;
}
table[border="1"] {
border-collapse: collapse;
margin-bottom: 1em;
}
table[border="1"] td {
border: 1px solid #ddd;
}
pre, tt, code {
color: #461b7e;
}
pre {
margin-left: 1em;
}
pre em {
font-style: normal;
font-weight: bold;
}
+410
View File
@@ -0,0 +1,410 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Ejabberd 2.0.4 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">
.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;}
.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}
.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;}
.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;}
.display{border-collapse:separate;border-spacing:2px;width:auto; border:none;}
.dcell{white-space:nowrap;padding:0px;width:auto; border:none;}
.dcenter{margin:0ex auto;}
.vdcenter{border:solid #FF8000 2px; margin:0ex auto;}
.minipage{text-align:left; margin-left:0em; margin-right:auto;}
.marginpar{border:solid thin black; width:20%; text-align:left;}
.marginparleft{float:left; margin-left:0ex; margin-right:1ex;}
.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 >
<!--HEVEA command line is: /usr/bin/hevea -fix -pedantic dev.tex -->
<!--CUT DEF section 1 --><P><A NAME="titlepage"></A>
</P><TABLE CLASS="title"><TR><TD><H1 CLASS="titlemain">Ejabberd 2.0.4 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">
<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</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">
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 24 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">
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">
Modular
<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">
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">
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">
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">
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 Jabber domain is served by one or more <TT>ejabberd</TT> 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
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">
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 Jabber 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
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
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
packet must be sended 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 Jabber 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">
read from stdin: AABBBBBBBBB.....
<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
operation are as follows:
<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></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
import sys
from struct import *
def from_ejabberd():
input_length = sys.stdin.read(2)
(size,) = unpack('&gt;h', input_length)
return sys.stdin.read(size).split(':')
def to_ejabberd(bool):
answer = 0
if bool:
answer = 1
token = pack('&gt;hh', 2, answer)
sys.stdout.write(token)
sys.stdout.flush()
def auth(username, server, password):
return True
def isuser(username, server):
return True
def setpass(username, server, password):
return True
while True:
data = from_ejabberd()
success = False
if data[0] == "auth":
success = auth(data[1], data[2], data[3])
elif data[0] == "isuser":
success = isuser(data[1], data[2])
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]}
Name = string()
Attrs = [Attr]
Attr = {Key, Val}
Key = string()
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;
&lt;body&gt;test&lt;/body&gt;
&lt;/message&gt;
</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]
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
Path = [PathItem]
PathItem = PathElem | PathAttr | PathCDATA
PathElem = {elem, Name}
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
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
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
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()
Err = term()
</PRE>Parses <TT>Str</TT> 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()
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
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()
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).
-behaviour(gen_mod).
-export([start/2,
stop/1,
process_local_iq/3]).
-include("ejabberd.hrl").
-include("jlib.hrl").
-define(NS_CPUTIME, "ejabberd:cputime").
start(Host, Opts) -&gt;
IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_CPUTIME,
?MODULE, process_local_iq, IQDisc).
stop(Host) -&gt;
gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_CPUTIME).
process_local_iq(From, To, {iq, ID, Type, XMLNS, SubEl}) -&gt;
case Type of
set -&gt;
{iq, ID, error, XMLNS,
[SubEl, ?ERR_NOT_ALLOWED]};
get -&gt;
CPUTime = element(1, erlang:statistics(runtime))/1000,
SCPUTime = lists:flatten(io_lib:format("~.3f", CPUTime)),
{iq, ID, result, XMLNS,
[{xmlelement, "query",
[{"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).
-behaviour(gen_mod).
-export([start/2, init/1, stop/1]).
-include("ejabberd.hrl").
-include("jlib.hrl").
start(Host, Opts) -&gt;
MyHost = gen_mod:get_opt(host, Opts, "echo." ++ Host),
register(gen_mod:get_module_proc(Host, ?PROCNAME),
spawn(?MODULE, init, [MyHost])).
init(Host) -&gt;
ejabberd_router:register_local_route(Host),
loop(Host).
loop(Host) -&gt;
receive
{route, From, To, Packet} -&gt;
ejabberd_router:route(To, From, Packet),
loop(Host);
stop -&gt;
ejabberd_router:unregister_route(Host),
ok;
_ -&gt;
loop(Host)
end.
stop(Host) -&gt;
Proc = gen_mod:get_module_proc(Host, ?PROCNAME),
Proc ! stop,
{wait, Proc}.
</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>
+466
View File
@@ -0,0 +1,466 @@
\documentclass[a4paper,10pt]{article}
%% Packages
\usepackage{graphics}
\usepackage{hevea}
\usepackage{makeidx}
\usepackage{verbatim}
%% Index
\makeindex
% Remove the index anchors from the HTML version to save size and bandwith.
\newcommand{\ind}[1]{\begin{latexonly}\index{#1}\end{latexonly}}
%% Images
\newcommand{\logoscale}{0.7}
\newcommand{\imgscale}{0.58}
\newcommand{\insimg}[1]{\insscaleimg{\imgscale}{#1}}
\newcommand{\insscaleimg}[2]{
\imgsrc{#2}{}
\begin{latexonly}
\scalebox{#1}{\includegraphics{#2}}
\end{latexonly}
}
%% Various
\newcommand{\ns}[1]{\texttt{#1}}
\newcommand{\ejabberd}{\texttt{ejabberd}}
\newcommand{\Jabber}{Jabber}
%% Modules
\newcommand{\module}[1]{\texttt{#1}}
\newcommand{\modadhoc}{\module{mod\_adhoc}}
\newcommand{\modannounce}{\module{mod\_announce}}
\newcommand{\modconfigure}{\module{mod\_configure}}
\newcommand{\moddisco}{\module{mod\_disco}}
\newcommand{\modecho}{\module{mod\_echo}}
\newcommand{\modirc}{\module{mod\_irc}}
\newcommand{\modlast}{\module{mod\_last}}
\newcommand{\modlastodbc}{\module{mod\_last\_odbc}}
\newcommand{\modmuc}{\module{mod\_muc}}
\newcommand{\modmuclog}{\module{mod\_muc\_log}}
\newcommand{\modoffline}{\module{mod\_offline}}
\newcommand{\modofflineodbc}{\module{mod\_offline\_odbc}}
\newcommand{\modprivacy}{\module{mod\_privacy}}
\newcommand{\modprivate}{\module{mod\_private}}
\newcommand{\modpubsub}{\module{mod\_pubsub}}
\newcommand{\modregister}{\module{mod\_register}}
\newcommand{\modroster}{\module{mod\_roster}}
\newcommand{\modrosterodbc}{\module{mod\_roster\_odbc}}
\newcommand{\modservicelog}{\module{mod\_service\_log}}
\newcommand{\modsharedroster}{\module{mod\_shared\_roster}}
\newcommand{\modstats}{\module{mod\_stats}}
\newcommand{\modtime}{\module{mod\_time}}
\newcommand{\modvcard}{\module{mod\_vcard}}
\newcommand{\modvcardldap}{\module{mod\_vcard\_ldap}}
\newcommand{\modvcardodbc}{\module{mod\_vcard\_odbc}}
\newcommand{\modversion}{\module{mod\_version}}
%% Title page
\include{version}
\title{Ejabberd \version\ Developers Guide}
\author{Alexey Shchepin \\
\ahrefurl{mailto:alexey@sevcom.net} \\
\ahrefurl{xmpp:aleksey@jabber.ru}}
%% Options
\newcommand{\marking}[1]{#1} % Marking disabled
\newcommand{\quoting}[2][yozhik]{} % Quotes disabled
\newcommand{\new}{\begin{latexonly}\marginpar{\textsc{new}}\end{latexonly}} % Highlight new features
\newcommand{\improved}{\begin{latexonly}\marginpar{\textsc{improved}}\end{latexonly}} % Highlight improved features
\newcommand{\moreinfo}[1]{} % Hide details
%% Footnotes
\newcommand{\txepref}[2]{\footahref{http://www.xmpp.org/extensions/xep-#1.html}{#2}}
\newcommand{\xepref}[1]{\txepref{#1}{XEP-#1}}
\begin{document}
\label{titlepage}
\begin{titlepage}
\maketitle{}
\begin{center}
{\insscaleimg{\logoscale}{logo.png}
\par
}
\end{center}
\begin{quotation}\textit{I can thoroughly recommend ejabberd for ease of setup --
Kevin Smith, Current maintainer of the Psi project}\end{quotation}
\end{titlepage}
\tableofcontents{}
% Input introduction.tex
\input{introduction}
\section{How it Works}
\label{howitworks}
A \Jabber{} domain is served by one or more \ejabberd{} 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
\texttt{\~{}ejabberd/.erlang.cookie} must be the same on all nodes). This is
needed because all nodes exchange information about connected users, S2S
connections, registered services, etc\ldots
Each \ejabberd{} node have following modules:
\begin{itemize}
\item router;
\item local router.
\item session manager;
\item S2S manager;
\end{itemize}
\subsection{Router}
This module is the main router of \Jabber{} 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 \ejabberd{} node or
process. If it does not exists in either tables, then it sent to the S2S
manager.
\subsection{Local Router}
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's content.
\subsection{Session Manager}
This module routes packets to local users. It searches for what user resource
packet must be sended 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.
\subsection{S2S Manager}
This module routes packets to other \Jabber{} 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.
\section{Authentication}
\subsubsection{External}
\label{externalauth}
\ind{external authentication}
The external authentication script follows
\footahref{http://www.erlang.org/doc/tutorial/c_portdriver.html}{the erlang port driver API}.
That script is supposed to do theses actions, in an infinite loop:
\begin{itemize}
\item read from stdin: AABBBBBBBBB.....
\begin{itemize}
\item A: 2 bytes of length data (a short in network byte order)
\item B: a string of length found in A that contains operation in plain text
operation are as follows:
\begin{itemize}
\item auth:User:Server:Password (check if a username/password pair is correct)
\item isuser:User:Server (check if it's a valid user)
\item setpass:User:Server:Password (set user's password)
\end{itemize}
\end{itemize}
\item write to stdout: AABB
\begin{itemize}
\item A: the number 2 (coded as a short, which is bytes length of following result)
\item B: the result code (coded as a short), should be 1 for success/valid, or 0 for failure/invalid
\end{itemize}
\end{itemize}
Example python script
\begin{verbatim}
#!/usr/bin/python
import sys
from struct import *
def from_ejabberd():
input_length = sys.stdin.read(2)
(size,) = unpack('>h', input_length)
return sys.stdin.read(size).split(':')
def to_ejabberd(bool):
answer = 0
if bool:
answer = 1
token = pack('>hh', 2, answer)
sys.stdout.write(token)
sys.stdout.flush()
def auth(username, server, password):
return True
def isuser(username, server):
return True
def setpass(username, server, password):
return True
while True:
data = from_ejabberd()
success = False
if data[0] == "auth":
success = auth(data[1], data[2], data[3])
elif data[0] == "isuser":
success = isuser(data[1], data[2])
elif data[0] == "setpass":
success = setpass(data[1], data[2], data[3])
to_ejabberd(success)
\end{verbatim}
\section{XML Representation}
\label{xmlrepr}
Each XML stanza is represented as the following tuple:
\begin{verbatim}
XMLElement = {xmlelement, Name, Attrs, [ElementOrCDATA]}
Name = string()
Attrs = [Attr]
Attr = {Key, Val}
Key = string()
Val = string()
ElementOrCDATA = XMLElement | CDATA
CDATA = {xmlcdata, string()}
\end{verbatim}
E.\,g. this stanza:
\begin{verbatim}
<message to='test@conference.example.org' type='groupchat'>
<body>test</body>
</message>
\end{verbatim}
is represented as the following structure:
\begin{verbatim}
{xmlelement, "message",
[{"to", "test@conference.example.org"},
{"type", "groupchat"}],
[{xmlelement, "body",
[],
[{xmlcdata, "test"}]}]}}
\end{verbatim}
\section{Module \texttt{xml}}
\label{xmlmod}
\begin{description}
\item{\verb|element_to_string(El) -> string()|}
\begin{verbatim}
El = XMLElement
\end{verbatim}
Returns string representation of XML stanza \texttt{El}.
\item{\verb|crypt(S) -> string()|}
\begin{verbatim}
S = string()
\end{verbatim}
Returns string which correspond to \texttt{S} with encoded XML special
characters.
\item{\verb|remove_cdata(ECList) -> EList|}
\begin{verbatim}
ECList = [ElementOrCDATA]
EList = [XMLElement]
\end{verbatim}
\texttt{EList} is a list of all non-CDATA elements of ECList.
\item{\verb|get_path_s(El, Path) -> Res|}
\begin{verbatim}
El = XMLElement
Path = [PathItem]
PathItem = PathElem | PathAttr | PathCDATA
PathElem = {elem, Name}
PathAttr = {attr, Name}
PathCDATA = cdata
Name = string()
Res = string() | XMLElement
\end{verbatim}
If \texttt{Path} is empty, then returns \texttt{El}. Else sequentially
consider elements of \texttt{Path}. Each element is one of:
\begin{description}
\item{\verb|{elem, Name}|} \texttt{Name} is name of subelement of
\texttt{El}, if such element exists, then this element considered in
following steps, else returns empty string.
\item{\verb|{attr, Name}|} If \texttt{El} have attribute \texttt{Name}, then
returns value of this attribute, else returns empty string.
\item{\verb|cdata|} Returns CDATA of \texttt{El}.
\end{description}
\item{TODO:}
\begin{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
\end{verbatim}
\end{description}
\section{Module \texttt{xml\_stream}}
\label{xmlstreammod}
\begin{description}
\item{\verb!parse_element(Str) -> XMLElement | {error, Err}!}
\begin{verbatim}
Str = string()
Err = term()
\end{verbatim}
Parses \texttt{Str} using XML parser, returns either parsed element or error
tuple.
\end{description}
\section{Modules}
\label{emods}
%\subsection{gen\_mod behaviour}
%\label{genmod}
%TBD
\subsection{Module gen\_iq\_handler}
\label{geniqhandl}
The module \verb|gen_iq_handler| allows to easily write handlers for IQ packets
of particular XML namespaces that addressed to server or to users bare JIDs.
In this module the following functions are defined:
\begin{description}
\item{\verb|add_iq_handler(Component, Host, NS, Module, Function, Type)|}
\begin{verbatim}
Component = Module = Function = atom()
Host = NS = string()
Type = no_queue | one_queue | parallel
\end{verbatim}
Registers function \verb|Module:Function| as handler for IQ packets on
virtual host \verb|Host| that contain child of namespace \verb|NS| in
\verb|Component|. Queueing discipline is \verb|Type|. There are at least
two components defined:
\begin{description}
\item{\verb|ejabberd_local|} Handles packets that addressed to server JID;
\item{\verb|ejabberd_sm|} Handles packets that addressed to users bare JIDs.
\end{description}
\item{\verb|remove_iq_handler(Component, Host, NS)|}
\begin{verbatim}
Component = atom()
Host = NS = string()
\end{verbatim}
Removes IQ handler on virtual host \verb|Host| for namespace \verb|NS| from
\verb|Component|.
\end{description}
Handler function must have the following type:
\begin{description}
\item{\verb|Module:Function(From, To, IQ)|}
\begin{verbatim}
From = To = jid()
\end{verbatim}
\end{description}
\begin{verbatim}
-module(mod_cputime).
-behaviour(gen_mod).
-export([start/2,
stop/1,
process_local_iq/3]).
-include("ejabberd.hrl").
-include("jlib.hrl").
-define(NS_CPUTIME, "ejabberd:cputime").
start(Host, Opts) ->
IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_CPUTIME,
?MODULE, process_local_iq, IQDisc).
stop(Host) ->
gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_CPUTIME).
process_local_iq(From, To, {iq, ID, Type, XMLNS, SubEl}) ->
case Type of
set ->
{iq, ID, error, XMLNS,
[SubEl, ?ERR_NOT_ALLOWED]};
get ->
CPUTime = element(1, erlang:statistics(runtime))/1000,
SCPUTime = lists:flatten(io_lib:format("~.3f", CPUTime)),
{iq, ID, result, XMLNS,
[{xmlelement, "query",
[{"xmlns", ?NS_CPUTIME}],
[{xmlelement, "cputime", [], [{xmlcdata, SCPUTime}]}]}]}
end.
\end{verbatim}
\subsection{Services}
\label{services}
%TBD
%TODO: use \verb|proc_lib|
\begin{verbatim}
-module(mod_echo).
-behaviour(gen_mod).
-export([start/2, init/1, stop/1]).
-include("ejabberd.hrl").
-include("jlib.hrl").
start(Host, Opts) ->
MyHost = gen_mod:get_opt(host, Opts, "echo." ++ Host),
register(gen_mod:get_module_proc(Host, ?PROCNAME),
spawn(?MODULE, init, [MyHost])).
init(Host) ->
ejabberd_router:register_local_route(Host),
loop(Host).
loop(Host) ->
receive
{route, From, To, Packet} ->
ejabberd_router:route(To, From, Packet),
loop(Host);
stop ->
ejabberd_router:unregister_route(Host),
ok;
_ ->
loop(Host)
end.
stop(Host) ->
Proc = gen_mod:get_module_proc(Host, ?PROCNAME),
Proc ! stop,
{wait, Proc}.
\end{verbatim}
\end{document}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

+132
View File
@@ -0,0 +1,132 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Ejabberd 2.0.4 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">
.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;}
.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}
.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;}
.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;}
.display{border-collapse:separate;border-spacing:2px;width:auto; border:none;}
.dcell{white-space:nowrap;padding:0px;width:auto; border:none;}
.dcenter{margin:0ex auto;}
.vdcenter{border:solid #FF8000 2px; margin:0ex auto;}
.minipage{text-align:left; margin-left:0em; margin-right:auto;}
.marginpar{border:solid thin black; width:20%; text-align:left;}
.marginparleft{float:left; margin-left:0ex; margin-right:1ex;}
.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}
SPAN{width:20%; float:right; text-align:left; margin-left:auto;}
</STYLE>
</HEAD>
<BODY >
<!--HEVEA command line is: /usr/bin/hevea -fix -pedantic features.tex -->
<!--CUT DEF section 1 --><P><A NAME="titlepage"></A>
</P><TABLE CLASS="title"><TR><TD><H1 CLASS="titlemain">Ejabberd 2.0.4 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">
<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</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">
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 24 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">
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">
Modular
<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">
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">
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">
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">
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 -->
<!--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>
+136
View File
@@ -0,0 +1,136 @@
\documentclass[a4paper,10pt]{article}
%% Packages
\usepackage{epsfig}
\usepackage{fancyhdr}
\usepackage{graphics}
\usepackage{hevea}
\usepackage[pdftex,colorlinks,unicode,urlcolor=blue,linkcolor=blue,pdftitle=Ejabberd\
Feature\ Sheet,pdfauthor=Sander\
Devrieze,pdfsubject=ejabberd,pdfkeywords=ejabberd]{hyperref}
\usepackage{verbatim}
\usepackage{color}
%% Index
% Remove the index anchors from the HTML version to save size and bandwith.
\newcommand{\ind}[1]{\begin{latexonly}\index{#1}\end{latexonly}}
%% Images
\newcommand{\logoscale}{0.7}
\newcommand{\imgscale}{0.58}
\newcommand{\insimg}[1]{\insscaleimg{\imgscale}{#1}}
\newcommand{\insscaleimg}[2]{
\imgsrc{#2}{}
\begin{latexonly}
\scalebox{#1}{\includegraphics{#2}}
\end{latexonly}
}
%% Various
\newcommand{\bracehack}{\def\{{\char"7B}\def\}{\char"7D}}
\newcommand{\titem}[1]{\item[\bracehack\texttt{#1}]}
\newcommand{\ns}[1]{\texttt{#1}}
\newcommand{\jid}[1]{\texttt{#1}}
\newcommand{\option}[1]{\texttt{#1}}
\newcommand{\poption}[1]{{\bracehack\texttt{#1}}}
\newcommand{\node}[1]{\texttt{#1}}
\newcommand{\term}[1]{\texttt{#1}}
\newcommand{\shell}[1]{\texttt{#1}}
\newcommand{\ejabberd}{\texttt{ejabberd}}
\newcommand{\Jabber}{Jabber}
%% Title page
\include{version}
\title{Ejabberd \version\ Feature Sheet}
\author{Sander Devrieze \\
\ahrefurl{mailto:s.devrieze@pandora.be} \\
\ahrefurl{xmpp:sander@devrieze.dyndns.org}}
% Options
\newcommand{\marking}[1]{\textbf{\begin{large}\textcolor{ejblue}{#1}\end{large}}} % Marking enabled
\newcommand{\quoting}[2][yozhik]{\begin{quotation}\textcolor{#1}{\textit{#2}}\end{quotation}} % Quotes enabled
\newcommand{\new}{\marginpar{\textcolor{red}{\textsc{new}}}} % Highlight new features
\newcommand{\improved}{\marginpar{\textcolor{orange}{\textsc{improved}}}} % Highlight improved features
\setcounter{secnumdepth}{-1} % Disable section numbering
%% To by-pass errors in the HTML version.
\newstyle{SPAN}{width:20\%; float:right; text-align:left; margin-left:auto;}
\definecolor{orange} {cmyk}{0.000,0.333,1.000,0.000}
%% Footnotes
\begin{latexonly}
\global\parskip=9pt plus 3pt minus 1pt
\global\parindent=0pt
\gdef\ahrefurl#1{\href{#1}{\texttt{#1}}}
\gdef\footahref#1#2{#2\footnote{\href{#1}{\texttt{#1}}}}
\end{latexonly}
\newcommand{\txepref}[2]{\footahref{http://www.xmpp.org/extensions/xep-#1.html}{#2}}
\newcommand{\xepref}[1]{\txepref{#1}{XEP-#1}}
%% Fancy header
\fancyhf{}
\pagestyle{fancy}
\rhead{\textcolor{ejblue}{The Expandable Jabber Daemon.}}
\renewcommand{\headrule}{{\color{ejblue}%
\hrule width\headwidth height\headrulewidth \vskip-\headrulewidth}}
\lhead{\setlength{\unitlength}{-6mm}
\begin{picture}(0,0)
\put(5.8,3.25){\includegraphics[width=1.3\textwidth]{yozhikheader.png}}
\end{picture}}
% Official ejabberd colours
\definecolor{ejblue} {cmyk}{1.000,0.831,0.000,0.537} %RGB: 0,0,118 HTML: 000076
\definecolor{ejgreenyellow}{cmyk}{0.079,0.000,0.275,0.102} %RGB: 209,229,159 HTML: d1e59f
\definecolor{ejgreendark} {cmyk}{0.131,0.000,0.146,0.220} %RGB: 166,199,162 HTML: a6c7a2
\definecolor{ejgreen} {cmyk}{0.077,0.000,0.081,0.078} %RGB: 216,236,215 HTML: d8ecd7
\definecolor{ejgreenwhite} {cmyk}{0.044,0.000,0.048,0.020} %RGB: 239,250,238 HTML: effaee
\definecolor{yozhik} {cmyk}{0.000,0.837,1.000,0.424} %RGB: 147,0,0 HTML: 930000
\begin{document}
\label{titlepage}
\begin{titlepage}
\maketitle{}
\thispagestyle{empty}
\begin{center}
{\insscaleimg{\logoscale}{logo.png}
\par
}
\end{center}
\quoting{I can thoroughly recommend ejabberd for ease of setup --
Kevin Smith, Current maintainer of the Psi project}
\end{titlepage}
\newpage
% Set the page counter to 2 so that the titlepage and the second page do not
% have the same page number. This fixes the PDFLaTeX warning "destination with
% the same identifier".
\begin{latexonly}
\setcounter{page}{2}
\pagecolor{ejgreenwhite}
\end{latexonly}
% Input introduction.tex
\input{introduction}
\end{document}
%% TODO
% * illustrations (e.g. screenshot from web interface)
% * commented parts
% * slides, guide and html version
% * cleaning and improving LaTeX code
% * key features: something like this (shorter)? (more focussed on Erlang now): "To reach the goal of high
% availability, performance and clustering, ejabberd is written in Erlang, a programming language perfectly
% suited for this. Besides that, some parts are written in C to also incude the advantages of this language. In
% short, ejabberd is a perfect mix of mainly Erlang code, peppered with some C code to get the final touch!"
% <picture of a cocktail>
% * key features: saying that ejabberd the only XMPP server is that can do real clustering:
% http://www.jivesoftware.org/forums/thread.jspa?threadID=14602
% "What I find interesting is that *no* XMPP servers truly provide clustering. This includes all the commercial
% servers. The one partial exception appears to be ejabberd, which can cluster certain data such as sessions,
% but not all services such as MUC."
% * try it today: links to migration tutorials
+105
View File
@@ -0,0 +1,105 @@
digraph messages {
//concentrate=true;
subgraph clusterclients {
client1 [shape = box];
client2 [shape = box];
client3 [shape = box];
style = dashed;
label = "Clients";
}
subgraph clusternode1 {
subgraph clusterc2s1 {
c2s11;
c2s12;
style = invis;
}
subgraph clusterservices1 {
service11;
service12;
service13;
style = invis;
}
//subgraph clusters2s1 {
//s2s11;
//s2s12;
//style = invis;
//}
c2s11 -> auth1;
c2s12 -> auth1;
auth1 -> c2s11;
auth1 -> c2s12;
c2s11 -> sm1;
c2s11 -> router1;
c2s12 -> sm1;
c2s12 -> router1;
router1 -> local1;
router1 -> service11;
router1 -> service12;
router1 -> service13;
router1 -> s2s11;
router1 -> s2s12;
service11 -> router1;
service12 -> router1;
service13 -> router1;
s2s11 -> router1;
s2s12 -> router1;
local1 -> sm1;
sm1 -> c2s11;
sm1 -> c2s12;
style = dashed;
label = "Node1";
}
subgraph clusternode2 {
c2s2 -> auth2;
auth2 -> c2s2;
c2s2 -> sm2;
c2s2 -> router2;
router2 -> local2;
router2 -> service21;
router2 -> s2s21;
service21 -> router2;
s2s21 -> router2;
local2 -> sm2;
sm2 -> c2s2;
style = dashed;
label = "Node2";
}
subgraph clusterservers {
server1 [shape = box];
server2 [shape = box];
server3 [shape = box];
style = dashed;
label = "Servers";
}
client1 -> c2s11;
client2 -> c2s12;
client3 -> c2s2;
c2s11 -> client1 [constraint=false];
c2s12 -> client2 [constraint=false];
c2s2 -> client3 [constraint=false];
s2s11 -> server1 [minlen = 2];
s2s12 -> server2 [minlen = 2];
s2s21 -> server3 [minlen = 2];
server1 -> s2s11 [constraint=false];
server2 -> s2s12 [constraint=false];
server3 -> s2s21 [constraint=false];
router1 -> router2;
router2 -> router1;
sm1 -> sm2;
sm2 -> sm1;
label = "Data Flows";
}
+3250
View File
File diff suppressed because it is too large Load Diff
+4288
View File
File diff suppressed because it is too large Load Diff
+133
View File
@@ -0,0 +1,133 @@
\chapter{Introduction}
\label{intro}
%% TODO: improve the feature sheet with a nice table to highlight new features.
\quoting{I just tried out ejabberd and was impressed both by ejabberd itself and the language it is written in, Erlang. ---
Joeri}
%ejabberd is a free and open source instant messaging server written in Erlang. ejabberd is cross-platform, distributed, fault-tolerant, and based on open standards to achieve real-time communication (Jabber/XMPP).
\ejabberd{} is a \marking{free and open source} instant messaging server written in \footahref{http://www.erlang.org/}{Erlang}.
\ejabberd{} is \marking{cross-platform}, distributed, fault-tolerant, and based on open standards to achieve real-time communication.
\ejabberd{} is designed to be a \marking{rock-solid and feature rich} XMPP server.
\ejabberd{} is suitable for small deployments, whether they need to be \marking{scalable} or not, as well as extremely big deployments.
%\subsection{Layout with example deployment (title needs a better name)}
%\label{layout}
%In this section there will be a graphical overview like these:\\
%\verb|http://www.tipic.com/var/timp/timp_dep.gif| \\
%\verb|http://www.jabber.com/images/jabber_Com_Platform.jpg| \\
%\verb|http://www.antepo.com/files/OPN45systemdatasheet.pdf| \\
%A page full with names of Jabber client that are known to work with ejabberd. \begin{tiny}tiny font\end{tiny}
%\subsection{Try It Today}
%\label{trytoday}
%(Not sure if I will include/finish this section for the next version.)
%\begin{itemize}
%\item Erlang REPOS
%\item Packages in distributions
%\item Windows binary
%\item source tar.gz
%\item Migration from Jabberd14 (and so also Jabberd2 because you can migrate from version 2 back to 14) and Jabber Inc. XCP possible.
%\end{itemize}
\newpage
\section{Key Features}
\label{keyfeatures}
\ind{features!key features}
\quoting{Erlang seems to be tailor-made for writing stable, robust servers. ---
Peter Saint-Andr\'e, Executive Director of the Jabber Software Foundation}
\ejabberd{} is:
\begin{itemize}
\item \marking{Cross-platform:} \ejabberd{} runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.
\item \marking{Distributed:} You can run \ejabberd{} 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.
\item \marking{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'.
\item \marking{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:
\begin{itemize}
\item Comprehensive documentation.
\item Straightforward installers for Linux, Mac OS X, and Windows. %%\improved{}
\item Web Administration.
\item Shared Roster Groups.
\item Command line administration tool. %%\improved{}
\item Can integrate with existing authentication mechanisms.
\item Capability to send announce messages.
\end{itemize}
\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 24 languages. %%\improved{}
\item Support for \footahref{http://www.ietf.org/rfc/rfc3490.txt}{IDNA}.
\end{itemize}
\item \marking{Open Standards:} \ejabberd{} is the first Open Source Jabber server claiming to fully comply to the XMPP standard.
\begin{itemize}
\item Fully XMPP compliant.
\item XML-based protocol.
\item \footahref{http://www.ejabberd.im/protocols}{Many protocols supported}.
\end{itemize}
\end{itemize}
\newpage
\section{Additional Features}
\label{addfeatures}
\ind{features!additional features}
\quoting{ejabberd is making inroads to solving the "buggy incomplete server" problem ---
Justin Karneges, Founder of the Psi and the Delta projects}
Moreover, \ejabberd{} comes with a wide range of other state-of-the-art features:
\begin{itemize}
\item Modular
\begin{itemize}
\item Load only the modules you want.
\item Extend \ejabberd{} with your own custom modules.
\end{itemize}
\item Security
\begin{itemize}
\item SASL and STARTTLS for c2s and s2s connections.
\item STARTTLS and Dialback s2s connections.
\item Web Admin accessible via HTTPS secure access.
\end{itemize}
\item Databases
\begin{itemize}
\item Internal database for fast deployment (Mnesia).
\item Native MySQL support.
\item Native PostgreSQL support.
\item ODBC data storage support.
\item Microsoft SQL Server support. %%\new{}
\end{itemize}
\item Authentication
\begin{itemize}
\item Internal Authentication.
\item PAM, LDAP and ODBC. %%\improved{}
\item External Authentication script.
\end{itemize}
\item Others
\begin{itemize}
\item Support for virtual hosting.
\item Compressing XML streams with Stream Compression (\xepref{0138}).
\item Statistics via Statistics Gathering (\xepref{0039}).
\item IPv6 support both for c2s and s2s connections.
\item \txepref{0045}{Multi-User Chat} module with support for clustering and HTML logging. %%\improved{}
\item Users Directory based on users vCards.
\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 Component support: interface with networks such as AIM, ICQ and MSN installing special tranports.
\end{itemize}
\end{itemize}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

+62
View File
@@ -0,0 +1,62 @@
Release notes
ejabberd 0.9.1
This document describes the main changes from [25]ejabberd 0.9.
The code can be downloaded from the [26]download page.
For more detailed information, please refer to ejabberd [27]User Guide.
Groupchat (Multi-user chat and IRC) improvements
The multi-user chat code has been improved to comply with the latest version
of Jabber Enhancement Proposal 0045.
The IRC (Internet Relay Chat) features now support WHOIS and USERINFO
requests.
Web interface
ejabberd modules management features have been added to the web interface.
They now allow to start or stop extension module without restarting the
ejabberd server.
Publish and subscribe
It is now possible to a subscribe node with a JabberID that includes a
resource.
Translations
A new script has been included to help translate ejabberd into new languages
and maintain existing translations.
As a result, ejabberd is now translating into 10 languages:
* Dutch
* English
* French
* German
* Polish
* Portuguese
* Russian
* Spanish
* Swedish
* Ukrainian
Migration
No changes have been made to the database. No particular conversion steps
are needed. However, you should backup your database before upgrading to a
new ejabberd version.
Bugfixes
This release contains several bugfixes and architectural changes. Please
refer to the Changelog file supplied with this release for details of all
improvements in the ejabberd code.
+99
View File
@@ -0,0 +1,99 @@
Release notes
ejabberd 0.9.8
2005-08-01
This document describes the main changes in ejabberd 0.9.8. This
version prepares the way for the release of ejabberd 1.0, which
is due later this year.
The code can be downloaded from the Process-one website:
http://www.process-one.net/en/projects/ejabberd/
For more detailed information, please refer to ejabberd User Guide
on the Process-one website:
http://www.process-one.net/en/projects/ejabberd/docs.html
Recent changes include....
Enhanced virtual hosting
Virtual hosting applies to many more setting options and
features and is transparent. Virtual hosting accepts different
parameters for different virtual hosts regarding the following
features: authentication method, access control lists and access
rules, users management, statistics, and shared roster. The web
interface gives access to each virtual host's parameters.
Enhanced Publish-Subscribe module
ejabberd's Publish-Subscribe module integrates enhancements
coming from J-EAI, an XMPP-based integration server built on
ejabberd. ejabberd thus supports Publish-Subscribe node
configuration. It is possible to define nodes that should be
persistent, and the number of items to persist. Besides that, it
is also possible to define various notification parameters, such
as the delivery of the payload with the notifications, and the
notification of subscribers when some changes occur on items.
Other examples are: the maximum size of the items payload, the
subscription approvers, the limitation of the notification to
online users only, etc.
Code reorganisation and update
- The mod_register module has been cleaned up.
- ODBC support has been updated and several bugs have been fixed.
Development API
To ease the work of Jabber/XMPP developers, a filter_packet hook
has been added. As a result it is possible to develop plugins to
filter or modify packets flowing through ejabberd.
Translations
- Translations have been updated to support the new Publish-Subscribe features.
- A new Brazilian Portuguese translation has been contributed.
Web interface
- The CSS stylesheet from the web interface is W3C compliant.
Installers
Installers are provided for Microsoft Windows and Linux/x86. The
Linux installer includes Erlang ASN.1 modules for LDAP
authentication support.
Bugfixes
- This release contains several bugfixes and architectural
changes. Among other bugfixes include improvements in LDAP
authentication. Please refer to the ChangeLog file supplied
with this release regarding all improvements in ejabberd.
References
The ejabberd feature sheet helps comparing with other Jabber/XMPP
servers:
http://www.process-one.net/en/projects/ejabberd/docs/features.pdf
Contributed tutorials of interest are:
- Migration from Jabberd1.4 to ejabberd:
http://ejabberd.jabber.ru/jabberd1-to-ejabberd
- Migration from Jabberd2 to ejabberd:
http://ejabberd.jabber.ru/jabberd2-to-ejabberd
- Transport configuration for connecting to other networks:
http://ejabberd.jabber.ru/tutorials-transports
END
+88
View File
@@ -0,0 +1,88 @@
Release notes
ejabberd 0.9
This document describes the major new features of and changes to
ejabberd 0.9, compared to latest public release ejabber 0.7.5.
For more detailed information, please refer to ejabberd User
Guide.
Virtual Hosting
ejabberd now can host several domain on the same instance.
This option is enabled by using:
{hosts, ["erlang-projects.org", "erlang-fr.org"]}.
instead of the previous host directive.
Note that you are now using a list of hosts. The main one should
be the first listed. See migration section further in this release
note for details.
Shared Roster
Shared roster is a new feature that allow the ejabberd
administrator to add jabber user that will be present in the
roster of every users on the server.
Shared roster are enabled by adding:
{mod_shared_roster, []}
at the end of your module list in your ejabberd.cfg file.
PostgreSQL (ODBC) support
This feature is experimental and not yet properly documented. This
feature is released for testing purpose.
You need to have Erlang/OTP R10 to compile with ODBC on various
flavour of *nix. You should use Erlang/OTP R10B-4, as this task
has became easier with this release. It comes already build in
Erlang/OTP Microsoft Windows binary.
PostgreSQL support is enabled by using the following module in
ejabberd.cfg instead of their standard counterpart:
mod_last_odbc.erl
mod_offline_odbc.erl
mod_roster_odbc.erl
The database schema is located in the src/odbc/pq.sql file.
Look at the src/ejabberd.cfg.example file for more information on
how to configure ejabberd with odbc support. You can get support
on how to configure ejabberd with a relational database.
Migration from ejabberd 0.7.5
Migration is pretty straightforward as Mnesia database schema
conversions is handled automatically. Remember however that you
must backup your ejabberd database before migration.
Here are the following steps to proceed:
1. Stop your instance of ejabberd.
2. In ejabberd.cfg, define the host lists. Change the host
directive to the hosts one:
Before:
{host, "erlang-projects.org"}.
After:
{hosts, ["erlang-projects.org", "erlang-fr.org"]}.
Note that when you restart the server the existing users will be
affected to the first virtual host, so the order is important. You
should keep the previous hostname as the first virtual host.
3. Restart ejabberd.
Bugfixes
This release contains several bugfixes and architectural changes.
Please refer to the Changelog file supplied with this release for
details of all improvements in the ejabberd code.
+120
View File
@@ -0,0 +1,120 @@
Release Notes
ejabberd 1.0.0
14 December 2005
This document describes the main changes in ejabberd 1.0.0. Unique in this
version is the compliancy with the XMPP (eXtensible Messaging and Presence
Protocol) standard. ejabberd is the first Open Source Jabber server claiming
to fully comply to the XMPP standard.
ejabberd can be downloaded from the Process-one website:
http://www.process-one.net/en/projects/ejabberd/
Detailed information can be found in the ejabberd Feature Sheet and User
Guide which are available on the Process-one website:
http://www.process-one.net/en/projects/ejabberd/docs.html
Recent changes include:
Server-to-server Encryption for Enhanced Security
- Support for STARTTLS and SASL EXTERNAL to secure server-to-server traffic
has been added.
- Also, STARTTLS and Dialback has been implemented for server-to-server (s2s)
connections. Detailed information about these new features can be found on
http://ejabberd.jabber.ru/s2s-encryption
- commonName and dNSName fields matching were introduced to ease the process
of retrieving certificates.
- Different certificates can be defined for each virtual host.
ODBC Support
- ODBC support has been improved to allow production use of ejabberd with
relational databases.
- Support for vCard storage in ODBC has been added.
- ejd2odbc.erl is a tool to convert an installation from Erlang's database
Mnesia to an ODBC compatible relational database.
Native PostgreSQL Support
- Native PostgreSQL support gives you a better performance when you use
PostgreSQL.
Shared Roster groups
- Shared Roster groups support has been enhanced. New is the ability to add
all registered users to everyone's roster. Detailed information about this
new feature can be found on http://ejabberd.jabber.ru/shared-roster-all
Web Interface
- The web interface internal code has been modified for better integration
and compliancy with J-EAI, an ejabberd-based Enterprise Application
Integration platform.
- More XHTML 1.0 Transitional compliancy work was done.
Transports
- A transport workaround can be enabled during compilation. To do this, you
can pass the "--enable-roster-gateway-workaround" option to the configure
script. (./configure --enable-roster-gateway-workaround)
This option allows transports to add items with subscription "to" in the
roster by sending <presence type='subscribed'/> stanza to user. This option
is only needed for JIT ICQ transport.
Warning: by enabling this option, ejabberd will not be fully XMPP compliant
anymore.
Documentation and Internationalization
- Documentation has been extended to cover more topics.
- Translations have been updated.
Bugfixes
- This release contains several bugfixes.
- Among other bugfixes include improvements to the client-to-server (c2s)
connection management module.
- Please refer to the ChangeLog file supplied
with this release regarding all improvements in ejabberd.
Installation Notes
Supported Erlang Version
- You need at least Erlang/OTP R9C to run ejabberd 1.0.0.
Installation
Installers are provided for Microsoft Windows and Linux/x86.
Installers can be retrieved from:
http://www.process-one.net/en/projects/ejabberd/download.html
Migration Notes
- Before any migration, ejabberd system and database must be properly
backed up.
- When upgrading an ODBC-based installation, you will need to change the
relational database schema. The following SQL commands must be run on the
database:
CREATE SEQUENCE spool_seq_seq;
ALTER TABLE spool ADD COLUMN seq integer;
ALTER TABLE spool ALTER COLUMN seq SET DEFAULT nextval('spool_seq_seq');
UPDATE spool SET seq = DEFAULT;
ALTER TABLE spool ALTER COLUMN seq SET NOT NULL;
References
Contributed tutorials of interest are:
- Migration from Jabberd1.4 to ejabberd:
http://ejabberd.jabber.ru/jabberd1-to-ejabberd
- Migration from Jabberd2 to ejabberd:
http://ejabberd.jabber.ru/jabberd2-to-ejabberd
- Transport configuration for connecting to other networks:
http://ejabberd.jabber.ru/tutorials-transports
END
+115
View File
@@ -0,0 +1,115 @@
Release Notes
ejabberd 1.1.0
24 April 2006
This document describes the main changes in ejabberd 1.1.0. This version
introduce new features including support for new Jabber Enhancement
Proposals and several performance improvements enabling deployments on an
even larger scale than already possible.
ejabberd can be downloaded from the Process-one website:
http://www.process-one.net/en/projects/ejabberd/
Detailed information can be found in the ejabberd Feature Sheet and User
Guide which are available on the Process-one website:
http://www.process-one.net/en/projects/ejabberd/docs.html
A complete list of changes is available from:
http://support.process-one.net/secure/ReleaseNote.jspa?projectId=10011&styleName=Html&version=10025
Recent changes include:
New Jabber Enhancement Proposal support:
- JEP-0050: Ad-Hoc Commands.
- JEP-0138: Stream Compression.
- JEP-0175: SASL anonymous.
Anonymous login
- SASL anonymous.
- Anonymous login for clients that do not yet support SASL Anonymous.
Relational database Support
- MySQL is now fully supported through ODBC and in native mode.
- Various improvements to the native database interfaces.
- The migration tool can use relational databases.
Multi-User Chat improvements
- Logging of room discussion to text file is now supported.
- Better reconfiguration support.
- Security oriented fixes.
- Several improvements and updates to latest JEP-0045.
Performance scalability improvements for large clusters
- Improved session synchronisation management between cluster nodes.
- Internal architecture has been reworked to use generalize Erlang/OTP
framework usage.
- Speed improvement on logger.
- TCP/IP packet reception change for better network throttling and
regulation.
As a result, these improvements will reduce load on large scale deployments.
XMPP Protocol related improvements
- XML stanza size can be limited.
- Messages are send to all resources with the same highest priority.
Documentation and Internationalization
- Documentation has been extended to cover more topics.
- Translations have been updated.
Web interface
- XHTML 1.0 compliance.
Bugfixes
- This release contains many bugfixes on various areas such as Publish-Subscribe, build
chain, installers, IRC gateway, ejabberdctl, amongst others.
- Please refer to the ChangeLog file supplied with this release regarding
all improvements in ejabberd.
Installation Notes
Supported Erlang Version
- You need at least Erlang/OTP R9C-2 to run ejabberd 1.1.0.
Installation
Installers are provided for Microsoft Windows, Linux/x86 and MacOSX/PPC.
Installers can be retrieved from:
http://www.process-one.net/en/projects/ejabberd/download.html
Migration Notes
- Before any migration, ejabberd system and database must be properly
backed up.
- The database schema has not been changed comparing to version 1.0.0 and
consequently it does not require any migration.
References
Contributed tutorials and documents of interest are:
- Migration from Jabberd1.4, Jabberd2 and WPJabber to ejabberd:
http://ejabberd.jabber.ru/migrate-to-ejabberd
- Transport configuration for connecting to other networks:
http://ejabberd.jabber.ru/tutorials-transports
- Using ejabberd with MySQL native driver:
http://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver
- Anonymous User Support:
http://support.process-one.net/doc/display/MESSENGER/Anonymous+users+support
- Frequently Asked Questions:
http://ejabberd.jabber.ru/faq
END
+119
View File
@@ -0,0 +1,119 @@
Release Notes
ejabberd 1.1.1
28 April 2006
This document describes the main changes in ejabberd 1.1.x. This version
introduce new features including support for new Jabber Enhancement
Proposals and several performance improvements enabling deployments on an
even larger scale than already possible.
This release fix a security issue introduced in ejabberd 1.1.0. In SASL
mode, anonymous login was enabled as a default. Upgrading ejabberd 1.1.0 to
ejabberd 1.1.1 is highly recommended.
ejabberd can be downloaded from the Process-one website:
http://www.process-one.net/en/projects/ejabberd/
Detailed information can be found in the ejabberd Feature Sheet and User
Guide which are available on the Process-one website:
http://www.process-one.net/en/projects/ejabberd/docs.html
A complete list of changes is available from:
http://support.process-one.net/secure/ReleaseNote.jspa?projectId=10011&styleName=Html&version=10025
Recent changes include:
New Jabber Enhancement Proposal support:
- JEP-0050: Ad-Hoc Commands.
- JEP-0138: Stream Compression.
- JEP-0175: SASL anonymous.
Anonymous login
- SASL anonymous.
- Anonymous login for clients that do not yet support SASL Anonymous.
Relational database Support
- MySQL is now fully supported through ODBC and in native mode.
- Various improvements to the native database interfaces.
- The migration tool can use relational databases.
Multi-User Chat improvements
- Logging of room discussion to text file is now supported.
- Better reconfiguration support.
- Security oriented fixes.
- Several improvements and updates to latest JEP-0045.
Performance scalability improvements for large clusters
- Improved session synchronisation management between cluster nodes.
- Internal architecture has been reworked to use generalize Erlang/OTP
framework usage.
- Speed improvement on logger.
- TCP/IP packet reception change for better network throttling and
regulation.
As a result, these improvements will reduce load on large scale deployments.
XMPP Protocol related improvements
- XML stanza size can be limited.
- Messages are send to all resources with the same highest priority.
Documentation and Internationalization
- Documentation has been extended to cover more topics.
- Translations have been updated.
Web interface
- XHTML 1.0 compliance.
Bugfixes
- This release contains many bugfixes on various areas such as Publish-Subscribe, build
chain, installers, IRC gateway, ejabberdctl, amongst others.
- Please refer to the ChangeLog file supplied with this release regarding
all improvements in ejabberd.
Installation Notes
Supported Erlang Version
- You need at least Erlang/OTP R9C-2 to run ejabberd 1.1.0.
Installation
Installers are provided for Microsoft Windows, Linux/x86 and MacOSX/PPC.
Installers can be retrieved from:
http://www.process-one.net/en/projects/ejabberd/download.html
Migration Notes
- Before any migration, ejabberd system and database must be properly
backed up.
- The database schema has not been changed comparing to version 1.0.0 and
consequently it does not require any migration.
References
Contributed tutorials and documents of interest are:
- Migration from Jabberd1.4, Jabberd2 and WPJabber to ejabberd:
http://ejabberd.jabber.ru/migrate-to-ejabberd
- Transport configuration for connecting to other networks:
http://ejabberd.jabber.ru/tutorials-transports
- Using ejabberd with MySQL native driver:
http://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver
- Anonymous User Support:
http://support.process-one.net/doc/display/MESSENGER/Anonymous+users+support
- Frequently Asked Questions:
http://ejabberd.jabber.ru/faq
END
+119
View File
@@ -0,0 +1,119 @@
Release Notes
ejabberd 1.1.2
27 September 2006
This document describes the main changes in ejabberd 1.1.2.
This version is a major improvement over ejabberd 1.1.1, improving the
overall behaviour of the server in many areas. Users of ejabberd 1.1.1
should upgrade to this new release for improved robustness and compliance.
ejabberd can be downloaded from the Process-one website:
http://www.process-one.net/en/projects/ejabberd/
Detailed information can be found in the Feature Sheet and in the
Installation and Operation Guide which are both available on the
Process-one website:
http://www.process-one.net/en/projects/ejabberd/docs.html
ejabberd includes 44 improvements. A complete list of changes can be
retrieved from:
http://redir.process-one.net/ejabberd-1.1.2
Recent changes include:
LDAP Improvements
- Major improvements have been made on the LDAP module. It is now more
flexible and more robust.
HTTP Polling Fixes
- The HTTP polling modules have been fixed and improved: the connections are
closed properly and polled messages cannot be lost anymore.
Roster Management Improvement
- Roster management improvements increase reliability, especially in cases
where users are on different servers.
- Shared rosters are more reliable.
Improved Robustness
- It is now possible to limit the number of opened connections for a single
user.
Relational databases
- Database support: Microsoft SQL Server is now officially supported in ODBC
mode.
Publish-Subscribe Improvement
- Restricting node creation with a dedicated ACL rule is now possible.
Localization
- A Czech translation has been added.
- Translations have been updated.
Binary Installer
- New binary installer for Windows including all requirements.
- Improved installers for Linux and MacOSX (PowerPC)
XMPP Compliancy
- Some protocol compliance fix have been added, after the Portland XMPP
Interop Meeting in July.
Miscelanous
- MUC have been improved (logging rendering).
- The command line tool ejabberdctl has been improved.
- The build chain has been improved, including MacOSX support.
- The documentation has been improved and updated to describe the new
features.
Bugfixes
- Anonymous login bugfixes.
- Please refer to the ChangeLog file supplied with this release regarding
all improvements in ejabberd.
Installation Notes
Supported Erlang Version
- You need at least Erlang/OTP R9C-2 to run ejabberd 1.1.2.
- The recommanded version is Erlang/OTP R10B-10.
- Erlang/OTP R11B has not yet been fully certified for ejabberd.
Installation
Installers are provided for Microsoft Windows, Linux/x86 and MacOSX/PPC.
They can be retrieved from:
http://www.process-one.net/en/projects/ejabberd/download.html
Migration Notes
- Before any migration, ejabberd system and database must be properly
backed up.
- The relational database schema has changed between version 1.1.1 and
1.1.2. An "askmessage" column needs to be added in the "rosterusers" table
to perform the migration.
References
Contributed tutorials and documents of interest are:
- Migration from other XMPP servers to ejabberd:
http://ejabberd.jabber.ru/migrate-to-ejabberd
- Transport configuration for connecting to other networks:
http://ejabberd.jabber.ru/tutorials-transports
- Frequently Asked Questions:
http://ejabberd.jabber.ru/faq
END
+14
View File
@@ -0,0 +1,14 @@
Release Notes
ejabberd 1.1.3
2 February 2007
ejabberd 1.1.3 is a security fix release for ejabberd roster ODBC
module.
The upgrade is only necessary if you are using ejabberd with the
mod_roster_odbc.
The new code can be downloaded from ejabberd download page:
http://www.process-one.net/en/projects/ejabberd/
END
+31
View File
@@ -0,0 +1,31 @@
Release Notes
ejabberd 1.1.4
3 september 2007
ejabberd 1.1.4 is a bugfix release for ejabberd 1.1.x branch.
ejabberd 1.1.4 includes 10 improvements. A complete list of changes
can be retrieved from:
http://redir.process-one.net/ejabberd-1.1.4
The new code can be downloaded from ejabberd download page:
http://www.process-one.net/en/projects/ejabberd/
Recent changes include:
- Better LDAP support.
- Support for UTF-8 with MySQL 5.
- Roster migration script bugfixes.
- Performance improvements on user removal.
- Traffic shapers bugfix.
- Configuration: host value is now case insensitive.
- Build: ejabberd.cfg file is not overwritten with 'make install' command.
Bugs report
You can officially report bugs on Process-one support site:
http://support.process-one.net/
END
+208
View File
@@ -0,0 +1,208 @@
Release Notes
ejabberd 2.0.0
21 February 2008
ejabberd 2.0.0 is a major new version for ejabberd adding plenty of
new features, performance and scalability improvements and
architectural changes.
ejabberd 2.0.0 includes more than 200 improvements over ejabberd
1.1.x. A complete list of changes can be retrieved from:
http://redir.process-one.net/ejabberd-2.0.0
The new code can be downloaded from ejabberd downloads page:
http://www.process-one.net/en/ejabberd/
Recent changes include:
* Clustering and Architecture
- New front-end and back-end cluster architecture for better
scalability and robustness. Back-end nodes are able to run a fully
fault-tolerant XMPP router and services, but you can now deploy
many front-end nodes to share the load without needing to synchronize
any state with the back-ends.
- All components now run in cluster mode (For example, Multi-User chat
service and file transfer proxy).
- New load balancing algorithm to support Multi-User chat and gateways
clustering. More generally it supports any external component load
balancing.
- ejabberd watchdog to receive warning on suspicious resources consumption.
- Traffic shapers are now supported on components. This protect
ejabberd from components and gateways abuses.
* Publish and Subscribe
- Complete rewrite of the PubSub module. The new PubSub module is
plugin-based, allowing developers to create new nodes type. Any
application can be plugged to ejabberd and can provide rich presence
as a pubsub plugin.
- Personal Eventing via Pubsub support (XEP-0163). This module is
implemented as a PubSub service. It supports user mood (XEP-107),
User Tune (XEP-118), user location (XEP-0080) or user avatar
(XEP-0084) for example.
* Server to Server (s2s)
- More robust code with connection timeout implementation.
- Support for multiple s2s connections per domain.
- s2s whitelist and blacklist support.
- s2s retrial interval.
* LDAP
- Many enterprise-class enhancements such as better behaviour under
heavy load.
- Support for LDAP servers pool.
- Simplified use of virtual hosting with LDAP with domain substitution
in config.
- Ability to match on several userid attributes.
* Multi-User Chat
- Clustering and load balancing support.
- Ability to define default room configuration in ejabberd config file.
- Many anti abuse features have been added:
. New ACL to limit the creation of persistent room to authorized users.
. Ability to define the maximum number of users per room.
. Limitation of the rate of message and presence packets.
. Limitation of the maximum number of room a user can join at the same time.
* File Transfer
- XEP-0065 - Proxy65 file transfer proxy. The proxy can run in
cluster mode.
* Authentication
- PAM (Pluggable Authentication Modules) support on *nix systems.
- External Authentication protocol is now fully documented.
* Web Client Support
- XEP-0124 - BOSH support: BOSH (Bidirectional-streams Over
Synchronous HTTP) was formerly known as "HTTP binding". It provides
an efficient alternative to HTTP polling for scalable Web based chat
solutions.
- HTTP module can now serve static documents (with
mod_http_fileserver). It is needed for high-performance Web 2.0 chat
/ IM application. System administrators can now avoid using a proxy
(like Apache) that handles much less simultaneous than ejabberd HTTP
module.
- Added limitations enforcement on HTTP poll and HTTP bind modules
(bandwidth, packet size).
* System Administration
- XEP-0133 - Service administration support. System administrators can
now perform lot of ejabberd related admin tasks from their XMPP
client, through adhoc commands.
- Dynamic log levels: Improved logging with more log levels. You can
now change the loglevel at run time. No performance penalty is
involved when less verbose levels are used.
- The ejabberdctl command-line administration script now can start
and stop ejabberd. It also includes other useful options.
* Localization
- ejabberd is now translated to 24 languages: Catalan, Chinese, Czech,
Dutch, English, Esperanto, French, Galician, German, Italian, Japanese,
Norwegian, Polish, Portuguese, Portuguese (Brazil), Russian, Slovak,
Spanish, Swedish, Thai, Turkish, Ukrainian, Vietnamese, Walloon.
* Build and Installer
- Many launch script improvements.
- New translations. The binary installer is now available in Chinese,
Dutch, English, French, German, Spanish, Russian.
- Makefile now implements uninstall command.
- Full MacOSX compliance in Makefile.
- Configure script is clever at finding libraries in unusual places.
* Development API
- Several hooks have been added for module developers (most notably
presence related hooks).
- HTTP request handler to write HTTP based plugins.
- Manage connections IP address.
* Bugfixes
- ejabberd 2.0.0 also fixes numerous small bugs :) Read the full
changelog for details.
Important Note:
- Since this release, ejabberd requires Erlang R10B-5 or higher.
R11B-5 is the recommended version. R12 is not yet officially
supported, and is not recommended for production servers.
Upgrading From ejabberd 1.x:
- If you upgrade from a version older than 1.1.4, please check the
Release Notes of the intermediate versions for additional
information about database or configuration changes.
- The database schemas didn't change since ejabberd 1.1.4. Of course,
you are encouraged to make a database backup of your SQL database,
or your Mnesia spool directory before upgrading ejabberd.
- The ejabberdctl command line administration script is improved in
ejabberd 2.0.0, and now it can start and stop ejabberd. If you
already wrote your own start script for ejabberd 1.x, you can
continue using it, or try ejabberdctl. For your convenience, the
ejabberd Guide describes all the ejabberd and Erlang options used by
ejabberdctl.
- The example ejabberd.cfg file has been reorganized, but its format
and syntax rules are the same. So, you can continue using your
ejabberd.cfg file from 1.x if you want. The most important changes
are described now.
- The 'ssl' option is no longer available in the listening ports. For
legacy SSL encryption use the option 'tls'. For STARTTLS encryption
as defined in RFC 3920 XMPP-CORE use the option 'starttls'. Check
the ejabberd Guide for more information about configuring listening
ports.
- The options 'welcome_message' and 'registration_watchers' are now
options of the module mod_register. Check in the ejabberd Guide how
to configure that module.
- To enable PEP support in mod_pubsub, you need to enable it in the
mod_pubsub configuration, and also enable the new module
mod_caps. Check the section about mod_pubsub in the ejabberd Guide.
- Other new features and improvements also require changes in the
ejabberd.cfg, like mod_http_bind, mod_http_fileserver, mod_proxy65,
loglevel, pam_service, and watchdog_admins. Search for those words
in the ejabberd Guide and the example ejabberd.cfg.
Bug Reports
You can officially report bugs on Process-one support site:
https://support.process-one.net/
END
+30
View File
@@ -0,0 +1,30 @@
Release Notes
ejabberd 2.0.1
20 May 2008
ejabberd 2.0.1 is a bugfix release for ejabberd 2.0.x branch.
ejabberd 2.0.1 includes 10 improvements and 32 bugfixes.
A complete list of changes can be retrieved from:
http://redir.process-one.net/ejabberd-2.0.1
The new code can be downloaded from ejabberd download page:
http://www.process-one.net/en/projects/ejabberd/
Recent changes include:
- Erlang R12 support.
- Better LDAP handling.
- PubSub bugfixes.
- Documentation improvements.
- inband registration limitation per IP.
- s2s improvements.
Bugs report
You can officially report bugs on Process-one support site:
http://support.process-one.net/
END
+34
View File
@@ -0,0 +1,34 @@
Release Notes
ejabberd 2.0.2
28 August 2008
ejabberd 2.0.2 is the second bug fix release for ejabberd 2.0.x branch.
ejabberd 2.0.2 includes many bugfixes and a few improvements.
A complete list of changes can be retrieved from:
http://redir.process-one.net/ejabberd-2.0.2
The new code can be downloaded from ejabberd download page:
http://www.process-one.net/en/ejabberd/
Recent changes include:
- Anti-abuse feature: client blacklist support by IP.
- Guide: new section Securing ejabberd; improved usability.
- LDAP filter optimisation: ability to filter user in ejabberd and not LDAP.
- MUC improvements: room options to restrict visitors; broadcast reasons.
- Privacy rules: fix MySQL storage.
- Pub/Sub and PEP: many improvements in implementation and protocol compliance.
- Proxy65: send valid SOCKS5 reply (removed support for Psi < 0.10).
- Web server embedded: better support for HTTPS.
- Binary installers: SMP on Windows; don't remove config when uninstalling.
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
END
+35
View File
@@ -0,0 +1,35 @@
Release Notes
ejabberd 2.0.3
14 January 2009
ejabberd 2.0.3 is the third bugfix release for ejabberd 2.0.x branch.
ejabberd 2.0.3 includes several bugfixes and a few improvements.
A complete list of changes can be retrieved from:
http://redir.process-one.net/ejabberd-2.0.3
The new code can be downloaded from ejabberd download page:
http://www.process-one.net/en/ejabberd/
Recent changes include:
- Do not ask certificate for client (c2s)
- Check digest-uri in SASL digest authentication
- Use send timeout to avoid locking on gen_tcp:send
- Fix ejabberd reconnection to database
- HTTP-Bind: handle wrong order of packets
- MUC: Improve traffic regulation management
- PubSub: Several bugfixes and improvements for best coverage of XEP-0060 v1.12
- Shared Roster Groups: push immediately membership changes
- Rotate also sasl.log on "reopen-log" command
- Binary Windows installer: better detect "Error running Post Install Script"
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
END
+44
View File
@@ -0,0 +1,44 @@
Release Notes
ejabberd 2.0.4
ejabberd 2.0.4 is the fourth bugfix release for ejabberd 2.0.x branch.
ejabberd 2.0.4 includes several bugfixes.
A detailed list of changes can be retrieved from:
http://redir.process-one.net/ejabberd-2.0.4
The new code can be downloaded from ejabberd download page:
http://www.process-one.net/en/ejabberd/
The changes are:
- Ensure ID attribute in roster push is unique
- Authentication: Fix Anonymous auth when enabled with broken ODBC
- Authentication: Unquote correctly backslash in DIGEST-MD5 SASL responses
- Authentication: Cancel presence subscriptions on account deletion
- LDAP: Close a connection on tcp_error
- LDAP: Implemented queue for pending queries
- LDAP: On failure of LDAP connection, waiting is done on pending queue
- MUC: Owner of a password protected room must also provide the password
- MUC: Prevent XSS in MUC logs by linkifying only a few known protocols
- Privacy rules: Items are now processed in the specified order
- Privacy rules: Fix to correctly block subscription requests
- Proxy65: If ip option is not defined, take an IP address of a local hostname
- PubSub: Add roster subscription handling; send PEP events to all resources
- PubSub: Allow node creation without configure item
- PubSub: Requesting items on a node which exists, but empty returns an error
- PEP: Fix sending notifications to other domains and s2s
- S2S: Fix problem with encrypted connection to Gtalk and recent Openfire
- S2S: Workaround to get DNS SRV lookup to work on Windows machine
- Shared Roster Groups: Fix to not resend authorization request
- WebAdmin: Fix encryption problem for ejabberd_http after timeout
Bug reports
You can officially report bugs on ProcessOne support site:
http://support.process-one.net/
END
+2
View File
@@ -0,0 +1,2 @@
% ejabberd version (automatically generated).
\newcommand{\version}{2.0.4}
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

-63
View File
@@ -1,63 +0,0 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: ejabberd
# Required-Start: $remote_fs $network $named $time
# Required-Stop: $remote_fs $network $named $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts ejabberd jabber server
# Description: Starts ejabberd jabber server, an XMPP
# compliant server written in Erlang.
### END INIT INFO
# chkconfig: 2345 90 10
# description: ejabberd XMPP server
set -o errexit
DIR=@ctlscriptpath@
CTL="$DIR"/ejabberdctl
USER=@installuser@
test -x "$CTL" || {
echo "ERROR: ejabberd not found: $DIR"
exit 1
}
getent passwd "$USER" >/dev/null || {
echo "ERROR: System user not found: $USER"
exit 2
}
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
case "$1" in
start)
test -x "$CTL" || exit 0
echo "Starting ejabberd..."
su - $USER -c "$CTL start"
su - $USER -c "$CTL started"
echo "done."
;;
stop)
test -x "$CTL" || exit 0
echo "Stopping ejabberd..."
su - $USER -c "$CTL stop"
su - $USER -c "$CTL stopped"
echo "done."
;;
status)
test -x "$CTL" || exit 0
echo "Getting ejabberd status..."
su - $USER -c "$CTL status"
;;
force-reload|restart)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}"
exit 1
esac
exit 0
-17
View File
@@ -1,17 +0,0 @@
[Unit]
Description=XMPP Server
After=network.target
[Service]
User=ejabberd
Group=ejabberd
LimitNOFILE=16000
RestartSec=5
ExecStart=/bin/sh @ctlscriptpath@/ejabberdctl start
ExecStop=@ctlscriptpath@/ejabberdctl stop
ExecReload=@ctlscriptpath@/ejabberdctl reload_config
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
-688
View File
@@ -1,688 +0,0 @@
###
###' 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"
###. ===============
###' NODE PARAMETERS
##
## net_ticktime: Specifies net_kernel tick time in seconds. This options must have
## identical value on all nodes, and in most cases shouldn't be changed at all from
## default value.
##
## net_ticktime: 60
###. ================
###' 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
## access_commands: {}
-
port: 5280
module: ejabberd_http
request_handlers:
"/websocket": ejabberd_http_ws
## "/pub/archive": mod_http_fileserver
web_admin: true
http_bind: true
## register: true
captcha: true
###. ==================
###' S2S GLOBAL OPTIONS
##
## 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
##
## SQLite:
##
## odbc_type: sqlite
## odbc_database: "/path/to/database.db"
##
## 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_admin_extra: {}
mod_announce: # recommends mod_adhoc
access: announce
mod_blocking: {} # requires mod_privacy
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
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_multicast: {}
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:
search: false
mod_version: {}
##
## Enable modules with custom options in a specific virtual host
##
## host_config:
## "localhost":
## modules:
## mod_echo:
## host: "mirror.localhost"
##
## Enable modules management via ejabberdctl for installation and
## uninstallation of public/private contributed modules
## (enabled by default)
##
allow_contrib_modules: true
###.
###'
### Local Variables:
### mode: yaml
### End:
### vim: set filetype=yaml tabstop=8 foldmarker=###',###. foldmethod=marker:
-186
View File
@@ -1,186 +0,0 @@
#
# In this file you can configure options that are passed by ejabberdctl
# to the erlang runtime system when starting ejabberd
#
#' POLL: Kernel polling ([true|false])
#
# The kernel polling option requires support in the kernel.
# Additionally, you need to enable this feature while compiling Erlang.
#
# Default: true
#
#POLL=true
#.
#' SMP: SMP support ([enable|auto|disable])
#
# Explanation in Erlang/OTP documentation:
# enable: starts the Erlang runtime system with SMP support enabled.
# This may fail if no runtime system with SMP support is available.
# auto: starts the Erlang runtime system with SMP support enabled if it
# is available and more than one logical processor are detected.
# disable: starts a runtime system without SMP support.
#
# Default: auto
#
#SMP=auto
#.
#' ERL_MAX_PORTS: Maximum number of simultaneously open Erlang ports
#
# ejabberd consumes two or three ports for every connection, either
# from a client or from another Jabber server. So take this into
# account when setting this limit.
#
# Default: 32000
# Maximum: 268435456
#
#ERL_MAX_PORTS=32000
#.
#' FIREWALL_WINDOW: Range of allowed ports to pass through a firewall
#
# If Ejabberd is configured to run in cluster, and a firewall is blocking ports,
# it's possible to make Erlang use a defined range of port (instead of dynamic
# ports) for node communication.
#
# Default: not defined
# Example: 4200-4210
#
#FIREWALL_WINDOW=
#.
#' INET_DIST_INTERFACE: IP address where this Erlang node listens other nodes
#
# This communication is used by ejabberdctl command line tool,
# and in a cluster of several ejabberd nodes.
#
# Default: 0.0.0.0
#
#INET_DIST_INTERFACE=127.0.0.1
#.
#' ERL_EPMD_ADDRESS: IP addresses where epmd listens for connections
#
# IMPORTANT: This option works only in Erlang/OTP R14B03 and newer.
#
# This environment variable may be set to a comma-separated
# list of IP addresses, in which case the epmd daemon
# will listen only on the specified address(es) and on the
# loopback address (which is implicitly added to the list if it
# has not been specified). The default behaviour is to listen on
# all available IP addresses.
#
# Default: 0.0.0.0
#
#ERL_EPMD_ADDRESS=127.0.0.1
#.
#' ERL_PROCESSES: Maximum number of Erlang processes
#
# Erlang consumes a lot of lightweight processes. If there is a lot of activity
# on ejabberd so that the maximum number of processes is reached, people will
# experience greater latency times. As these processes are implemented in
# Erlang, and therefore not related to the operating system processes, you do
# not have to worry about allowing a huge number of them.
#
# Default: 250000
# Maximum: 268435456
#
#ERL_PROCESSES=250000
#.
#' ERL_MAX_ETS_TABLES: Maximum number of ETS and Mnesia tables
#
# The number of concurrent ETS and Mnesia tables is limited. When the limit is
# reached, errors will appear in the logs:
# ** Too many db tables **
# You can safely increase this limit when starting ejabberd. It impacts memory
# consumption but the difference will be quite small.
#
# Default: 1400
#
#ERL_MAX_ETS_TABLES=1400
#.
#' ERL_OPTIONS: Additional Erlang options
#
# The next variable allows to specify additional options passed to erlang while
# starting ejabberd. Some useful options are -noshell, -detached, -heart. When
# ejabberd is started from an init.d script options -noshell and -detached are
# added implicitly. See erl(1) for more info.
#
# It might be useful to add "-pa /usr/local/lib/ejabberd/ebin" if you
# want to add local modules in this path.
#
# Default: ""
#
#ERL_OPTIONS=""
#.
#' ERLANG_NODE: Erlang node name
#
# The next variable allows to explicitly specify erlang node for ejabberd
# It can be given in different formats:
# ERLANG_NODE=ejabberd
# Lets erlang add hostname to the node (ejabberd uses short name in this case)
# ERLANG_NODE=ejabberd@hostname
# Erlang uses node name as is (so make sure that hostname is a real
# machine hostname or you'll not be able to control ejabberd)
# ERLANG_NODE=ejabberd@hostname.domainname
# The same as previous, but erlang will use long hostname
# (see erl (1) manual for details)
#
# Default: ejabberd@localhost
#
#ERLANG_NODE=ejabberd@localhost
#.
#' EJABBERD_PID_PATH: ejabberd PID file
#
# Indicate the full path to the ejabberd Process identifier (PID) file.
# If this variable is defined, ejabberd writes the PID file when starts,
# and deletes it when stops.
# Remember to create the directory and grant write permission to ejabberd.
#
# Default: don't write PID file
#
#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
# yml or yaml 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
#.
#' CONTRIB_MODULES_PATH: contributed ejabberd modules path
#
# Specify the full path to the contributed ejabberd modules. If the path is not
# defined, ejabberd will use ~/.ejabberd-modules in home of user running ejabberd.
#
# Default: $HOME/.ejabberd-modules
#
#CONTRIB_MODULES_PATH=/opt/ejabberd-modules
#.
#' CONTRIB_MODULES_CONF_DIR: configuration directory for contributed modules
#
# Specify the full path to the configuration directory for contributed ejabberd
# modules. In order to configure a module named mod_foo, a mod_foo.yml file can
# be created in this directory. This file will then be used instead of the
# default configuration file provided with the module.
#
# Default: $CONTRIB_MODULES_PATH/conf
#
#CONTRIB_MODULES_CONF_DIR=/etc/ejabberd/modules
#.
#'
# vim: foldmarker=#',#. foldmethod=marker:
-493
View File
@@ -1,493 +0,0 @@
#!/bin/bash
# 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
EPMD={{bindir}}/epmd
INSTALLUSER={{installuser}}
ERL_LIBS={{libdir}}
# 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="bash -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="bash -c"
fi
# parse command line parameters
declare -a ARGS=()
while [ $# -ne 0 ] ; do
PARAM="$1"
shift
case $PARAM in
--) break ;;
--no-timeout) EJABBERD_NO_TIMEOUT="--no-timeout" ;;
--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_PRIV_PATH" = "" ] ; then
EJABBERD_PRIV_PATH=$EJABBERDDIR/priv
fi
if [ "$EJABBERD_BIN_PATH" = "" ] ; then
EJABBERD_BIN_PATH=$EJABBERD_PRIV_PATH/bin
fi
fi
EJABBERD_LOG_PATH=$LOGS_DIR/ejabberd.log
DATETIME=`date "+%Y%m%d-%H%M%S"`
ERL_CRASH_DUMP=$LOGS_DIR/erl_crash_$DATETIME.dump
ERL_INETRC=$ETC_DIR/inetrc
# define mnesia options
MNESIA_OPTS="-mnesia dir \"\\\"$SPOOL_DIR\\\"\" $MNESIA_OPTIONS"
# 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_LOG_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
export CONTRIB_MODULES_PATH
export CONTRIB_MODULES_CONF_DIR
export ERL_LIBS
shell_escape()
{
local RES=()
for i in "$@"; do
if test -z "$i"; then
printf '"" '
else
printf '%q ' "$i"
fi
done
}
# start server
start()
{
check_start
CMD="`shell_escape \"$ERL\" \"$NAME\" \"$ERLANG_NODE\"` \
-noinput -detached \
$MNESIA_OPTS \
$KERNEL_OPTS \
$EJABBERD_OPTS \
-s ejabberd \
$ERLANG_OPTS \
`shell_escape \"${ARGS[@]}\" \"$@\"`"
$EXEC_CMD "$CMD"
}
# attach to server
debug()
{
debugwarning
TTY=`tty | sed -e 's/.*\///g'`
CMD="`shell_escape \"$ERL\" \"$NAME\" \"debug-${TTY}-${ERLANG_NODE}\"` \
-remsh $ERLANG_NODE \
-hidden \
$KERNEL_OPTS \
$ERLANG_OPTS \
`shell_escape \"${ARGS[@]}\" \"$@\"`"
$EXEC_CMD "$CMD"
}
# attach to server using Elixir
iexdebug()
{
debugwarning
TTY=`tty | sed -e 's/.*\///g'`
# Elixir shell is hidden as default
CMD="`shell_escape \"$IEX\" \"$IEXNAME\" \"debug-${TTY}-${ERLANG_NODE}\"` \
-remsh $ERLANG_NODE \
--erl \"`shell_escape \"$KERNEL_OPTS\"\" \
--erl \"`shell_escape \"$ERLANG_OPTS\"\" \
--erl \"`shell_escape \"${ARGS[@]}\"\" \
--erl \"`shell_escape \"$@\"\""
$EXEC_CMD "$CMD"
}
# start interactive server
live()
{
livewarning
CMD="`shell_escape \"$ERL\" \"$NAME\" \"${ERLANG_NODE}\"` \
$MNESIA_OPTS \
$KERNEL_OPTS \
$EJABBERD_OPTS \
-s ejabberd \
$ERLANG_OPTS \
`shell_escape \"${ARGS[@]}\" \"$@\"`"
$EXEC_CMD "$CMD"
}
# start interactive server with Elixir
iexlive()
{
livewarning
CMD="`shell_escape \"$IEX\" \"$IEXNAME\" \"${ERLANG_NODE}\"` \
--erl \"-mnesia dir \\\"$SPOOL_DIR\\\"\" \
--erl \"`shell_escape \"$KERNEL_OPTS\"`\" \
--erl \"`shell_escape \"$EJABBERD_OPTS\"`\" \
--app ejabberd \
--erl \"`shell_escape \"$ERLANG_OPTS\"`\" \
--erl \"`shell_escape \"${ARGS[@]}\"`\" \
--erl \"`shell_escape \"$@\"`\""
$EXEC_CMD "$CMD"
}
# start server in the foreground
foreground()
{
check_start
CMD="`shell_escape \"$ERL\" \"$NAME\" \"$ERLANG_NODE\"` \
-noinput \
$MNESIA_OPTS \
$KERNEL_OPTS \
$EJABBERD_OPTS \
-s ejabberd \
$ERLANG_OPTS \
`shell_escape \"${ARGS[@]}\" \"$@\"`"
$EXEC_CMD "$CMD"
}
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
}
etop()
{
TTY=`tty | sed -e 's/.*\///g'`
$EXEC_CMD "$ERL \
$NAME debug-${TTY}-${ERLANG_NODE} \
-hidden -s etop -s erlang halt -output text -node $ERLANG_NODE"
}
ping()
{
TTY=`tty | sed -e 's/.*\///g'`
$EXEC_CMD "$ERL \
$NAME ping-${TTY}-${ERLANG_NODE} \
-hidden \
$KERNEL_OPTS $ERLANG_OPTS \
-eval 'io:format(\"~p~n\",[net_adm:ping($1)])' \
-s erlang halt -output text -noinput"
}
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 " foreground Start an ejabberd node in server mode (attached)"
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()
{
# 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 "$@"
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 "$@"
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 "$@"
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
CMD="`shell_escape \"$ERL\" \"$NAME\" \"$CONN_NAME\"` \
-noinput -hidden $KERNEL_OPTS -s ejabberd_ctl \
-extra `shell_escape \"$ERLANG_NODE\"` $EJABBERD_NO_TIMEOUT \
`shell_escape \"$@\"`"
$EXEC_CMD "$CMD"
}
# 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[0]}" in
'start') start;;
'debug') debug;;
'iexdebug') iexdebug;;
'live') live;;
'iexlive') iexlive;;
'foreground') foreground;;
'ping'*) ping ${ARGS# ping};;
'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
-16
View File
@@ -42,22 +42,6 @@ while(1)
# password is null. Return 1 if the user $user\@$domain exitst.
$result = 1;
},last SWITCH;
$op eq 'tryregister' and do
{
$result = 1;
},last SWITCH;
$op eq 'removeuser' and do
{
# password is null. Return 1 if the user $user\@$domain exitst.
$result = 1;
},last SWITCH;
$op eq 'removeuser3' and do
{
$result = 1;
},last SWITCH;
};
my $out = pack "nn",2,$result ? 1 : 0;
syswrite STDOUT,$out;
-81
View File
@@ -1,81 +0,0 @@
%% 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
@@ -1,44 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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{}.
-72
View File
@@ -1,72 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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.
%%%
%%%----------------------------------------------------------------------
-ifndef(EJABBERD_HRL).
-define(EJABBERD_HRL, true).
-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(SQL_DIR, filename:join(["priv", "sql"])).
-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).
-ifdef(ERL_DEPRECATED_TYPES).
-define(TDICT, dict()).
-define(TGB_TREE, gb_tree()).
-define(TGB_SET, gb_set()).
-define(TQUEUE, queue()).
-else.
-define(TDICT, dict:dict()).
-define(TGB_TREE, gb_trees:tree()).
-define(TGB_SET, gb_set:set()).
-define(TQUEUE, queue:queue()).
-endif.
-endif.
-78
View File
@@ -1,78 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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.
%%%
%%%----------------------------------------------------------------------
-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',
policy = restricted :: open | restricted | admin | user,
result = {res, rescode} :: rterm() | '_' | '$2',
args_desc = none :: none | [string()] | '_',
result_desc = none :: none | string() | '_',
args_example = none :: none | [any()] | '_',
result_example = none :: any()}).
-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(),
%% tags = [atom()],
%% desc = string(),
%% longdesc = string(),
%% module = atom(),
%% function = atom(),
%% args = [aterm()],
%% result = rterm()
%% }.
%% desc: Description of the command
%% args: Describe the accepted arguments.
%% This way the function that calls the command can format the
%% arguments before calling.
%% @type atype() = integer | string | {tuple, [aterm()]} | {list, aterm()}.
%% Allowed types for arguments are integer, string, tuple and list.
%% @type rtype() = integer | string | atom | {tuple, [rterm()]} | {list, rterm()} | rescode | restuple.
%% A rtype is either an atom or a tuple with two elements.
%% @type aterm() = {Name::atom(), Type::atype()}.
%% An argument term is a tuple with the term name and the term type.
%% @type rterm() = {Name::atom(), Type::rtype()}.
%% A result term is a tuple with the term name and the term type.
-52
View File
@@ -1,52 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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(),
opts = [] :: list(),
tp = http :: protocol(),
headers = [] :: [{atom() | binary(), binary()}]}).
-record(ws,
{socket :: inet:socket() | fast_tls:tls_socket(),
sockmod = gen_tcp :: gen_tcp | fast_tls,
ip :: {inet:ip_address(), inet:port_number()},
host = <<"">> :: binary(),
port = 5280 :: inet:port_number(),
path = [] :: [binary()],
headers = [] :: [{atom() | binary(), binary()}],
local_path = [] :: [binary()],
q = [] :: [{binary() | nokey, binary()}],
buf :: binary(),
http_opts = [] :: list()}).
-type method() :: 'GET' | 'HEAD' | 'DELETE' | 'OPTIONS' | 'PUT' | 'POST' | 'TRACE'.
-type protocol() :: http | https.
-type http_request() :: #request{}.
-12
View File
@@ -1,12 +0,0 @@
-ifndef(EJABBERD_SM_HRL).
-define(EJABBERD_SM_HRL, true).
-record(session, {sid, usr, us, priority, info}).
-record(session_counter, {vhost, count}).
-type sid() :: {erlang:timestamp(), pid()}.
-type ip() :: {inet:ip_address(), inet:port_number()} | undefined.
-type info() :: [{conn, atom()} | {ip, ip()} | {node, atom()}
| {oor, boolean()} | {auth_module, atom()}].
-type prio() :: undefined | integer().
-endif.
-104
View File
@@ -1,104 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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
@@ -1,63 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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{}.
-49
View File
@@ -1,49 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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(NO_CACHE,
{<<"Cache-Control">>, <<"max-age=0, no-cache, no-store">>}).
-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, ?NO_CACHE]).
-505
View File
@@ -1,505 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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").
-ifdef(NO_EXT_LIB).
-include("fxml.hrl").
-else.
-include_lib("fast_xml/include/fxml.hrl").
-endif.
-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() | error,
direction :: before | aft,
id :: binary(),
index :: integer() | error}).
-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{}.
-33
View File
@@ -1,33 +0,0 @@
%%%----------------------------------------------------------------------
%%% File : mod_muc.hrl
%%%
%%% ejabberd, Copyright (C) 2002-2016 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(muc_room, {name_host = {<<"">>, <<"">>} :: {binary(), binary()} |
{'_', binary()},
opts = [] :: list() | '_'}).
-record(muc_online_room,
{name_host = {<<"">>, <<"">>} :: {binary(), binary()} | '$1' |
{'_', binary()} | '_',
pid = self() :: pid() | '$2' | '_' | '$1'}).
-record(muc_registered,
{us_host = {{<<"">>, <<"">>}, <<"">>} :: {{binary(), binary()}, binary()} | '$1',
nick = <<"">> :: binary()}).
-121
View File
@@ -1,121 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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("ejabberd.hrl").
-define(MAX_USERS_DEFAULT, 200).
-define(SETS, gb_sets).
-define(DICT, dict).
-record(lqueue,
{
queue :: ?TQUEUE,
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(),
presence_broadcast = [moderator, participant, visitor] ::
[moderator | participant | visitor],
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 = <<"">> :: binary(),
captcha_whitelist = (?SETS):empty() :: ?TGB_SET,
mam = false :: boolean()
}).
-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() :: ?TDICT,
last_voice_request_time = treap:empty() :: treap:treap(),
robots = (?DICT):new() :: ?TDICT,
nicks = (?DICT):new() :: ?TDICT,
affiliations = (?DICT):new() :: ?TDICT,
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() :: ?TQUEUE
}).
-record(muc_online_users, {us = {<<>>, <<>>} :: {binary(), binary()},
resource = <<>> :: binary() | '_',
room = <<>> :: binary() | '_' | '$1',
host = <<>> :: binary() | '_' | '$2'}).
-type muc_online_users() :: #muc_online_users{}.
-type muc_room_state() :: #state{}.
-11
View File
@@ -1,11 +0,0 @@
-record(offline_msg,
{us = {<<"">>, <<"">>} :: {binary(), binary()},
timestamp = now() :: erlang:timestamp() | '_',
expire = now() :: erlang:timestamp() | never | '_',
from = #jid{} :: jid() | '_',
to = #jid{} :: jid() | '_',
packet = #xmlel{} :: xmlel() | '_'}).
-record(state,
{host = <<"">> :: binary(),
access_max_offline_messages}).
-43
View File
@@ -1,43 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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]).
-41
View File
@@ -1,41 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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.
-159
View File
@@ -1,159 +0,0 @@
%%%----------------------------------------------------------------------
%%%
%%% ejabberd, Copyright (C) 2002-2016 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_TIME, <<"urn:xmpp:time">>).
-define(NS_LAST, <<"jabber:iq:last">>).
-define(NS_XDATA, <<"jabber:x:data">>).
-define(NS_IQDATA, <<"jabber:iq:data">>).
-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_FLEX_OFFLINE, <<"http://jabber.org/protocol/offline">>).
-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_MAM_TMP, <<"urn:xmpp:mam:tmp">>).
-define(NS_MAM_0, <<"urn:xmpp:mam:0">>).
-define(NS_MAM_1, <<"urn:xmpp:mam:1">>).
-define(NS_SID_0, <<"urn:xmpp:sid:0">>).
-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">>).
-define(NS_HTTP_UPLOAD, <<"urn:xmpp:http:upload">>).
-define(NS_HTTP_UPLOAD_OLD, <<"eu:siacs:conversations:http:upload">>).
-define(NS_THUMBS_1, <<"urn:xmpp:thumbs:1">>).
-define(NS_NICK, <<"http://jabber.org/protocol/nick">>).
-173
View File
@@ -1,173 +0,0 @@
%%% ====================================================================
%%% ``The contents of this file are subject to the Erlang Public License,
%%% Version 1.1, (the "License"); you may not use this file except in
%%% compliance with the License. You should have received a copy of the
%%% 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-2016, ProcessOne
%%% All Rights Reserved.''
%%% This software is copyright 2006-2016, ProcessOne.
%%%
%%%
%%% copyright 2006-2016 ProcessOne
%%%
%%% This file contains pubsub types definition.
%%% ====================================================================
-include("ejabberd.hrl").
%% -------------------------------
%% Pubsub constants
-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).
%% this is currently a hard limit.
%% Would be nice to have it configurable.
-define(MAX_PAYLOAD_SIZE, 60000).
%% -------------------------------
%% Pubsub types
-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()
%% Resource = [].
%% <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:
%% ```<<"/home/localhost/user">>'''</p>
-type(nodeIdx() :: pos_integer() | binary()).
%% @type nodeIdx() = integer() | binary().
%% note: pos_integer() should always be used, but we allow anything else coded
%% as binary, so one can have a custom implementation of nodetree with custom
%% indexing (see nodetree_virtual). this also allows to use any kind of key for
%% indexing nodes, as this can be usefull with external backends such as odbc.
-type(itemId() :: binary()).
%% @type itemId() = string().
-type(subId() :: binary()).
%% @type subId() = string().
-type(nodeOption() ::
{Option::atom(),
Value::atom() | [binary()] | boolean() | non_neg_integer()
}).
-type(nodeOptions() :: [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() :: [mod_pubsub:subOption(),...]).
-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(publishModel() :: 'publishers'
| 'subscribers'
| 'open'
).
%% @type publishModel() = 'publishers' | 'subscribers' | 'open'
-record(pubsub_index,
{
index :: atom(),
last :: mod_pubsub:nodeIdx(),
free :: [mod_pubsub:nodeIdx()]
}).
-record(pubsub_node,
{
nodeid ,% :: {mod_pubsub:host(), mod_pubsub:nodeId()},
id ,% :: mod_pubsub:nodeIdx(),
parents = [] ,% :: [mod_pubsub:nodeId(),...],
type = <<"flat">>,% :: binary(),
owners = [] ,% :: [jlib:ljid(),...],
options = [] % :: mod_pubsub:nodeOptions()
}).
-record(pubsub_state,
{
stateid ,% :: {jlib:ljid(), mod_pubsub:nodeIdx()},
items = [] ,% :: [mod_pubsub:itemId(),...],
affiliation = 'none',% :: mod_pubsub:affiliation(),
subscriptions = [] % :: [{mod_pubsub:subscription(), mod_pubsub:subId()}]
}).
-record(pubsub_item,
{
itemid ,% :: {mod_pubsub:itemId(), mod_pubsub:nodeIdx()},
creation = {unknown, unknown},% :: {erlang:timestamp(), jlib:ljid()},
modification = {unknown, unknown},% :: {erlang:timestamp(), jlib:ljid()},
payload = [] % :: mod_pubsub:payload()
}).
-record(pubsub_subscription,
{
subid ,% :: mod_pubsub:subId(),
options = [] % :: mod_pubsub:subOptions()
}).
-record(pubsub_last_item,
{
nodeid ,% :: mod_pubsub:nodeIdx(),
itemid ,% :: mod_pubsub:itemId(),
creation ,% :: {erlang:timestamp(), jlib:ljid()},
payload % :: mod_pubsub:payload()
}).
-520
View File
@@ -1,520 +0,0 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2009-04-28.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:
-2
View File
@@ -1,2 +0,0 @@
defmodule Ejabberd do
end
-13
View File
@@ -1,13 +0,0 @@
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
@@ -1,9 +0,0 @@
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
-21
View File
@@ -1,21 +0,0 @@
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
-156
View File
@@ -1,156 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_lib_sqlite3.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LIB_SQLITE3([MINIMUM-VERSION])
#
# DESCRIPTION
#
# Test for the SQLite 3 library of a particular version (or newer)
#
# This macro takes only one optional argument, required version of SQLite
# 3 library. If required version is not passed, 3.0.0 is used in the test
# of existance of SQLite 3.
#
# If no intallation prefix to the installed SQLite library is given the
# macro searches under /usr, /usr/local, and /opt.
#
# This macro calls:
#
# AC_SUBST(SQLITE3_CFLAGS)
# AC_SUBST(SQLITE3_LDFLAGS)
# AC_SUBST(SQLITE3_VERSION)
#
# And sets:
#
# HAVE_SQLITE3
#
# LICENSE
#
# Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 14
AC_DEFUN([AX_LIB_SQLITE3],
[
AC_ARG_WITH([sqlite3],
AS_HELP_STRING(
[--with-sqlite3=@<:@ARG@:>@],
[use SQLite 3 library @<:@default=yes@:>@, optionally specify the prefix for sqlite3 library]
),
[
if test "$withval" = "no"; then
WANT_SQLITE3="no"
elif test "$withval" = "yes"; then
WANT_SQLITE3="yes"
ac_sqlite3_path=""
else
WANT_SQLITE3="yes"
ac_sqlite3_path="$withval"
fi
],
[WANT_SQLITE3="yes"]
)
SQLITE3_CFLAGS=""
SQLITE3_LDFLAGS=""
SQLITE3_VERSION=""
if test "x$WANT_SQLITE3" = "xyes"; then
ac_sqlite3_header="sqlite3.h"
sqlite3_version_req=ifelse([$1], [], [3.0.0], [$1])
sqlite3_version_req_shorten=`expr $sqlite3_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
sqlite3_version_req_major=`expr $sqlite3_version_req : '\([[0-9]]*\)'`
sqlite3_version_req_minor=`expr $sqlite3_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
sqlite3_version_req_micro=`expr $sqlite3_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
if test "x$sqlite3_version_req_micro" = "x" ; then
sqlite3_version_req_micro="0"
fi
sqlite3_version_req_number=`expr $sqlite3_version_req_major \* 1000000 \
\+ $sqlite3_version_req_minor \* 1000 \
\+ $sqlite3_version_req_micro`
AC_MSG_CHECKING([for SQLite3 library >= $sqlite3_version_req])
if test "$ac_sqlite3_path" != ""; then
ac_sqlite3_ldflags="-L$ac_sqlite3_path/lib"
ac_sqlite3_cppflags="-I$ac_sqlite3_path/include"
else
for ac_sqlite3_path_tmp in /usr /usr/local /opt ; do
if test -f "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header" \
&& test -r "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header"; then
ac_sqlite3_path=$ac_sqlite3_path_tmp
ac_sqlite3_cppflags="-I$ac_sqlite3_path_tmp/include"
ac_sqlite3_ldflags="-L$ac_sqlite3_path_tmp/lib"
break;
fi
done
fi
ac_sqlite3_ldflags="$ac_sqlite3_ldflags -lsqlite3"
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $ac_sqlite3_cppflags"
AC_LANG_PUSH(C)
AC_COMPILE_IFELSE(
[
AC_LANG_PROGRAM([[@%:@include <sqlite3.h>]],
[[
#if (SQLITE_VERSION_NUMBER >= $sqlite3_version_req_number)
/* Everything is okay */
#else
# error SQLite version is too old
#endif
]]
)
],
[
AC_MSG_RESULT([yes])
success="yes"
],
[
AC_MSG_RESULT([not found])
success="no"
]
)
AC_LANG_POP(C)
CPPFLAGS="$saved_CPPFLAGS"
if test "$success" = "yes"; then
SQLITE3_CFLAGS="$ac_sqlite3_cppflags"
SQLITE3_LDFLAGS="$ac_sqlite3_ldflags"
ac_sqlite3_header_path="$ac_sqlite3_path/include/$ac_sqlite3_header"
dnl Retrieve SQLite release version
if test "x$ac_sqlite3_header_path" != "x"; then
ac_sqlite3_version=`cat $ac_sqlite3_header_path \
| grep '#define.*SQLITE_VERSION.*\"' | sed -e 's/.* "//' \
| sed -e 's/"//'`
if test $ac_sqlite3_version != ""; then
SQLITE3_VERSION=$ac_sqlite3_version
else
AC_MSG_WARN([Cannot find SQLITE_VERSION macro in sqlite3.h header to retrieve SQLite version!])
fi
fi
AC_SUBST(SQLITE3_CFLAGS)
AC_SUBST(SQLITE3_LDFLAGS)
AC_SUBST(SQLITE3_VERSION)
AC_DEFINE([HAVE_SQLITE3], [], [Have the SQLITE3 library])
fi
fi
])
-103
View File
@@ -1,103 +0,0 @@
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
AC_DEFUN([ERLANG_DEPRECATED_TYPES_CHECK],
[ AC_MSG_CHECKING([whether Erlang is using deprecated types])
cat > conftest.erl <<EOF
-module(conftest).
-record(state, {host = dict:new() :: dict:dict()}).
EOF
if $ERLC conftest.erl > /dev/null 2>&1; then
AC_MSG_RESULT([no])
AC_SUBST(erlang_deprecated_types, false)
else
AC_MSG_RESULT([yes])
AC_SUBST(erlang_deprecated_types, true)
fi
])
-104
View File
@@ -1,104 +0,0 @@
defmodule Ejabberd.Mixfile do
use Mix.Project
def project do
[app: :ejabberd,
version: "16.01.0-beta1",
description: description,
elixir: "~> 1.1",
elixirc_paths: ["lib"],
compile_path: ".",
compilers: [:asn1] ++ Mix.compilers,
erlc_options: erlc_options,
erlc_paths: ["asn1", "src"],
package: package,
deps: deps]
end
defp description do
"""
Robust, ubiquitous and massively scalable Jabber / XMPP Instant Messaging platform.
"""
end
def application do
[mod: {:ejabberd_app, []},
applications: [:ssl],
included_applications: [:lager, :mnesia, :p1_utils, :cache_tab,
:fast_tls, :stringprep, :fast_xml,
:stun, :fast_yaml, :ezlib, :iconv,
:esip, :jiffy, :p1_oauth2, :p1_xmlrpc, :eredis,
:p1_mysql, :p1_pgsql, :sqlite3]]
end
defp erlc_options do
# Use our own includes + includes from all dependencies
includes = ["include"] ++ Path.wildcard(Path.join("..", "/*/include"))
[:debug_info] ++ Enum.map(includes, fn(path) -> {:i, path} end)
end
defp deps do
[{:lager, "~> 3.0"},
{:p1_utils, "~> 1.0"},
{:cache_tab, "~> 1.0"},
{:stringprep, "~> 1.0"},
{:fast_yaml, "~> 1.0"},
{:fast_tls, "~> 1.0"},
{:fast_xml, "~> 1.1"},
{:stun, "~> 1.0"},
{:esip, "~> 1.0"},
{:jiffy, "~> 0.14.7"},
{:p1_oauth2, "~> 0.6.1"},
{:p1_xmlrpc, "~> 1.15"},
{:p1_mysql, "~> 1.0"},
{:p1_pgsql, "~> 1.0"},
{:sqlite3, "~> 1.1"},
{:ezlib, "~> 1.0"},
{:iconv, "~> 1.0"},
{:eredis, "~> 1.0"},
{:exrm, "~> 1.0.0-rc7", only: :dev}]
end
defp package do
[# These are the default files included in the package
files: ["lib", "src", "priv", "mix.exs", "include", "README.md", "COPYING"],
maintainers: ["ProcessOne"],
licenses: ["GPLv2"],
links: %{"Site" => "https://www.ejabberd.im",
"Documentation" => "http://docs.ejabberd.im",
"Source" => "https://github.com/processone/ejabberd",
"ProcessOne" => "http://www.process-one.net/"}]
end
end
defmodule Mix.Tasks.Compile.Asn1 do
use Mix.Task
alias Mix.Compilers.Erlang
@recursive true
@manifest ".compile.asn1"
def run(args) do
{opts, _, _} = OptionParser.parse(args, switches: [force: :boolean])
project = Mix.Project.config
source_paths = project[:asn1_paths] || ["asn1"]
dest_paths = project[:asn1_target] || ["src"]
mappings = Enum.zip(source_paths, dest_paths)
options = project[:asn1_options] || []
Erlang.compile(manifest(), mappings, :asn1, :erl, opts[:force], fn
input, output ->
options = options ++ [:noobj, outdir: Erlang.to_erl_file(Path.dirname(output))]
case :asn1ct.compile(Erlang.to_erl_file(input), options) do
:ok -> {:ok, :done}
error -> error
end
end)
end
def manifests, do: [manifest]
defp manifest, do: Path.join(Mix.Project.manifest_path, @manifest)
def clean, do: Erlang.clean(manifest())
end
-25
View File
@@ -1,25 +0,0 @@
%{"bbmustache": {:hex, :bbmustache, "1.0.3"},
"cache_tab": {:hex, :cache_tab, "1.0.2"},
"eredis": {:hex, :eredis, "1.0.8"},
"erlware_commons": {:hex, :erlware_commons, "0.15.0"},
"esip": {:hex, :esip, "1.0.2"},
"exrm": {:hex, :exrm, "1.0.0-rc7"},
"ezlib": {:hex, :ezlib, "1.0.1"},
"fast_tls": {:hex, :fast_tls, "1.0.1"},
"fast_xml": {:hex, :fast_xml, "1.1.3"},
"fast_yaml": {:hex, :fast_yaml, "1.0.2"},
"getopt": {:hex, :getopt, "0.8.2"},
"goldrush": {:hex, :goldrush, "0.1.7"},
"iconv": {:hex, :iconv, "1.0.0"},
"jiffy": {:hex, :jiffy, "0.14.7"},
"lager": {:hex, :lager, "3.0.2"},
"p1_mysql": {:hex, :p1_mysql, "1.0.1"},
"p1_oauth2": {:hex, :p1_oauth2, "0.6.1"},
"p1_pgsql": {:hex, :p1_pgsql, "1.0.1"},
"p1_utils": {:hex, :p1_utils, "1.0.3"},
"p1_xmlrpc": {:hex, :p1_xmlrpc, "1.15.1"},
"providers": {:hex, :providers, "1.4.1"},
"relx": {:hex, :relx, "3.5.0"},
"sqlite3": {:hex, :sqlite3, "1.1.5"},
"stringprep": {:hex, :stringprep, "1.0.2"},
"stun": {:hex, :stun, "1.0.1"}}
-12
View File
@@ -1,12 +0,0 @@
-module(deps_erl_opts).
-export([preprocess/2]).
preprocess(Config, Dirs) ->
ExtraOpts = rebar_config:get(Config, deps_erl_opts, []),
Opts = rebar_config:get(Config, erl_opts, []),
NewOpts = lists:foldl(fun(Opt, Acc) when is_tuple(Opt) ->
lists:keystore(element(1, Opt), 1, Acc, Opt);
(Opt, Acc) ->
[Opt | lists:delete(Opt, Acc)]
end, Opts, ExtraOpts),
{ok, rebar_config:set(Config, erl_opts, NewOpts), []}.
-440
View File
@@ -1,440 +0,0 @@
%% -*- coding: latin-1 -*-
{"Accept","Acceptar"}.
{"Access Configuration","Configuració d'accesos"}.
{"Access Control List Configuration","Configuració de la Llista de Control d'Accés"}.
{"Access Control Lists","Llista de Control d'Accés"}.
{"Access control lists","Llistes de Control de Accés"}.
{"Access denied by service policy","Accés denegat per la política del servei"}.
{"Access rules","Regles d'accés"}.
{"Access Rules","Regles d'Accés"}.
{"Action on user","Acció en l'usuari"}.
{"Add Jabber ID","Afegir Jabber ID"}.
{"Add New","Afegir nou"}.
{"Add User","Afegir usuari"}.
{"Administration","Administració"}.
{"Administration of ","Administració de "}.
{"Administrator privileges required","Es necessita tenir privilegis d'administrador"}.
{"A friendly name for the node","Un nom per al node"}.
{"All activity","Tota l'activitat"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Permetre que aquesta Jabber ID es puga subscriure a aquest node pubsub"}.
{"Allow users to change the subject","Permetre que els usuaris canviin el tema"}.
{"Allow users to query other users","Permetre que els usuaris fagen peticions a altres usuaris"}.
{"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 sobrenom"}.
{"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 contrasenya per a entrar en aquesta sala"}.
{"April","Abril"}.
{"August","Agost"}.
{"Backup","Guardar còpia de seguretat"}.
{"Backup Management","Gestió de còpia de seguretat"}.
{"Backup of ~p","Còpia de seguretat de ~p"}.
{"Backup to File at ","Desar còpia de seguretat a fitxer en "}.
{"Bad format","Format erroni"}.
{"Birthday","Aniversari"}.
{"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 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ó"}.
{"City","Ciutat"}.
{"Commands","Comandaments"}.
{"Conference room does not exist","La sala de conferències no existeix"}.
{"Configuration","Configuració"}.
{"Configuration of room ~s","Configuració de la sala ~s"}.
{"Connected Resources:","Recursos connectats:"}.
{"Connections parameters","Paràmetres de connexió"}.
{"Country","Pais"}.
{"CPU Time:","Temps de CPU"}.
{"Database","Base de dades"}.
{"Database Tables at ~p","Taules de la base de dades en ~p"}.
{"Database Tables Configuration at ","Configuració de la base de dades en "}.
{"December","Decembre"}.
{"Default users as participants","Els usuaris són participants per defecte"}.
{"Delete message of the day","Eliminar el missatge del dia"}.
{"Delete message of the day on all hosts","Elimina el missatge del dis de tots els hosts"}.
{"Delete Selected","Eliminar els seleccionats"}.
{"Delete User","Eliminar Usuari"}.
{"Deliver event notifications","Entrega de notificacions d'events"}.
{"Deliver payloads with event notifications","Enviar payloads junt a les notificacions d'events"}.
{"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 Multicast service","Servei de Multicast d'ejabberd"}.
{"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"}.
{"Elements","Elements"}.
{"Email","Email"}.
{"Empty Rooms","Sales buides "}.
{"Enable logging","Habilitar el registre de la conversa"}.
{"Enable message archiving","Activar l'emmagatzematge de missatges"}.
{"Encoding for server ~b","Codificació pel servidor ~b"}.
{"End User Session","Finalitzar Sesió d'Usuari"}.
{"Enter list of {Module, [Options]}","Introdueix llista de {mòdul, [opcions]}"}.
{"Enter nickname you want to register","Introdueix el sobrenom que vols registrar"}.
{"Enter path to backup file","Introdueix ruta al fitxer de còpia de seguretat"}.
{"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 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 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 all tables as SQL queries to a file:","Exporta totes les taules a un fitxer SQL:"}.
{"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"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Emplena el formulari per a buscar usuaris Jabber. Afegix * al final d'un camp per a buscar subcadenes."}.
{"Friday","Divendres"}.
{"From","De"}.
{"From ~s","De ~s"}.
{"Full Name","Nom complet"}.
{"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 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"}.
{"has been kicked because of an affiliation change","Has sigut expulsat a causa d'un canvi d'afiliació"}.
{"has been kicked because of a system shutdown","Has sigut expulsat perquè el sistema s'ha apagat"}.
{"has been kicked because the room has been changed to members-only","Has sigut expulsat perquè la sala ha canviat a sols membres"}.
{"has been kicked","Has sigut expulsat"}.
{" has set the subject to: "," ha posat l'assumpte: "}.
{"Host","Host"}.
{"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"}.
{"Import User from File at ","Importa usuari des de fitxer en "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Importar dades d'usuaris des d'un arxiu PIEFXIS (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","Importar dades d'usuaris del directori de spool de jabberd14:"}.
{"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"}.
{"Incoming s2s Connections:","Connexions s2s d'entrada"}.
{"Incorrect password","Contrasenya incorrecta"}.
{"Invalid affiliation: ~s","Afiliació invàlida: ~s"}.
{"Invalid role: ~s","Rol invàlid: ~s"}.
{"IP addresses","Adreça IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","Canal d'IRC (no posis la primera #)"}.
{"IRC server","Servidor d'IRC"}.
{"IRC settings","Configuració d'IRC."}.
{"IRC Transport","Transport a IRC"}.
{"IRC username","Nom d'usuari al IRC"}.
{"IRC Username","Nom d'usuari al IRC"}.
{"is now known as","ara es conegut com"}.
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","No està permés enviar missatges d'error a la sala. El participant (~s) ha enviat un missatge d'error (~s) i ha sigut expulsat de la sala"}.
{"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"}.
{"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"}.
{"Join IRC channel","Entra a canal d'IRC"}.
{"joins the room","Entrar a la sala"}.
{"Join the IRC channel here.","Entra al canal d'IRC aquí."}.
{"Join the IRC channel in this Jabber ID: ~s","Entra al canal d'IRC en aquesta Jabber ID: ~s"}.
{"July","Juliol"}.
{"June","Juny"}.
{"Last Activity","Última activitat"}.
{"Last login","Últim login"}.
{"Last month","Últim mes"}.
{"Last year","Últim any"}.
{"leaves the room","Deixar la sala"}.
{"Listened Ports at ","Ports a la escolta en "}.
{"Listened Ports","Ports a l'escolta"}.
{"List of modules to start","Llista de mòduls a iniciar"}.
{"List of rooms","Llista de sales"}.
{"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 members-only","Crear una sala de \"només membres\""}.
{"Make room moderated","Crear una sala moderada"}.
{"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ç"}.
{"Maximum Number of Occupants","Número màxim d'ocupants"}.
{"Max # of items to persist","Màxim # d'elements que persistixen"}.
{"Max payload size in bytes","Màxim tamany del payload en bytes"}.
{"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","Moderador"}.
{"Moderator privileges required","Es necessita tenir privilegis de moderador"}.
{"moderators only","només moderadors"}.
{"Modified modules","Mòduls modificats"}.
{"Module","Mòdul"}.
{"Modules at ~p","Mòduls en ~p"}.
{"Modules","Mòduls"}.
{"Monday","Dilluns"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Multi-Usuari Converses"}.
{"Name:","Nom:"}.
{"Name","Nom"}.
{"Never","Mai"}.
{"New Password:","Nova Contrasenya:"}.
{"Nickname Registration at ","Registre del sobrenom en "}.
{"Nickname ~s does not exist in the room","El sobrenom ~s no existeix a la sala"}.
{"Nickname","Sobrenom"}.
{"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"}.
{"Node not found","Node no trobat"}.
{"Node ~p","Node ~p"}.
{"Nodes","Nodes"}.
{"No limit","Sense Llímit"}.
{"None","Cap"}.
{"No resource provided","Recurs no disponible"}.
{"Not Found","No Trobat"}.
{"Notify subscribers when items are removed from the node","Notificar subscriptors quan els elements són eliminats del node"}.
{"Notify subscribers when the node configuration changes","Notificar subscriptors quan canvia la configuració del node"}.
{"Notify subscribers when the node is deleted","Notificar subscriptors quan el node és eliminat"}.
{"November","Novembre"}.
{"Number of occupants","Número d'ocupants"}.
{"Number of online users","Número d'usuaris connectats"}.
{"Number of registered users","Número d'Usuaris Registrats"}.
{"October","Octubre"}.
{"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 members may query archives of this room","Només membres poden consultar l'arxiu de missatges d'aquesta sala"}.
{"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 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ó"}.
{"Organization Unit","Unitat de la organizació"}.
{"Outgoing s2s Connections:","Connexions d'eixida s2s"}.
{"Outgoing s2s Connections","Connexions s2s d'eixida"}.
{"Owner privileges required","Es requerixen privilegis de propietari de la sala"}.
{"Packet","Paquet"}.
{"Participant","Participant"}.
{"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"}.
{"Period: ","Període: "}.
{"Permanent rooms","Sales permanents"}.
{"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 specify file name.","Per favor especifica el nom del fitxer."}.
{"Please specify file size.","Per favor especifica la mida del fitxer."}.
{"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"}.
{"Present real Jabber IDs to","Presentar Jabber ID's reals a"}.
{"private, ","privat"}.
{"Protocol","Protocol"}.
{"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 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 nicknames","Sobrenoms registrats"}.
{"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"}.
{"Remove","Borrar"}.
{"Remove User","Eliminar usuari"}.
{"Replaced by new connection","Reemplaçat per una nova connexió"}.
{"Resources","Recursos"}.
{"Restart","Reiniciar"}.
{"Restart Service","Reiniciar el Servei"}.
{"Restore Backup from File at ","Restaura còpia de seguretat des del fitxer en "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar una còpia de seguretat binària després de reiniciar el ejabberd (requereix menys memòria:"}.
{"Restore binary backup immediately:","Restaurar una còpia de seguretat binària ara mateix."}.
{"Restore plain text backup immediately:","Restaurar una còpia de seguretat en format de text pla ara mateix:"}.
{"Restore","Restaurar"}.
{"Roles for which Presence is Broadcasted","Rols per als que sí se difon la seua presencia"}.
{"Room Configuration","Configuració de la sala"}.
{"Room creation is denied by service policy","Se t'ha denegat el crear la sala per política del servei"}.
{"Room description","Descripció de la sala:"}.
{"Room Occupants","Nombre d'ocupants"}.
{"Room title","Títol de la sala"}.
{"Roster groups allowed to subscribe","Llista de grups que tenen permés subscriures"}.
{"Roster","Llista de contactes"}.
{"Roster of ","Llista de contactes de "}.
{"Roster size","Tamany de la llista"}.
{"RPC Call Error","Error de cridada RPC"}.
{"Running Nodes","Nodes funcionant"}.
{"~s access rule configuration","Configuració de les Regles d'Accés ~s"}.
{"Saturday","Dissabte"}.
{"Script check","Comprovar script"}.
{"Search Results for ","Resultat de la búsqueda"}.
{"Search users in ","Cerca usuaris en "}.
{"Send announcement to all online users","Enviar anunci a tots els usuaris connectats"}.
{"Send announcement to all online users on all hosts","Enviar anunci a tots els usuaris connectats a tots els hosts"}.
{"Send announcement to all users","Enviar anunci a tots els usuaris"}.
{"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:"}.
{"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"}.
{"Show Integral Table","Mostrar Taula Integral"}.
{"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 the computer, but you should do this only in your personal computer for safety reasons.","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"}.
{"~s's Offline Messages Queue","~s's cua de missatges offline"}.
{"Start","Iniciar"}.
{"Start Modules at ","Iniciar mòduls en "}.
{"Start Modules","Iniciar mòduls"}.
{"Statistics","Estadístiques"}.
{"Statistics of ~p","Estadístiques de ~p"}.
{"Stop","Detindre"}.
{"Stop Modules at ","Detindre mòduls en "}.
{"Stop Modules","Parar mòduls"}.
{"Stopped Nodes","Nodes parats"}.
{"Storage Type","Tipus d'emmagatzematge"}.
{"Store binary backup:","Guardar una còpia de seguretat binària:"}.
{"Store plain text backup:","Guardar una còpia de seguretat en format de text pla:"}.
{"Subject","Assumpte"}.
{"Submit","Enviar"}.
{"Submitted","Enviat"}.
{"Subscriber Address","Adreça del Subscriptor"}.
{"Subscription","Subscripció"}.
{"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 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","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 IP address is blacklisted in ~s","Esta adreça IP està a la llista negra en ~s"}.
{"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."}.
{"Thursday","Dijous"}.
{"Time","Data"}.
{"Time delay","Temps de retard"}.
{"Too many CAPTCHA requests","Massa peticions de CAPTCHA"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Massa autenticacions (~p) han fallat des d'aquesta adreça IP (~s). L'adreça serà desbloquejada en ~s UTC"}.
{"Too many unacked stanzas","Massa missatges sense haver reconegut la seva recepció"}.
{"To","Per a"}.
{"To ~s","A ~s"}.
{"Total rooms","Nombre total de sales"}.
{"Traffic rate limit is exceeded","El llímit de tràfic ha sigut sobrepassat"}.
{"Transactions Aborted:","Transaccions Avortades"}.
{"Transactions Committed:","Transaccions Realitzades:"}.
{"Transactions Logged:","Transaccions registrades"}.
{"Transactions Restarted:","Transaccions reiniciades"}.
{"Tuesday","Dimarts"}.
{"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 message of the day (don't send)","Actualitzar el missatge del dia (no enviar)"}.
{"Update message of the day on all hosts (don't send)","Actualitza el missatge del dia en tots els hosts (no enviar)"}.
{"Update ~p","Actualitzar ~p"}.
{"Update plan","Pla d'actualització"}.
{"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"}.
{"User ~s","Usuari ~s"}.
{"Users","Usuaris"}.
{"User","Usuari"}.
{"Validate","Validar"}.
{"vCard User Search","Recerca de vCard d'usuari"}.
{"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"}.
{"Visitor","Visitant"}.
{"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 sobrenom"}.
{"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","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"}.
-1941
View File
File diff suppressed because it is too large Load Diff
-440
View File
@@ -1,440 +0,0 @@
%% -*- coding: latin-1 -*-
{"Accept","Přijmout"}.
{"Access Configuration","Konfigurace přístupů"}.
{"Access Control List Configuration","Konfigurace seznamu přístupových práv (ACL)"}.
{"Access control lists","Seznamy přístupových práv (ACL)"}.
{"Access Control Lists","Seznamy přístupových práv (ACL)"}.
{"Access denied by service policy","Přístup byl zamítnut nastavením služby"}.
{"Access rules","Pravidla přístupů"}.
{"Access Rules","Pravidla přístupů"}.
{"Action on user","Akce aplikovaná na uživatele"}.
{"Add Jabber ID","Přidat Jabber ID"}.
{"Add New","Přidat nový"}.
{"Add User","Přidat uživatele"}.
{"Administration","Administrace"}.
{"Administration of ","Administrace "}.
{"Administrator privileges required","Potřebujete práva administrátora"}.
{"A friendly name for the node","Přívětivé jméno pro uzel"}.
{"All activity","Všechny aktivity"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Povolit tomuto Jabber ID odebírat tento pubsub uzel?"}.
{"Allow users to change the subject","Povolit uživatelům měnit téma místnosti"}.
{"Allow users to query other users","Povolit uživatelům odesílat požadavky (query) ostatním uživatelům"}.
{"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"}.
{"A password is required to enter this room","Pro vstup do místnosti musíte zadat heslo"}.
{"April",". dubna"}.
{"August",". srpna"}.
{"Backup Management","Správa zálohování"}.
{"Backup of ~p","Záloha ~p"}.
{"Backup to File at ","Záloha do souboru na "}.
{"Backup","Zálohovat"}.
{"Bad format","Nesprávný formát"}.
{"Birthday","Datum narození"}.
{"CAPTCHA web page","Webová stránka CAPTCHA"}.
{"Change Password","Změnit heslo"}.
{"Change User Password","Změnit heslo uživatele"}.
{"Characters not allowed:","Nepřípustné znaky:"}.
{"Chatroom configuration modified","Nastavení diskuzní místnosti bylo změněno"}.
{"Chatroom is created","Konference vytvořena"}.
{"Chatroom is destroyed","Konference zrušena"}.
{"Chatroom is started","Konference spuštěna"}.
{"Chatroom is stopped","Konference zastavena"}.
{"Chatrooms","Konference"}.
{"Choose a username and password to register with this server","Zadejte jméno uživatele a heslo pro registraci na tomto serveru"}.
{"Choose modules to stop","Vyberte moduly, které mají být zastaveny"}.
{"Choose storage type of tables","Vyberte typ úložiště pro tabulky"}.
{"Choose whether to approve this entity's subscription.","Zvolte, zda chcete schválit odebírání touto entitou"}.
{"City","Město"}.
{"Commands","Příkazy"}.
{"Conference room does not exist","Konferenční místnost neexistuje"}.
{"Configuration","Konfigurace"}.
{"Configuration of room ~s","Konfigurace místnosti ~s"}.
{"Connected Resources:","Připojené zdroje:"}.
{"Connections parameters","Parametry spojení"}.
{"Country","Země"}.
{"CPU Time:","Čas procesoru"}.
{"Database","Databáze"}.
{"Database Tables at ~p","Databázové tabulky na ~p"}.
{"Database Tables Configuration at ","Konfigurace databázových tabulek "}.
{"December",". prosince"}.
{"Default users as participants","Uživatelé jsou implicitně členy"}.
{"Delete message of the day on all hosts","Smazat zprávu dne na všech hostitelích"}.
{"Delete message of the day","Smazat zprávu dne"}.
{"Delete Selected","Smazat vybrané"}.
{"Delete User","Smazat uživatele"}.
{"Deliver event notifications","Doručovat upozornění na události"}.
{"Deliver payloads with event notifications","Doručovat náklad s upozorněním na událost"}.
{"Description:","Popis:"}.
{"Disc only copy","Jen kopie disku"}.
{"Displayed Groups:","Zobrazené skupiny:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Nikdy nikomu nesdělujte své heslo, ani administrátorovi serveru Jabberu."}.
{"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 Multicast service","Služba ejabberd Multicast"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe modul"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams modul"}.
{"ejabberd vCard module","ejabberd vCard modul"}.
{"ejabberd Web Admin","Webová administrace ejabberd"}.
{"Elements","Položek"}.
{"Email","E-mail"}.
{"Empty Rooms","Prázdné konference"}.
{"Enable logging","Zaznamenávat konverzace"}.
{"Enable message archiving","Povolit ukládání historie zpráv"}.
{"Encoding for server ~b","Kódování pro server ~b"}.
{"End User Session","Ukončit sezení uživatele"}.
{"Enter list of {Module, [Options]}","Vložte seznam modulů {Modul, [Parametry]}"}.
{"Enter nickname you want to register","Zadejte přezdívku, kterou chcete zaregistrovat"}.
{"Enter path to backup file","Zadajte cestu k souboru se zálohou"}.
{"Enter path to jabberd14 spool dir","Zadejte cestu k jabberd14 spool adresáři"}.
{"Enter path to jabberd14 spool file","Zadejte cestu k spool souboru jabberd14"}.
{"Enter path to text file","Zadajte cestu k textovému souboru"}.
{"Enter the text you see","Zadejte text, který vidíte"}.
{"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.","Zadejte přezdívku a kódování, které chcete používat pro připojení k serverům IRC. Stiskněte 'Další' pro více políček k vyplnění. Stiskněte 'Dokončit' pro uložení nastavení."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Zadejte přezdívku, kódování, porty a hesla, které chcete používat pro připojení k serverům IRC"}.
{"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 all tables as SQL queries to a file:","Zálohovat všechny tabulky jako SQL dotazy do souboru:"}.
{"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"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Pro vyhledání uživatele Jabberu vyplňte formulář (na konec přidejte znak * pro vyhledání podřetězce)"}.
{"Friday","Pátek"}.
{"From","Od"}.
{"From ~s","Od ~s"}.
{"Full Name","Celé jméno"}.
{"Get Number of Online Users","Získat počet online uživatelů"}.
{"Get Number of Registered Users","Získat počet registrovaných uživatelů"}.
{"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)"}.
{"has been kicked because of an affiliation change","byl(a) vyhozen(a) kvůli změně přiřazení"}.
{"has been kicked because of a system shutdown","byl(a) vyhozen(a), protože dojde k vypnutí systému"}.
{"has been kicked because the room has been changed to members-only","byl(a) vyhozen(a), protože mísnost je nyní pouze pro členy"}.
{"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 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"}.
{"Import user data from jabberd14 spool file:","Importovat uživatele z jabberd14 spool souborů:"}.
{"Import User from File at ","Importovat uživatele ze souboru na "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Importovat uživatele ze souboru ve formátu PIEFXIS (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","Importovat uživatele z jabberd14 spool souborů:"}.
{"Import Users from Dir at ","Importovat uživatele z adresáře na "}.
{"Import Users From jabberd14 Spool Files","Importovat uživatele z jabberd14 spool souborů"}.
{"Improper message type","Nesprávný typ zprávy"}.
{"Incoming s2s Connections:",""}.
{"Incorrect password","Nesprávné heslo"}.
{"Invalid affiliation: ~s","Neplatné přiřazení: ~s"}.
{"Invalid role: ~s","Neplatná role: ~s"}.
{"IP addresses","IP adresy"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","IRC kanál (bez počátečního #)"}.
{"IRC server","IRC přezdívka"}.
{"IRC settings","Nastavení IRC"}.
{"IRC Transport","IRC transport"}.
{"IRC username","IRC přezdívka"}.
{"IRC Username","IRC přezdívka"}.
{"is now known as","se přejmenoval(a) na"}.
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Není povoleno posílat chybové zprávy do konference. Účastník (~s) odeslal chybovou zprávu (~s) a byl vyhozen z konference."}.
{"It is not allowed to send private messages","Je zakázáno posílat soukromé zprávy"}.
{"It is not allowed to send private messages of type \"groupchat\"","Není dovoleno odeslání soukromé zprávy typu \"skupinová zpráva\" "}.
{"It is not allowed to send private messages to the conference","Není povoleno odesílat soukromé zprávy do konference"}.
{"Jabber Account Registration","Registrace účtu Jabberu"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","Jabber ID ~s je neplatné"}.
{"January",". ledna"}.
{"Join IRC channel","Vstoupit do IRC kanálu"}.
{"joins the room","vstoupil(a) do místnosti"}.
{"Join the IRC channel here.","Vstoupit do tohoto IRC kanálu."}.
{"Join the IRC channel in this Jabber ID: ~s","Vstupte do IRC kanálu s tímto Jabber ID: ~s"}.
{"July",". července"}.
{"June",". června"}.
{"Last Activity","Poslední aktivita"}.
{"Last login","Poslední přihlášení"}.
{"Last month","Poslední měsíc"}.
{"Last year","Poslední rok"}.
{"leaves the room","opustil(a) místnost"}.
{"Listened Ports at ","Otevřené porty na "}.
{"Listened Ports","Otevřené porty"}.
{"List of modules to start","Seznam modulů, které mají být spuštěné"}.
{"List of rooms","Seznam konferencí"}.
{"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 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"}.
{"Make room persistent","Nastavit místnost jako stálou"}.
{"Make room public searchable","Nastavit místnost jako veřejnou"}.
{"March",". března"}.
{"Maximum Number of Occupants","Počet účastníků"}.
{"Max # of items to persist","Maximální počet položek, které je možné natrvalo uložit"}.
{"Max payload size in bytes","Maximální náklad v bajtech"}.
{"May",". května"}.
{"Members:","Členové:"}.
{"Membership is required to enter this room","Pro vstup do místnosti musíte být členem"}.
{"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.","Svoje heslo si zapamatujte, nebo si jej poznamenejte na papírek a ten uschovejte v bezpečí. Jabber nemá žádný automatizovaný způsob obnovy hesla."}.
{"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","Moderátor"}.
{"Moderator privileges required","Potřebujete práva moderátora"}.
{"moderators only","moderátorům"}.
{"Modified modules","Aktualizované moduly"}.
{"Module","Modul"}.
{"Modules at ~p","Moduly v ~p"}.
{"Modules","Moduly"}.
{"Monday","Pondělí"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Víceuživatelský chat"}.
{"Name:","Jméno:"}.
{"Name","Jméno"}.
{"Never","Nikdy"}.
{"New Password:","Nové heslo:"}.
{"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"}.
{"Node not found","Uzel nenalezen"}.
{"Node ~p","Uzel ~p"}.
{"Nodes","Uzly"}.
{"No limit","Bez limitu"}.
{"None","Nic"}.
{"No resource provided","Nebyl poskytnut žádný zdroj"}.
{"Not Found","Nenalezeno"}.
{"Notify subscribers when items are removed from the node","Upozornit odběratele na odstranění položek z uzlu"}.
{"Notify subscribers when the node configuration changes","Upozornit odběratele na změnu nastavení uzlu"}.
{"Notify subscribers when the node is deleted","Upozornit odběratele na smazání uzlu"}.
{"November",". listopadu"}.
{"Number of occupants","Počet účastníků"}.
{"Number of online users","Počet online uživatelů"}.
{"Number of registered users","Počet registrovaných uživatelů"}.
{"October",". října"}.
{"Offline Messages:","Offline zprávy:"}.
{"Offline Messages","Offline zprávy"}.
{"OK","OK"}.
{"Old Password:","Současné heslo:"}.
{"Online","Online"}.
{"Online Users:","Online uživatelé:"}.
{"Online Users","Online uživatelé"}.
{"Only deliver notifications to available users","Doručovat upozornění jen právě přihlášeným uživatelům"}.
{"Only members may query archives of this room","Pouze moderátoři mají povoleno měnit téma místnosti"}.
{"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"}.
{"Options","Nastavení"}.
{"Organization Name","Název firmy"}.
{"Organization Unit","Oddělení"}.
{"Outgoing s2s Connections:","Odchozí s2s spojení:"}.
{"Outgoing s2s Connections","Odchozí s2s spojení"}.
{"Owner privileges required","Jsou vyžadována práva vlastníka"}.
{"Packet","Paket"}.
{"Participant","Účastník"}.
{"Password ~b","Heslo ~b"}.
{"Password:","Heslo:"}.
{"Password","Heslo"}.
{"Password Verification:","Ověření hesla:"}.
{"Password Verification","Ověření hesla"}.
{"Path to Dir","Cesta k adresáři"}.
{"Path to File","Cesta k souboru"}.
{"Pending","Čekající"}.
{"Period: ","Čas: "}.
{"Permanent rooms","Stálých konferencí"}.
{"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 specify file name.","Zvolit jméno souboru."}.
{"Please specify file size.","Zvolit velikost souboru."}.
{"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"}.
{"Present real Jabber IDs to","Odhalovat skutečná Jabber ID"}.
{"private, ","soukromá, "}.
{"Protocol","Protokol"}.
{"Publish-Subscribe","Publish-Subscribe"}.
{"PubSub subscriber request","Žádost odběratele PubSub"}.
{"Purge all items when the relevant publisher goes offline","Smazat všechny položky, pokud se příslušný poskytovatel odpojí"}.
{"Queries to the conference members are not allowed in this room","Požadavky (queries) na členy konference nejsou v této místnosti povolené"}.
{"RAM and disc copy","Kopie RAM a disku"}.
{"RAM copy","Kopie RAM"}.
{"Raw","Zdroj"}.
{"Really delete message of the day?","Skutečně smazat zprávu dne?"}.
{"Recipient is not in the conference room","Příjemce se nenachází v konferenční místnosti"}.
{"Register a Jabber account","Zaregistrujte si účet Jabberu"}.
{"Registered nicknames","Registrované přezdívky"}.
{"Registered Users","Registrovaní uživatelé"}.
{"Registered Users:","Registrovaní živatelé:"}.
{"Register","Zaregistrovat se"}.
{"Registration in mod_irc for ","Registrace do mod_irc na "}.
{"Remote copy","Vzdálená kopie"}.
{"Remove All Offline Messages","Odstranit všechny offline zprávy"}.
{"Remove","Odstranit"}.
{"Remove User","Odstranit uživatele"}.
{"Replaced by new connection","Nahrazeno novým spojením"}.
{"Resources","Zdroje"}.
{"Restart","Restart"}.
{"Restart Service","Restartovat službu"}.
{"Restore Backup from File at ","Obnovit zálohu ze souboru na "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Obnovit binární zálohu při následujícím restartu ejabberd (vyžaduje méně paměti)"}.
{"Restore binary backup immediately:","Okamžitě obnovit binární zálohu:"}.
{"Restore","Obnovit"}.
{"Restore plain text backup immediately:","Okamžitě obnovit zálohu z textového souboru:"}.
{"Roles for which Presence is Broadcasted","Role, pro které je zpráva o stavu šířena"}.
{"Room Configuration","Nastavení místnosti"}.
{"Room creation is denied by service policy","Pravidla služby nepovolují vytvořit místnost"}.
{"Room description","Popis místnosti"}.
{"Room Occupants","Počet účastníků"}.
{"Room title","Název místnosti"}.
{"Roster groups allowed to subscribe","Skupiny kontaktů, které mohou odebírat"}.
{"Roster of ","Seznam kontaktů "}.
{"Roster","Seznam kontaktů"}.
{"Roster size","Velikost seznamu kontaktů"}.
{"RPC Call Error","Chyba RPC volání"}.
{"Running Nodes","Běžící uzly"}.
{"~s access rule configuration","~s konfigurace pravidla přístupu"}.
{"Saturday","Sobota"}.
{"Script check","Kontrola skriptu"}.
{"Search Results for ","Výsledky hledání pro "}.
{"Search users in ","Hledat uživatele v "}.
{"Send announcement to all online users","Odeslat oznámení všem online uživatelům"}.
{"Send announcement to all online users on all hosts","Odeslat oznámení všem online uživatelům na všech hostitelích"}.
{"Send announcement to all users","Odeslat oznámení všem uživatelům"}.
{"Send announcement to all users on all hosts","Odeslat oznámení všem uživatelům na všech hostitelích"}.
{"September",". září"}.
{"Server ~b","Server ~b"}.
{"Server:","Server:"}.
{"Server","Server"}.
{"Set message of the day and send to online users","Nastavit zprávu dne a odeslat ji online uživatelům"}.
{"Set message of the day on all hosts and send to online users","Nastavit zprávu dne a odeslat ji online uživatelům"}.
{"Shared Roster Groups","Skupiny pro sdílený seznam kontaktů"}.
{"Show Integral Table","Zobrazit kompletní tabulku"}.
{"Show Ordinary Table","Zobrazit běžnou tabulku"}.
{"Shut Down Service","Vypnout službu"}.
{"~s invites you to the room ~s","~s vás zve do místnosti ~s"}.
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Někteří klienti umí uložit vaše heslo na disk počítače. Tuto funkci používejte, pouze pokud věříte zabezpečení svého počítače."}.
{"Specify the access model","Uveďte přístupový model"}.
{"Specify the event message type","Zvolte typ zpráv pro události"}.
{"Specify the publisher model","Specifikovat model pro publikování"}.
{"~s's Offline Messages Queue","Fronta offline zpráv uživatele ~s"}.
{"Start Modules at ","Spustit moduly na "}.
{"Start Modules","Spustit moduly"}.
{"Start","Start"}.
{"Statistics of ~p","Statistiky ~p"}.
{"Statistics","Statistiky"}.
{"Stop Modules at ","Zastavit moduly na "}.
{"Stop Modules","Zastavit moduly"}.
{"Stopped Nodes","Zastavené uzly"}.
{"Stop","Stop"}.
{"Storage Type","Typ úložiště"}.
{"Store binary backup:","Uložit binární zálohu:"}.
{"Store plain text backup:","Uložit zálohu do textového souboru:"}.
{"Subject","Předmět"}.
{"Submit","Odeslat"}.
{"Submitted","Odeslané"}.
{"Subscriber Address","Adresa odběratele"}.
{"Subscription","Přihlášení"}.
{"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 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"}.
{"The password is too weak","Heslo je příliš slabé"}.
{"The password of your Jabber account was successfully changed.","Heslo vašeho účtu Jabberu bylo úspěšně změněno."}.
{"There was an error changing the password: ","Při změně hesla došlo k chybě: "}.
{"There was an error creating the account: ","Při vytváření účtu došlo k chybě."}.
{"There was an error deleting the account: ","Při mazání účtu došlo k chybě: "}.
{"This IP address is blacklisted in ~s","IP adresa je blokována na ~s"}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Zde nezáleží na velikosti písmen: macbeth je stejný jako MacBeth a 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.","Na této stránce si můžete vytvořit účet na tomto serveru Jabberu. Vaše JID (Jabber IDentifikátor) bude mít tvar: uživatelskéjméno@server. Přečtěte si prosím pozorně instrukce pro vyplnění údajů."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Zde můžete zrušit registraci účtu na tomto serveru Jabberu."}.
{"Thursday","Čtvrtek"}.
{"Time","Čas"}.
{"Time delay","Časový posun"}.
{"Too many CAPTCHA requests","Přiliš mnoho CAPTCHA žádostí"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Příliš mnoho (~p) chybných pokusů o přihlášení z této IP adresy (~s). Adresa bude zablokována do ~s UTC"}.
{"Too many unacked stanzas","Příliš mnoho nepotvrzených stanz"}.
{"To","Pro"}.
{"To ~s","Pro ~s"}.
{"Total rooms","Celkem konferencí"}.
{"Traffic rate limit is exceeded","Byl překročen limit"}.
{"Transactions Aborted:","Transakce zrušena"}.
{"Transactions Committed:","Transakce potvrzena"}.
{"Transactions Logged:","Transakce zaznamenána"}.
{"Transactions Restarted:","Transakce restartována"}.
{"Tuesday","Úterý"}.
{"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"}.
{"Unregister","Zrušit registraci"}.
{"Update","Aktualizovat"}.
{"Update message of the day (don't send)","Aktualizovat zprávu dne (neodesílat)"}.
{"Update message of the day on all hosts (don't send)","Aktualizovat zprávu dne pro všechny hostitele (neodesílat)"}.
{"Update ~p","Aktualizovat ~p"}.
{"Update plan","Aktualizovat plán"}.
{"Update script","Aktualizované skripty"}.
{"Uptime:","Čas běhu:"}.
{"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:"}.
{"User ~s",""}.
{"Users are not allowed to register accounts so quickly","Je zakázáno registrovat účty v tak rychlém sledu"}.
{"Users Last Activity","Poslední aktivita uživatele"}.
{"Users","Uživatelé"}.
{"User","Uživatel"}.
{"Validate","Ověřit"}.
{"vCard User Search","Hledání uživatelů podle vizitek"}.
{"Virtual Hosts","Virtuální hostitelé"}.
{"Visitor","Návštěvník"}.
{"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í"}.
{"You can later change your password using a Jabber client.","Později můžete své heslo změnit pomocí klienta Jabberu."}.
{"You have been banned from this room","Byl jste vyloučen z této místnosti"}.
{"You must fill in field \"Nickname\" in the form","Musíte vyplnit políčko \"Přezdívka\" ve formuláři"}.
{"You need a client that supports x:data and CAPTCHA to register","Pro registraci potřebujete klienta s podporou x:data a CAPTCHA"}.
{"You need a client that supports x:data to register the nickname","Pro registraci přezdívky potřebujete klienta s podporou x:data"}.
{"You need an x:data capable client to configure mod_irc settings","Pro konfiguraci mod_irc potřebujete klienta s podporou x:data"}.
{"You need an x:data capable client to configure room","Ke konfiguraci místnosti potřebujete klienta podporujícího x:data"}.
{"You need an x:data capable client to search","K vyhledávání potřebujete klienta podporujícího x:data"}.
{"Your active privacy list has denied the routing of this stanza.","Vaše nastavení soukromí znemožnilo směrování této stance."}.
{"Your contact offline message queue is full. The message has been discarded.","Fronta offline zpráv pro váš kontakt je plná. Zpráva byla zahozena."}.
{"Your Jabber account was successfully created.","Váš účet Jabberu byl úspěšně vytvořen."}.
{"Your Jabber account was successfully deleted.","Váš účet Jabberu byl úspěšně smazán."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Nesmíte posílat zprávy na ~s. Pro povolení navštivte ~s"}.
-1915
View File
File diff suppressed because it is too large Load Diff
-440
View File
@@ -1,440 +0,0 @@
%% -*- coding: latin-1 -*-
{"Accept","Akzeptieren"}.
{"Access Configuration","Zugangskonfiguration"}.
{"Access Control List Configuration","Konfiguration der Zugangskontrolllisten"}.
{"Access control lists","Zugangskontroll-Listen (ACL)"}.
{"Access Control Lists","Zugangskontroll-Listen (ACL)"}.
{"Access denied by service policy","Zugang aufgrund der Dienstrichtlinien verweigert"}.
{"Access rules","Zugangsregeln"}.
{"Access Rules","Zugangsregeln"}.
{"Action on user","Aktion auf Benutzer"}.
{"Add Jabber ID","Jabber-ID hinzufügen"}.
{"Add New","Neue(n) hinzufügen"}.
{"Add User","Benutzer hinzufügen"}.
{"Administration of ","Administration von "}.
{"Administration","Verwaltung"}.
{"Administrator privileges required","Administratorenrechte benötigt"}.
{"A friendly name for the node","Ein merkbarer Name für den Knoten"}.
{"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 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 Benutzernamen zu ändern"}.
{"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","jeden"}.
{"A password is required to enter this room","Sie brauchen ein Passwort um diesen Raum zu betreten"}.
{"April","April"}.
{"August","August"}.
{"Backup","Datensicherung"}.
{"Backup Management","Datensicherungsverwaltung"}.
{"Backup of ~p","Sicherung von ~p"}.
{"Backup to File at ","Datensicherung in die Datei "}.
{"Bad format","Ungültiges Format"}.
{"Birthday","Geburtsdatum"}.
{"CAPTCHA web page","CAPTCHA Webseite"}.
{"Change Password","Passwort ändern"}.
{"Change User Password","Benutzer-Passwort ändern"}.
{"Characters not allowed:","Nicht erlaubte Zeichen:"}.
{"Chatroom configuration modified","Chatraum-Konfiguration geändert"}.
{"Chatroom is created","Chatraum wurde erstellt"}.
{"Chatroom is destroyed","Chatraum wurde entfernt"}.
{"Chatroom is started","Chatraum wurde gestartet"}.
{"Chatroom is stopped","Chatraum wurde beendet"}.
{"Chatrooms","Chaträume"}.
{"Choose a username and password to register with this server","Wählen sie zum Registrieren einen Benutzernamen und ein Passwort"}.
{"Choose modules to stop","Wähle zu stoppende Module"}.
{"Choose storage type of tables","Wähle Speichertyp der Tabellen"}.
{"Choose whether to approve this entity's subscription.","Wählen sie, ob dieses Abonnement akzeptiert werden soll."}.
{"City","Stadt"}.
{"Commands","Befehle"}.
{"Conference room does not exist","Konferenzraum existiert nicht"}.
{"Configuration","Konfiguration"}.
{"Configuration of room ~s","Konfiguration für Raum ~s"}.
{"Connected Resources:","Verbundene Ressourcen:"}.
{"Connections parameters","Verbindungsparameter"}.
{"Country","Land"}.
{"CPU Time:","CPU-Zeit:"}.
{"Database","Datenbank"}.
{"Database Tables at ~p","Datenbanktabellen auf ~p"}.
{"Database Tables Configuration at ","Datenbanktabellen-Konfiguration auf "}.
{"December","Dezember"}.
{"Default users as participants","Benutzer werden standardmäßig vollwertige Teilnehmer"}.
{"Delete message of the day","Lösche Nachricht des Tages"}.
{"Delete message of the day on all hosts","Lösche Nachricht des Tages auf allen Hosts"}.
{"Delete Selected","Markierte löschen"}.
{"Delete User","Benutzer löschen"}.
{"Deliver event notifications","Ereignisbenachrichtigung zustellen"}.
{"Deliver payloads with event notifications","Nachrichten mit Ereignis-Benachrichtigungen zustellen"}.
{"Description:","Beschreibung:"}.
{"Disc only copy","Nur auf Festplatte"}.
{"Displayed Groups:","Angezeigte Gruppen:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Geben sie niemandem ihr Passwort, auch nicht den Administratoren des Jabber Servers."}.
{"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 Multicast service","ejabberd Multicast Dienst"}.
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe-Modul"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5-Bytestreams-Modul"}.
{"ejabberd vCard module","ejabberd vCard-Modul"}.
{"ejabberd Web Admin","ejabberd Web-Admin"}.
{"Elements","Elemente"}.
{"Email","E-Mail"}.
{"Empty Rooms","Leere Räume"}.
{"Enable logging","Protokollierung aktivieren"}.
{"Enable message archiving","Nachrichtenarchivierung aktivieren"}.
{"Encoding for server ~b","Kodierung für Server ~b"}.
{"End User Session","Benutzer-Sitzung beenden"}.
{"Enter list of {Module, [Options]}","Geben sie eine Liste bestehend aus {Modul, [Optionen]} ein"}.
{"Enter nickname you want to register","Geben sie den zu registrierenden Benutzernamen ein"}.
{"Enter path to backup file","Geben sie den Pfad zur Datensicherung ein"}.
{"Enter path to jabberd14 spool dir","Geben sie den Pfad zum jabberd14-Spool-Verzeichnis ein"}.
{"Enter path to jabberd14 spool file","Geben sie den Pfad zur jabberd14-Spool-Datei ein"}.
{"Enter path to text file","Geben sie den Pfad zur Textdatei ein"}.
{"Enter the text you see","Geben sie den Text den sie sehen ein"}.
{"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.","Geben sie Benutzernamen und Kodierung für Verbindungen zu IRC Servern an. Drücken sie 'Mehr' um leere Felder hinzuzufügen. Drücken sie 'Beenden' um die Einstellungen zu speichern."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Geben sie den Benutzernamen, Zeichenkodierung, Ports und Passwörter, die sie für die Verbindung zum IRC-Server verwenden wollen, an"}.
{"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 all tables as SQL queries to a file:","Alle Tabellen als SQL Abfragen in eine Datei exportieren:"}.
{"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 bestimmten Jabber-Benutzern zu suchen"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Füllen sie die Felder aus, um nach passenden Jabber-Benutzern zu suchen (beenden Sie ein Feld mit *, um auch nach Teilzeichenketten zu suchen)"}.
{"Friday","Freitag"}.
{"From ~s","Von ~s"}.
{"From","Von"}.
{"Full Name","Vollständiger Name"}.
{"Get Number of Online Users","Anzahl der angemeldeten Benutzer abrufen"}.
{"Get Number of Registered Users","Anzahl der registrierten Benutzer abrufen"}.
{"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"}.
{"has been kicked because of an affiliation change","wurde wegen Änderung des Mitgliederstatus entfernt"}.
{"has been kicked because of a system shutdown","wurde wegen einer Systemabschaltung entfernt"}.
{"has been kicked because the room has been changed to members-only","wurde entfernt weil der Raum auf Nur-Mitglieder umgestellt wurde"}.
{"has been kicked","wurde entfernt"}.
{" has set the subject to: "," hat das Thema geändert auf: "}.
{"Host","Host"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Wenn sie das CAPTCHA Bild nicht sehen, besuchen sie bitte die Webseite."}.
{"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.","Wenn sie verschiedene Ports, Passwörter und Kodierungen für IRC Server angeben wollen, erstellen sie die Liste mit folgendem Format '{\"IRC Server\", \"Kodierung\", Port, \"Passwort\"}'. Standardmäßig benutzt dieser Dienst die \"~s\" Kodierung, den Port ~p und kein Passwort."}.
{"Import Directory","Verzeichnis importieren"}.
{"Import File","Datei importieren"}.
{"Import user data from jabberd14 spool file:","Importiere Benutzer von jabberd14 Spool Datei:"}.
{"Import User from File at ","Benutzer aus dieser Datei importieren "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Benutzerdaten von einer PIEFXIS Datei (XEP-0227) importieren:"}.
{"Import users data from jabberd14 spool directory:","Importiere Benutzer von jabberd14 Spool Verzeichnis:"}.
{"Import Users from Dir at ","Benutzer importieren aus dem Verzeichnis "}.
{"Import Users From jabberd14 Spool Files","Importiere Benutzer aus jabberd14-Spool-Dateien"}.
{"Improper message type","Unzulässiger Nachrichtentyp"}.
{"Incoming s2s Connections:","Eingehende s2s-Verbindungen:"}.
{"Incorrect password","Falsches Passwort"}.
{"Invalid affiliation: ~s","Ungültige Mitgliedschaft: ~s"}.
{"Invalid role: ~s","Ungültige Rolle: ~s"}.
{"IP addresses","IP Adressen"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","IRC Channel (ohne dem ersten #)"}.
{"IRC server","IRC Server"}.
{"IRC settings","IRC Einstellungen"}.
{"IRC Transport","IRC Transport"}.
{"IRC username","IRC Benutzername"}.
{"IRC Username","IRC-Benutzername"}.
{"is now known as","ist nun bekannt als"}.
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Es ist nicht erlaubt Fehlermeldungen an den Raum zu senden. Der Teilnehmer (~s) hat eine Fehlermeldung (~s) gesendet und wurde aus dem Raum entfernt"}.
{"It is not allowed to send private messages","Es ist nicht erlaubt private Nachrichten zu senden"}.
{"It is not allowed to send private messages of type \"groupchat\"","Es ist nicht erlaubt private Nachrichten des Typs \"Gruppenchat\" zu senden"}.
{"It is not allowed to send private messages to the conference","Es ist nicht erlaubt private Nachrichten an den Raum zu schicken"}.
{"Jabber Account Registration","Jabber Konto Anmeldung"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","Die Jabber-ID ~s ist ungültig"}.
{"January","Januar"}.
{"Join IRC channel","IRC Channel beitreten"}.
{"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"}.
{"June","Juni"}.
{"Last Activity","Letzte Aktivität"}.
{"Last login","Letzte Anmeldung"}.
{"Last month","Letzter Monat"}.
{"Last year","Letztes Jahr"}.
{"leaves the room","verlässt den Raum"}.
{"Listened Ports","Aktive Ports"}.
{"Listened Ports at ","Aktive Ports bei"}.
{"List of modules to start","Liste der zu startenden Module"}.
{"List of rooms","Liste von Chaträumen"}.
{"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 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"}.
{"Make room persistent","Raum persistent machen"}.
{"Make room public searchable","Raum öffentlich suchbar machen"}.
{"March","März"}.
{"Maximum Number of Occupants","Maximale Anzahl von Teilnehmern"}.
{"Max # of items to persist","Maximale Anzahl dauerhaft zu speichernder Einträge"}.
{"Max payload size in bytes","Maximale Nutzlastgrösse in Bytes"}.
{"May","Mai"}.
{"Membership is required to enter this room","Um diesen Raum zu betreten müssen sie Mitglied sein"}.
{"Members:","Mitglieder:"}.
{"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.","Merken sie sich ihr Passwort, oder schreiben sie es auf einen Zettel den sie sicher verwahren. Bei Jabber gibt es keine automatische Möglichkeit, das Passwort wiederherzustellen."}.
{"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","Moderator"}.
{"Moderator privileges required","Moderatorrechte benötigt"}.
{"moderators only","ausschliesslich Moderatoren"}.
{"Modified modules","Geänderte Module"}.
{"Module","Modul"}.
{"Modules at ~p","Module bei ~p"}.
{"Modules","Module"}.
{"Monday","Montag"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Mehrbenutzer-Chat (MUC)"}.
{"Name:","Name:"}.
{"Name","Vorname"}.
{"Never","Nie"}.
{"New Password:","Neues Passwort:"}.
{"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ündigungsnachricht angegeben"}.
{"No Data","Keine Daten"}.
{"Node ID","Knoten-ID"}.
{"Node not found","Knoten nicht gefunden"}.
{"Node ~p","Knoten ~p"}.
{"Nodes","Knoten"}.
{"No limit","Keine Begrenzung"}.
{"None","Keine"}.
{"No resource provided","Keine Ressource angegeben"}.
{"Not Found","Nicht gefunden"}.
{"Notify subscribers when items are removed from the node","Abonnenten benachrichtigen, wenn Einträge vom Knoten entfernt werden"}.
{"Notify subscribers when the node configuration changes","Abonnenten benachrichtigen, wenn sich die Knotenkonfiguration ändert"}.
{"Notify subscribers when the node is deleted","Abonnenten benachrichtigen, wenn der Knoten gelöscht wird"}.
{"November","November"}.
{"Number of occupants","Anzahl der Teilnehmer"}.
{"Number of online users","Anzahl der angemeldeten Benutzer"}.
{"Number of registered users","Anzahl der registrierten Benutzer"}.
{"October","Oktober"}.
{"Offline Messages:","Offline-Nachrichten:"}.
{"Offline Messages","Offline-Nachrichten"}.
{"OK","OK"}.
{"Old Password:","Aktuelles Passwort:"}.
{"Online","Angemeldet"}.
{"Online Users:","Angemeldete Benutzer:"}.
{"Online Users","Angemeldete Benutzer"}.
{"Only deliver notifications to available users","Benachrichtigungen nur an verfügbare Benutzer schicken"}.
{"Only members may query archives of this room","Nur Mitglieder dürfen den Verlauf dieses Raumes abrufen"}.
{"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"}.
{"Options","Optionen"}.
{"Organization Name","Name der Organisation"}.
{"Organization Unit","Abteilung"}.
{"Outgoing s2s Connections:","Ausgehende s2s-Verbindungen:"}.
{"Outgoing s2s Connections","Ausgehende s2s-Verbindungen"}.
{"Owner privileges required","Besitzerrechte benötigt"}.
{"Packet","Paket"}.
{"Participant","Teilnehmer"}.
{"Password ~b","Passwort ~b"}.
{"Password:","Passwort:"}.
{"Password","Passwort"}.
{"Password Verification:","Passwort bestätigen:"}.
{"Password Verification","Passwort bestätigen"}.
{"Path to Dir","Pfad zum Verzeichnis"}.
{"Path to File","Pfad zur Datei"}.
{"Pending","Schwebend"}.
{"Period: ","Zeitraum: "}.
{"Permanent rooms","Permanente Chaträume"}.
{"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 specify file name.","Bitte geben Sie den Dateinamen an."}.
{"Please specify file size.","Bitte geben Sie die Dateigröße an."}.
{"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"}.
{"Present real Jabber IDs to","Echte Jabber-IDs anzeigen für"}.
{"private, ","privat, "}.
{"Protocol","Protokoll"}.
{"Publish-Subscribe","Publish-Subscribe"}.
{"PubSub subscriber request","PubSub-Abonnenten-Anfrage"}.
{"Purge all items when the relevant publisher goes offline","Alle Einträge entfernen, wenn der relevante Veröffentlicher offline geht"}.
{"Queries to the conference members are not allowed in this room","Anfragen an die Teilnehmer sind in diesem Raum nicht erlaubt"}.
{"RAM and disc copy","RAM und Festplatte"}.
{"RAM copy","Nur RAM"}.
{"Raw","Unformatiert"}.
{"Really delete message of the day?","Die Nachricht des Tages wirklich löschen?"}.
{"Recipient is not in the conference room","Der Empfänger ist nicht im Raum"}.
{"Register a Jabber account","Jabber Konto registrieren"}.
{"Register","Anmelden"}.
{"Registered nicknames","Registrierte Benutzernamen"}.
{"Registered Users:","Registrierte Benutzer:"}.
{"Registered Users","Registrierte Benutzer"}.
{"Registration in mod_irc for ","Registrierung in mod_irc für "}.
{"Remote copy","Fernkopie"}.
{"Remove All Offline Messages","Alle Offline Nachrichten löschen"}.
{"Remove","Entfernen"}.
{"Remove User","Benutzer löschen"}.
{"Replaced by new connection","Durch neue Verbindung ersetzt"}.
{"Resources","Ressourcen"}.
{"Restart","Neustart"}.
{"Restart Service","Dienst neustarten"}.
{"Restore Backup from File at ","Datenwiederherstellung aus der Datei "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Stelle binäre Sicherung beim nächsten ejabberd-Neustart wieder her (benötigt weniger Speicher):"}.
{"Restore binary backup immediately:","Stelle binäre Sicherung sofort wieder her:"}.
{"Restore plain text backup immediately:","Stelle Klartext-Sicherung sofort wieder her:"}.
{"Restore","Wiederherstellung"}.
{"Roles for which Presence is Broadcasted","Rollen, für die der Status übertragen wird"}.
{"Room Configuration","Raum-Konfiguration"}.
{"Room creation is denied by service policy","Anlegen des Raumes aufgrund der Dienstrichtlinien verweigert"}.
{"Room description","Raum Beschreibung"}.
{"Room Occupants","Teilnehmer in diesem Raum"}.
{"Room title","Raumname"}.
{"Roster groups allowed to subscribe","Kontaktlisten-Gruppen die abonnieren dürfen"}.
{"Roster","Kontaktliste"}.
{"Roster of ","Kontaktliste von "}.
{"Roster size","Kontaktlistengröße"}.
{"RPC Call Error","Fehler bei RPC-Aufruf"}.
{"Running Nodes","Aktive Knoten"}.
{"~s access rule configuration","~s Zugangsregel-Konfiguration"}.
{"Saturday","Samstag"}.
{"Script check","Script-Überprüfung"}.
{"Search Results for ","Suchergebnisse für "}.
{"Search users in ","Benutzer suchen in "}.
{"Send announcement to all online users on all hosts","Sende Ankündigung an alle angemeldeten Benutzer auf allen Hosts"}.
{"Send announcement to all online users","Sende Ankündigung an alle angemeldeten Benutzer"}.
{"Send announcement to all users on all hosts","Sende Ankündigung an alle Benutzer auf allen Hosts"}.
{"Send announcement to all users","Sende Ankündigung an alle Benutzer"}.
{"September","September"}.
{"Server ~b","Server ~b"}.
{"Server:","Server:"}.
{"Server","Server"}.
{"Set message of the day and send to online users","Setze Nachricht des Tages und sende sie an alle angemeldeten Benutzer"}.
{"Set message of the day on all hosts and send to online users","Setze Nachricht des Tages auf allen Hosts und sende sie an alle angemeldeten Benutzer"}.
{"Shared Roster Groups","Gruppen der gemeinsamen Kontaktliste"}.
{"Show Integral Table","Integrale Tabelle anzeigen"}.
{"Show Ordinary Table","Gewöhnliche Tabelle anzeigen"}.
{"Shut Down Service","Dienst herunterfahren"}.
{"~s invites you to the room ~s","~s lädt sie in den Raum ~s ein"}.
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Einige Jabber Client Programme speichern ihr Passwort auf ihrem Computer. Verwenden sie diese Möglichkeit nur auf Computern, die sie als sicher einstufen."}.
{"Specify the access model","Geben sie das Zugangsmodell an"}.
{"Specify the event message type","Geben sie den Ereignis-Nachrichtentyp an"}.
{"Specify the publisher model","Geben sie das Publikationsmodell an"}.
{"~s's Offline Messages Queue","~s's Offline-Nachrichten-Warteschlange"}.
{"Start Modules at ","Starte Module auf "}.
{"Start Modules","Module starten"}.
{"Start","Starten"}.
{"Statistics of ~p","Statistiken von ~p"}.
{"Statistics","Statistiken"}.
{"Stop Modules at ","Stoppe Module auf "}.
{"Stop Modules","Module stoppen"}.
{"Stopped Nodes","Angehaltene Knoten"}.
{"Stop","Stoppen"}.
{"Storage Type","Speichertyp"}.
{"Store binary backup:","Speichere binäre Sicherung:"}.
{"Store plain text backup:","Speichere Klartext-Sicherung:"}.
{"Subject","Betreff"}.
{"Submit","Senden"}.
{"Submitted","Gesendet"}.
{"Subscriber Address","Abonnenten-Adresse"}.
{"Subscription","Abonnement"}.
{"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 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"}.
{"The password is too weak","Das Passwort ist zu einfach"}.
{"The password of your Jabber account was successfully changed.","Das Passwort von ihrem Jabber Konto wurde geändert."}.
{"There was an error changing the password: ","Es trat ein Fehler beim Ändern des Passworts auf: "}.
{"There was an error creating the account: ","Es trat ein Fehler beim Erstellen des Kontos auf: "}.
{"There was an error deleting the account: ","Es trat ein Fehler beim Löschen des Kontos auf: "}.
{"This IP address is blacklisted in ~s","Diese IP Adresse ist blockiert in ~s"}.
{"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."}.
{"Thursday","Donnerstag"}.
{"Time delay","Zeitverzögerung"}.
{"Time","Zeit"}.
{"To","An"}.
{"Too many CAPTCHA requests","Zu viele CAPTCHA Anfragen"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Zu viele (~p) fehlgeschlagene Anmeldeversuche von dieser IP Adresse (~s). Die Adresse wird bis ~s UTC blockiert."}.
{"Too many unacked stanzas","Zu viele unbestätigte Stanzas"}.
{"To ~s","An ~s"}.
{"Total rooms","Alle Chaträume"}.
{"Traffic rate limit is exceeded","Datenratenlimit wurde überschritten"}.
{"Transactions Aborted:","Abgebrochene Transaktionen:"}.
{"Transactions Committed:","Durchgeführte Transaktionen:"}.
{"Transactions Logged:","Protokollierte Transaktionen:"}.
{"Transactions Restarted:","Neu gestartete Transaktionen:"}.
{"Tuesday","Dienstag"}.
{"Unable to generate a CAPTCHA","Konnte CAPTCHA nicht erstellen"}.
{"Unauthorized","Nicht berechtigt"}.
{"Unregister","Abmelden"}.
{"Unregister a Jabber account","Jabber Konto entfernen"}.
{"Update","Aktualisieren"}.
{"Update message of the day (don't send)","Aktualisiere Nachricht des Tages (nicht senden)"}.
{"Update message of the day on all hosts (don't send)","Aktualisiere Nachricht des Tages auf allen Hosts (nicht senden)"}.
{"Update ~p","Aktualisierung ~p"}.
{"Update plan","Aktualisierungsplan"}.
{"Update script","Aktualisierungsscript"}.
{"Uptime:","Betriebszeit:"}.
{"Use of STARTTLS required","Verwendung von STARTTLS erforderlich"}.
{"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"}.
{"Users","Benutzer"}.
{"User ~s","Benutzer ~s"}.
{"Users Last Activity","Letzte Benutzeraktivität"}.
{"Validate","Validieren"}.
{"vCard User Search","vCard-Benutzer-Suche"}.
{"Virtual Hosts","Virtuelle Hosts"}.
{"Visitor","Besucher"}.
{"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 das letzte veröffentlichte Objekt gesendet werden soll"}.
{"Whether to allow subscriptions","Ob Abonnements erlaubt sind"}.
{"You can later change your password using a Jabber client.","Sie können das Passwort später mit einem Jabber Client Programm ändern."}.
{"You have been banned from this room","Sie wurden aus diesem Raum verbannt"}.
{"You must fill in field \"Nickname\" in the form","Sie müssen das Feld \"Benutzername\" ausfüllen"}.
{"You need a client that supports x:data and CAPTCHA to register","Sie benötigen einen Client, der x:data und CAPTCHA unterstützt, um Ihren Benutzernamen zu registrieren"}.
{"You need a client that supports x:data to register the nickname","Sie benötigen einen Client, der x:data unterstützt, um Ihren Benutzernamen zu registrieren"}.
{"You need an x:data capable client to configure mod_irc settings","Sie benötigen einen Client, der x:data unterstützt, um die mod_irc-Einstellungen zu konfigurieren"}.
{"You need an x:data capable client to configure room","Sie benötigen einen Client, der x:data unterstützt, um den Raum zu konfigurieren"}.
{"You need an x:data capable client to search","Sie benötigen einen Client, der x:data unterstützt, um die Suche verwenden zu können"}.
{"Your active privacy list has denied the routing of this stanza.","Ihre aktive Privacy Liste hat die Weiterleitung des Stanzas unterbunden."}.
{"Your contact offline message queue is full. The message has been discarded.","Ihre Offline-Nachrichten-Warteschlange ist voll. Die Nachricht wurde verworfen."}.
{"Your Jabber account was successfully created.","Ihr Jabber Konto wurde erfolgreich erstellt."}.
{"Your Jabber account was successfully deleted.","Ihr Jabber Konto wurde erfolgreich gelöscht."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Ihre Nachrichten an ~s werden blockiert. Um dies zu ändern, besuchen sie ~s"}.
-1952
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-410
View File
@@ -1,410 +0,0 @@
%% -*- coding: latin-1 -*-
{"Access Configuration","Διαμόρφωση Πρόσβασης"}.
{"Access Control List Configuration","Διαχείριση στις Λίστες Ελέγχου Πρόσβασης"}.
{"Access control lists","Λίστες Ελέγχου Πρόσβασης"}.
{"Access Control Lists","Λίστες Ελέγχου Πρόσβασης"}.
{"Access denied by service policy","Άρνηση πρόσβασης, λόγω τακτικής παροχής υπηρεσιών"}.
{"Access rules","Κανόνες Πρόσβασης"}.
{"Access Rules","Κανόνες Πρόσβασης"}.
{"Action on user","Eνέργεια για το χρήστη"}.
{"Add Jabber ID","Προσθήκη Jabber Ταυτότητας"}.
{"Add New","Προσθήκη νέου"}.
{"Add User","Προσθήκη Χρήστη"}.
{"Administration of ","Διαχείριση του"}.
{"Administration","Διαχείριση"}.
{"Administrator privileges required","Aπαιτούνται προνόμια διαχειριστή"}.
{"A friendly name for the node","Ένα φιλικό όνομα για τον κόμβο"}.
{"All activity","Όλες οι δραστηριότητες"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Επιτρέπετε σε αυτή την Jabber Ταυτότητα να εγγραφεί σε αυτό τον κόμβο Δημοσίευσης-Εγγραφής;"}.
{"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 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","Απαιτείται κωδικός πρόσβασης για είσοδο σε αυτή την αίθουσα"}.
{"April","Απρίλιος"}.
{"August","Αύγουστος"}.
{"Backup Management","Διαχείριση Αντιγράφου Ασφαλείας"}.
{"Backup to File at ","Αποθήκευση Αντιγράφου Ασφαλείας σε Αρχείο στο "}.
{"Backup","Αποθήκευση Αντιγράφου Ασφαλείας"}.
{"Bad format","Ακατάλληλη μορφή"}.
{"Birthday","Γενέθλια"}.
{"CAPTCHA web page","Ιστοσελίδα CAPTCHA "}.
{"Change Password","Αλλαγή κωδικού"}.
{"Change User Password","Αλλαγή Κωδικού Πρόσβασης Χρήστη"}.
{"Characters not allowed:","Χαρακτήρες δεν επιτρέπονται:"}.
{"Chatroom configuration modified","Διαμόρφωση Αίθουσaς σύνεδριασης τροποποιηθηκε"}.
{"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","Επιλέξτε modules για να σταματήσουν"}.
{"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"}.
{"Configuration","Διαμόρφωση"}.
{"Connected Resources:","Συνδεδεμένοι Πόροι:"}.
{"Connections parameters","Παράμετροι Συνδέσης"}.
{"Country","Χώρα"}.
{"CPU Time:","Ώρα CPU:"}.
{"Database Tables Configuration at ","Διαμόρφωση Πίνακων βάσης δεδομένων στο "}.
{"Database","Βάση δεδομένων"}.
{"December","Δεκέμβριος"}.
{"Default users as participants","Προεπιλογη χρήστων ως συμμετέχοντες"}.
{"Delete message of the day on all hosts","Διαγράψτε το μήνυμα της ημέρας σε όλους τους κεντρικούς υπολογιστές"}.
{"Delete message of the day","Διαγράψτε το μήνυμα της ημέρας"}.
{"Delete Selected","Διαγραφή επιλεγμένων"}.
{"Delete User","Διαγραφή Χρήστη"}.
{"Deliver event notifications","Κοινοποιήσεις παράδοσης"}.
{"Deliver payloads with event notifications","Κοινοποιήσεις με την παράδοση φορτίων"}.
{"Description:","Περιγραφή:"}.
{"Disc only copy","Αντίγραφο μόνο σε δίσκο"}.
{"Displayed Groups:","Εμφανίσμενες Ομάδες:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Μην πείτε τον κωδικό πρόσβασής σας σε κανέναν, ακόμη και στους διαχειριστές του διακομιστή Jabber."}.
{"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 Δημοσίευσης-Εγγραφής"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}.
{"ejabberd vCard module","ejabberd vCard module"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"Elements","Στοιχεία"}.
{"Email","Email"}.
{"Enable logging","Ενεργοποίηση καταγραφής"}.
{"Encoding for server ~b","Κωδικοποίηση για διακομιστή ~b"}.
{"End User Session","Τερματισμός Συνεδρίας Χρήστη"}.
{"Enter list of {Module, [Options]}","Εισάγετε κατάλογο των (Module, [Επιλογές])"}.
{"Enter nickname you want to register","Πληκτρολογήστε το ψευδώνυμο που θέλετε να εγγραφείτε"}.
{"Enter path to backup file","Εισάγετε τοποθεσία αρχείου αντιγράφου ασφαλείας"}.
{"Enter path to jabberd14 spool dir","Εισάγετε κατάλογο αρχείων σειράς jabberd14"}.
{"Enter path to jabberd14 spool file","Εισάγετε τοποθεσία αρχείου σειράς jabberd14"}.
{"Enter path to text file","Εισάγετε Τοποθεσία Αρχείου Κειμένου"}.
{"Enter the text you see","Πληκτρολογήστε το κείμενο που βλέπετε"}.
{"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.","Πληκτρολογήστε το όνομα χρήστη και κωδικοποιήσεις που θέλετε να χρησιμοποιήσετε για τη σύνδεση με διακομιστές IRC. Πατήστε 'Next' για να πάρετε περισσότερα πεδία να συμπληρώσετε. Πατήστε 'Complete' για να αποθηκεύσετε ρυθμίσεις."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Εισάγετε το όνομα χρήστη, κωδικοποιήσεις, τις θύρες και τους κωδικούς πρόσβασης που θέλετε να χρησιμοποιήσετε για σύνδεση με IRC διακομιστή"}.
{"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 χρήστη"}.
{"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","Έκθεση Στατιστικών Χρήστη"}.
{"Grant voice to this person?","Παραχώρηση φωνής σε αυτό το άτομο;"}.
{"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","Κεντρικός Υπολογιστής"}.
{"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 διακομιστές, εισάγετε πληροφορίες στη μορφή '{\"irc διακομιστής\", \"κωδικοποιήσεις\", θύρα, \"κωδικός πρόσβασης\"}'. Προεπιλεγμενα αυτή η υπηρεσία χρησιμοποιεί \"~s\" κωδικοποιήση, θύρα ~p, κενό κωδικό πρόσβασης."}.
{"Import Directory","Εισαγωγή κατάλογου αρχείων"}.
{"Import File","Εισαγωγή αρχείων"}.
{"Import user data from jabberd14 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:","Εισαγωγή δεδομένων χρηστών από κατάλογο αρχείων σειράς jabberd14:"}.
{"Import Users from Dir at ","Εισαγωγή χρηστών από κατάλογο αρχείων στο "}.
{"Import Users From jabberd14 Spool Files","Εισαγωγή Χρηστών από αρχεία σειράς jabberd14"}.
{"Improper message type","Ακατάλληλο είδος μηνύματος"}.
{"Incorrect password","Εσφαλμένος κωδικός πρόσβασης"}.
{"Invalid affiliation: ~s","Άκυρη υπαγωγή: ~s"}.
{"Invalid role: ~s","Άκυρος ρόλο: ~s"}.
{"IP addresses","Διευθύνσεις IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","IRC κανάλι (μην τεθεί το πρώτο #)"}.
{"IRC server","Διακομιστής IRC"}.
{"IRC settings","IRC Ρυθμίσεις"}.
{"IRC Transport","IRC Διαβιβάσεις"}.
{"IRC username","IRC όνομα χρήστη"}.
{"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","Δεν επιτρέπεται η αποστολή προσωπικών μηνυμάτων"}.
{"Jabber Account Registration","Εγγραφή λογαριασμού Jabber"}.
{"Jabber ID ~s is invalid","Η Jabber Ταυτότητα ~s είναι άκυρη"}.
{"Jabber ID","Ταυτότητα Jabber"}.
{"January","Ιανουάριος"}.
{"Join IRC channel","Είσοδος στο IRC κανάλι"}.
{"joins the room","συνδέετε στην αίθουσα"}.
{"Join the IRC channel here.","Είσοδος στο κανάλι IRC εδώ."}.
{"Join the IRC channel in this Jabber ID: ~s","Είσοδος στο κανάλι IRC αυτής της Jabber Ταυτότητας: ~s"}.
{"July","Ιούλιος"}.
{"June","Ιούνιος"}.
{"Last Activity","Τελευταία Δραστηριότητα"}.
{"Last login","Τελευταία σύνδεση"}.
{"Last month","Περασμένο μήνα"}.
{"Last year","Πέρυσι"}.
{"leaves the room","εγκαταλείπει την αίθουσα"}.
{"Listened Ports at ","Παρακολουθούμενες Θύρες στο "}.
{"Listened Ports","Παρακολουθούμενες Θύρες"}.
{"List of modules to start","Λίστα των Module για Εκκίνηση"}.
{"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","Κάντε την δημόσια αναζήτηση δυνατή για αυτή την αίθουσα"}.
{"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:","Μέλη:"}.
{"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","Aπαιτούνται προνόμια συντονιστή"}.
{"moderators only","συντονιστές μόνο"}.
{"Modified modules","Τροποποιημένα modules"}.
{"Module","Module"}.
{"Modules","Modules"}.
{"Monday","Δευτέρα"}.
{"Name:","Όνομα:"}.
{"Name","Όνομα"}.
{"Never","Ποτέ"}.
{"New Password:","Νέος κωδικός πρόσβασης:"}.
{"Nickname Registration at ","Εγγραφή με Ψευδώνυμο στο "}.
{"Nickname ~s does not exist in the room","Ψευδώνυμο ~s δεν υπάρχει σε αυτή την αίθουσα"}.
{"Nickname","Ψευδώνυμο"}.
{"No body provided for announce message","Δεν προμηθεύτικε περιεχόμενο ανακοινώσης"}.
{"nobody","κανείς"}.
{"No Data","Κανένα στοιχείο"}.
{"Node ID","Ταυτότητα Κόμβου"}.
{"Node not found","Κόμβος δεν βρέθηκε"}.
{"Nodes","Κόμβοι"}.
{"No limit","Χωρίς όριο"}.
{"None","Κανένα"}.
{"No resource provided","Δεν προμηθεύτικε πόρος"}.
{"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","Όλλα Καλά"}.
{"Old Password:","Παλαιός κωδικός πρόσβασης:"}.
{"Online Users:","Online Χρήστες:"}.
{"Online Users","Συνδεμένοι χρήστες"}.
{"Online","Συνδεδεμένο"}.
{"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","Μόνο οι διαχειριστές των υπηρεσιών επιτρέπεται να στείλουν υπηρεσιακά μηνύματα"}.
{"Options","Επιλογές"}.
{"Organization Name","Όνομα Οργανισμού"}.
{"Organization Unit","Μονάδα Οργανισμού"}.
{"Outgoing s2s Connections:","Εξερχόμενες S2S Συνδέσεις:"}.
{"Outgoing s2s Connections","Εξερχόμενες S2S Συνδέσεις"}.
{"Owner privileges required","Aπαιτούνται προνόμια ιδιοκτήτη"}.
{"Packet","Πακέτο"}.
{"Password ~b","Κωδικός πρόσβασης ~b"}.
{"Password Verification:","Επαλήθευση κωδικού πρόσβασης:"}.
{"Password Verification","Επαλήθευση κωδικού πρόσβασης"}.
{"Password","Κωδικός Πρόσβασης"}.
{"Password:","Κωδικός πρόσβασης:"}.
{"Path to Dir","Τοποθεσία κατάλογου αρχείων"}.
{"Path to File","Τοποθεσία Αρχείου"}.
{"Pending","Εκκρεμεί"}.
{"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. Εάν χρησιμοποιείτε το module ODBC, θα πρέπει επίσης να κάνετε χωριστά Αντιγράφο Ασφαλείας της SQL βάση δεδομένων σας ."}.
{"Please, wait for a while before sending new voice request","Παρακαλώ, περιμένετε για λίγο πριν την αποστολή νέου αιτήματος φωνής"}.
{"Pong","Πονγκ"}.
{"Port ~b","Θύρα ~b"}.
{"Port","Θύρα"}.
{"Present real Jabber IDs to","Παρούσιαση πραγματικών ταυτοτήτων Jabber σε"}.
{"private, ","ιδιωτικό,"}.
{"Protocol","Πρωτόκολλο"}.
{"Publish-Subscribe","Δημοσίευση-Εγγραφή"}.
{"PubSub subscriber request","Αίτηση συνδρομητή Δημοσίευσης-Εγγραφής"}.
{"Purge all items when the relevant publisher goes offline","Διαγραφή όλων των στοιχείων όταν ο σχετικός εκδότης αποσυνδέεται"}.
{"Queries to the conference members are not allowed in this room","Ερωτήματα πρώς τα μέλη της διασκέψεως δεν επιτρέπονται σε αυτήν την αίθουσα"}.
{"RAM and disc copy","Αντίγραφο μόνο σε RAM καί δίσκο"}.
{"RAM copy","Αντίγραφο σε RAM"}.
{"Raw","Ακατέργαστο"}.
{"Really delete message of the day?","Πραγματικά να διαγράψετε το μήνυμα της ημέρας;"}.
{"Recipient is not in the conference room","Παραλήπτης δεν είναι στην αίθουσα συνεδριάσεων"}.
{"Register a Jabber account","Καταχωρήστε έναν λογαριασμό Jabber"}.
{"Registered Users:","Εγγεγραμμένοι Χρήστες:"}.
{"Registered Users","Εγγεγραμμένοι Χρήστες"}.
{"Register","Καταχωρήστε"}.
{"Registration in mod_irc for ","Εγγραφή στο mod_irc για "}.
{"Remote copy","Απομεμακρυσμένο αντίγραφο"}.
{"Remove All Offline Messages","Αφαίρεση Όλων των Χωρίς Σύνδεση Μηνύματων"}.
{"Remove User","Αφαίρεση χρήστη"}.
{"Remove","Αφαίρεστε"}.
{"Replaced by new connection","Αντικαταστάθικε από νέα σύνδεση"}.
{"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:","Επαναφορά αντιγράφου ασφαλείας από αρχείο κειμένου αμέσως:"}.
{"Restore","Επαναφορά Αντιγράφου Ασφαλείας"}.
{"Room Configuration","Διαμόρφωση Αίθουσας σύνεδριασης"}.
{"Room creation is denied by service policy","Άρνηση δημιουργίας αίθουσας , λόγω τακτικής παροχής υπηρεσιών"}.
{"Room description","Περιγραφή Αίθουσας"}.
{"Room Occupants","Συμετεχόντες Αίθουσας σύνεδριασης"}.
{"Room title","Τίτλος Αίθουσας "}.
{"Roster groups allowed to subscribe","Ομάδες Καταλόγου Επαφών μπορούν να εγγραφούν"}.
{"Roster of ","Καταλόγος Επαφών τού"}.
{"Roster size","Μέγεθος Καταλόγου Επαφών"}.
{"Roster","Καταλόγος Επαφών"}.
{"RPC Call Error","Σφάλμα RPC Κλήσης"}.
{"Running Nodes","Ενεργοί Κόμβοι"}.
{"~s access rule configuration","~s διαμόρφωση κανόνα πρόσβασης"}.
{"Saturday","Σάββατο"}.
{"Script check","Script ελέγχου"}.
{"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","Σεπτέμβριος"}.
{"Server ~b","Διακομιστής ~b"}.
{"Server:","Διακομιστής:"}.
{"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","Δείτε Ολοκληρωτικό Πίνακα"}.
{"Show Ordinary Table","Δείτε Κοινό Πίνακα"}.
{"Shut Down Service","Κλείσιμο Υπηρεσίας"}.
{"~s invites you to the room ~s","~s σας προσκαλεί στην αίθουσα ~s"}.
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Μερικοί πελάτες Jabber μπορεί να αποθηκεύσουν τον κωδικό πρόσβασής σας στον υπολογιστή σας. Χρησιμοποιήστε αυτό το χαρακτηριστικό μόνο εάν εμπιστεύεστε την ασφάλεια του υπολογιστή σας."}.
{"Specify the access model","Καθορίστε το μοντέλο πρόσβασης"}.
{"Specify the event message type","Καθορίστε τον τύπο μηνύματος συμβάντος"}.
{"Specify the publisher model","Καθορίστε το μοντέλο εκδότη"}.
{"~s's Offline Messages Queue","Η Σειρά Χωρίς Σύνδεση Μηνύματων τού ~s"}.
{"Start Modules at ","Εκκίνηση Modules στο "}.
{"Start Modules","Εκκίνηση Modules"}.
{"Start","Εκκίνηση"}.
{"Statistics of ~p","Στατιστικές του ~p"}.
{"Statistics","Στατιστικές"}.
{"Stop Modules at ","Παύση Modules στο "}.
{"Stop Modules","ΠαύσηModules"}.
{"Stopped Nodes","Σταματημένοι Κόμβοι"}.
{"Stop","Σταμάτημα"}.
{"Storage Type","Τύπος Αποθήκευσης"}.
{"Store binary backup:","Αποθηκεύση δυαδικού αντιγράφου ασφαλείας:"}.
{"Store plain text backup:","Αποθηκεύση αντιγράφου ασφαλείας σε αρχείο κειμένου:"}.
{"Subject","Θέμα"}.
{"Submitted","Υποβλήθηκε"}.
{"Submit","Υποβοβολή"}.
{"Subscriber Address","Διεύθυνση Συνδρομητή"}.
{"Subscription","Συνδρομή"}.
{"Sunday","Κυριακή"}.
{"That nickname is already in use by another occupant","Αυτό το ψευδώνυμο είναι ήδη σε χρήση από άλλον συμμετέχων"}.
{"That nickname is registered by another person","Αυτό το ψευδώνυμο είναι καταχωρημένο από άλλο πρόσωπο"}.
{"The CAPTCHA is valid.","Το CAPTCHA είναι έγκυρο."}.
{"The CAPTCHA verification has failed","Η επαλήθευση της εικόνας CAPTCHA απέτυχε"}.
{"The collections with which a node is affiliated","Οι συλλογές με την οποία είναι ένας κόμβος συνδέεται"}.
{"The password is too weak","Ο κωδικός πρόσβασης είναι πολύ ασθενές"}.
{"the password is","ο κωδικός πρόσβασης είναι"}.
{"The password of your Jabber account was successfully changed.","Ο κωδικός πρόσβασης του Jabber λογαριασμού σας έχει αλλάξει επιτυχώς."}.
{"There was an error changing the password: ","Υπήρξε ένα σφάλμα κατά την αλλαγή του κωδικού πρόσβασης:"}.
{"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.","Ανεξαρτήτως με πεζά ή κεφαλαία: 'μιαλεξη' είναι το ίδιο με 'ΜιαΛέξη' και 'Μιαλέξη'."}.
{"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 σε αυτόν το διακομιστή Jabber. JID σας (Jabber Identifier) θα είναι της μορφής: όνομα_χρήστη@διακομιστής_Jabber. Παρακαλώ διαβάστε προσεκτικά τις οδηγίες για να συμπληρώσετε σωστά τα πεδία."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Η σελίδα αυτή δίνει τη δυνατότητα να καταργήσετε την καταχώρηση ενός λογαριασμό Jabber σε αυτόν το διακομιστή Jabber."}.
{"Thursday","Πέμπτη"}.
{"Time delay","Χρόνος καθυστέρησης"}.
{"Time","Χρόνος"}.
{"Too many CAPTCHA requests","Πάρα πολλά αιτήματα CAPTCHA"}.
{"To ~s","Πρώς ~s"}.
{"To","Πρώς"}.
{"Traffic rate limit is exceeded","Υπέρφορτωση"}.
{"Transactions Aborted:","Αποτυχημένες συναλλαγές:"}.
{"Transactions Committed:","Παραδοθείς συναλλαγές:"}.
{"Transactions Logged:","Καταγραμμένες συναλλαγές:"}.
{"Transactions Restarted:","Επανειλημμένες συναλλαγές:"}.
{"Tuesday","Τρίτη"}.
{"Unable to generate a CAPTCHA","Αδήνατο να δημιουργηθεί CAPTCHA"}.
{"Unauthorized","Χορίς Εξουσιοδότηση"}.
{"Unregister a Jabber account","Καταργήστε την εγγραφή ενός λογαριασμού Jabber"}.
{"Unregister","Καταργήση εγγραφής"}.
{"Update message of the day (don't send)","Ενημέρωση μηνύματως ημέρας (χωρίς άμεση αποστολή)"}.
{"Update message of the day on all hosts (don't send)","Ενημέρωση μηνύματως ημέρας σε όλους τους κεντρικούς υπολογιστές (χωρίς άμεση αποστολή)"}.
{"Update plan","Σχέδιο ενημέρωσης"}.
{"Update script","Προγράμα ενημέρωσης"}.
{"Update","Ενημέρωση"}.
{"Uptime:","Uptime:"}.
{"Use of STARTTLS required","Απαιτείται χρήση STARTTLS "}.
{"User JID","JID Χρήστη"}.
{"User Management","Διαχείριση χρηστών"}.
{"Username:","Όνομα χρήστη"}.
{"Users are not allowed to register accounts so quickly","Οι χρήστες δεν επιτρέπεται να εγγραφούν λογαριασμούς τόσο γρήγορα"}.
{"Users Last Activity","Τελευταία Δραστηριότητα Χρήστη"}.
{"Users","Χρήστες"}.
{"User","Χρήστης"}.
{"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","Οι επισκέπτες δεν επιτρέπεται να στείλουν μηνύματα σε όλους τους συμμετέχωντες"}.
{"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","Χρειάζεστε ένα x:data ικανό πελάτη για να ρυθμίσετε το mod_irc"}.
{"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.","Ο ενεργός κατάλογος απορρήτου, έχει αρνηθεί τη δρομολόγηση αυτής της στροφής (stanza)."}.
{"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"}.
-1967
View File
File diff suppressed because it is too large Load Diff
-428
View File
@@ -1,428 +0,0 @@
%% -*- coding: latin-1 -*-
{"Access Configuration","Agordo de atingo"}.
{"Access Control List Configuration","Agordo de atingokontrolo"}.
{"Access control lists","Atingokontrol-listoj"}.
{"Access Control Lists","Atingokontrol-listoj"}.
{"Access denied by service policy","Atingo rifuzita de serv-politiko"}.
{"Access rules","Atingo-reguloj"}.
{"Access Rules","Atingo-reguloj"}.
{"Action on user","Ago je uzanto"}.
{"Add Jabber ID","Aldonu Jabber ID"}.
{"Add New","Aldonu novan"}.
{"Add User","Aldonu Uzanton"}.
{"Administration","Administro"}.
{"Administration of ","Mastrumado de "}.
{"Administrator privileges required","Administrantaj rajtoj bezonata"}.
{"A friendly name for the node","Kromnomo por ĉi tiu nodo"}.
{"All activity","Ĉiu aktiveco"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Ĉu permesi ĉi tiun Jabber ID aboni al la jena PubAbo-nodo"}.
{"Allow users to change the subject","Permesu uzantojn ŝanĝi la temon"}.
{"Allow users to query other users","Permesu uzantojn informpeti aliajn uzantojn"}.
{"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"}.
{"A password is required to enter this room","Pasvorto estas bezonata por eniri ĉi tiun babilejon"}.
{"April","Aprilo"}.
{"August","Aŭgusto"}.
{"Backup","Faru Sekurkopion"}.
{"Backup Management","Mastrumado de sekurkopioj"}.
{"Backup of ~p","Sekurkopio de ~p"}.
{"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"}.
{"Chatroom is started","Babilejo lanĉita"}.
{"Chatroom is stopped","Babilejo haltita"}.
{"Chatrooms","Babilejoj"}.
{"Choose a username and password to register with this server","Elektu uzantnomon kaj pasvorton por registri je ĉi tiu servilo"}.
{"Choose modules to stop","Elektu modulojn por fini"}.
{"Choose storage type of tables","Elektu konserv-tipon de tabeloj"}.
{"Choose whether to approve this entity's subscription.","Elektu ĉu permesi la abonon de ĉi tiu ento"}.
{"City","Urbo"}.
{"Commands","Ordonoj"}.
{"Conference room does not exist","Babilejo ne ekzistas"}.
{"Configuration","Agordo"}.
{"Configuration of room ~s","Agordo de babilejo ~s"}.
{"Connected Resources:","Konektataj risurcoj:"}.
{"Connections parameters","Konekto-parametroj"}.
{"Country","Lando"}.
{"CPU Time:","CPU-tempo"}.
{"Database","Datumbazo"}.
{"Database Tables at ~p","Datumbaz-tabeloj je ~p"}.
{"Database Tables Configuration at ","Agordo de datumbaz-tabeloj je "}.
{"December","Decembro"}.
{"Default users as participants","Kutime farigu uzantojn kiel partpoprenantoj"}.
{"Delete message of the day","Forigu mesaĝo de la tago"}.
{"Delete message of the day on all hosts","Forigu mesaĝo de la tago je ĉiu gastigo"}.
{"Delete Selected","Forigu elektata(j)n"}.
{"Delete User","Forigu Uzanton"}.
{"Deliver event notifications","Liveru event-sciigojn"}.
{"Deliver payloads with event notifications","Liveru aĵojn de event-sciigoj"}.
{"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 Multicast service","ejabberd Multicast-servo"}.
{"ejabberd Publish-Subscribe module","ejabberd Public-Abonada modulo"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bajtfluo modulo"}.
{"ejabberd vCard module","ejabberd vCard-modulo"}.
{"ejabberd Web Admin","ejabberd Teksaĵa Administro"}.
{"Elements","Eroj"}.
{"Email","Retpoŝto"}.
{"Enable logging","Ŝaltu protokoladon"}.
{"Enable message archiving","Ŝaltu mesaĝo-arkivo"}.
{"Encoding for server ~b","Enkodigo por servilo ~b"}.
{"End User Session","Haltigu Uzant-seancon"}.
{"Enter list of {Module, [Options]}","Enmetu liston de {Modulo, [Elektebloj]}"}.
{"Enter nickname you want to register","Enmetu kaŝnomon kiun vi volas registri"}.
{"Enter path to backup file","Enmetu vojon por sekurkopio"}.
{"Enter path to jabberd14 spool dir","Enmetu vojon al jabberd14-uzantdosierujo"}.
{"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 enkodigojn 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 all tables as SQL queries to a file:","Eksportu ĉiuj tabeloj kiel SQL-informmendo al dosierujo:"}.
{"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"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Kompletigu la formon por serĉi rekonata Jabber-uzanto (Aldonu * je la fino de la kampo por rekoni subĉenon"}.
{"Friday","Vendredo"}.
{"From","De"}.
{"From ~s","De ~s"}.
{"Full Name","Plena Nomo"}.
{"Get Number of Online Users","Montru nombron de konektataj uzantoj"}.
{"Get Number of Registered Users","Montru nombron de registritaj uzantoj"}.
{"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"}.
{"has been kicked because of an affiliation change","estas forpelita pro aparteneca ŝanĝo"}.
{"has been kicked because of a system shutdown","estas forpelita pro sistem-haltigo"}.
{"has been kicked because the room has been changed to members-only","estas forpelita ĉar la babilejo fariĝis sole por membroj"}.
{"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"}.
{"Import user data from jabberd14 spool file:","Importu uzantojn de jabberd14-uzantdosieroj"}.
{"Import User from File at ","Importu uzanton de dosiero el "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Importu uzanto-datumojn de PIEFXIS dosiero (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","Importu uzantojn de jabberd14-uzantdosieroj"}.
{"Import Users from Dir at ","Importu uzantojn de dosierujo ĉe "}.
{"Import Users From jabberd14 Spool Files","Importu uzantojn de jabberd14-uzantdosieroj"}.
{"Improper message type","Malĝusta mesaĝo-tipo"}.
{"Incorrect password","Nekorekta pasvorto"}.
{"Invalid affiliation: ~s","Nevalida aparteneco: ~s"}.
{"Invalid role: ~s","Nevalida rolo: ~s"}.
{"IP addresses","IP-adresoj"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","IRC-babilejo (ne aldonu #-prefikson)"}.
{"IRC server","IRC-servilo"}.
{"IRC settings","IRC agordoj"}.
{"IRC Transport","IRC-transportilo"}.
{"IRC Username","IRC-kaŝnomo"}.
{"IRC username","IRC-uzantnomo"}.
{"is now known as","nun nomiĝas"}.
{"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"}.
{"Join IRC channel","Eniras IRC-babilejon"}.
{"joins the room","eniras la babilejo"}.
{"Join the IRC channel here.","Eniru IRC-babilejon jen"}.
{"Join the IRC channel in this Jabber ID: ~s","Eniru IRC-babilejon en ĉi Jabber-ID: ~s"}.
{"July","Julio"}.
{"June","Junio"}.
{"Last Activity","Lasta aktiveco"}.
{"Last login","Lasta ensaluto"}.
{"Last month","Lasta monato"}.
{"Last year","Lasta jaro"}.
{"leaves the room","eliras la babilejo"}.
{"Listened Ports at ","Atentataj pordoj je "}.
{"Listened Ports","Atentataj pordoj"}.
{"List of modules to start","Listo de moduloj por starti"}.
{"List of rooms","Listo de babilejoj"}.
{"Low level update script","Bazanivela ĝisdatigo-skripto"}.
{"Make participants list public","Farigu partoprento-liston publika"}.
{"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"}.
{"Make room persistent","Farigu babilejon daŭra"}.
{"Make room public searchable","Farigu babilejon publike trovebla"}.
{"March","Marĉo"}.
{"Maximum Number of Occupants","Limigo de nombro de partoprenantoj"}.
{"Max # of items to persist","Maksimuma kiomo de eroj en konservado"}.
{"Max payload size in bytes","Maksimuma aĵo-grando je bajtoj"}.
{"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"}.
{"Module","Modulo"}.
{"Modules at ~p","Moduloj je ~p"}.
{"Modules","Moduloj"}.
{"Monday","Lundo"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Grupbabilado"}.
{"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"}.
{"Node not found","Nodo ne trovita"}.
{"Node ~p","Nodo ~p"}.
{"Nodes","Nodoj"}.
{"No limit","Neniu limigo"}.
{"None","Nenio"}.
{"No resource provided","Neniu risurco donita"}.
{"Not Found","Ne trovita"}.
{"Notify subscribers when items are removed from the node","Sciigu abonantoj kiam eroj estas forigita de la nodo"}.
{"Notify subscribers when the node configuration changes","Sciigu abonantoj kiam la agordo de la nodo ŝanĝas"}.
{"Notify subscribers when the node is deleted","Sciigu abonantoj kiam la nodo estas forigita"}.
{"November","Novembro"}.
{"Number of occupants","Nombro de ĉeestantoj"}.
{"Number of online users","Nombro de konektataj uzantoj"}.
{"Number of registered users","Nombro de registritaj uzantoj"}.
{"October","Oktobro"}.
{"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"}.
{"Options","Elektebloj"}.
{"Organization Name","Organiz-nomo"}.
{"Organization Unit","Organiz-parto"}.
{"Outgoing s2s Connections:","Elirantaj s-al-s-konektoj:"}.
{"Outgoing s2s Connections","Elirantaj s-al-s-konektoj"}.
{"Owner privileges required","Mastraj rajtoj bezonata"}.
{"Packet","Pakaĵo"}.
{"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"}.
{"Pending","Atendanta"}.
{"Period: ","Periodo: "}.
{"Permanent rooms","Permanentaj babilejoj"}.
{"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"}.
{"Present real Jabber IDs to","Montru verajn Jabber ID-ojn al"}.
{"private, ","privata, "}.
{"Protocol","Protokolo"}.
{"Publish-Subscribe","Public-Abonado"}.
{"PubSub subscriber request","PubAbo abonpeto"}.
{"Purge all items when the relevant publisher goes offline","Forigu ĉiujn erojn kiam la rilata publikanto malkonektiĝas"}.
{"Queries to the conference members are not allowed in this room","Malpermesas informmendoj al partoprenantoj en ĉi tiu babilejo"}.
{"RAM and disc copy","RAM- kaj disk-kopio"}.
{"RAM copy","RAM-kopio"}.
{"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 nicknames","Registritaj uzantnomoj"}.
{"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"}.
{"Remove","Forigu"}.
{"Remove User","Forigu uzanton"}.
{"Replaced by new connection","Anstataŭigita je nova konekto"}.
{"Resources","Risurcoj"}.
{"Restart","Restartu"}.
{"Restart Service","Restartu Servon"}.
{"Restore Backup from File at ","Restaŭrigu de dosiero el "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaŭrigu duuman sekurkopion post sekvonta ejabberd-restarto"}.
{"Restore binary backup immediately:","Restaŭrigu duuman sekurkopion tuj:"}.
{"Restore plain text backup immediately:","Restaŭrigu sekurkopion el plata tekstdosiero tuj"}.
{"Restore","Restaŭru"}.
{"Room Configuration","Babilejo-agordo"}.
{"Room creation is denied by service policy","Ĉi tiu serv-politiko ne permesas babilejo-kreadon"}.
{"Room description","Babilejo-priskribo"}.
{"Room Occupants","Nombro de ĉeestantoj"}.
{"Room title","Babilejo-nomo"}.
{"Roster groups allowed to subscribe","Kontaktlist-grupoj kiuj rajtas aboni"}.
{"Roster","Kontaktlisto"}.
{"Roster of ","Kontaktlisto de "}.
{"Roster size","Kontaktlist-grando"}.
{"RPC Call Error","Eraro de RPC-alvoko"}.
{"Running Nodes","Funkciantaj Nodoj"}.
{"~s access rule configuration","Agordo de atingo-reguloj de ~s"}.
{"Saturday","Sabato"}.
{"Script check","Skript-kontrolo"}.
{"Search Results for ","Serĉ-rezultoj de "}.
{"Search users in ","Serĉu uzantojn en "}.
{"Send announcement to all online users on all hosts","Sendu anoncon al ĉiu konektata uzanto de ĉiu gastigo"}.
{"Send announcement to all online users","Sendu anoncon al ĉiu konektata uzanto"}.
{"Send announcement to all users on all hosts","Sendu anoncon al ĉiu uzanto de ĉiu gastigo"}.
{"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"}.
{"Show Integral Table","Montru integran tabelon"}.
{"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 the computer, but you should do this only in your personal computer for safety reasons.","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"}.
{"~s's Offline Messages Queue","Mesaĝo-atendovico de ~s"}.
{"Start Modules at ","Startu modulojn je "}.
{"Start Modules","Startu Modulojn"}.
{"Start","Startu"}.
{"Statistics of ~p","Statistikoj de ~p"}.
{"Statistics","Statistikoj"}.
{"Stop","Haltigu"}.
{"Stop Modules at ","Haltigu modulojn je "}.
{"Stop Modules","Haltigu Modulojn"}.
{"Stopped Nodes","Neaktivaj Nodoj"}.
{"Storage Type","Konserv-tipo"}.
{"Store binary backup:","Konservu duuman sekurkopion:"}.
{"Store plain text backup:","Skribu sekurkopion en plata tekstdosiero"}.
{"Subject","Temo"}.
{"Submit","Sendu"}.
{"Submitted","Sendita"}.
{"Subscriber Address","Abonanta adreso"}.
{"Subscription","Abono"}.
{"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 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 IP address is blacklisted in ~s","Ĉi tiu IP-adreso estas barata in ~s"}.
{"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."}.
{"Thursday","Ĵaŭdo"}.
{"Time delay","Prokrasto"}.
{"Time","Tempo"}.
{"To","Ĝis"}.
{"Too many CAPTCHA requests","Tro multaj CAPTCHA-petoj"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Tro da malsukcesaj aŭtentprovoj (~p) de ĉi tiu IP-adreso (~s). La adreso estos malbarata je ~s UTC."}.
{"Too many unacked stanzas","Tro da neagnoskitaj stancoj"}.
{"To ~s","Al ~s"}.
{"Total rooms","Babilejoj"}.
{"Traffic rate limit is exceeded","Trafikrapida limigo superita"}.
{"Transactions Aborted:","Transakcioj nuligitaj"}.
{"Transactions Committed:","Transakcioj enmetitaj"}.
{"Transactions Logged:","Transakcioj protokolitaj"}.
{"Transactions Restarted:","Transakcioj restartitaj"}.
{"Tuesday","Mardo"}.
{"Unable to generate a CAPTCHA","Ne eblis krei CAPTCHA"}.
{"Unauthorized","Nepermesita"}.
{"Unregister a Jabber account","Malregistru Ĵabber-konton"}.
{"Unregister","Malregistru"}.
{"Update","Ĝisdatigu"}.
{"Update message of the day (don't send)","Ŝanĝu mesaĝon de la tago (ne sendu)"}.
{"Update message of the day on all hosts (don't send)","Ŝanĝu mesaĝon de la tago je ĉiu gastigo (ne sendu)"}.
{"Update ~p","Ĝisdatigu ~p-n"}.
{"Update plan","Ĝisdatigo-plano"}.
{"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"}.
{"User ~s","Uzanto ~s"}.
{"User","Uzanto"}.
{"Validate","Validigu"}.
{"vCard User Search","Serĉado de vizitkartoj"}.
{"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"}.
-1938
View File
File diff suppressed because it is too large Load Diff
-440
View File
@@ -1,440 +0,0 @@
%% -*- coding: latin-1 -*-
{"Accept","Aceptar"}.
{"Access Configuration","Configuración de accesos"}.
{"Access Control List Configuration","Configuración de la Lista de Control de Acceso"}.
{"Access control lists","Listas de Control de Acceso"}.
{"Access Control Lists","Listas de Control de Acceso"}.
{"Access denied by service policy","Acceso denegado por la política del servicio"}.
{"Access rules","Reglas de acceso"}.
{"Access Rules","Reglas de Acceso"}.
{"Action on user","Acción en el usuario"}.
{"Add Jabber ID","Añadir Jabber ID"}.
{"Add New","Añadir nuevo"}.
{"Add User","Añadir usuario"}.
{"Administration","Administración"}.
{"Administration of ","Administración de "}.
{"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 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"}.
{"A password is required to enter this room","Se necesita contraseña para entrar en esta sala"}.
{"April","abril"}.
{"August","agosto"}.
{"Backup","Guardar copia de seguridad"}.
{"Backup Management","Gestión de copia de seguridad"}.
{"Backup of ~p","Copia de seguridad de ~p"}.
{"Backup to File at ","Guardar copia de seguridad en fichero en "}.
{"Bad format","Mal formato"}.
{"Birthday","Cumpleaños"}.
{"CAPTCHA web page","Página web de CAPTCHA"}.
{"Change Password","Cambiar contraseña"}.
{"Change User Password","Cambiar contraseña de usuario"}.
{"Characters not allowed:","Caracteres no permitidos:"}.
{"Chatroom configuration modified","Configuración de la sala modificada"}.
{"Chatroom is created","Se ha creado la sala"}.
{"Chatroom is destroyed","Se ha destruido la sala"}.
{"Chatroom is started","Se ha iniciado la sala"}.
{"Chatroom is stopped","Se ha detenido la sala"}.
{"Chatrooms","Salas de charla"}.
{"Choose a username and password to register with this server","Escoge un nombre de usuario y contraseña para registrarte en este servidor"}.
{"Choose modules to stop","Selecciona módulos a detener"}.
{"Choose storage type of tables","Selecciona tipo de almacenamiento de las tablas"}.
{"Choose whether to approve this entity's subscription.","Decidir si aprobar la subscripción de esta entidad."}.
{"City","Ciudad"}.
{"Commands","Comandos"}.
{"Conference room does not exist","La sala de conferencias no existe"}.
{"Configuration","Configuración"}.
{"Configuration of room ~s","Configuración para la sala ~s"}.
{"Connected Resources:","Recursos conectados:"}.
{"Connections parameters","Parámetros de conexiones"}.
{"Country","País"}.
{"CPU Time:","Tiempo consumido de CPU:"}.
{"Database","Base de datos"}.
{"Database Tables at ~p","Tablas de la base de datos en ~p"}.
{"Database Tables Configuration at ","Configuración de tablas de la base de datos en "}.
{"December","diciembre"}.
{"Default users as participants","Los usuarios son participantes por defecto"}.
{"Delete message of the day","Borrar mensaje del dia"}.
{"Delete message of the day on all hosts","Borrar el mensaje del día en todos los dominios"}.
{"Delete Selected","Eliminar los seleccionados"}.
{"Delete User","Borrar usuario"}.
{"Deliver event notifications","Entregar notificaciones de eventos"}.
{"Deliver payloads with event notifications","Enviar contenidos junto con las notificaciones de eventos"}.
{"Description:","Descripción:"}.
{"Disc only copy","Copia en disco solamente"}.
{"Displayed Groups:","Mostrar grupos:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","No le digas tu contraseña a nadie, ni siquiera a los administradores del servidor Jabber."}.
{"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 Multicast service","Servicio Multicast de ejabberd"}.
{"ejabberd Publish-Subscribe module","Módulo de Publicar-Subscribir de ejabberd"}.
{"ejabberd SOCKS5 Bytestreams module","Módulo SOCKS5 Bytestreams para ejabberd"}.
{"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","ejabberd Web Admin"}.
{"Elements","Elementos"}.
{"Email","correo"}.
{"Empty Rooms","Salas vacías"}.
{"Enable logging","Guardar históricos"}.
{"Enable message archiving","Activar el almacenamiento de mensajes"}.
{"Encoding for server ~b","Codificación del servidor ~b"}.
{"End User Session","Cerrar sesión de usuario"}.
{"Enter list of {Module, [Options]}","Introduce lista de {módulo, [opciones]}"}.
{"Enter nickname you want to register","Introduce el apodo que quieras registrar"}.
{"Enter path to backup file","Introduce ruta al fichero de copia de seguridad"}.
{"Enter path to jabberd14 spool dir","Introduce la ruta al directorio de jabberd14 spools"}.
{"Enter path to jabberd14 spool file","Introduce ruta al fichero jabberd14 spool"}.
{"Enter path to text file","Introduce ruta al fichero de texto"}.
{"Enter the text you see","Teclea el texto que ves"}.
{"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.","Introduce el nombre de usuario y codificaciones de carácteres que quieras usar al conectar en los servidores de IRC. Pulsa Siguiente para conseguir más campos en el formulario. Pulsa Completar para guardar las opciones."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Introduce el nombre de usuario, codificaciones de carácteres, puertos y contraseñas que quieras usar al conectar en los servidores de IRC"}.
{"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 all tables as SQL queries to a file:","Exportar todas las tablas a un fichero SQL:"}.
{"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"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Rellena el formulario para buscar usuarios Jabber. Añade * al final de un campo para buscar subcadenas."}.
{"Friday","viernes"}.
{"From","De"}.
{"From ~s","De ~s"}.
{"Full Name","Nombre completo"}.
{"Get Number of Online Users","Ver número de usuarios conectados"}.
{"Get Number of Registered Users","Ver número de usuarios registrados"}.
{"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"}.
{"has been kicked because of an affiliation change","ha sido expulsado por un cambio de su afiliación"}.
{"has been kicked because of a system shutdown","ha sido expulsado porque el sistema se va a detener"}.
{"has been kicked because the room has been changed to members-only","ha sido expulsado porque la sala es ahora solo para miembros"}.
{"has been kicked","ha sido expulsado"}.
{" has set the subject to: "," ha puesto el asunto: "}.
{"Host","Dominio"}.
{"If you don't see the CAPTCHA image here, visit the web page.","Si no ves la imagen CAPTCHA aquí, 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 quieres especificar distintos codificaciones de carácteres, contraseñas o puertos para cada servidor IRC rellena esta lista con valores en el formato '{\"servidor irc\", \"codificación\", \"puerto\", \"contrasela\"}'. Este servicio usa por defecto la codificación \"~s\", puerto ~p, sin contraseña."}.
{"Import Directory","Importar directorio"}.
{"Import File","Importar fichero"}.
{"Import user data from jabberd14 spool file:","Importar usuario de fichero spool de jabberd14:"}.
{"Import User from File at ","Importa usuario desde fichero en "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Importar usuarios desde un fichero PIEFXIS (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","Importar usuarios del directorio spool de jabberd14:"}.
{"Import Users from Dir at ","Importar usuarios desde el directorio en "}.
{"Import Users From jabberd14 Spool Files","Importar usuarios de ficheros spool de jabberd-1.4"}.
{"Improper message type","Tipo de mensaje incorrecto"}.
{"Incoming s2s Connections:","Conexiones S2S entrantes:"}.
{"Incorrect password","Contraseña incorrecta"}.
{"Invalid affiliation: ~s","Afiliación no válida: ~s"}.
{"Invalid role: ~s","Rol no válido: ~s"}.
{"IP addresses","Direcciones IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","Canal IRC (no pongas el # del principio)"}.
{"IRC server","Servidor IRC"}.
{"IRC settings","Opciones de IRC"}.
{"IRC Transport","Transporte de IRC"}.
{"IRC username","Nombre de usuario en IRC"}.
{"IRC Username","Nombre de usuario en IRC"}.
{"is now known as","se cambia el nombre a"}.
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","No está permitido enviar mensajes de error a la sala. Este participante (~s) ha enviado un mensaje de error (~s) y fue expulsado de la sala"}.
{"It is not allowed to send private messages","No está permitido enviar mensajes privados"}.
{"It is not allowed to send private messages of type \"groupchat\"","No está permitido enviar mensajes privados del tipo \"groupchat\""}.
{"It is not allowed to send private messages to the conference","Impedir el envio de mensajes privados a la sala"}.
{"Jabber Account Registration","Registro de Cuenta Jabber"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","El Jabber ID ~s no es válido"}.
{"January","enero"}.
{"Join IRC channel","Entrar en canal IRC"}.
{"joins the room","entra en la sala"}.
{"Join the IRC channel here.","Entrar en el canal de IRC aquí"}.
{"Join the IRC channel in this Jabber ID: ~s","Entra en el canal de IRC en esta dirección Jabber: ~s"}.
{"July","julio"}.
{"June","junio"}.
{"Last Activity","Última actividad"}.
{"Last login","Última conexión"}.
{"Last month","Último mes"}.
{"Last year","Último año"}.
{"leaves the room","sale de la sala"}.
{"Listened Ports at ","Puertos de escucha en "}.
{"Listened Ports","Puertos de escucha"}.
{"List of modules to start","Lista de módulos a iniciar"}.
{"List of rooms","Lista de salas"}.
{"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 members-only","Sala sólo para miembros"}.
{"Make room moderated","Sala moderada"}.
{"Make room password protected","Proteger la sala con contraseña"}.
{"Make room persistent","Sala permanente"}.
{"Make room public searchable","Sala públicamente visible"}.
{"March","marzo"}.
{"Maximum Number of Occupants","Número máximo de ocupantes"}.
{"Max # of items to persist","Máximo # de elementos que persisten"}.
{"Max payload size in bytes","Máximo tamaño del contenido en bytes"}.
{"May","mayo"}.
{"Membership is required to enter this room","Necesitas ser miembro de esta sala para poder entrar"}.
{"Members:","Miembros:"}.
{"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.","Memoriza tu contraseña, o apúntala en un papel en un lugar seguro. En Jabber no hay un método automatizado para recuperar la contraseña si la olvidas."}.
{"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","Moderador"}.
{"Moderator privileges required","Se necesita privilegios de moderador"}.
{"moderators only","solo moderadores"}.
{"Modified modules","Módulos modificados"}.
{"Module","Módulo"}.
{"Modules at ~p","Módulos en ~p"}.
{"Modules","Módulos"}.
{"Monday","lunes"}.
{"Multicast","Multicast"}.
{"Multi-User Chat","Salas de Charla"}.
{"Name:","Nombre:"}.
{"Name","Nombre"}.
{"Never","Nunca"}.
{"New Password:","Nueva contraseña:"}.
{"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"}.
{"Node not found","Nodo no encontrado"}.
{"Node ~p","Nodo ~p"}.
{"Nodes","Nodos"}.
{"No limit","Sin límite"}.
{"None","Ninguno"}.
{"No resource provided","No se ha proporcionado recurso"}.
{"Not Found","No encontrado"}.
{"Notify subscribers when items are removed from the node","Notificar subscriptores cuando los elementos se borran del nodo"}.
{"Notify subscribers when the node configuration changes","Notificar subscriptores cuando cambia la configuración del nodo"}.
{"Notify subscribers when the node is deleted","Notificar subscriptores cuando el nodo se borra"}.
{"November","noviembre"}.
{"Number of occupants","Número de ocupantes"}.
{"Number of online users","Número de usuarios conectados"}.
{"Number of registered users","Número de usuarios registrados"}.
{"October","octubre"}.
{"Offline Messages:","Mensajes diferidos:"}.
{"Offline Messages","Mensajes diferidos"}.
{"OK","Aceptar"}.
{"Old Password:","Contraseña antigua:"}.
{"Online","Conectado"}.
{"Online Users:","Usuarios conectados:"}.
{"Online Users","Usuarios conectados"}.
{"Only deliver notifications to available users","Solo enviar notificaciones a los usuarios disponibles"}.
{"Only members may query archives of this room","Solo miembros pueden consultar el archivo de mensajes de la sala"}.
{"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"}.
{"Options","Opciones"}.
{"Organization Name","Nombre de la organización"}.
{"Organization Unit","Unidad de la organización"}.
{"Outgoing s2s Connections:","Conexiones S2S salientes:"}.
{"Outgoing s2s Connections","Conexiones S2S salientes"}.
{"Owner privileges required","Se requieren privilegios de propietario de la sala"}.
{"Packet","Paquete"}.
{"Participant","Participante"}.
{"Password ~b","Contraseña ~b"}.
{"Password:","Contraseña:"}.
{"Password","Contraseña"}.
{"Password Verification:","Verificación de la contraseña:"}.
{"Password Verification","Verificación de la contraseña"}.
{"Path to Dir","Ruta al directorio"}.
{"Path to File","Ruta al fichero"}.
{"Pending","Pendiente"}.
{"Period: ","Periodo: "}.
{"Permanent rooms","Salas permanentes"}.
{"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 specify file name.","Por favor especifica el nombre del fichero."}.
{"Please specify file size.","Por favor especifica el tamaño del fichero."}.
{"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"}.
{"Present real Jabber IDs to","Los Jabber ID reales pueden verlos"}.
{"private, ","privado"}.
{"Protocol","Protocolo"}.
{"Publish-Subscribe","Servicio de Publicar-Subscribir"}.
{"PubSub subscriber request","Petición de subscriptor de PubSub"}.
{"Purge all items when the relevant publisher goes offline","Borra todos los elementos cuando el publicador relevante se desconecta"}.
{"Queries to the conference members are not allowed in this room","En esta sala no se permiten solicitudes a los miembros de la sala"}.
{"RAM and disc copy","Copia en RAM y disco"}.
{"RAM copy","Copia en RAM"}.
{"Raw","Crudo"}.
{"Really delete message of the day?","¿Está seguro de quere borrar el mensaje del dia?"}.
{"Recipient is not in the conference room","El receptor no está en la sala de conferencia"}.
{"Register a Jabber account","Registrar una cuenta Jabber"}.
{"Registered nicknames","Apodos registrados"}.
{"Registered Users:","Usuarios registrados:"}.
{"Registered Users","Usuarios registrados"}.
{"Register","Registrar"}.
{"Registration in mod_irc for ","Registro en mod_irc para"}.
{"Remote copy","Copia remota"}.
{"Remove All Offline Messages","Borrar todos los mensajes diferidos"}.
{"Remove","Borrar"}.
{"Remove User","Eliminar usuario"}.
{"Replaced by new connection","Reemplazado por una nueva conexión"}.
{"Resources","Recursos"}.
{"Restart","Reiniciar"}.
{"Restart Service","Reiniciar el servicio"}.
{"Restore Backup from File at ","Restaura copia de seguridad desde el fichero en "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar copia de seguridad binaria en el siguiente reinicio de ejabberd (requiere menos memoria que si instantánea):"}.
{"Restore binary backup immediately:","Restaurar inmediatamente copia de seguridad binaria:"}.
{"Restore plain text backup immediately:","Restaurar copias de seguridad de texto plano inmediatamente:"}.
{"Restore","Restaurar"}.
{"Roles for which Presence is Broadcasted","Roles para los que sí se difunde su Presencia"}.
{"Room Configuration","Configuración de la sala"}.
{"Room creation is denied by service policy","Se te ha denegado crear la sala por política del servicio"}.
{"Room description","Descripción de la sala"}.
{"Room Occupants","Ocupantes de la sala"}.
{"Room title","Título de la sala"}.
{"Roster groups allowed to subscribe","Grupos de contactos que pueden suscribirse"}.
{"Roster","Lista de contactos"}.
{"Roster of ","Lista de contactos de "}.
{"Roster size","Tamaño de la lista de contactos"}.
{"RPC Call Error","Error en la llamada RPC"}.
{"Running Nodes","Nodos funcionando"}.
{"~s access rule configuration","Configuración de las Regla de Acceso ~s"}.
{"Saturday","sábado"}.
{"Script check","Comprobación de script"}.
{"Search Results for ","Buscar resultados por "}.
{"Search users in ","Buscar usuarios en "}.
{"Send announcement to all online users","Enviar anuncio a todos los usuarios conectados"}.
{"Send announcement to all online users on all hosts","Enviar anuncio a todos los usuarios conectados en todos los dominios"}.
{"Send announcement to all users","Enviar anuncio a todos los usuarios"}.
{"Send announcement to all users on all hosts","Enviar anuncio a todos los usuarios en todos los dominios"}.
{"September","septiembre"}.
{"Server ~b","Servidor ~b"}.
{"Server:","Servidor:"}.
{"Server","Servidor"}.
{"Set message of the day and send to online users","Poner mensaje del dia y enviar a todos los usuarios conectados"}.
{"Set message of the day on all hosts and send to online users","Poner mensaje del día en todos los dominios y enviar a los usuarios conectados"}.
{"Shared Roster Groups","Grupos Compartidos"}.
{"Show Integral Table","Mostrar Tabla Integral"}.
{"Show Ordinary Table","Mostrar Tabla Ordinaria"}.
{"Shut Down Service","Detener el servicio"}.
{"~s invites you to the room ~s","~s te invita a la sala ~s"}.
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Algunos clientes Jabber pueden recordar tu contraseña en la máquina. Usa esa opción solo si confías en que la máquina que usas es segura."}.
{"Specify the access model","Especifica el modelo de acceso"}.
{"Specify the event message type","Especifica el tipo del mensaje de evento"}.
{"Specify the publisher model","Especificar el modelo del publicante"}.
{"~s's Offline Messages Queue","Cola de mensajes diferidos de ~s"}.
{"Start","Iniciar"}.
{"Start Modules at ","Iniciar módulos en "}.
{"Start Modules","Iniciar módulos"}.
{"Statistics","Estadísticas"}.
{"Statistics of ~p","Estadísticas de ~p"}.
{"Stop","Detener"}.
{"Stop Modules at ","Detener módulos en "}.
{"Stop Modules","Detener módulos"}.
{"Stopped Nodes","Nodos detenidos"}.
{"Storage Type","Tipo de almacenamiento"}.
{"Store binary backup:","Guardar copia de seguridad binaria:"}.
{"Store plain text backup:","Guardar copia de seguridad en texto plano:"}.
{"Subject","Asunto"}.
{"Submit","Enviar"}.
{"Submitted","Enviado"}.
{"Subscriber Address","Dirección del subscriptor"}.
{"Subscription","Subscripción"}.
{"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 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"}.
{"The password is too weak","La contraseña es demasiado débil"}.
{"The password of your Jabber account was successfully changed.","La contraseña de tu cuenta Jabber se ha cambiado correctamente."}.
{"There was an error changing the password: ","Hubo un error cambiando la contraseña."}.
{"There was an error creating the account: ","Hubo uno error al crear la cuenta:"}.
{"There was an error deleting the account: ","Hubo un error borrando la cuenta."}.
{"This IP address is blacklisted in ~s","Esta dirección IP está en la lista negra en ~s"}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","No importa si usas mayúsculas: macbeth es lo mismo que MacBeth y 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.","Esta página te permite crear una cuenta Jabber este servidor Jabber. Tu JID (Jabber IDentificador) será de la forma: nombredeusuario@servidor. Por favor lee detenidamente las instrucciones para rellenar correctamente los campos."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Esta página te permite borrar tu cuenta Jabber en este servidor Jabber."}.
{"Thursday","jueves"}.
{"Time delay","Retraso temporal"}.
{"Time","Fecha"}.
{"Too many CAPTCHA requests","Demasiadas peticiones de CAPTCHA"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Demasiadas (~p) autenticaciones fallidas de esta dirección IP (~s). La dirección será desbloqueada en ~s UTC"}.
{"Too many unacked stanzas","Demasiados mensajes sin haber reconocido recibirlos"}.
{"To","Para"}.
{"To ~s","A ~s"}.
{"Total rooms","Salas totales"}.
{"Traffic rate limit is exceeded","Se ha exedido el límite de tráfico"}.
{"Transactions Aborted:","Transacciones abortadas:"}.
{"Transactions Committed:","Transacciones finalizadas:"}.
{"Transactions Logged:","Transacciones registradas:"}.
{"Transactions Restarted:","Transacciones reiniciadas:"}.
{"Tuesday","martes"}.
{"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}.
{"Unauthorized","No autorizado"}.
{"Unregister a Jabber account","Borrar una cuenta Jabber"}.
{"Unregister","Borrar"}.
{"Update","Actualizar"}.
{"Update message of the day (don't send)","Actualizar mensaje del dia, pero no enviarlo"}.
{"Update message of the day on all hosts (don't send)","Actualizar el mensaje del día en todos los dominos (pero no enviarlo)"}.
{"Update ~p","Actualizar ~p"}.
{"Update plan","Plan de actualización"}.
{"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"}.
{"Users Last Activity","Última actividad de los usuarios"}.
{"User ~s","Usuario ~s"}.
{"Users","Usuarios"}.
{"User","Usuario"}.
{"Validate","Validar"}.
{"vCard User Search","Buscar vCard de usuario"}.
{"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"}.
{"Visitor","Visitante"}.
{"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"}.
{"You can later change your password using a Jabber client.","Puedes cambiar tu contraseña después, usando un cliente Jabber."}.
{"You have been banned from this room","Has sido bloqueado en esta sala"}.
{"You must fill in field \"Nickname\" in the form","Debes rellenar el campo \"Apodo\" en el formulario"}.
{"You need a client that supports x:data and CAPTCHA to register","Necesitas un cliente con soporte de x:data y CAPTCHA para registrarte"}.
{"You need a client that supports x:data to register the nickname","Necesitas un cliente con soporte de x:data para poder registrar el apodo"}.
{"You need an x:data capable client to configure mod_irc settings","Necesitas un cliente con soporte de x:data para configurar las opciones de mod_irc"}.
{"You need an x:data capable client to configure room","Necesitas un cliente con soporte de x:data para configurar la sala"}.
{"You need an x:data capable client to search","Necesitas un cliente con soporte de x:data para poder buscar"}.
{"Your active privacy list has denied the routing of this stanza.","Tu lista de privacidad activa ha denegado el encío de este paquete."}.
{"Your contact offline message queue is full. The message has been discarded.","Tu cola de mensajes diferidos de contactos está llena. El mensaje se ha descartado."}.
{"Your Jabber account was successfully created.","Tu cuenta Jabber se ha creado correctamente."}.
{"Your Jabber account was successfully deleted.","Tu cuenta Jabber se ha borrado correctamente."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Tus mensajes a ~s están siendo bloqueados. Para desbloquearlos, visita ~s"}.
-1931
View File
File diff suppressed because it is too large Load Diff
-423
View File
@@ -1,423 +0,0 @@
%% -*- coding: latin-1 -*-
{"Access Configuration","Configuration d'accès"}.
{"Access Control List Configuration","Configuration des droits (ACL)"}.
{"Access control lists","Droits (ACL)"}.
{"Access Control Lists","Droits (ACL)"}.
{"Access denied by service policy","L'accès au service est refusé"}.
{"Access rules","Règles d'accès"}.
{"Access Rules","Règles d'accès"}.
{"Action on user","Action sur l'utilisateur"}.
{"Add Jabber ID","Ajouter un Jabber ID"}.
{"Add New","Ajouter"}.
{"Add User","Ajouter un utilisateur"}.
{"Administration","Administration"}.
{"Administration of ","Administration de "}.
{"Administrator privileges required","Les droits d'administrateur sont nécessaires"}.
{"A friendly name for the node","Un nom convivial pour le noeud"}.
{"All activity","Toute activité"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Autoriser ce Jabber ID à s'abonner à ce nœud PubSub"}.
{"Allow users to change the subject","Autoriser les utilisateurs à changer le sujet"}.
{"Allow users to query other users","Permettre aux utilisateurs d'envoyer des requêtes aux autres utilisateurs"}.
{"Allow users to send invites","Permettre aux utilisateurs d'envoyer des invitations"}.
{"Allow users to send private messages","Autoriser les utilisateurs à envoyer des messages privés"}.
{"Allow visitors to change nickname","Autoriser les visiteurs à changer de pseudo"}.
{"Allow visitors to send private messages to","Autoriser les visiteurs à envoyer des messages privés"}.
{"Allow visitors to send status text in presence updates","Autoriser les visiteurs à envoyer un message d'état avec leur présence"}.
{"Allow visitors to send voice requests","Permettre aux visiteurs d'envoyer des demandes de 'voice'"}.
{"All Users","Tous les utilisateurs"}.
{"Announcements","Annonces"}.
{"anyone","tout le monde"}.
{"A password is required to enter this room","Un mot de passe est nécessaire pour accèder à ce salon"}.
{"April","Avril"}.
{"August","Août"}.
{"Backup Management","Gestion des sauvegardes"}.
{"Backup of ~p","Sauvegarde de ~p"}.
{"Backup","Sauvegarde"}.
{"Backup to File at ","Sauvegarde sur fichier sur "}.
{"Bad format","Mauvais format"}.
{"Birthday","Date d'anniversaire"}.
{"CAPTCHA web page","Page web de CAPTCHA"}.
{"Change Password","Modifier le mot de passe"}.
{"Change User Password","Changer le mot de passe de l'utilisateur"}.
{"Characters not allowed:","Caractères non-autorisés :"}.
{"Chatroom configuration modified","Configuration du salon modifiée"}.
{"Chatroom is created","Le salon de discussion est créé"}.
{"Chatroom is destroyed","Le salon de discussion est détruit"}.
{"Chatroom is started","Le salon de discussion a démarré"}.
{"Chatroom is stopped","Le salon de discussion est stoppé"}.
{"Chatrooms","Salons de discussion"}.
{"Choose a username and password to register with this server","Choisissez un nom d'utilisateur et un mot de passe pour s'enregistrer sur ce serveur"}.
{"Choose modules to stop","Sélectionnez les modules à arrêter"}.
{"Choose storage type of tables","Choisissez un type de stockage pour les tables"}.
{"Choose whether to approve this entity's subscription.","Accepter cet abonnement ?"}.
{"City","Ville"}.
{"Commands","Commandes"}.
{"Conference room does not exist","La salle de conférence n'existe pas"}.
{"Configuration","Configuration"}.
{"Configuration of room ~s","Configuration pour le salon ~s"}.
{"Connected Resources:","Ressources connectées:"}.
{"Connections parameters","Paramètres de connexion"}.
{"Country","Pays"}.
{"CPU Time:","Temps CPU :"}.
{"Database","Base de données"}.
{"Database Tables at ~p","Tables de base de données sur ~p"}.
{"Database Tables Configuration at ","Configuration des tables de base de données sur "}.
{"December","Décembre"}.
{"Default users as participants","Les utilisateurs sont par défaut participant"}.
{"Delete message of the day on all hosts","Supprimer le message du jour sur tous les domaines"}.
{"Delete message of the day","Supprimer le message du jour"}.
{"Delete Selected","Suppression des éléments sélectionnés"}.
{"Delete User","Supprimer l'utilisateur"}.
{"Deliver event notifications","Envoyer les notifications d'événement"}.
{"Deliver payloads with event notifications","Inclure le contenu du message avec la notification"}.
{"Description:","Description :"}.
{"Disc only copy","Copie sur disque uniquement"}.
{"Displayed Groups:","Groupes affichés :"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Ne révélez votre mot de passe à personne, pas même l'administrateur de ce serveur."}.
{"Dump Backup to Text File at ","Enregistrer la sauvegarde dans un fichier texte sur "}.
{"Dump to Text File","Sauvegarder dans un fichier texte"}.
{"Edit Properties","Modifier les propriétés"}.
{"Either approve or decline the voice request.","Approuver ou refuser la demande de 'voice'"}.
{"ejabberd IRC module","Module IRC ejabberd"}.
{"ejabberd MUC module","Module MUC ejabberd"}.
{"ejabberd Multicast service","Service de Multidiffusion d'ejabberd"}.
{"ejabberd Publish-Subscribe module","Module Publish-Subscribe d'ejabberd"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}.
{"ejabberd vCard module","Module vCard ejabberd"}.
{"ejabberd Web Admin","Console Web d'administration de ejabberd"}.
{"Elements","Éléments"}.
{"Email","Email"}.
{"Enable logging","Activer l'archivage"}.
{"Enable message archiving","Activer l'archivage de messages"}.
{"Encoding for server ~b","Codage pour le serveur ~b"}.
{"End User Session","Terminer la session de l'utilisateur"}.
{"Enter list of {Module, [Options]}","Entrez une liste de {Module, [Options]}"}.
{"Enter nickname you want to register","Entrez le pseudo que vous souhaitez enregistrer"}.
{"Enter path to backup file","Entrez le chemin vers le fichier de sauvegarde"}.
{"Enter path to jabberd14 spool dir","Entrez le chemin vers le répertoire de spool jabberd14"}.
{"Enter path to jabberd14 spool file","Entrez le chemin vers le fichier spool jabberd14"}.
{"Enter path to text file","Entrez le chemin vers le fichier texte"}.
{"Enter the text you see","Tapez le texte que vous voyez"}.
{"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.","Entrez le nom d'utilisateur et les encodages que vous souhaitez utiliser pour vous connecter aux serveurs IRC. Appuyez sur 'Suivant' pour pour avoir d'autres champs à remplir. Appuyez sur 'Terminer' pour sauver les paramètres."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Entrez le nom d'utilisateur, les encodages, les ports et mots de passe que vous souhaitez utiliser pour vous connecter aux serveurs IRC"}.
{"Erlang Jabber Server","Serveur Jabber Erlang"}.
{"Error","Erreur"}.
{"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","Exempter des Jabberd IDs du test CAPTCHA"}.
{"Export all tables as SQL queries to a file:","Exporter toutes les tables en tant que requêtes SQL vers un fichier:"}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exporter les données de tous les utilisateurs du serveur vers un fichier PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exporter les données utilisateurs d'un hôte vers un fichier PIEFXIS (XEP-0227):"}.
{"Family Name","Nom de famille"}.
{"February","Février"}.
{"Fill in fields to search for any matching Jabber User","Remplissez les champs pour rechercher un utilisateur Jabber"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Remplissez le formulaire pour recherche un utilisateur Jabber (Ajouter * à la fin du champ pour chercher n'importe quelle fin de chaîne"}.
{"Friday","Vendredi"}.
{"From","De"}.
{"From ~s","De ~s"}.
{"Full Name","Nom complet"}.
{"Get Number of Online Users","Récupérer le nombre d'utilisateurs en ligne"}.
{"Get Number of Registered Users","Récupérer le nombre d'utilisateurs enregistrés"}.
{"Get User Last Login Time","Récupérer la dernière date de connexion de l'utilisateur"}.
{"Get User Password","Récupérer le mot de passe de l'utilisateur"}.
{"Get User Statistics","Récupérer les statistiques de l'utilisateur"}.
{"Grant voice to this person?","Accorder 'voice' à cet utilisateur"}.
{"Group ","Groupe "}.
{"Groups","Groupes"}.
{"has been banned","a été banni"}.
{"has been kicked","a été expulsé"}.
{"has been kicked because of an affiliation change","a été éjecté à cause d'un changement d'autorisation"}.
{"has been kicked because of a system shutdown","a été éjecté en raison de l'arrêt du système"}.
{"has been kicked because the room has been changed to members-only","a été éjecté car la salle est désormais réservée aux membres"}.
{" has set the subject to: "," a changé le sujet pour: "}.
{"Host","Serveur"}.
{"If you don't see the CAPTCHA image here, visit the web page.","SI vous ne voyez pas l'image CAPTCHA ici, visitez la page 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 vous voulez préciser différents ports, mots de passe, et encodages pour les serveurs IRC, remplissez cette liste avec des valeurs dans le format '{\"serveur irc\", \"encodage\", port, \"mot de passe\"}'. Par défaut ce service utilise l'encodage \"~s\", port ~p, mot de passe vide."}.
{"Import Directory","Importer une répertoire"}.
{"Import File","Importer un fichier"}.
{"Import user data from jabberd14 spool file:","Importer des utilisateurs depuis un fichier spool Jabberd 1.4:"}.
{"Import User from File at ","Importer un utilisateur depuis le fichier sur "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Importer les données utilisateurs à partir d'un fichier PIEFXIS (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","Importer des utilisateurs depuis un fichier spool Jabberd 1.4:"}.
{"Import Users from Dir at ","Importer des utilisateurs depuis le répertoire sur "}.
{"Import Users From jabberd14 Spool Files","Importer des utilisateurs depuis un fichier spool Jabberd 1.4"}.
{"Improper message type","Mauvais type de message"}.
{"Incorrect password","Mot de passe incorrect"}.
{"Invalid affiliation: ~s","Affiliation invalide : ~s"}.
{"Invalid role: ~s","Role invalide : ~s"}.
{"IP addresses","Adresses IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","Canal IRC (ne pas insérer le premier caractère #)"}.
{"IRC server","Serveur IRC"}.
{"IRC settings","Configuration IRC"}.
{"IRC Transport","Passerelle IRC"}.
{"IRC username","Nom d'utilisateur IRC"}.
{"IRC Username","Nom d'utilisateur IRC"}.
{"is now known as","est maintenant connu comme"}.
{"It is not allowed to send private messages","L'envoi de messages privés n'est pas autorisé"}.
{"It is not allowed to send private messages of type \"groupchat\"","Il n'est pas permis d'envoyer des messages privés de type \"groupchat\""}.
{"It is not allowed to send private messages to the conference","Il n'est pas permis d'envoyer des messages \"normaux\" à la conférence"}.
{"Jabber Account Registration","Enregistrement du Compte Jabber"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","Le Jabber ID ~s n'est pas valide"}.
{"January","Janvier"}.
{"Join IRC channel","Rejoindre un canal IRC"}.
{"joins the room","rejoint le salon"}.
{"Join the IRC channel here.","Rejoindre un canal IRC ici"}.
{"Join the IRC channel in this Jabber ID: ~s","Rejoindre un canal IRC avec ce Jabber ID: ~s"}.
{"July","Juillet"}.
{"June","Juin"}.
{"Last Activity","Dernière Activité"}.
{"Last login","Dernière connexion"}.
{"Last month","Dernier mois"}.
{"Last year","Dernière année"}.
{"leaves the room","quitte le salon"}.
{"Listened Ports at ","Ports ouverts sur "}.
{"Listened Ports","Ports ouverts"}.
{"List of modules to start","Liste des modules à démarrer"}.
{"List of rooms","Liste des salons"}.
{"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 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"}.
{"Make room persistent","Rendre le salon persistant"}.
{"Make room public searchable","Rendre le salon public"}.
{"March","Mars"}.
{"Maximum Number of Occupants","Nombre maximum d'occupants"}.
{"Max # of items to persist","Nombre maximum d'éléments à stocker"}.
{"Max payload size in bytes","Taille maximum pour le contenu du message en octet"}.
{"May","Mai"}.
{"Membership is required to enter this room","Vous devez être membre pour accèder à ce salon"}.
{"Members:","Membres :"}.
{"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.","Mémorisez votre mot de passe, ou écrivez-le sur un papier conservé dans un endroit secret. Dans Jabber il n'y a pas de mécanisme pour retrouver votre mot de passe si vous l'avez oublié."}.
{"Memory","Mémoire"}.
{"Message body","Corps du message"}.
{"Middle Name","Autre nom"}.
{"Minimum interval between voice requests (in seconds)","Intervalle minimum entre les demandes de 'voice' (en secondes)"}.
{"Moderator privileges required","Les droits de modérateur sont nécessaires"}.
{"moderators only","modérateurs seulement"}.
{"Modified modules","Modules mis à jour"}.
{"Module","Module"}.
{"Modules at ~p","Modules sur ~p"}.
{"Modules","Modules"}.
{"Monday","Lundi"}.
{"Multicast","Multidiffusion"}.
{"Multi-User Chat","Discussion de groupe"}.
{"Name:","Nom :"}.
{"Name","Nom"}.
{"Never","Jamais"}.
{"New Password:","Nouveau mot de passe:"}.
{"Nickname","Pseudo"}.
{"Nickname Registration at ","Enregistrement d'un pseudo sur "}.
{"Nickname ~s does not exist in the room","Le pseudo ~s n'existe pas dans ce salon"}.
{"nobody","personne"}.
{"No body provided for announce message","Pas de corps de message pour l'annonce"}.
{"No Data","Aucune information disponible"}.
{"Node ID","Identifiant du nœud"}.
{"Node not found","Noeud non trouvé"}.
{"Node ~p","Noeud ~p"}.
{"Nodes","Noeuds"}.
{"No limit","Pas de limite"}.
{"None","Aucun"}.
{"No resource provided","Aucune ressource fournie"}.
{"Not Found","Nœud non trouvé"}.
{"Notify subscribers when items are removed from the node","Avertir les abonnés lorsque des éléments sont supprimés sur le nœud"}.
{"Notify subscribers when the node configuration changes","Avertir les abonnés lorsque la configuration du nœud change"}.
{"Notify subscribers when the node is deleted","Avertir les abonnés lorsque le nœud est supprimé"}.
{"November","Novembre"}.
{"Number of occupants","Nombre d'occupants"}.
{"Number of online users","Nombre d'utilisateurs en ligne"}.
{"Number of registered users","Nombre d'utilisateurs enregistrés"}.
{"October","Octobre"}.
{"Offline Messages:","Messages en attente :"}.
{"Offline Messages","Messages en attente"}.
{"OK","OK"}.
{"Old Password:","Ancien mot de passe:"}.
{"Online","En ligne"}.
{"Online Users:","Utilisateurs connectés:"}.
{"Online Users","Utilisateurs en ligne"}.
{"Only deliver notifications to available users","Envoyer les notifications uniquement aux utilisateurs disponibles"}.
{"Only moderators and participants are allowed to change the subject in this room","Seuls les modérateurs et les participants peuvent changer le sujet dans ce salon"}.
{"Only moderators are allowed to change the subject in this room","Seuls les modérateurs peuvent changer le sujet dans ce salon"}.
{"Only occupants are allowed to send messages to the conference","Seuls les occupants peuvent envoyer des messages à la conférence"}.
{"Only occupants are allowed to send queries to the conference","Seuls les occupants sont autorisés à envoyer des requêtes à la conférence"}.
{"Only service administrators are allowed to send service messages","Seuls les administrateurs du service sont autoriser à envoyer des messages de service"}.
{"Options","Options"}.
{"Organization Name","Nom de l'organisation"}.
{"Organization Unit","Unité de l'organisation"}.
{"Outgoing s2s Connections:","Connexions s2s sortantes:"}.
{"Outgoing s2s Connections","Connexions s2s sortantes"}.
{"Owner privileges required","Les droits de propriétaire sont nécessaires"}.
{"Packet","Paquet"}.
{"Password ~b","Mot de passe ~b"}.
{"Password:","Mot de passe:"}.
{"Password","Mot de passe"}.
{"Password Verification:","Vérification du mot de passe :"}.
{"Password Verification","Vérification du mot de passe"}.
{"Path to Dir","Chemin vers le répertoire"}.
{"Path to File","Chemin vers le fichier"}.
{"Pending","En suspens"}.
{"Period: ","Période :"}.
{"Permanent rooms","Salons persistent"}.
{"Persist items to storage","Stockage persistant des éléments"}.
{"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.","Ces options sauvegardent uniquement la base de données interne Mnesia. Si vous utilisez le module ODBC vous devez sauvegarde votre base SQL séparément."}.
{"Pong","Pong"}.
{"Port ~b","Port ~b"}.
{"Port","Port"}.
{"Present real Jabber IDs to","Rendre le Jabber ID réel visible pour"}.
{"private, ","privé"}.
{"Protocol","Protocole"}.
{"Publish-Subscribe","Publication-Abonnement"}.
{"PubSub subscriber request","Demande d'abonnement PubSub"}.
{"Purge all items when the relevant publisher goes offline","Purger tous les items lorsque publieur est hors-ligne"}.
{"Queries to the conference members are not allowed in this room","Les requêtes sur les membres de la conférence ne sont pas autorisé dans ce salon"}.
{"RAM and disc copy","Copie en mémoire vive (RAM) et sur disque"}.
{"RAM copy","Copie en mémoire vive (RAM)"}.
{"Raw","Brut"}.
{"Really delete message of the day?","Confirmer la suppression du message du jour ?"}.
{"Recipient is not in the conference room","Le destinataire n'est pas dans la conférence"}.
{"Register a Jabber account","Enregistrer un compte Jabber"}.
{"Registered nicknames","Pseudos enregistrés"}.
{"Registered Users:","Utilisateurs enregistrés:"}.
{"Registered Users","Utilisateurs enregistrés"}.
{"Register","Enregistrer"}.
{"Registration in mod_irc for ","Enregistrement du mod_irc pour "}.
{"Remote copy","Copie distante"}.
{"Remove All Offline Messages","Effacer tous les messages hors ligne"}.
{"Remove","Enlever"}.
{"Remove User","Supprimer l'utilisateur"}.
{"Replaced by new connection","Remplacé par une nouvelle connexion"}.
{"Resources","Ressources"}.
{"Restart","Redémarrer"}.
{"Restart Service","Redémarrer le service"}.
{"Restore Backup from File at ","Restaurer la sauvegarde depuis le fichier sur "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restauration de la sauvegarde binaire après redémarrage (nécessite moins de mémoire):"}.
{"Restore binary backup immediately:","Restauration immédiate d'une sauvegarde binaire:"}.
{"Restore plain text backup immediately:","Restauration immédiate d'une sauvegarde texte:"}.
{"Restore","Restauration"}.
{"Room Configuration","Configuration du salon"}.
{"Room creation is denied by service policy","La création de salons est interdite par le service"}.
{"Room description","Description :"}.
{"Room Occupants","Occupants du salon"}.
{"Room title","Titre du salon"}.
{"Roster groups allowed to subscribe","Groupes de liste de contact autorisés à s'abonner"}.
{"Roster","Liste de contacts"}.
{"Roster of ","Liste de contact de "}.
{"Roster size","Taille de la liste de contacts"}.
{"RPC Call Error","Erreur d'appel RPC"}.
{"Running Nodes","Noeuds actifs"}.
{"~s access rule configuration","Configuration des règles d'accès ~s"}.
{"Saturday","Samedi"}.
{"Script check","Validation du script"}.
{"Search Results for ","Résultats de recherche pour "}.
{"Search users in ","Rechercher des utilisateurs "}.
{"Send announcement to all online users","Envoyer l'annonce à tous les utilisateurs en ligne"}.
{"Send announcement to all online users on all hosts","Envoyer l'annonce à tous les utilisateurs en ligne sur tous les serveurs"}.
{"Send announcement to all users","Envoyer l'annonce à tous les utilisateurs"}.
{"Send announcement to all users on all hosts","Envoyer une annonce à tous les utilisateurs de tous les domaines"}.
{"September","Septembre"}.
{"Server ~b","Serveur ~b"}.
{"Server:","Serveur :"}.
{"Set message of the day and send to online users","Définir le message du jour et l'envoyer aux utilisateurs en ligne"}.
{"Set message of the day on all hosts and send to online users","Définir le message du jour pour tous domaines et l'envoyer aux utilisateurs en ligne"}.
{"Shared Roster Groups","Groupes de liste de contacts partagée"}.
{"Show Integral Table","Montrer la table intégralement"}.
{"Show Ordinary Table","Montrer la table ordinaire"}.
{"Shut Down Service","Arrêter le service"}.
{"~s invites you to the room ~s","~s vous a invité dans la salle de discussion ~s"}.
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Certains clients Jabber peuvent stocker votre mot de passe sur votre ordinateur. N'utilisez cette fonctionnalité que si vous avez confiance en la sécurité de votre ordinateur."}.
{"Specify the access model","Définir le modèle d'accès"}.
{"Specify the event message type","Définir le type de message d'événement"}.
{"Specify the publisher model","Définir le modèle de publication"}.
{"~s's Offline Messages Queue","~s messages en file d'attente"}.
{"Start","Démarrer"}.
{"Start Modules at ","Démarrer les modules sur "}.
{"Start Modules","Modules de démarrage"}.
{"Statistics of ~p","Statistiques de ~p"}.
{"Statistics","Statistiques"}.
{"Stop","Arrêter"}.
{"Stop Modules at ","Arrêter les modules sur "}.
{"Stop Modules","Modules d'arrêt"}.
{"Stopped Nodes","Noeuds arrêtés"}.
{"Storage Type","Type de stockage"}.
{"Store binary backup:","Sauvegarde binaire:"}.
{"Store plain text backup:","Sauvegarde texte:"}.
{"Subject","Sujet"}.
{"Submit","Soumettre"}.
{"Submitted","Soumis"}.
{"Subscriber Address","Adresse de l'abonné"}.
{"Subscription","Abonnement"}.
{"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 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"}.
{"The password is too weak","Le mot de passe est trop faible"}.
{"The password of your Jabber account was successfully changed.","Le mot de passe de votre compte Jabber a été changé avec succès."}.
{"There was an error changing the password: ","Il y a eu une erreur en changeant le mot de passe :"}.
{"There was an error creating the account: ","Il y a eu une erreur en créant le compte :"}.
{"There was an error deleting the account: ","Il y a eu une erreur en effaçant le compte :"}.
{"This IP address is blacklisted in ~s","Cette adresse IP est blacklistée dans ~s"}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","C'est insensible à la casse : macbeth est identique à MacBeth et 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.","Cette page permet de créer un compte Jabber sur ce serveur Jabber. Votre JID (Jabber IDentifier, identifiant Jabber) sera de la forme : nom@serveur. Prière de lire avec attention les instructions pour remplir correctement ces champs."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Cette page permet d'effacer un compte Jabber sur ce serveur Jabber."}.
{"Thursday","Jeudi"}.
{"Time delay","Délais"}.
{"Time","Heure"}.
{"To","A"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Trop (~p) d'authentification ont échoué pour cette adresse IP (~s). L'adresse sera débloquée à ~s UTC"}.
{"Too many unacked stanzas","Trop de stanzas sans accusé de réception (ack)"}.
{"To ~s","A ~s"}.
{"Total rooms","Nombre de salons"}.
{"Traffic rate limit is exceeded","La limite de trafic a été dépassée"}.
{"Transactions Aborted:","Transactions annulées :"}.
{"Transactions Committed:","Transactions commitées :"}.
{"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"}.
{"Unauthorized","Non autorisé"}.
{"Unregister a Jabber account","Effacer un compte Jabber"}.
{"Unregister","Effacer"}.
{"Update message of the day (don't send)","Mise à jour du message du jour (pas d'envoi)"}.
{"Update message of the day on all hosts (don't send)","Mettre à jour le message du jour sur tous les domaines (ne pas envoyer)"}.
{"Update","Mettre à jour"}.
{"Update plan","Plan de mise à jour"}.
{"Update ~p","Mise à jour de ~p"}.
{"Update script","Script de mise à jour"}.
{"Uptime:","Temps depuis le démarrage :"}.
{"Use of STARTTLS required","L'utilisation de STARTTLS est impérative"}.
{"User JID","JID de l'utilisateur "}.
{"User Management","Gestion des utilisateurs"}.
{"Username:","Nom d'utilisateur :"}.
{"Users are not allowed to register accounts so quickly","Les utilisateurs ne sont pas autorisés à enregistrer des comptes si rapidement"}.
{"Users Last Activity","Dernière activité des utilisateurs"}.
{"User ~s","Utilisateur ~s"}.
{"Users","Utilisateurs"}.
{"User","Utilisateur"}.
{"Validate","Valider"}.
{"vCard User Search","Recherche dans l'annnuaire"}.
{"Virtual Hosts","Serveurs virtuels"}.
{"Visitors are not allowed to change their nicknames in this room","Les visiteurs ne sont pas autorisés à changer de pseudo dans ce salon"}.
{"Visitors are not allowed to send messages to all occupants","Les visiteurs ne sont pas autorisés à envoyer des messages à tout les occupants"}.
{"Voice request","Demande de 'voice'"}.
{"Wednesday","Mercredi"}.
{"When to send the last published item","A quel moment envoyer le dernier élément publié"}.
{"Whether to allow subscriptions","Autoriser l'abonnement ?"}.
{"You can later change your password using a Jabber client.","Vous pouvez changer votre mot de passe plus tard en utilisant un client Jabber."}.
{"You have been banned from this room","Vous avez été exclus de ce salon"}.
{"You must fill in field \"Nickname\" in the form","Vous devez préciser le champ \"pseudo\" dans le formulaire"}.
{"You need a client that supports x:data and CAPTCHA to register","Vous avez besoin d'un client prenant en charge x:data et CAPTCHA pour enregistrer un pseudo"}.
{"You need a client that supports x:data to register the nickname","Vous avez besoin d'un client prenant en charge x:data pour enregistrer un pseudo"}.
{"You need an x:data capable client to configure mod_irc settings","Vous avez besoin d'un client supportant x:data pour configurer le module IRC"}.
{"You need an x:data capable client to configure room","Vous avez besoin d'un client supportant x:data pour configurer le salon"}.
{"You need an x:data capable client to search","Vous avez besoin d'un client supportant x:data pour faire une recherche"}.
{"Your active privacy list has denied the routing of this stanza.","Votre règle de flitrage active a empêché le routage de ce stanza."}.
{"Your contact offline message queue is full. The message has been discarded.","La file d'attente de message de votre contact est pleine. Votre message a été détruit."}.
{"Your Jabber account was successfully created.","Votre compte Jabber a été créé avec succès."}.
{"Your Jabber account was successfully deleted.","Votre compte Jabber a été effacé avec succès."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Vos messages pour ~s sont bloqués. Pour les débloquer, veuillez visiter ~s"}.
-1963
View File
File diff suppressed because it is too large Load Diff
-358
View File
@@ -1,358 +0,0 @@
%% -*- coding: latin-1 -*-
{"Access Configuration","Configuración de accesos"}.
{"Access Control List Configuration","Configuración da Lista de Control de Acceso"}.
{"Access control lists","Listas de Control de Acceso"}.
{"Access Control Lists","Listas de Control de Acceso"}.
{"Access denied by service policy","Acceso denegado pola política do servizo"}.
{"Access rules","Regras de acceso"}.
{"Access Rules","Regras de Acceso"}.
{"Action on user","Acción no usuario"}.
{"Add Jabber ID","Engadir ID Jabber"}.
{"Add New","Engadir novo"}.
{"Add User","Engadir usuario"}.
{"Administration","Administración"}.
{"Administration of ","Administración de "}.
{"Administrator privileges required","Necesítase privilexios de administrador"}.
{"A friendly name for the node","Un nome para o nodo"}.
{"All activity","Toda a actividade"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Desexas permitir a este JabberID que se subscriba a este nodo PubSub?"}.
{"Allow users to change the subject","Permitir aos usuarios cambiar o asunto"}.
{"Allow users to query other users","Permitir aos usuarios consultar a outros usuarios"}.
{"Allow users to send invites","Permitir aos usuarios enviar invitacións"}.
{"Allow users to send private messages","Permitir aos usuarios enviar mensaxes privadas"}.
{"Allow visitors to change nickname","Permitir aos visitantes cambiarse o alcume"}.
{"Allow visitors to send status text in presence updates","Permitir aos visitantes enviar texto de estado nas actualizacións depresenza"}.
{"All Users","Todos os usuarios"}.
{"Announcements","Anuncios"}.
{"anyone","calquera"}.
{"A password is required to enter this room","Necesítase contrasinal para entrar nesta sala"}.
{"April","Abril"}.
{"August","Agosto"}.
{"Backup","Gardar copia de seguridade"}.
{"Backup Management","Xestión de copia de seguridade"}.
{"Backup to File at ","Copia de seguridade de arquivos en "}.
{"Bad format","Mal formato"}.
{"Birthday","Aniversario"}.
{"Change Password","Cambiar contrasinal"}.
{"Change User Password","Cambiar contrasinal de usuario"}.
{"Chatroom configuration modified","Configuración de la sala modificada"}.
{"Chatrooms","Salas de charla"}.
{"Choose a username and password to register with this server","Escolle un nome de usuario e contrasinal para rexistrarche neste servidor"}.
{"Choose modules to stop","Selecciona módulos a deter"}.
{"Choose storage type of tables","Selecciona tipo de almacenamento das táboas"}.
{"Choose whether to approve this entity's subscription.","Decidir se aprobar a subscripción desta entidade."}.
{"City","Cidade"}.
{"Commands","Comandos"}.
{"Conference room does not exist","A sala de conferencias non existe"}.
{"Configuration","Configuración"}.
{"Configuration of room ~s","Configuración para a sala ~s"}.
{"Connected Resources:","Recursos conectados:"}.
{"Connections parameters","Parámetros de conexiones"}.
{"Country","País"}.
{"CPU Time:","Tempo consumido de CPU:"}.
{"Database","Base de datos"}.
{"Database Tables Configuration at ","Configuración de táboas da base de datos en "}.
{"December","Decembro"}.
{"Default users as participants","Os usuarios son participantes por defecto"}.
{"Delete message of the day","Borrar mensaxe do dia"}.
{"Delete message of the day on all hosts","Borrar a mensaxe do día en todos os dominios"}.
{"Delete Selected","Eliminar os seleccionados"}.
{"Delete User","Borrar usuario"}.
{"Deliver event notifications","Entregar notificacións de eventos"}.
{"Deliver payloads with event notifications","Enviar payloads xunto coas notificacións de eventos"}.
{"Description:","Descrición:"}.
{"Disc only copy","Copia en disco soamente"}.
{"Displayed Groups:","Mostrar grupos:"}.
{"Dump Backup to Text File at ","Exporta copia de seguridade a ficheiro de texto en "}.
{"Dump to Text File","Exportar a ficheiro de texto"}.
{"Edit Properties","Editar propiedades"}.
{"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"}.
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}.
{"ejabberd vCard module","Módulo vCard para ejabberd"}.
{"ejabberd Web Admin","Ejabberd Administrador Web"}.
{"Elements","Elementos"}.
{"Email","Email"}.
{"Enable logging","Gardar históricos"}.
{"Encoding for server ~b","Codificación de servidor ~b"}.
{"End User Session","Pechar sesión de usuario"}.
{"Enter list of {Module, [Options]}","Introduce lista de {Módulo, [Opcións]}"}.
{"Enter nickname you want to register","Introduce o alcume que queiras rexistrar"}.
{"Enter path to backup file","Introduce ruta ao ficheiro de copia de seguridade"}.
{"Enter path to jabberd14 spool dir","Introduce a ruta ao directorio de jabberd14 spools"}.
{"Enter path to jabberd14 spool file","Introduce ruta ao ficheiro jabberd14 spool"}.
{"Enter path to text file","Introduce ruta ao ficheiro de texto"}.
{"Enter the text you see","Introduza o texto que ves"}.
{"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.","Introduce o nome de usuario e codificaciones de carácteres que queiras usar ao conectar nos servidores de IRC. Presione 'Siguiente' para obtener más campos para rellenar Presione 'completo' para guardar axustes."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Introduza o nome de usuario, codificaciones de carácter, portos e contrasinal que pretende utilizar a conectar a servidores de IRC"}.
{"Erlang Jabber Server","Servidor Jabber en Erlang"}.
{"Error","Erro"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Exemplo: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar datos de todos os usuarios do servidor a ficheros PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportar datos de todos os usuarios do servidor a ficheros PIEFXIS (XEP-0227):"}.
{"Family Name","Apelido"}.
{"February","Febreiro"}.
{"Fill in fields to search for any matching Jabber User","Rechea campos para buscar usuarios Jabber que concuerden"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Enche o formulario para buscar usuarios Jabber. Engade * ao final dun campo para buscar subcadenas."}.
{"Friday","Venres"}.
{"From","De"}.
{"From ~s","De ~s"}.
{"Full Name","Nome completo"}.
{"Get Number of Online Users","Ver número de usuarios conectados"}.
{"Get Number of Registered Users","Ver número de usuarios rexistrados"}.
{"Get User Last Login Time","Ver data da última conexión de usuario"}.
{"Get User Password","Ver contrasinal de usuario"}.
{"Get User Statistics","Ver estatísticas de usuario"}.
{"Group ","Grupo "}.
{"Groups","Grupos"}.
{"has been banned","foi bloqueado"}.
{"has been kicked because of an affiliation change","foi expulsado debido a un cambio de afiliación"}.
{"has been kicked because of a system shutdown","foi expulsado por mor dun sistema de peche"}.
{"has been kicked because the room has been changed to members-only","foi expulsado, porque a sala cambiouse a só-membros"}.
{"has been kicked","foi expulsado"}.
{" has set the subject to: "," puxo o asunto: "}.
{"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.","Se quere especificar codificaciones de caracteres diferentes, contrasinal ou servidor IRC rechea esta lista con valores no formato '{\"servidor irc\", \"codificación\", \"porto\", \"contrasinal\"}'. Este servizo utiliza por defecto a codificación \"~s\", porto ~p, sen contrasinal."}.
{"Import Directory","Importar directorio"}.
{"Import File","Importar ficheiro"}.
{"Import user data from jabberd14 spool file:","Importar usuario de fichero spool de jabberd14:"}.
{"Import User from File at ","Importa usuario desde ficheiro en "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Importar usuarios desde un fichero PIEFXIS"}.
{"Import users data from jabberd14 spool directory:","Importar usuarios do directorio spool de jabberd14:"}.
{"Import Users from Dir at ","Importar usuarios desde o directorio en "}.
{"Import Users From jabberd14 Spool Files","Importar usuarios de ficheiros spool de jabberd-1.4"}.
{"Improper message type","Tipo de mensaxe incorrecta"}.
{"Incorrect password","Contrasinal incorrecta"}.
{"Invalid affiliation: ~s","Afiliación non válida: ~s"}.
{"Invalid role: ~s","Rol non válido: ~s"}.
{"IP addresses","Direccións IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","Canle de IRC (non poñer o primeiro #)"}.
{"IRC server","Servidor IRC"}.
{"IRC settings","IRC axustes"}.
{"IRC Transport","Transporte IRC"}.
{"IRC username","Nome de usuario en IRC"}.
{"IRC Username","Nome de usuario en IRC"}.
{"is now known as","cámbiase o nome a"}.
{"It is not allowed to send private messages","Non está permitido enviar mensaxes privadas"}.
{"It is not allowed to send private messages of type \"groupchat\"","Non está permitido enviar mensaxes privadas do tipo \"groupchat\""}.
{"It is not allowed to send private messages to the conference","Impedir o envio de mensaxes privadas á sala"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","O Jabber ID ~s non é válido"}.
{"January","Xaneiro"}.
{"Join IRC channel","Entrar en canle IRC"}.
{"joins the room","entra en la sala"}.
{"Join the IRC channel here.","Únete á canle de IRC aquí."}.
{"Join the IRC channel in this Jabber ID: ~s","Únete á canle de IRC con este IDE de Jabber: ~s"}.
{"July","Xullo"}.
{"June","Xuño"}.
{"Last Activity","Última actividade"}.
{"Last login","Última conexión"}.
{"Last month","Último mes"}.
{"Last year","Último ano"}.
{"leaves the room","sae da sala"}.
{"Listened Ports at ","Portos de escoita en "}.
{"Listened Ports","Portos de escoita"}.
{"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 members-only","Sala só para membros"}.
{"Make room moderated","Facer sala moderada"}.
{"Make room password protected","Protexer a sala con contrasinal"}.
{"Make room persistent","Sala permanente"}.
{"Make room public searchable","Sala publicamente visible"}.
{"March","Marzo"}.
{"Maximum Number of Occupants","Número máximo de ocupantes"}.
{"Max # of items to persist","Máximo # de elementos que persisten"}.
{"Max payload size in bytes","Máximo tamaño do payload en bytes"}.
{"May","Maio"}.
{"Membership is required to enter this room","Necesitas ser membro desta sala para poder entrar"}.
{"Members:","Membros:"}.
{"Memory","Memoria"}.
{"Message body","Corpo da mensaxe"}.
{"Middle Name","Segundo nome"}.
{"Moderator privileges required","Necesítase privilexios de moderador"}.
{"moderators only","só moderadores"}.
{"Modified modules","Módulos Modificados"}.
{"Module","Módulo"}.
{"Modules","Módulos"}.
{"Monday","Luns"}.
{"Name:","Nome:"}.
{"Name","Nome"}.
{"Never","Nunca"}.
{"Nickname","Alcume"}.
{"Nickname Registration at ","Rexistro do alcume en "}.
{"Nickname ~s does not exist in the room","O alcume ~s non existe na sala"}.
{"No body provided for announce message","Non se proporcionou corpo de mensaxe para o anuncio"}.
{"No Data","Sen datos"}.
{"Node ID","Nodo IDE"}.
{"Node not found","Nodo non atopado"}.
{"Nodes","Nodos"}.
{"No limit","Sen límite"}.
{"None","Ningún"}.
{"No resource provided","Non se proporcionou recurso"}.
{"Not Found","Non atopado"}.
{"Notify subscribers when items are removed from the node","Notificar subscriptores cando os elementos bórranse do nodo"}.
{"Notify subscribers when the node configuration changes","Notificar subscriptores cando cambia a configuración do nodo"}.
{"Notify subscribers when the node is deleted","Notificar subscriptores cando o nodo bórrase"}.
{"November","Novembro"}.
{"Number of occupants","Número de ocupantes"}.
{"Number of online users","Número de usuarios conectados"}.
{"Number of registered users","Número de usuarios rexistrados"}.
{"October","Outubro"}.
{"Offline Messages","Mensaxes diferidas"}.
{"Offline Messages:","Mensaxes sen conexión:"}.
{"OK","Aceptar"}.
{"Online","Conectado"}.
{"Online Users:","Usuarios conectados:"}.
{"Online Users","Usuarios conectados"}.
{"Only deliver notifications to available users","Só enviar notificacións aos usuarios dispoñibles"}.
{"Only moderators and participants are allowed to change the subject in this room","Só os moderadores e os participantes se lles permite cambiar o tema nesta sala"}.
{"Only moderators are allowed to change the subject in this room","Só os moderadores están autorizados a cambiar o tema nesta sala"}.
{"Only occupants are allowed to send messages to the conference","Só os ocupantes poden enviar mensaxes á sala"}.
{"Only occupants are allowed to send queries to the conference","Só os ocupantes poden enviar solicitudes á sala"}.
{"Only service administrators are allowed to send service messages","Só os administradores do servizo teñen permiso para enviar mensaxes de servizo"}.
{"Options","Opcións"}.
{"Organization Name","Nome da organización"}.
{"Organization Unit","Unidade da organización"}.
{"Outgoing s2s Connections:","Conexións S2S saíntes:"}.
{"Outgoing s2s Connections","Conexións S2S saíntes"}.
{"Owner privileges required","Requírense privilexios de propietario da sala"}.
{"Packet","Paquete"}.
{"Password ~b","Contrasinal ~b"}.
{"Password:","Contrasinal:"}.
{"Password","Contrasinal"}.
{"Password Verification","Verificación da contrasinal"}.
{"Path to Dir","Ruta ao directorio"}.
{"Path to File","Ruta ao ficheiro"}.
{"Pending","Pendente"}.
{"Period: ","Periodo: "}.
{"Persist items to storage","Persistir elementos ao 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 conta que estas opcións só farán copia de seguridade da base de datos Mnesia. Se está a utilizar o módulo de ODBC, tamén necesita unha copia de seguridade da súa base de datos SQL por separado."}.
{"Pong","Pong"}.
{"Port ~b","Porto ~b"}.
{"Port","Porto"}.
{"Present real Jabber IDs to","Os Jabber ID reais poden velos"}.
{"private, ","privado"}.
{"Protocol","Protocolo"}.
{"Publish-Subscribe","Publicar-Subscribir"}.
{"PubSub subscriber request","Petición de subscriptor de PubSub"}.
{"Queries to the conference members are not allowed in this room","Nesta sala non se permiten solicitudes aos membros da sala"}.
{"RAM and disc copy","Copia en RAM e disco"}.
{"RAM copy","Copia en RAM"}.
{"Raw","Cru"}.
{"Really delete message of the day?","Está seguro de quere borrar a mensaxe do dia?"}.
{"Recipient is not in the conference room","O receptor non está na sala de conferencia"}.
{"Registered Users:","Usuarios rexistrados:"}.
{"Registered Users","Usuarios rexistrados"}.
{"Registration in mod_irc for ","Rexistro en mod_irc para"}.
{"Remote copy","Copia remota"}.
{"Remove All Offline Messages","Borrar Todas as Mensaxes Sen conexión"}.
{"Remove","Borrar"}.
{"Remove User","Eliminar usuario"}.
{"Replaced by new connection","Substituído por unha nova conexión"}.
{"Resources","Recursos"}.
{"Restart","Reiniciar"}.
{"Restart Service","Reiniciar o servizo"}.
{"Restore Backup from File at ","Restaura copia de seguridade desde o ficheiro en "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaurar copia de seguridade binaria no seguinte reinicio de ejabberd (require menos memoria que se instantánea):"}.
{"Restore binary backup immediately:","Restaurar inmediatamente copia de seguridade binaria:"}.
{"Restore plain text backup immediately:","Restaurar copias de seguridade de texto plano inmediatamente:"}.
{"Restore","Restaurar"}.
{"Room Configuration","Configuración da Sala"}.
{"Room creation is denied by service policy","Denegar crear a sala por política do servizo"}.
{"Room description","Descrición da sala"}.
{"Room Occupants","Ocupantes da sala"}.
{"Room title","Título da sala"}.
{"Roster groups allowed to subscribe","Lista de grupos autorizados a subscribir"}.
{"Roster","Lista de contactos"}.
{"Roster of ","Lista de contactos de "}.
{"Roster size","Tamaño da lista de contactos"}.
{"RPC Call Error","Erro na chamada RPC"}.
{"Running Nodes","Nodos funcionando"}.
{"~s access rule configuration","Configuración das Regra de Acceso ~s"}.
{"Saturday","Sábado"}.
{"Script check","Comprobación de script"}.
{"Search Results for ","Buscar resultados por "}.
{"Search users in ","Buscar usuarios en "}.
{"Send announcement to all online users","Enviar anuncio a todos los usuarios conectados"}.
{"Send announcement to all online users on all hosts","Enviar anuncio a todos os usuarios conectados en todos os dominios"}.
{"Send announcement to all users","Enviar anuncio a todos os usuarios"}.
{"Send announcement to all users on all hosts","Enviar anuncio a todos os usuarios en todos os dominios"}.
{"September","Setembro"}.
{"Server ~b","Servidor ~b"}.
{"Set message of the day and send to online users","Pór mensaxe do dia e enviar a todos os usuarios conectados"}.
{"Set message of the day on all hosts and send to online users","Pór mensaxe do día en todos os dominios e enviar aos usuarios conectados"}.
{"Shared Roster Groups","Grupos Compartidos"}.
{"Show Integral Table","Mostrar Táboa Integral"}.
{"Show Ordinary Table","Mostrar Táboa Ordinaria"}.
{"Shut Down Service","Deter o servizo"}.
{"~s invites you to the room ~s","~s invítache á sala ~s"}.
{"Specify the access model","Especifica o modelo de acceso"}.
{"Specify the publisher model","Especificar o modelo do publicante"}.
{"~s's Offline Messages Queue","Cola de mensaxes diferidas de ~s"}.
{"Start","Iniciar"}.
{"Start Modules at ","Iniciar módulos en "}.
{"Start Modules","Iniciar módulos"}.
{"Statistics","Estatísticas"}.
{"Statistics of ~p","Estatísticas de ~p"}.
{"Stop","Deter"}.
{"Stop Modules at ","Deter módulos en "}.
{"Stop Modules","Detener módulos"}.
{"Stopped Nodes","Nodos detidos"}.
{"Storage Type","Tipo de almacenamiento"}.
{"Store binary backup:","Gardar copia de seguridade binaria:"}.
{"Store plain text backup:","Gardar copia de seguridade en texto plano:"}.
{"Subject","Asunto"}.
{"Submit","Enviar"}.
{"Submitted","Enviado"}.
{"Subscriber Address","Dirección do subscriptor"}.
{"Subscription","Subscripción"}.
{"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 collections with which a node is affiliated","As coleccións coas que un nodo está afiliado"}.
{"the password is","a contrasinal é"}.
{"Thursday","Xoves"}.
{"Time","Data"}.
{"Time delay","Atraso temporal"}.
{"To","Para"}.
{"To ~s","A ~s"}.
{"Traffic rate limit is exceeded","Hase exedido o límite de tráfico"}.
{"Transactions Aborted:","Transaccións abortadas:"}.
{"Transactions Committed:","Transaccións finalizadas:"}.
{"Transactions Logged:","Transaccións rexistradas:"}.
{"Transactions Restarted:","Transaccións reiniciadas:"}.
{"Tuesday","Martes"}.
{"Unauthorized","Non autorizado"}.
{"Update","Actualizar"}.
{"Update message of the day (don't send)","Actualizar mensaxe do dia, pero non envialo"}.
{"Update message of the day on all hosts (don't send)","Actualizar a mensaxe do día en todos os dominos (pero non envialo)"}.
{"Update plan","Plan de actualización"}.
{"Update script","Script de actualización"}.
{"Uptime:","Tempo desde o inicio:"}.
{"Use of STARTTLS required","É obrigatorio usar STARTTLS"}.
{"User Management","Administración de usuarios"}.
{"Users are not allowed to register accounts so quickly","Os usuarios non están autorizados a rexistrar contas con tanta rapidez"}.
{"Users Last Activity","Última actividade dos usuarios"}.
{"Users","Usuarios"}.
{"User","Usuario"}.
{"Validate","Validar"}.
{"vCard User Search","Procura de usuario en vCard"}.
{"Virtual Hosts","Hosts Virtuais"}.
{"Visitors are not allowed to change their nicknames in this room","Os visitantes non están autorizados a cambiar os seus That alcumes nesta sala"}.
{"Visitors are not allowed to send messages to all occupants","Os visitantes non poden enviar mensaxes a todos os ocupantes"}.
{"Wednesday","Mércores"}.
{"When to send the last published item","Cando enviar o último elemento publicado"}.
{"Whether to allow subscriptions","Permitir subscripciones"}.
{"You have been banned from this room","fuches bloqueado nesta sala"}.
{"You must fill in field \"Nickname\" in the form","Debes encher o campo \"Alcumo\" no formulario"}.
{"You need an x:data capable client to configure mod_irc settings","Necesitas un cliente con soporte de x:data para configurar as opcións de mod_irc"}.
{"You need an x:data capable client to configure room","Necesitas un cliente con soporte de x:data para configurar a sala"}.
{"You need an x:data capable client to search","Necesitas un cliente con soporte de x:data para poder buscar"}.
{"Your contact offline message queue is full. The message has been discarded.","A túa cola de mensaxes diferidas de contactos está chea. A mensaxe descartouse."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","As súas mensaxes a ~s encóntranse bloqueadas. Para desbloquear, visite ~s"}.
-1959
View File
File diff suppressed because it is too large Load Diff
-440
View File
@@ -1,440 +0,0 @@
%% -*- coding: latin-1 -*-
{"Accept","קבל"}.
{"Access Configuration","תצורת גישה"}.
{"Access Control List Configuration","תצורת רשימת בקרת גישה"}.
{"Access control lists","רשימות בקרת גישה"}.
{"Access Control Lists","רשימות בקרת גישה"}.
{"Access denied by service policy","גישה נדחתה על ידי פוליסת שירות"}.
{"Access rules","כללי גישה"}.
{"Access Rules","כללי גישה"}.
{"Action on user","פעולה על משתמש"}.
{"Add Jabber ID","הוסף מזהה Jabber"}.
{"Add New","הוסף חדש"}.
{"Add User","הוסף משתמש"}.
{"Administration of ","ניהול של "}.
{"Administration","הנהלה"}.
{"Administrator privileges required","נדרשות הרשאות מנהל"}.
{"A friendly name for the node","שם ידידותי עבור הצומת"}.
{"All activity","כל פעילות"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","להתיר למזהה Jabber זה להירשם לצומת 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 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","נדרשת סיסמה כדי להיכנס אל חדר זה"}.
{"April","אפריל"}.
{"August","אוגוסט"}.
{"Backup Management","ניהול גיבוי"}.
{"Backup of ~p","גיבוי של ~p"}.
{"Backup to File at ","גבה לקובץ אצל "}.
{"Backup","גיבוי"}.
{"Bad format","פורמט רע"}.
{"Birthday","יום הולדת"}.
{"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","חדרי שיחה"}.
{"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"}.
{"Configuration","תצורה"}.
{"Connected Resources:","משאבים מחוברים:"}.
{"Connections parameters","פרמטרים של חיבור"}.
{"Country","ארץ"}.
{"CPU Time:","זמן מחשב (CPU):"}.
{"Database Tables at ~p","טבלאות מסד נתונים אצל ~p"}.
{"Database Tables Configuration at ","תצורת טבלאות מסד נתונים אצל "}.
{"Database","מסד נתונים"}.
{"December","דצמבר"}.
{"Default users as participants","משתמשים שגרתיים כמשתתפים"}.
{"Delete message of the day on all hosts","מחק את בשורת היום בכל המארחים"}.
{"Delete message of the day","מחק את בשורת היום"}.
{"Delete Selected","מחק נבחרות"}.
{"Delete User","מחק משתמש"}.
{"Deliver event notifications","מסור התראות אירוע"}.
{"Deliver payloads with event notifications","מסור מטעני ייעוד (מטע״ד) יחד עם התראות אירוע"}.
{"Description:","תיאור:"}.
{"Disc only copy","העתק של תקליטור בלבד"}.
{"Displayed Groups:","קבוצות מוצגות:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","אל תגלה את הסיסמה שלך לאף אחד, אפילו לא למנהלים של שרת Jabber."}.
{"Dump Backup to Text File at ","השלך גיבוי לקובץ טקסט אצל "}.
{"Dump to Text File","השלך לקובץ טקסט"}.
{"Edit Properties","ערוך מאפיינים"}.
{"Either approve or decline the voice request.","אשר או דחה בקשת ביטוי."}.
{"ejabberd IRC module","מודול IRC של ejabberd"}.
{"ejabberd MUC module","מודול MUC של ejabberd"}.
{"ejabberd Multicast service","שירות שידור מרובב של 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","דוא״ל"}.
{"Empty Rooms","חדרים ריקים"}.
{"Enable logging","אפשר רישום פעילות"}.
{"Enable message archiving","אפשר אחסון הודעות"}.
{"Encoding for server ~b","קידוד עבור שרת ~b"}.
{"End User Session","סיים סשן משתמש"}.
{"Enter list of {Module, [Options]}","הזן רשימה של {מודול, [אפשרויות]}"}.
{"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","הזן את הכיתוב שאתה רואה"}.
{"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.","הזן שם משתמש וקידודים בהם ברצונך להשתמש לצורך התחברות לשרתי IRC. לחץ 'הבא' כדי להשיג עוד שדות למילוי. לחץ 'סיים' כדי לשמור הגדרות."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","הזן שם משתמש, קידודים, פורטים וסיסמאות בהם ברצונך להשתמש לצורך התחברות לשרתי IRC"}.
{"Erlang Jabber Server","שרת ג׳אבּר Erlang"}.
{"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 all tables as SQL queries to a file:","יצא את כל הטבלאות בתור שאילתות SQL לתוך קובץ:"}.
{"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 מבוקש"}.
{"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","השג סטטיסטיקת משתמש"}.
{"Grant voice to this person?","להעניק ביטוי לאישיות זו?"}.
{"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","מארח"}.
{"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, מלא את רשימה זו עם ערכים בפורמט '{\"irc server\", \"encoding\", port, \"password\"}'. באופן שגרתי שירות זה משתמש בקידוד \"~s\", פורט ~p, סיסמה ריקה."}.
{"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","טיפוס הודעה לא מתאים"}.
{"Incoming s2s Connections:","חיבורי s2s נכנסים:"}.
{"Incorrect password","מילת מעבר שגויה"}.
{"Invalid affiliation: ~s","סינוף שגוי: ~s"}.
{"Invalid role: ~s","תפקיד שגוי: ~s"}.
{"IP addresses","כתובות IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","ערוץ IRC (אל תשים סימן # ראשון)"}.
{"IRC server","שרת IRC"}.
{"IRC settings","הגדרות IRC"}.
{"IRC Transport","טרנספורט IRC"}.
{"IRC username","שם משתמש IRC"}.
{"IRC Username","שם משתמש IRC"}.
{"is now known as","ידועה כעת בכינוי"}.
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","אין זה מותר לשלוח הודעות שגיאה לחדר. משתתף זה (~s) שלח הודעת שגיאה (~s) ונבעט מתוך החדר"}.
{"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","אין זה מותר לשלוח הודעות פרטיות"}.
{"Jabber Account Registration","רישום חשבון Jabber"}.
{"Jabber ID ~s is invalid","מזהה Jabber ~s הינו שגוי"}.
{"Jabber ID","מזהה Jabber"}.
{"January","ינואר"}.
{"Join IRC channel","הצטרף לערוץ IRC"}.
{"joins the room","נכנס/ת אל החדר"}.
{"Join the IRC channel here.","הצטרף לערוץ IRC כאן."}.
{"Join the IRC channel in this Jabber ID: ~s","הצטרף לערוץ IRC במזהה Jabber זה: ~s"}.
{"July","יולי"}.
{"June","יוני"}.
{"Last Activity","פעילות אחרונה"}.
{"Last login","כניסה אחרונה"}.
{"Last month","חודש אחרון"}.
{"Last year","שנה אחרונה"}.
{"leaves the room","עוזב/ת את החדר"}.
{"Listened Ports at ","פורטים מואזנים אצל "}.
{"Listened Ports","פורטים מואזנים"}.
{"List of modules to start","רשימה של מודולים להפעלה"}.
{"List of rooms","רשימה של חדרים"}.
{"Low level update script","תסריט עדכון Low level"}.
{"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","הפוך חדר לחדר שנתון לחיפוש פומבי"}.
{"March","מרץ"}.
{"Maximum Number of Occupants","מספר מרבי של נוכחים"}.
{"Max # of items to persist","מספר מרבי של פריטים לקיבוע"}.
{"Max payload size in bytes","גודל מרבי של מטען ייעוד (payload) ביחידות מידה של byte"}.
{"May","מאי"}.
{"Membership is required to enter this room","נדרשת חברות כדי להיכנס אל חדר זה"}.
{"Members:","חברים:"}.
{"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","לאחראים בלבד"}.
{"Moderator","אחראי"}.
{"Modified modules","מודולים שהותאמו"}.
{"Modules at ~p","מודולים אצל ~p"}.
{"Modules","מודולים"}.
{"Module","מודול"}.
{"Monday","יום שני"}.
{"Multicast","שידור מרובב"}.
{"Multi-User Chat","שיחה מרובת משתמשים"}.
{"Name:","שם:"}.
{"Name","שם"}.
{"Never","אף פעם"}.
{"New Password:","סיסמה חדשה:"}.
{"Nickname Registration at ","רישום שם כינוי אצל "}.
{"Nickname ~s does not exist in the room","שם כינוי ~s לא קיים בחדר"}.
{"Nickname","שם כינוי"}.
{"No body provided for announce message","לא סופק גוף עבור הודעת בשורה"}.
{"nobody","אף אחד"}.
{"No Data","אין מידע"}.
{"Node ID","מזהה צומת (NID)"}.
{"Node not found","צומת לא נמצא"}.
{"Node ~p","צומת ~p"}.
{"Nodes","צמתים"}.
{"No limit","ללא הגבלה"}.
{"None","אין"}.
{"No resource provided","לא סופק משאב"}.
{"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","אישור"}.
{"Old Password:","סיסמה ישנה:"}.
{"Online Users:","משתמשים מקוונים:"}.
{"Online Users","משתמשים מקוונים"}.
{"Online","מקוון"}.
{"Only deliver notifications to available users","מסור התראות למשתמשים זמינים בלבד"}.
{"Only members may query archives of this room","רק חברים רשאים לתשאל ארכיונים של חדר זה"}.
{"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","שם ארגון"}.
{"Organization Unit","יחידת איגוד"}.
{"Outgoing s2s Connections:","חיבורי s2s יוצאים:"}.
{"Outgoing s2s Connections","חיבורי s2s יוצאים"}.
{"Owner privileges required","נדרשות הרשאות בעלים"}.
{"Packet","חבילת מידע"}.
{"Participant","משתתף"}.
{"Password ~b","סיסמה ~b"}.
{"Password Verification:","אימות סיסמה:"}.
{"Password Verification","אימות סיסמה"}.
{"Password:","סיסמה:"}.
{"Password","סיסמה"}.
{"Path to Dir","נתיב למדור"}.
{"Path to File","נתיב לקובץ"}.
{"Pending","ממתינות"}.
{"Period: ","משך זמן: "}.
{"Permanent rooms","חדרים קבועים"}.
{"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 אשר מצוי ברשותך בנפרד."}.
{"Please specify file name.","אנא ציין שם קובץ."}.
{"Please specify file size.","אנא ציין גודל קובץ."}.
{"Please, wait for a while before sending new voice request","אנא, המתן לזמן מה לפני שליחת בקשת ביטוי חדשה"}.
{"Pong","פונג"}.
{"Port ~b","פורט ~b"}.
{"Port","פורט"}.
{"Present real Jabber IDs to","הצג כתובות Jabber ממשיות"}.
{"private, ","פרטי, "}.
{"Protocol","פרוטוקול"}.
{"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","שאילתות אל חברי הועידה אינן מותרות בחדר זה"}.
{"RAM and disc copy","העתק RAM וגם תקליטור"}.
{"RAM copy","העתק RAM"}.
{"Raw","גולמי"}.
{"Really delete message of the day?","באמת למחוק את בשורת היום?"}.
{"Recipient is not in the conference room","מקבל אינו מצוי בחדר הועידה"}.
{"Register a Jabber account","רשום חשבון Jabber"}.
{"Registered nicknames","שמות כינוי רשומים"}.
{"Registered Users:","משתמשים רשומים:"}.
{"Registered Users","משתמשים רשומים"}.
{"Register","הרשם"}.
{"Registration in mod_irc for ","רישום בתוך mod_irc עבור "}.
{"Remote copy","העתק מרוחק"}.
{"Remove All Offline Messages","הסר את כל ההודעות הלא מקוונות"}.
{"Remove User","הסר משתמש"}.
{"Remove","הסר"}.
{"Replaced by new connection","הוחלף בחיבור חדש"}.
{"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","שחזר"}.
{"Roles for which Presence is Broadcasted","תפקידים להם נוכחות הינה משודרת"}.
{"Room Configuration","תצורת חדר"}.
{"Room creation is denied by service policy","יצירת חדר נדחתה על ידי פוליסת שירות"}.
{"Room description","תיאור חדר"}.
{"Room Occupants","נוכחי חדר"}.
{"Room title","כותרת חדר"}.
{"Roster groups allowed to subscribe","קבוצות רשימה מורשות להירשם"}.
{"Roster of ","רשימה של "}.
{"Roster size","גודל רשימה"}.
{"Roster","רשימה"}.
{"RPC Call Error","שגיאת קריאת RPC"}.
{"Running Nodes","צמתים מורצים"}.
{"~s access rule configuration","~s תצורת כללי גישה"}.
{"Saturday","יום שבת"}.
{"Script check","בדיקת תסריט"}.
{"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","ספטמבר"}.
{"Server ~b","שרת ~b"}.
{"Server:","שרת:"}.
{"Server","שרת"}.
{"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","הצג טבלה אינטגרלית"}.
{"Show Ordinary Table","הצג טבלה רגילה"}.
{"Shut Down Service","כבה שירות"}.
{"~s invites you to the room ~s","~s מזמינך לחדר ~s"}.
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","ישנם לקוחות Jabber אשר מסוגלים לאחסן את הסיסמה שלך בתוך המחשב, אולם עליך לעשות זאת רק בתוך המחשב האישי שלך מסיבות ביטחוניות."}.
{"Specify the access model","ציין מודל גישה"}.
{"Specify the event message type","ציין טיפוס הודעת אירוע"}.
{"Specify the publisher model","ציין מודל פרסום"}.
{"~s's Offline Messages Queue","תור הודעות לא מקוונות של ~s"}.
{"Start Modules at ","התחל מודולים אצל "}.
{"Start Modules","התחל מודולים"}.
{"Start","התחל"}.
{"Statistics of ~p","סטטיסטיקות של ~p"}.
{"Statistics","סטטיסטיקה"}.
{"Stop Modules at ","הפסק מודולים אצל "}.
{"Stop Modules","הפסק מודולים"}.
{"Stopped Nodes","צמתים שנפסקו"}.
{"Stop","הפסק"}.
{"Storage Type","טיפוס אחסון"}.
{"Store binary backup:","אחסן גיבוי בינארי:"}.
{"Store plain text backup:","אחסן גיבוי טקסט גלוי (plain text):"}.
{"Subject","נושא"}.
{"Submitted","נשלח"}.
{"Submit","שלח"}.
{"Subscriber Address","כתובת מנוי"}.
{"Subscription","הרשמה"}.
{"Sunday","יום ראשון"}.
{"That nickname is already in use by another occupant","שם כינוי זה כבר מצוי בשימוש על ידי נוכח אחר"}.
{"That nickname is registered by another person","שם כינוי זה הינו רשום על ידי מישהו אחר"}.
{"The CAPTCHA is valid.","CAPTCHA הינה תקפה."}.
{"The CAPTCHA verification has failed","אימות CAPTCHA נכשל"}.
{"The collections with which a node is affiliated","האוספים עמם צומת מסונף"}.
{"The password is too weak","הסיסמה חלשה מדי"}.
{"the password is","הסיסמה היא"}.
{"The password of your Jabber account was successfully changed.","סיסמת חשבון Jabber שונתה בהצלחה."}.
{"There was an error changing the password: ","אירעה שגיאה בשינוי הסיסמה: "}.
{"There was an error creating the account: ","אירעה שגיאה ביצירת החשבון: "}.
{"There was an error deleting the account: ","אירעה שגיאה במחיקת החשבון: "}.
{"This IP address is blacklisted in ~s","כתובת IP זו רשומה ברשימה שחורה בתוך ~s"}.
{"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 בשרת Jabber זה. כתובת JID (Jabber IDentifier) תגובש באופן של: username@server. אנא קרא בזהירות את ההוראות למילוי נכון של השדות."}.
{"This page allows to unregister a Jabber account in this Jabber server.","עמוד זה מתיר לך לבטל רישום של חשבון Jabber בתוך שרת Jabber זה."}.
{"Thursday","יום חמישי"}.
{"Time delay","זמן שיהוי"}.
{"Time","זמן"}.
{"Too many CAPTCHA requests","יותר מדי בקשות CAPTCHA"}.
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","יותר מדי (~p) אימותים כושלים מתוך כתובת IP זו (~s). הכתובת תורשה לקבל גישה בשעה ~s UTC"}.
{"Too many unacked stanzas","יותר מדי סטנזות בלי אישורי קבלה"}.
{"To ~s","אל ~s"}.
{"Total rooms","חדרים סה״כ"}.
{"To","לכבוד"}.
{"Traffic rate limit is exceeded","מגבלת שיעור תעבורה נחצתה"}.
{"Transactions Aborted:","טרנזקציות שבוטלו:"}.
{"Transactions Committed:","טרנזקציות שבוצעו:"}.
{"Transactions Logged:","טרנזקציות שנרשמו:"}.
{"Transactions Restarted:","טרנזקציות שהותחלו מחדש:"}.
{"Tuesday","יום שלישי"}.
{"Unable to generate a CAPTCHA","אין אפשרות להפיק CAPTCHA"}.
{"Unauthorized","לא מורשה"}.
{"Unregister a Jabber account","בטל רישום חשבון Jabber"}.
{"Unregister","בטל רישום"}.
{"Update message of the day (don't send)","עדכן את בשורת היום (אל תשלח)"}.
{"Update message of the day on all hosts (don't send)","עדכן את בשורת היום בכל המארחים (אל תשלח)"}.
{"Update plan","תכנית עדכון"}.
{"Update ~p","עדכון ~p"}.
{"Update script","תסריט עדכון"}.
{"Update","עדכן"}.
{"Uptime:","זמן פעילות:"}.
{"Use of STARTTLS required","נדרש שימוש של STARTTLS"}.
{"User JID","JID משתמש"}.
{"User Management","ניהול משתמשים"}.
{"Username:","שם משתמש:"}.
{"Users are not allowed to register accounts so quickly","משתמשים אינם מורשים לרשום חשבונות כל כך במהירות"}.
{"Users Last Activity","פעילות משתמשים אחרונה"}.
{"User ~s","משתמש ~s"}.
{"Users","משתמשים"}.
{"User","משתמש"}.
{"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","מבקרים אינם מורשים לשלוח הודעות אל כל הנוכחים"}.
{"Visitor","מבקר"}.
{"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","עליך להשתמש בלקוח אשר מסוגל להבין x:data כדי להגדיר הגדרות mod_irc"}.
{"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 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"}.
-1964
View File
File diff suppressed because it is too large Load Diff
-396
View File
@@ -1,396 +0,0 @@
%% -*- coding: latin-1 -*-
{"Access Configuration","Akses Konfigurasi"}.
{"Access Control List Configuration","Konfigurasi Daftar Akses Pengendalian"}.
{"Access Control Lists","Akses Daftar Pengendalian"}.
{"Access control lists","Daftar Pengendalian Akses"}.
{"Access denied by service policy","Akses ditolak oleh kebijakan layanan"}.
{"Access rules","Akses peraturan"}.
{"Access Rules","Aturan Akses"}.
{"Action on user","Tindakan pada pengguna"}.
{"Add Jabber ID","Tambah Jabber ID"}.
{"Add New","Tambah Baru"}.
{"Add User","Tambah Pengguna"}.
{"Administration","Administrasi"}.
{"Administration of ","Administrasi"}.
{"Administrator privileges required","Hak istimewa Administrator dibutuhkan"}.
{"A friendly name for the node","Nama yang dikenal untuk node"}.
{"All activity","Semua aktifitas"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Izinkan ID Jabber ini untuk berlangganan pada node pubsub ini?"}.
{"Allow users to change the subject","Perbolehkan pengguna untuk mengganti topik"}.
{"Allow users to query other users","Perbolehkan pengguna untuk mengetahui pengguna lain"}.
{"Allow users to send invites","Perbolehkan pengguna mengirimkan undangan"}.
{"Allow users to send private messages","perbolehkan pengguna mengirimkan pesan ke pengguna lain secara pribadi"}.
{"Allow visitors to change nickname","Perbolehkan visitor mengganti nama julukan"}.
{"Allow visitors to send status text in presence updates","Izinkan pengunjung untuk mengirim teks status terbaru"}.
{"All Users","Semua Pengguna"}.
{"Announcements","Pengumuman"}.
{"anyone","Siapapun"}.
{"A password is required to enter this room","Diperlukan kata sandi untuk masuk ruangan ini"}.
{"April","April"}.
{"August","Agustus"}.
{"Backup","Backup"}.
{"Backup Management","Manajemen Backup"}.
{"Backup to File at ","Backup ke File pada"}.
{"Bad format","Format yang buruk"}.
{"Birthday","Hari Lahir"}.
{"CAPTCHA web page","CAPTCHA laman web"}.
{"Change Password","Ubah Kata Sandi"}.
{"Change User Password","Ubah User Password"}.
{"Characters not allowed:","Karakter tidak diperbolehkan:"}.
{"Chatroom configuration modified","Konfigurasi ruang chat diubah"}.
{"Chatroom is created","Ruang chat telah dibuat"}.
{"Chatroom is destroyed","Ruang chat dilenyapkan"}.
{"Chatroom is started","Ruang chat dimulai"}.
{"Chatroom is stopped","Ruang chat dihentikan"}.
{"Chatrooms","Ruangan Chat"}.
{"Choose a username and password to register with this server","Pilih nama pengguna dan kata sandi untuk mendaftar dengan layanan ini"}.
{"Choose modules to stop","Pilih Modul untuk berhenti"}.
{"Choose storage type of tables","Pilih jenis penyimpanan tabel"}.
{"Choose whether to approve this entity's subscription.","Pilih apakah akan menyetujui hubungan pertemanan ini."}.
{"City","Kota"}.
{"Commands","Perintah"}.
{"Conference room does not exist","Ruang Konferensi tidak ada"}.
{"Configuration of room ~s","Pengaturan ruangan ~s"}.
{"Configuration","Pengaturan"}.
{"Connected Resources:","Sumber Daya Terhubung:"}.
{"Connections parameters","Parameter Koneksi"}.
{"Country","Negara"}.
{"CPU Time:","Waktu CPU:"}.
{"Database","Database"}.
{"Database Tables Configuration at ","Database Tabel Konfigurasi pada"}.
{"December","Desember"}.
{"Default users as participants","pengguna pertama kali masuk sebagai participant"}.
{"Delete message of the day","Hapus pesan harian"}.
{"Delete message of the day on all hosts","Hapus pesan harian pada semua host"}.
{"Delete Selected","Hapus Yang Terpilih"}.
{"Delete User","Hapus Pengguna"}.
{"Deliver event notifications","Memberikan pemberitahuan acara"}.
{"Deliver payloads with event notifications","Memberikan muatan dengan pemberitahuan acara"}.
{"Description:","Keterangan:"}.
{"Disc only copy","Hanya salinan dari disc"}.
{"Displayed Groups:","Tampilkan Grup:"}.
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Jangan memberitahukan kata sandi Anda ke siapapun, bahkan para administrator dari layanan Jabber."}.
{"Dump Backup to Text File at ","Dump Backup ke File Teks di"}.
{"Dump to Text File","Dump menjadi File Teks"}.
{"Edit Properties","Ganti Properti"}.
{"ejabberd IRC module","ejabberd IRC modul"}.
{"ejabberd MUC module","ejabberd MUC Module"}.
{"ejabberd Publish-Subscribe module","Modul ejabberd Setujui-Pertemanan"}.
{"ejabberd SOCKS5 Bytestreams module","modul ejabberd SOCKS5 Bytestreams"}.
{"ejabberd vCard module","Modul ejabberd vCard"}.
{"ejabberd Web Admin","Admin Web ejabberd"}.
{"Elements","Elemen-elemen"}.
{"Email","Email"}.
{"Enable logging","Aktifkan catatan"}.
{"Encoding for server ~b","Pengkodean untuk layanan ~b"}.
{"End User Session","Akhir Sesi Pengguna"}.
{"Enter list of {Module, [Options]}","Masukkan daftar {Modul, [Options]}"}.
{"Enter nickname you want to register","Masukkan nama julukan Anda jika ingin mendaftar"}.
{"Enter path to backup file","Masukkan path untuk file cadangan"}.
{"Enter path to jabberd14 spool dir","Masukkan path ke direktori spool jabberd14"}.
{"Enter path to jabberd14 spool file","Masukkan path ke file jabberd14 spool"}.
{"Enter path to text file","Masukkan path ke file teks"}.
{"Enter the text you see","Masukkan teks yang Anda lihat"}.
{"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.","Masukkan username dan pengkodean yang ingin Anda gunakan untuk menghubungkan ke layanan IRC. Tekan 'Selanjutnya' untuk mendapatkan lagi formulir kemudian Tekan 'Lengkap' untuk menyimpan pengaturan."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Masukkan username, pengkodean, port dan sandi yang ingin Anda gunakan untuk menghubungkan ke layanan IRC"}.
{"Erlang Jabber Server","Layanan Erlang Jabber"}.
{"Error","Kesalahan"}.
{"Example: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}].","Contoh: [{\"irc.lucky.net\", \"koi8-r\", 6667, \"secret\"}, {\"vendetta.fef.net\", \"iso8859-1\", 7000}, {\"irc.sometestserver.net\", \"utf-8\"}]."}.
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Ekspor data dari semua pengguna pada layanan ke berkas PIEFXIS (XEP-0227):"}.
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Ekspor data pengguna pada sebuah host ke berkas PIEFXIS (XEP-0227):"}.
{"Family Name","Nama Keluarga (marga)"}.
{"February","Februari"}.
{"Fill in fields to search for any matching Jabber User","Isi kolom untuk mencari pengguna Jabber yang sama"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Isi formulir untuk pencarian pengguna Jabber yang cocok (Tambahkan * ke mengakhiri pengisian untuk menyamakan kata)"}.
{"Friday","Jumat"}.
{"From","Dari"}.
{"From ~s","Dari ~s"}.
{"Full Name","Nama Lengkap"}.
{"Get Number of Online Users","Dapatkan Jumlah User Yang Online"}.
{"Get Number of Registered Users","Dapatkan Jumlah Pengguna Yang Terdaftar"}.
{"Get User Last Login Time","Dapatkan Waktu Login Terakhir Pengguna "}.
{"Get User Password","Dapatkan User Password"}.
{"Get User Statistics","Dapatkan Statistik Pengguna"}.
{"Group ","Grup"}.
{"Groups","Grup"}.
{"has been banned","telah dibanned"}.
{"has been kicked because of an affiliation change","telah dikick karena perubahan afiliasi"}.
{"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:"}.
{"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."}.
{"Import Directory","Impor Direktori"}.
{"Import File","Impor File"}.
{"Import user data from jabberd14 spool file:","Impor data pengguna dari sekumpulan berkas jabberd14:"}.
{"Import User from File at ","Impor Pengguna dari File pada"}.
{"Import users data from a PIEFXIS file (XEP-0227):","impor data-data pengguna dari sebuah PIEFXIS (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","Импорт пользовательских данных из буферной директории jabberd14:"}.
{"Import Users from Dir at ","Impor Pengguna dari Dir di"}.
{"Import Users From jabberd14 Spool Files","Impor Pengguna Dari jabberd14 Spool File"}.
{"Improper message type","Jenis pesan yang tidak benar"}.
{"Incorrect password","Kata sandi salah"}.
{"Invalid affiliation: ~s","Afiliasi tidak valid: ~s"}.
{"Invalid role: ~s","Peran tidak valid: ~s"}.
{"IP addresses","Alamat IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","Channel IRC (tidak perlu menempatkan # sebelumnya)"}.
{"IRC server","Layanan IRC"}.
{"IRC settings","Pengaturan IRC"}.
{"IRC Transport","IRC Transport"}.
{"IRC username","Nama Pengguna IRC"}.
{"IRC Username","Nama Pengguna IRC"}.
{"is now known as","sekarang dikenal sebagai"}.
{"It is not allowed to send private messages","Hal ini tidak diperbolehkan untuk mengirim pesan pribadi"}.
{"It is not allowed to send private messages of type \"groupchat\"","Hal ini tidak diperbolehkan untuk mengirim pesan pribadi jenis \"groupchat \""}.
{"It is not allowed to send private messages to the conference","Hal ini tidak diperbolehkan untuk mengirim pesan pribadi ke konferensi"}.
{"Jabber Account Registration","Pendaftaran Akun Jabber"}.
{"Jabber ID","Jabber ID"}.
{"Jabber ID ~s is invalid","Jabber ID ~s tidak valid"}.
{"January","Januari"}.
{"Join IRC channel","Gabung channel IRC"}.
{"joins the room","bergabung ke ruangan"}.
{"Join the IRC channel here.","Gabung ke channel IRC disini"}.
{"Join the IRC channel in this Jabber ID: ~s","Gabung ke channel IRC dengan Jabber ID: ~s"}.
{"July","Juli"}.
{"June","Juni"}.
{"Last Activity","Aktifitas Terakhir"}.
{"Last login","Terakhir Login"}.
{"Last month","Akhir bulan"}.
{"Last year","Akhir tahun"}.
{"leaves the room","meninggalkan ruangan"}.
{"Listened Ports at ","Mendeteksi Port-port di"}.
{"Listened Ports","Port Terdeteksi"}.
{"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 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"}.
{"Make room persistent","Buat ruangan menjadi permanent"}.
{"Make room public searchable","Buat ruangan dapat dicari"}.
{"March","Maret"}.
{"Maximum Number of Occupants","Maksimum Jumlah Penghuni"}.
{"Max # of items to persist","Max item untuk bertahan"}.
{"Max payload size in bytes","Max kapasitas ukuran dalam bytes"}.
{"May","Mei"}.
{"Members:","Anggota:"}.
{"Membership is required to enter this room","Hanya Member yang dapat masuk ruangan ini"}.
{"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.","Hafalkan kata sandi Anda, atau dicatat dan letakkan di tempat yang aman. Didalam Jabber tidak ada cara otomatis untuk mendapatkan kembali password Anda jika Anda lupa."}.
{"Memory","Memori"}.
{"Message body","Isi Pesan"}.
{"Middle Name","Nama Tengah"}.
{"Moderator privileges required","Hak istimewa moderator dibutuhkan"}.
{"moderators only","Hanya moderator"}.
{"Modified modules","Modifikasi modul-modul"}.
{"Module","Modul"}.
{"Modules","Modul"}.
{"Monday","Senin"}.
{"Name:","Nama:"}.
{"Name","Nama"}.
{"Never","Tidak Pernah"}.
{"New Password:","Password Baru:"}.
{"Nickname","Nama Julukan"}.
{"Nickname Registration at ","Pendaftaran Julukan pada"}.
{"Nickname ~s does not exist in the room","Nama Julukan ~s tidak berada di dalam ruangan"}.
{"No body provided for announce message","Tidak ada isi pesan yang disediakan untuk mengirimkan pesan"}.
{"No Data","Tidak Ada Data"}.
{"Node ID","ID Node"}.
{"Node not found","Node tidak ditemukan"}.
{"Nodes","Node-node"}.
{"No limit","Tidak terbatas"}.
{"None","Tak satupun"}.
{"No resource provided","Tidak ada sumber daya yang disediakan"}.
{"Not Found","Tidak Ditemukan"}.
{"Notify subscribers when items are removed from the node","Beritahu pelanggan ketika item tersebut dikeluarkan dari node"}.
{"Notify subscribers when the node configuration changes","Beritahu pelanggan ketika ada perubahan konfigurasi node"}.
{"Notify subscribers when the node is deleted","Beritahu pelanggan ketika node dihapus"}.
{"November","Nopember"}.
{"Number of occupants","Jumlah Penghuni"}.
{"Number of online users","Jumlah pengguna online"}.
{"Number of registered users","Jumlah pengguna terdaftar"}.
{"October","Oktober"}.
{"Offline Messages:","Pesan Offline:"}.
{"Offline Messages","Pesan Offline"}.
{"OK","YA"}.
{"Old Password:","Password Lama:"}.
{"Online","Online"}.
{"Online Users:","Pengguna Online:"}.
{"Online Users","Pengguna Yang Online"}.
{"Only deliver notifications to available users","Hanya mengirimkan pemberitahuan kepada pengguna yang tersedia"}.
{"Only moderators and participants are allowed to change the subject in this room","Hanya moderator dan peserta yang diizinkan untuk mengganti topik pembicaraan di ruangan ini"}.
{"Only moderators are allowed to change the subject in this room","Hanya moderator yang diperbolehkan untuk mengubah topik dalam ruangan ini"}.
{"Only occupants are allowed to send messages to the conference","Hanya penghuni yang diizinkan untuk mengirim pesan ke konferensi"}.
{"Only occupants are allowed to send queries to the conference","Hanya penghuni diizinkan untuk mengirim permintaan ke konferensi"}.
{"Only service administrators are allowed to send service messages","Layanan hanya diperuntukan kepada administrator yang diizinkan untuk mengirim layanan pesan"}.
{"Options","Pilihan-pilihan"}.
{"Organization Name","Nama Organisasi"}.
{"Organization Unit","Unit Organisasi"}.
{"Outgoing s2s Connections","Koneksi Keluar s2s"}.
{"Outgoing s2s Connections:","Koneksi s2s yang keluar:"}.
{"Owner privileges required","Hak istimewa owner dibutuhkan"}.
{"Packet","Paket"}.
{"Password ~b","Kata Sandi ~b"}.
{"Password:","Kata Sandi:"}.
{"Password","Sandi"}.
{"Password Verification:","Verifikasi Kata Sandi:"}.
{"Password Verification","Verifikasi Sandi"}.
{"Path to Dir","Jalur ke Dir"}.
{"Path to File","Jalur ke File"}.
{"Pending","Tertunda"}.
{"Period: ","Periode:"}.
{"Persist items to storage","Pertahankan item ke penyimpanan"}.
{"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.","Harap dicatat bahwa pilihan ini hanya akan membuat cadangan builtin Mnesia database. Jika Anda menggunakan modul ODBC, anda juga perlu untuk membuat cadangan database SQL Anda secara terpisah."}.
{"Pong","Pong"}.
{"Port ~b","Port ~b"}.
{"Port","Port"}.
{"Present real Jabber IDs to","Tampilkan Jabber ID secara lengkap"}.
{"private, ","pribadi, "}.
{"Protocol","Protocol"}.
{"Publish-Subscribe","Setujui-Pertemanan"}.
{"PubSub subscriber request","Permintaan pertemanan PubSub"}.
{"Purge all items when the relevant publisher goes offline","Bersihkan semua item ketika penerbit yang relevan telah offline"}.
{"Queries to the conference members are not allowed in this room","Permintaan untuk para anggota konferensi tidak diperbolehkan di ruangan ini"}.
{"RAM and disc copy","RAM dan disc salinan"}.
{"RAM copy","Salinan RAM"}.
{"Raw","mentah"}.
{"Really delete message of the day?","Benar-benar ingin menghapus pesan harian?"}.
{"Recipient is not in the conference room","Penerima tidak berada di ruangan konferensi"}.
{"Register a Jabber account","Daftarkan sebuah akun jabber"}.
{"Registered Users:","Pengguna Terdaftar:"}.
{"Registered Users","Pengguna Terdaftar"}.
{"Register","Mendaftar"}.
{"Registration in mod_irc for ","Pendaftaran di mod_irc untuk"}.
{"Remote copy","Salinan Remote"}.
{"Remove All Offline Messages","Hapus Semua Pesan Offline"}.
{"Remove","Menghapus"}.
{"Remove User","Hapus Pengguna"}.
{"Replaced by new connection","Diganti dengan koneksi baru"}.
{"Resources","Sumber daya"}.
{"Restart","Jalankan Ulang"}.
{"Restart Service","Restart Layanan"}.
{"Restore Backup from File at ","Kembalikan Backup dari File pada"}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Mengembalikan cadangan yang berpasanagn setelah ejabberd berikutnya dijalankan ulang (memerlukan memori lebih sedikit):"}.
{"Restore binary backup immediately:","Segera mengembalikan cadangan yang berpasangan:"}.
{"Restore","Mengembalikan"}.
{"Restore plain text backup immediately:","Segera mengembalikan cadangan teks biasa:"}.
{"Room Configuration","Konfigurasi Ruangan"}.
{"Room creation is denied by service policy","Pembuatan Ruangan ditolak oleh kebijakan layanan"}.
{"Room description","Keterangan ruangan"}.
{"Room Occupants","Penghuni Ruangan"}.
{"Room title","Nama Ruangan"}.
{"Roster groups allowed to subscribe","Kelompok kontak yang diizinkan untuk berlangganan"}.
{"Roster","Kontak"}.
{"Roster of ","Kontak dari"}.
{"Roster size","Ukuran Daftar Kontak"}.
{"RPC Call Error","Panggilan Kesalahan RPC"}.
{"Running Nodes","Menjalankan Node"}.
{"~s access rule configuration","~s aturan akses konfigurasi"}.
{"Saturday","Sabtu"}.
{"Script check","Periksa naskah"}.
{"Search Results for ","Hasil Pencarian untuk"}.
{"Search users in ","Pencarian pengguna dalam"}.
{"Send announcement to all online users","Kirim pengumuman untuk semua pengguna yang online"}.
{"Send announcement to all online users on all hosts","Kirim pengumuman untuk semua pengguna yang online pada semua host"}.
{"Send announcement to all users","Kirim pengumuman untuk semua pengguna"}.
{"Send announcement to all users on all hosts","Kirim pengumuman untuk semua pengguna pada semua host"}.
{"September","September"}.
{"Server ~b","Layanan ~b"}.
{"Server:","Layanan:"}.
{"Set message of the day and send to online users","Mengatur pesan harian dan mengirimkan ke pengguna yang online"}.
{"Set message of the day on all hosts and send to online users","Mengatur pesan harian pada semua host dan kirimkan ke pengguna yang online"}.
{"Shared Roster Groups","Berbagi grup kontak"}.
{"Show Integral Table","Tampilkan Tabel Terpisah"}.
{"Show Ordinary Table","Tampilkan Tabel Normal"}.
{"Shut Down Service","Shut Down Layanan"}.
{"~s invites you to the room ~s","~s mengundang anda ke ruangan ~s"}.
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Beberapa klien Jabber dapat menyimpan password di komputer Anda. Gunakan fitur itu hanya jika Anda mempercayai komputer Anda aman."}.
{"Specify the access model","Tentukan model akses"}.
{"Specify the event message type","Tentukan jenis acara pesan"}.
{"Specify the publisher model","Tentukan model penerbitan"}.
{"~s's Offline Messages Queue","Antrian Pesan Offline ~s"}.
{"Start Modules at ","Mulai Modul pada"}.
{"Start Modules","Memulai Modul"}.
{"Start","Mulai"}.
{"Statistics of ~p","statistik dari ~p"}.
{"Statistics","Statistik"}.
{"Stop","Hentikan"}.
{"Stop Modules at ","Hentikan Modul pada"}.
{"Stop Modules","Hentikan Modul"}.
{"Stopped Nodes","Menghentikan node"}.
{"Storage Type","Jenis Penyimpanan"}.
{"Store binary backup:","Penyimpanan cadangan yang berpasangan:"}.
{"Store plain text backup:","Simpan cadangan teks biasa:"}.
{"Subject","Subyek"}.
{"Submit","Serahkan"}.
{"Submitted","Ulangi masukan"}.
{"Subscriber Address","Alamat Pertemanan"}.
{"Subscription","Berlangganan"}.
{"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 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:"}.
{"The password is too weak","Kata sandi terlalu lemah"}.
{"The password of your Jabber account was successfully changed.","Kata sandi pada akun Jabber Anda telah berhasil diubah."}.
{"There was an error changing the password: ","Ada kesalahan dalam mengubah password:"}.
{"There was an error creating the account: ","Ada kesalahan saat membuat akun:"}.
{"There was an error deleting the account: ","Ada kesalahan saat menghapus akun:"}.
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Pada bagian ini huruf besar dan kecil tidak dibedakan: Misalnya macbeth adalah sama dengan MacBeth juga 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.","Halaman ini memungkinkan untuk membuat akun Jabber di layanan Jabber ini. JID Anda (Jabber Pengenal) akan berbentuk: namapengguna@layanan. Harap baca dengan seksama petunjuk-petunjuk untuk mengisi kolom dengan benar."}.
{"This page allows to unregister a Jabber account in this Jabber server.","Pada bagian ini memungkinkan Anda untuk membatalkan pendaftaran akun Jabber pada layanan Jabber ini."}.
{"Thursday","Kamis"}.
{"Time delay","Waktu tunda"}.
{"Time","Waktu"}.
{"To","Kepada"}.
{"To ~s","Kepada ~s"}.
{"Traffic rate limit is exceeded","Lalu lintas melebihi batas"}.
{"Transactions Aborted:","Transaksi yang dibatalkan:"}.
{"Transactions Committed:","Transaksi yang dilakukan:"}.
{"Transactions Logged:","Transaksi yang ditempuh:"}.
{"Transactions Restarted:","Transaksi yang dijalankan ulang:"}.
{"Tuesday","Selasa"}.
{"Unable to generate a CAPTCHA","Tidak dapat menghasilkan CAPTCHA"}.
{"Unauthorized","Ditolak"}.
{"Unregister a Jabber account","Nonaktifkan akun jabber"}.
{"Unregister","Nonaktifkan"}.
{"Update","Memperbarui"}.
{"Update message of the day (don't send)","Rubah pesan harian (tidak dikirim)"}.
{"Update message of the day on all hosts (don't send)","Rubah pesan harian pada semua host (tidak dikirim)"}.
{"Update plan","Rencana Perubahan"}.
{"Update script","Perbarui naskah"}.
{"Uptime:","Sampai saat:"}.
{"Use of STARTTLS required","Penggunaan STARTTLS diperlukan"}.
{"User Management","Manajemen Pengguna"}.
{"Username:","Nama Pengguna:"}.
{"User","Pengguna"}.
{"Users are not allowed to register accounts so quickly","Pengguna tidak diperkenankan untuk mendaftar akun begitu cepat"}.
{"Users Last Activity","Aktifitas terakhir para pengguna"}.
{"Users","Pengguna"}.
{"Validate","Mengesahkan"}.
{"vCard User Search","vCard Pencarian Pengguna"}.
{"Virtual Hosts","Virtual Hosts"}.
{"Visitors are not allowed to change their nicknames in this room","Visitor tidak diperbolehkan untuk mengubah nama julukan di ruangan ini"}.
{"Visitors are not allowed to send messages to all occupants","Visitor tidak diperbolehkan untuk mengirim pesan ke semua penghuni"}.
{"Wednesday","Rabu"}.
{"When to send the last published item","Ketika untuk mengirim item terakhir yang dipublikasikan"}.
{"Whether to allow subscriptions","Apakah diperbolehkan untuk berlangganan"}.
{"You can later change your password using a Jabber client.","Anda dapat mengubah kata sandi anda dilain waktu dengan menggunakan klien Jabber."}.
{"You have been banned from this room","Anda telah diblokir dari ruangan ini"}.
{"You must fill in field \"Nickname\" in the form","Anda harus mengisi kolom \"Julukan\" dalam formulir"}.
{"You need a client that supports x:data and CAPTCHA to register","Anda memerlukan klien yang mendukung x:data dan CAPTCHA untuk mendaftar"}.
{"You need a client that supports x:data to register the nickname","Anda memerlukan klien yang mendukung x:data untuk mendaftar julukan"}.
{"You need an x:data capable client to configure mod_irc settings","Anda memerlukan x:data klien untuk mampu mengkonfigurasi pengaturan mod_irc"}.
{"You need an x:data capable client to configure room","Anda memerlukan x:data klien untuk dapat mengkonfigurasi ruangan"}.
{"You need an x:data capable client to search","Anda memerlukan x:data klien untuk melakukan pencarian"}.
{"Your active privacy list has denied the routing of this stanza.","Daftar privasi aktif Anda telah menolak routing ztanza ini"}.
{"Your contact offline message queue is full. The message has been discarded.","Kontak offline Anda pada antrian pesan sudah penuh. Pesan telah dibuang."}.
{"Your Jabber account was successfully created.","Jabber akun Anda telah sukses dibuat"}.
{"Your Jabber account was successfully deleted.","Jabber akun Anda berhasil dihapus."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Pesan Anda untuk ~s sedang diblokir. Untuk membuka blokir tersebut, kunjungi ~s"}.
-1946
View File
File diff suppressed because it is too large Load Diff
-410
View File
@@ -1,410 +0,0 @@
%% -*- coding: latin-1 -*-
{"Access Configuration","Configurazione dell'accesso"}.
{"Access Control List Configuration","Configurazione dei diritti di accesso (ACL)"}.
{"Access control lists","Diritti di accesso (ACL)"}.
{"Access Control Lists","Diritti di accesso (ACL)"}.
{"Access denied by service policy","Accesso impedito dalle politiche del servizio"}.
{"Access rules","Regole di accesso"}.
{"Access Rules","Regole di accesso"}.
{"Action on user","Azione sull'utente"}.
{"Add Jabber ID","Aggiungere un Jabber ID (Jabber ID)"}.
{"Add New","Aggiungere nuovo"}.
{"Add User","Aggiungere un utente"}.
{"Administration","Amministrazione"}.
{"Administration of ","Amministrazione di "}.
{"Administrator privileges required","Necessari i privilegi di amministratore"}.
{"A friendly name for the node","Un nome comodo per il nodo"}.
{"All activity","Tutta l'attività"}.
{"Allow this Jabber ID to subscribe to this pubsub node?","Consentire a questo Jabber ID l'iscrizione a questo nodo pubsub?"}.
{"Allow users to change the subject","Consentire agli utenti di cambiare l'oggetto"}.
{"Allow users to query other users","Consentire agli utenti query verso altri utenti"}.
{"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"}.
{"A password is required to enter this room","Per entrare in questa stanza è prevista una password"}.
{"April","Aprile"}.
{"August","Agosto"}.
{"Backup Management","Gestione dei salvataggi"}.
{"Backup","Salvare"}.
{"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"}.
{"Chatroom is started","La stanza è avviata"}.
{"Chatroom is stopped","La stanza è arrestata"}.
{"Chatrooms","Stanze"}.
{"Choose a username and password to register with this server","Scegliere un nome utente e una password per la registrazione con questo server"}.
{"Choose modules to stop","Selezionare i moduli da arrestare"}.
{"Choose storage type of tables","Selezionare una modalità di conservazione delle tabelle"}.
{"Choose whether to approve this entity's subscription.","Scegliere se approvare l'iscrizione per questa entità"}.
{"City","Città"}.
{"Commands","Comandi"}.
{"Conference room does not exist","La stanza per conferenze non esiste"}.
{"Configuration","Configurazione"}.
{"Configuration of room ~s","Configurazione per la stanza ~s"}.
{"Connected Resources:","Risorse connesse:"}.
{"Connections parameters","Parametri delle connessioni"}.
{"Country","Paese"}.
{"CPU Time:","Tempo CPU:"}.
{"Database","Database"}.
{"Database Tables Configuration at ","Configurazione delle tabelle del database su "}.
{"December","Dicembre"}.
{"Default users as participants","Definire per default gli utenti come partecipanti"}.
{"Delete message of the day","Eliminare il messaggio del giorno (MOTD)"}.
{"Delete message of the day on all hosts","Eliminare il messaggio del giorno (MOTD) su tutti gli host"}.
{"Delete Selected","Eliminare gli elementi selezionati"}.
{"Delete User","Eliminare l'utente"}.
{"Deliver event notifications","Inviare notifiche degli eventi"}.
{"Deliver payloads with event notifications","Inviare il contenuto del messaggio con la notifica dell'evento"}.
{"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"}.
{"ejabberd SOCKS5 Bytestreams module","Modulo SOCKS5 Bytestreams per ejabberd"}.
{"ejabberd vCard module","Modulo vCard per ejabberd"}.
{"ejabberd Web Admin","Amministrazione web ejabberd"}.
{"Elements","Elementi"}.
{"Email","E-mail"}.
{"Enable logging","Abilitare i log"}.
{"Encoding for server ~b","Codifica per il server ~b"}.
{"End User Session","Terminare la sessione dell'utente"}.
{"Enter list of {Module, [Options]}","Immettere un elenco di {Modulo, [Opzioni]}"}.
{"Enter nickname you want to register","Immettere il nickname che si vuole registrare"}.
{"Enter path to backup file","Immettere il percorso del file di salvataggio"}.
{"Enter path to jabberd14 spool dir","Immettere il percorso della directory di spool di jabberd14"}.
{"Enter path to jabberd14 spool file","Immettere il percorso del file di spool di jabberd14"}.
{"Enter path to text file","Immettere il percorso del file di testo"}.
{"Enter the text you see","Immettere il testo visibile"}.
{"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.","Immettere il nome utente e le codifiche che si desidera utilizzare per la connessione ai server IRC. Premere \"Avanti\" per vedere i successivi campi da compilare. Premere \"Fatto\" per salvare le impostazioni."}.
{"Enter username, encodings, ports and passwords you wish to use for connecting to IRC servers","Immettere il nome utente, le codifiche, le porte e le password che si desidera utilizzare per la connessione ai server IRC"}.
{"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"}.
{"Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)","Riempire il modulo per la ricerca di utenti Jabber corrispondenti ai criteri (Aggiungere * alla fine del campo per la ricerca di una sottostringa"}.
{"Friday","Venerdì"}.
{"From","Da"}.
{"From ~s","Da ~s"}.
{"Full Name","Nome completo"}.
{"Get Number of Online Users","Ottenere il numero di utenti online"}.
{"Get Number of Registered Users","Ottenere il numero di utenti registrati"}.
{"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"}.
{"has been kicked because of an affiliation change","è stato espulso a causa di un cambiamento di appartenenza"}.
{"has been kicked because of a system shutdown","è stato espulso a causa dello spegnimento del sistema"}.
{"has been kicked because the room has been changed to members-only","è stato espulso per la limitazione della stanza ai soli membri"}.
{"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"}.
{"Import user data from jabberd14 spool file:","Importare i dati utente da file di spool di jabberd14:"}.
{"Import User from File at ","Importare un utente dal file "}.
{"Import users data from a PIEFXIS file (XEP-0227):","Importare i dati utenti da un file PIEFXIS (XEP-0227):"}.
{"Import users data from jabberd14 spool directory:","Importare i dati utenti da directory di spool di jabberd14:"}.
{"Import Users from Dir at ","Importare utenti dalla directory "}.
{"Import Users From jabberd14 Spool Files","Importare utenti da file di spool di jabberd14"}.
{"Improper message type","Tipo di messaggio non corretto"}.
{"Incorrect password","Password non esatta"}.
{"Invalid affiliation: ~s","Affiliazione non valida: ~s"}.
{"Invalid role: ~s","Ruolo non valido: ~s"}.
{"IP addresses","Indirizzi IP"}.
{"IP","IP"}.
{"IRC channel (don't put the first #)","Canale IRC (senza il # iniziale)"}.
{"IRC server","Server IRC"}.
{"IRC settings","Impostazioni IRC"}.
{"IRC Transport","Transport IRC"}.
{"IRC username","Nome utente IRC"}.
{"IRC Username","Nome utente IRC"}.
{"is now known as","è ora conosciuta/o come"}.
{"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"}.
{"Join IRC channel","Entra nel canale IRC"}.
{"joins the room","entra nella stanza"}.
{"Join the IRC channel here.","Entra nel canale IRC qui."}.
{"Join the IRC channel in this Jabber ID: ~s","Entra nel canale IRC in questo ID Jabber: ~s"}.
{"July","Luglio"}.
{"June","Giugno"}.
{"Last Activity","Ultima attività"}.
{"Last login","Ultimo accesso"}.
{"Last month","Ultimo mese"}.
{"Last year","Ultimo anno"}.
{"leaves the room","esce dalla stanza"}.
{"Listened Ports at ","Porte in ascolto su "}.
{"Listened Ports","Porte in ascolto"}.
{"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 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"}.
{"Make room persistent","Rendere la stanza persistente"}.
{"Make room public searchable","Rendere la sala visibile al pubblico"}.
{"March","Marzo"}.
{"Maximum Number of Occupants","Numero massimo di occupanti"}.
{"Max # of items to persist","Numero massimo di elementi da conservare persistentemente"}.
{"Max payload size in bytes","Dimensione massima del contenuto del messaggio in byte"}.
{"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"}.
{"Module","Modulo"}.
{"Modules","Moduli"}.
{"Monday","Lunedì"}.
{"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"}.
{"Node not found","Nodo non trovato"}.
{"Nodes","Nodi"}.
{"No limit","Nessun limite"}.
{"None","Nessuno"}.
{"No resource provided","Nessuna risorsa fornita"}.
{"Not Found","Non trovato"}.
{"Notify subscribers when items are removed from the node","Notificare gli iscritti quando sono eliminati degli elementi dal nodo"}.
{"Notify subscribers when the node configuration changes","Notificare gli iscritti quando la configurazione del nodo cambia"}.
{"Notify subscribers when the node is deleted","Notificare gli iscritti quando il nodo è cancellato"}.
{"November","Novembre"}.
{"Number of occupants","Numero di presenti"}.
{"Number of online users","Numero di utenti online"}.
{"Number of registered users","Numero di utenti registrati"}.
{"October","Ottobre"}.
{"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"}.
{"Options","Opzioni"}.
{"Organization Name","Nome dell'organizzazione"}.
{"Organization Unit","Unità dell'organizzazione"}.
{"Outgoing s2s Connections:","Connessioni s2s in uscita:"}.
{"Outgoing s2s Connections","Connessioni s2s in uscita"}.
{"Owner privileges required","Necessari i privilegi di proprietario"}.
{"Packet","Pacchetto"}.
{"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"}.
{"Pending","Pendente"}.
{"Period: ","Periodo:"}.
{"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"}.
{"Present real Jabber IDs to","Rendere visibile il Jabber ID reale a"}.
{"private, ","privato, "}.
{"Protocol","Protocollo"}.
{"Publish-Subscribe","Pubblicazione-Iscrizione"}.
{"PubSub subscriber request","Richiesta di iscrizione per PubSub"}.
{"Purge all items when the relevant publisher goes offline","Cancella tutti gli elementi quando chi li ha pubblicati non è più online"}.
{"Queries to the conference members are not allowed in this room","In questa stanza non sono consentite query ai membri della conferenza"}.
{"RAM and disc copy","Copia in memoria (RAM) e su disco"}.
{"RAM copy","Copia in memoria (RAM)"}.
{"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"}.
{"Remove","Eliminare"}.
{"Remove User","Eliminare l'utente"}.
{"Replaced by new connection","Sostituito da una nuova connessione"}.
{"Resources","Risorse"}.
{"Restart","Riavviare"}.
{"Restart Service","Riavviare il servizio"}.
{"Restore Backup from File at ","Recuperare il salvataggio dal file "}.
{"Restore binary backup after next ejabberd restart (requires less memory):","Recuperare un salvataggio binario dopo il prossimo riavvio di ejabberd (necessita di meno memoria):"}.
{"Restore binary backup immediately:","Recuperare un salvataggio binario adesso:"}.
{"Restore plain text backup immediately:","Recuperare un salvataggio come semplice testo adesso:"}.
{"Restore","Recuperare"}.
{"Room Configuration","Configurazione della stanza"}.
{"Room creation is denied by service policy","La creazione di stanze è impedita dalle politiche del servizio"}.
{"Room description","Descrizione della stanza"}.
{"Room Occupants","Presenti nella stanza"}.
{"Room title","Titolo della stanza"}.
{"Roster groups allowed to subscribe","Gruppi roster abilitati alla registrazione"}.
{"Roster","Lista dei contatti"}.
{"Roster of ","Lista dei contatti di "}.
{"Roster size","Dimensione della lista dei contatti"}.
{"RPC Call Error","Errore di chiamata RPC"}.
{"Running Nodes","Nodi attivi"}.
{"~s access rule configuration","Configurazione delle regole di accesso per ~s"}.
{"Saturday","Sabato"}.
{"Script check","Verifica dello script"}.
{"Search Results for ","Risultati della ricerca per "}.
{"Search users in ","Cercare utenti in "}.
{"Send announcement to all online users","Inviare l'annuncio a tutti gli utenti online"}.
{"Send announcement to all online users on all hosts","Inviare l'annuncio a tutti gli utenti online su tutti gli host"}.
{"Send announcement to all users","Inviare l'annuncio a tutti gli utenti"}.
{"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"}.
{"Show Integral Table","Mostrare la tabella integrale"}.
{"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 the computer, but you should do this only in your personal computer for safety reasons.","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"}.
{"~s's Offline Messages Queue","Coda di ~s messaggi offline"}.
{"Start","Avviare"}.
{"Start Modules at ","Avviare moduli su "}.
{"Start Modules","Avviare moduli"}.
{"Statistics of ~p","Statistiche di ~p"}.
{"Statistics","Statistiche"}.
{"Stop","Arrestare"}.
{"Stop Modules","Arrestare moduli"}.
{"Stop Modules at ","Arrestare moduli su "}.
{"Stopped Nodes","Nodi arrestati"}.
{"Storage Type","Tipo di conservazione"}.
{"Store binary backup:","Conservare un salvataggio binario:"}.
{"Store plain text backup:","Conservare un salvataggio come semplice testo:"}.
{"Subject","Oggetto"}.
{"Submit","Inviare"}.
{"Submitted","Inviato"}.
{"Subscriber Address","Indirizzo dell'iscritta/o"}.
{"Subscription","Iscrizione"}.
{"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 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."}.
{"Thursday","Giovedì"}.
{"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:"}.
{"Transactions Committed:","Transazioni avvenute:"}.
{"Transactions Logged:","Transazioni con log:"}.
{"Transactions Restarted:","Transazioni riavviate:"}.
{"Tuesday","Martedì"}.
{"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 message of the day (don't send)","Aggiornare il messaggio del giorno (MOTD) (non inviarlo)"}.
{"Update message of the day on all hosts (don't send)","Aggiornare il messaggio del giorno (MOTD) su tutti gli host (non inviarlo)"}.
{"Update plan","Piano di aggiornamento"}.
{"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"}.
{"User","Utente"}.
{"Validate","Validare"}.
{"vCard User Search","Ricerca di utenti per vCard"}.
{"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"}.

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