Compare commits
323 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 28186ddf19 | |||
| 8dfe7e977a | |||
| b345632a9a | |||
| 34e615d854 | |||
| d8d9ef32ad | |||
| a9ed26e484 | |||
| a76531b90b | |||
| d64e453364 | |||
| af9d642a71 | |||
| 6a659d7475 | |||
| 7da81249f8 | |||
| 8214a4fa79 | |||
| e048bc6712 | |||
| e5cad9be65 | |||
| 1dc0ecd1e9 | |||
| 0c09599d7b | |||
| e95ae66d3c | |||
| 5f9d480f6a | |||
| d34227cae1 | |||
| 72867f8d1e | |||
| 8f04491a4d | |||
| 0371b0f664 | |||
| 02cc212f16 | |||
| 0fe64674ee | |||
| e937ff62fe | |||
| d75d69d5d5 | |||
| f48f9fee2e | |||
| 5c6ffaafd6 | |||
| 3581d90d9d | |||
| 9e1f3862cb | |||
| c2a3f037bb | |||
| bf1aacefcb | |||
| e306cb0797 | |||
| 1c6221d8a0 | |||
| 2e8023158d | |||
| ff98cb4e15 | |||
| 0f01019e06 | |||
| f9b8dfd400 | |||
| 81e872c110 | |||
| 9ed2ca5079 | |||
| e7e9ca54df | |||
| 23a18b1a60 | |||
| 0a88f9c8a9 | |||
| de51ba331e | |||
| d37b2f851d | |||
| f40c5c304d | |||
| 37c75f556d | |||
| ec61c2f3dc | |||
| d02c7d3b3b | |||
| a2dfd2e0b9 | |||
| b4ea1625e4 | |||
| 7655e10ba4 | |||
| b64fff1faa | |||
| f1e04639bb | |||
| 73dbd34f95 | |||
| 6bbae4cea2 | |||
| b95d67aefb | |||
| 73f8aded17 | |||
| fdda572c9a | |||
| e4d6007293 | |||
| df58ee924f | |||
| d9c1befbfc | |||
| b173ca2fd0 | |||
| 27ed8f5647 | |||
| 714bc2d329 | |||
| d9cb6d1af7 | |||
| 583dd15beb | |||
| 604cc9bb3a | |||
| 0fc1aea379 | |||
| 385af01587 | |||
| d9feed54a9 | |||
| b89f3c442c | |||
| 9629601d0b | |||
| e9a053f7ac | |||
| a75966f1a2 | |||
| 43f813d6f8 | |||
| eada3b6e93 | |||
| 90e0293df3 | |||
| bd11a00f8f | |||
| 54af08799d | |||
| b71708aab9 | |||
| a3be28b5c4 | |||
| 743b25448a | |||
| 66c2f45bff | |||
| 8d969a4a9f | |||
| bf62cf3db6 | |||
| 8daea451e3 | |||
| 864188ad65 | |||
| 65260e2449 | |||
| b9926c6796 | |||
| e7575ab63f | |||
| 92913389a5 | |||
| 65be619907 | |||
| ee76581b49 | |||
| 842ec1494c | |||
| 8aa0f7073f | |||
| 8a645a2d3d | |||
| 4a54395561 | |||
| b109c5927e | |||
| 23beaa9fad | |||
| 839229b5f0 | |||
| b89b0f140a | |||
| 09454e1658 | |||
| 828c0ad1e0 | |||
| 87bbd9cb02 | |||
| 70507a694c | |||
| 1b168e7d5c | |||
| d5935fd1ad | |||
| 2bcd2c38a9 | |||
| 042cddb768 | |||
| e0b7fd72af | |||
| 9c5e4454e4 | |||
| 7fe0b8d274 | |||
| 90ca689123 | |||
| db2825342c | |||
| bc1de531cc | |||
| 2ea5f7856c | |||
| e5b66aadaf | |||
| cff7c4c100 | |||
| e30592c050 | |||
| ff92dab49e | |||
| f652f8c8d6 | |||
| 80a502782b | |||
| 3bf7fbc117 | |||
| 0ff5b44d15 | |||
| 61926a44be | |||
| ec5f369d9d | |||
| dbebcd08c7 | |||
| 768460b518 | |||
| 515dfc002b | |||
| 16645a3c0a | |||
| 38949bdeea | |||
| 5f3457dbd6 | |||
| b9108c4650 | |||
| a54c667c80 | |||
| bcd2cd7e93 | |||
| 337ba42953 | |||
| 4f5c00a83d | |||
| c6bbdafe92 | |||
| f2e81ed2a0 | |||
| 7efc208b9e | |||
| 266691f929 | |||
| 482917348b | |||
| 945a5cd09c | |||
| 9ea51d3295 | |||
| 77308e6aff | |||
| b0c6caa60e | |||
| 3cfc5c9633 | |||
| cd336369a5 | |||
| c62956ab7b | |||
| 1d7e29765e | |||
| c0f7008e96 | |||
| 2ca5712507 | |||
| 7a37483307 | |||
| 21312c79aa | |||
| 56d00e427d | |||
| 7bb4da2fee | |||
| f19b975e8d | |||
| 83fa637569 | |||
| 858bfb4b80 | |||
| 42c82c9e72 | |||
| 8efdd439f1 | |||
| 70977cbb13 | |||
| ad31fbee1e | |||
| 6f54b6ae3b | |||
| e94b89a57d | |||
| 44528d3fef | |||
| 4580feaa3c | |||
| f3b8dc9c0b | |||
| 9d923e8e6d | |||
| c861fa6a6a | |||
| d7d8085d3b | |||
| 5e70a47f20 | |||
| e286bb23db | |||
| 2c42bd07c8 | |||
| 2001540143 | |||
| d88a32992a | |||
| 64c09c20eb | |||
| c990704418 | |||
| edf5b3c7f0 | |||
| e5a2d42484 | |||
| 51e45516a4 | |||
| 41b06cb79e | |||
| d8509aec12 | |||
| 5649e35a64 | |||
| 865074603c | |||
| 6d13120e69 | |||
| e6a3b1fa68 | |||
| df66fa6a48 | |||
| 5d499c7173 | |||
| b1e967eaf3 | |||
| 151fa2ec50 | |||
| e4de03f3df | |||
| 724d09a510 | |||
| fba6a64648 | |||
| 0539637d30 | |||
| 4a7d42647f | |||
| b56663ef07 | |||
| 25597a4326 | |||
| 56c8f6b280 | |||
| abc3260e75 | |||
| 24a11fc8e8 | |||
| 6eb2f07274 | |||
| 9cd47d7085 | |||
| 69d1d62add | |||
| 3db9459591 | |||
| 6320dfd34e | |||
| 055fe744d3 | |||
| d7c696f97c | |||
| fc444ce503 | |||
| 88f392721b | |||
| c55e7b8499 | |||
| 1f7ca91670 | |||
| d9131c854d | |||
| 09a87f5a0c | |||
| 1db70edcf8 | |||
| 1a3533e4a2 | |||
| 3db9de26e9 | |||
| 78f0439e78 | |||
| b124e911d3 | |||
| c836dc66a8 | |||
| b1b3c4cdcf | |||
| b0f95975c2 | |||
| 2e48c24638 | |||
| 7359eb6246 | |||
| 99d21bca49 | |||
| 1b98084918 | |||
| d311eaf8f3 | |||
| 0355e15a42 | |||
| 101f7a6d63 | |||
| 4aa85c538c | |||
| 22980ed8a5 | |||
| cb1c0a3188 | |||
| 0705695e02 | |||
| c11922e2a2 | |||
| 37226dd41f | |||
| cd0b65f4d5 | |||
| b7c088d4b0 | |||
| e197b25e82 | |||
| b02506eaaf | |||
| 8694517c34 | |||
| 2febd1c220 | |||
| aa0ed37034 | |||
| da18245d9a | |||
| 5cc9a1fe44 | |||
| de0aead1cd | |||
| 624ba7e94f | |||
| 9bb3aee0e2 | |||
| 16585713f8 | |||
| e01e528235 | |||
| eac7e3488c | |||
| 762486d199 | |||
| 23493ce239 | |||
| 510ab53341 | |||
| 220cf73318 | |||
| f6d102f5e2 | |||
| 05b68764cc | |||
| 4e51e82ccf | |||
| 116fa8e9ca | |||
| ce6fd654a0 | |||
| 5ee2f48aea | |||
| ccb47a67c4 | |||
| a2e6d8bb6b | |||
| 1bd560f3f2 | |||
| 222bb1d55d | |||
| a5ea3fa282 | |||
| 6c52438128 | |||
| 0508dce2ed | |||
| 87dda1b638 | |||
| 5ec214386e | |||
| 73ba38ae35 | |||
| 1ffa9a0cf5 | |||
| 633b362577 | |||
| 150b7e7219 | |||
| e6065bf08f | |||
| c2aa5f77bf | |||
| 7caec56e96 | |||
| 97354426cf | |||
| 63e3fb92d1 | |||
| a2d1ffffe6 | |||
| f17d4c0adc | |||
| 92a09fdb71 | |||
| 039d786e1f | |||
| 2d707cc0d2 | |||
| 0a88d03dc9 | |||
| f12ee28660 | |||
| 260c289d34 | |||
| d8899ca9ac | |||
| 1e456065f6 | |||
| 82074190fb | |||
| 6fe7c5cac5 | |||
| e9d1201ea8 | |||
| 9a89b360c0 | |||
| b39a1e2d74 | |||
| 151b818af4 | |||
| df47e2a93f | |||
| d0e93f9219 | |||
| 47c5aba1e5 | |||
| 00abf5d42c | |||
| 9c25d1024a | |||
| ee736b1ab7 | |||
| 065e96d24b | |||
| 5f075f316f | |||
| a5987800c7 | |||
| 357e7e117d | |||
| 3947e64524 | |||
| e234ced107 | |||
| f0ba506fde | |||
| a19fdb717b | |||
| 9e1973a238 | |||
| e7c84b81b2 | |||
| 66a84b8d2b | |||
| 5574b21dd6 | |||
| b2f536ec8b | |||
| 87ea71c3c9 | |||
| fdb7e3e3fa | |||
| 2d32c66fd7 | |||
| 20c0fed457 | |||
| 75094df25e | |||
| 299360c8ed | |||
| 248cc2d013 | |||
| 00ccb119ea | |||
| 8eccbade56 |
+7
-2
@@ -2,10 +2,15 @@ language: erlang
|
||||
|
||||
otp_release:
|
||||
- 19.3
|
||||
- 22.2
|
||||
- 22.3
|
||||
- 23.0
|
||||
|
||||
os: linux
|
||||
|
||||
dist: xenial
|
||||
|
||||
services:
|
||||
- redis-server
|
||||
- redis
|
||||
- postgresql
|
||||
|
||||
before_install:
|
||||
|
||||
+101
-2
@@ -1,9 +1,108 @@
|
||||
# Version 20.12
|
||||
|
||||
- Add support for `SCRAM-SHA-{256,512}-{PLUS}` authentication
|
||||
- Don't use same value in cache for user don't exist and wrong password
|
||||
- outgoing_s2s_ipv*_address: New options to set ipv4/ipv6 outbound s2s out interface
|
||||
- s2s_send_packet: this hook now filters outgoing s2s stanzas
|
||||
- start_room: new hook runs when a room process is started
|
||||
- check_decoded_jwt: new hook to check decoded JWT after success authentication
|
||||
|
||||
* Admin
|
||||
- Docker: Fix DB initialization
|
||||
- New sql_odbc_driver option: choose the mssql ODBC driver
|
||||
- Rebar3: Fully supported. Enable with ./configure --with-rebar=/path/to/rebar3
|
||||
- systemd: start ejabberd in foreground
|
||||
|
||||
* Modules:
|
||||
- MAM: Make sure that jid used as base in mam xml_compress is bare
|
||||
- MAM: Support for MAM Flipped Pages
|
||||
- MUC: Always show MucSub subscribers nicks
|
||||
- MUC: Don't forget not-persistent rooms in load_permanent_rooms
|
||||
- MUC Admin: Better error reporting
|
||||
- MUC Admin: Fix commands with hibernated rooms
|
||||
- MUC Admin: Many improvements in rooms_unused_list/destroy
|
||||
- MUC Admin: create_room_with_opts Store options only if room starts
|
||||
- Pubsub: Remove 'dag' node plugin documentation
|
||||
- Push: Fix API call return type on error
|
||||
- Push: Support cache config changes on reload
|
||||
- Register: Allow for account-removal-only setup again
|
||||
- Roster: Make roster subscriptions work better with invalid roster state in db
|
||||
- Vcard: Fix vCard search by User when using Mnesia
|
||||
- WebAdmin: Allow vhost admins to view WebAdmin menus
|
||||
- WebAdmin: Don't do double utf-8 conversion on translated strings
|
||||
- WebAdmin: Mark dangerous buttons with CSS
|
||||
- WebSocket: Make websocket send put back pressure on c2s process
|
||||
|
||||
# Version 20.07
|
||||
|
||||
* Changes in this version
|
||||
- Add support for using unix sockets in listeners.
|
||||
- Make this version compatible with erlang R23
|
||||
- Make room permissions checks more strict for subscribers
|
||||
- Fix problem with muc rooms crashing when using muc logger
|
||||
with some locales
|
||||
- Limit stat calls that logger module issues
|
||||
- Don't throw errors when using user_regexp acl rule and
|
||||
having non-matching host
|
||||
- Fix problem with leaving old data when updating shared rosters
|
||||
- Fix edge case that caused failure of resuming old sessions with
|
||||
stream management.
|
||||
- Fix crash when room that was started with loging enabled was later
|
||||
changed to logging disabled
|
||||
- Increase default shaper limits (this should help with delays for
|
||||
clients that are using jingle)
|
||||
- Fix couple compatibility problems which prevented working on
|
||||
erlang R19
|
||||
- Fix sending presence unavailable when session terminates for
|
||||
clients that only send directed presences (helps with sometimes
|
||||
not leaving muc rooms on disconnect).
|
||||
- Prevent supervisor errors for sockets that were closed before
|
||||
they were passed to handler modules
|
||||
- Make stun module work better with ipv6 addresses
|
||||
|
||||
# Version 20.03
|
||||
|
||||
* Changes in this version
|
||||
- Add support of ssl connection when connection to mysql
|
||||
database (configured with `sql_ssl: true` option)
|
||||
- Experimental support for cockroachdb when configured
|
||||
with postgres connector
|
||||
- Add cache and optimize queries issued by `mod_shared_roster`,
|
||||
this should greatly improve performance of this module when
|
||||
used with `sql` backend
|
||||
- Fix problem with accessing webadmin
|
||||
- Make webadmin work even when url is missing trailing slash
|
||||
- When compiling external modules with ext_mod, use flags
|
||||
that were detected during compilation of ejabberd
|
||||
- Make config changed to ldap options be updated when issued
|
||||
`reload_config` command
|
||||
- Fix `room_empty_destory` command
|
||||
- Fix reporting errors in `send_stanza` command when xml
|
||||
passed to it couldn't be passed correctly
|
||||
|
||||
# Version 20.02
|
||||
|
||||
* Changes in this version
|
||||
- Fix problems when trying to use string format with unicode
|
||||
values directly in xmpp nodes
|
||||
- Add missing oauth_client table declaration in lite.new.sql
|
||||
- Improve compatibility with CocroachDB
|
||||
- Fix importing of piefxis files that did use scram passwords
|
||||
- Fix importing of piefxis files that had multiple includes
|
||||
in them
|
||||
- Update jiffy dependency
|
||||
- Allow storage of emojis when using mssql database (Thanks
|
||||
to Christoph Scholz)
|
||||
- Make ejabberd_auth_http be able to use auth_opts
|
||||
- Make custom_headers options in http modules correctly
|
||||
override built-in values
|
||||
- Fix return value of reload_config and dump_config commands
|
||||
|
||||
# Version 20.01
|
||||
|
||||
* New features
|
||||
- Implement OAUTH authentication for clients
|
||||
- Implement OAUTH authentication in mqtt
|
||||
- Make logging infrastructure use new logger introduced introduced
|
||||
- Make logging infrastructure use new logger introduced
|
||||
in Erlang (requires OTP22)
|
||||
- New configuration parser/validator
|
||||
- Initial work on being able to use CockroachDB as database backend
|
||||
|
||||
+58
-34
@@ -1,4 +1,4 @@
|
||||
REBAR = @ESCRIPT@ rebar
|
||||
REBAR = @ESCRIPT@ @rebar@
|
||||
INSTALL = @INSTALL@
|
||||
SED = @SED@
|
||||
ERL = @ERL@
|
||||
@@ -97,30 +97,50 @@ ifneq ($(INSTALLGROUP),)
|
||||
G_USER=-g $(INSTALLGROUP)
|
||||
endif
|
||||
|
||||
IS_REBAR3:=$(shell expr `$(REBAR) --version | awk -F '[ .]' '/rebar / {print $$2}'` '>=' 3)
|
||||
|
||||
ifeq "$(IS_REBAR3)" "1"
|
||||
SKIPDEPS=
|
||||
LISTDEPS=tree
|
||||
UPDATEDEPS=upgrade
|
||||
DEPSPATTERN="s/ (.*//; /^ / s/.* \([a-z0-9_]*\).*/\1/p;"
|
||||
DEPSBASE=_build
|
||||
DEPSDIR=$(DEPSBASE)/default/lib
|
||||
EBINDIR=$(DEPSDIR)/ejabberd/ebin
|
||||
else
|
||||
SKIPDEPS=skip_deps=true
|
||||
LISTDEPS=-q list-deps
|
||||
UPDATEDEPS=update-deps
|
||||
DEPSPATTERN="/ TAG / s/ .*// p; / REV / s/ .*// p; / BRANCH / s/ .*// p;"
|
||||
DEPSBASE=deps
|
||||
DEPSDIR=$(DEPSBASE)
|
||||
EBINDIR=ebin
|
||||
endif
|
||||
|
||||
all: deps src
|
||||
|
||||
deps: deps/.got
|
||||
deps: $(DEPSDIR)/.got
|
||||
|
||||
deps/.got:
|
||||
rm -rf deps/.got
|
||||
rm -rf deps/.built
|
||||
mkdir -p deps
|
||||
$(REBAR) get-deps && :> deps/.got
|
||||
$(DEPSDIR)/.got:
|
||||
rm -rf $(DEPSDIR)/.got
|
||||
rm -rf $(DEPSDIR)/.built
|
||||
mkdir -p $(DEPSDIR)
|
||||
$(REBAR) get-deps && :> $(DEPSDIR)/.got
|
||||
|
||||
deps/.built: deps/.got
|
||||
$(DEPSDIR)/.built: $(DEPSDIR)/.got
|
||||
$(REBAR) configure-deps
|
||||
$(REBAR) compile && :> deps/.built
|
||||
$(REBAR) compile && :> $(DEPSDIR)/.built
|
||||
|
||||
src: deps/.built
|
||||
$(REBAR) skip_deps=true compile
|
||||
src: $(DEPSDIR)/.built
|
||||
$(REBAR) $(SKIPDEPS) compile
|
||||
|
||||
update:
|
||||
rm -rf deps/.got
|
||||
rm -rf deps/.built
|
||||
$(REBAR) update-deps && :> deps/.got
|
||||
rm -rf $(DEPSDIR)/.got
|
||||
rm -rf $(DEPSDIR)/.built
|
||||
$(REBAR) $(UPDATEDEPS) && :> $(DEPSDIR)/.got
|
||||
|
||||
xref: all
|
||||
$(REBAR) skip_deps=true xref
|
||||
$(REBAR) $(SKIPDEPS) xref
|
||||
|
||||
hooks: all
|
||||
tools/hook_deps.sh ebin
|
||||
@@ -139,10 +159,13 @@ JOIN_PATHS=$(if $(wordlist 2,1000,$(1)),$(firstword $(1))/$(call JOIN_PATHS,$(wo
|
||||
|
||||
VERSIONED_DEP=$(if $(DEP_$(1)_VERSION),$(DEP_$(1)_VERSION),$(1))
|
||||
|
||||
DEPIX:=$(words $(subst /, ,$(DEPSDIR)))
|
||||
LIBIX:=$(shell expr "$(DEPIX)" + 2)
|
||||
|
||||
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_SINGLE=$(if $(subst X$(DEPSBASE)X,,X$(word 1,$(1))X),$(call MAIN_TO_DEST,$(1)),$(if $(subst XlibX,,X$(word $(LIBIX),$(1))X),$(call DEPS_TO_DEST,$(wordlist $(DEPIX),1000,$(1))),$(call ELIXIR_TO_DEST,$(wordlist $(DEPIX),1000,$(1)))))
|
||||
TO_DEST=$(foreach path,$(1),$(call JOIN_PATHS,$(call TO_DEST_SINGLE,$(subst /, ,$(path)))))
|
||||
|
||||
FILTER_DIRS=$(foreach path,$(1),$(if $(wildcard $(path)/*),,$(path)))
|
||||
@@ -150,16 +173,16 @@ FILES_WILDCARD=$(call FILTER_DIRS,$(foreach w,$(1),$(wildcard $(w))))
|
||||
|
||||
ifeq ($(MAKECMDGOALS),copy-files-sub)
|
||||
|
||||
DEPS:=$(sort $(shell $(REBAR) -q list-deps|$(SED) -ne '/ TAG / s/ .*// p; / REV / s/ .*// p; / BRANCH / s/ .*// p'))
|
||||
DEPS:=$(sort $(shell QUIET=1 $(REBAR) $(LISTDEPS) | $(SED) -ne $(DEPSPATTERN) ))
|
||||
|
||||
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)/COPY* deps/$(DEP)/LICENSE* deps/$(DEP)/lib/*/ebin/*.beam deps/$(DEP)/lib/*/ebin/*.app))
|
||||
DEPS_FILES=$(call FILES_WILDCARD,$(foreach DEP,$(DEPS),$(DEPSDIR)/$(DEP)/ebin/*.beam $(DEPSDIR)/$(DEP)/ebin/*.app $(DEPSDIR)/$(DEP)/priv/* $(DEPSDIR)/$(DEP)/priv/lib/* $(DEPSDIR)/$(DEP)/priv/bin/* $(DEPSDIR)/$(DEP)/include/*.hrl $(DEPSDIR)/$(DEP)/COPY* $(DEPSDIR)/$(DEP)/LICENSE* $(DEPSDIR)/$(DEP)/lib/*/ebin/*.beam $(DEPSDIR)/$(DEP)/lib/*/ebin/*.app))
|
||||
|
||||
BINARIES=deps/epam/priv/bin/epam deps/eimp/priv/bin/eimp deps/fs/priv/mac_listener
|
||||
BINARIES=$(DEPSDIR)/epam/priv/bin/epam $(DEPSDIR)/eimp/priv/bin/eimp $(DEPSDIR)/fs/priv/mac_listener
|
||||
|
||||
DEPS_FILES_FILTERED=$(filter-out $(BINARIES) deps/elixir/ebin/elixir.app,$(DEPS_FILES))
|
||||
DEPS_DIRS=$(sort deps/ $(foreach DEP,$(DEPS),deps/$(DEP)/) $(dir $(DEPS_FILES)))
|
||||
DEPS_FILES_FILTERED=$(filter-out $(BINARIES) $(DEPSDIR)/elixir/ebin/elixir.app,$(DEPS_FILES))
|
||||
DEPS_DIRS=$(sort $(DEPSDIR)/ $(foreach DEP,$(DEPS),$(DEPSDIR)/$(DEP)/) $(dir $(DEPS_FILES)))
|
||||
|
||||
MAIN_FILES=$(filter-out %/configure.beam,$(call FILES_WILDCARD,ebin/*.beam ebin/*.app priv/msgs/*.msg priv/css/*.css priv/img/*.png priv/js/*.js priv/lib/* include/*.hrl COPYING))
|
||||
MAIN_FILES=$(filter-out %/configure.beam,$(call FILES_WILDCARD,$(EBINDIR)/*.beam $(EBINDIR)/*.app priv/msgs/*.msg priv/css/*.css priv/img/*.png priv/js/*.js priv/lib/* include/*.hrl COPYING))
|
||||
MAIN_DIRS=$(sort $(dir $(MAIN_FILES)) priv/bin priv/sql priv/lua)
|
||||
|
||||
define DEP_VERSION_template
|
||||
@@ -168,8 +191,8 @@ endef
|
||||
|
||||
DELETE_TARGET_SO=$(if $(subst X.soX,,X$(suffix $(1))X),,rm -f $(call TO_DEST,$(1));)
|
||||
|
||||
$(foreach DEP,$(DEPS),$(eval $(call DEP_VERSION_template,$(DEP),deps/$(DEP)/ebin/$(DEP).app)))
|
||||
$(eval $(call DEP_VERSION_template,ejabberd,ebin/ejabberd.app))
|
||||
$(foreach DEP,$(DEPS),$(eval $(call DEP_VERSION_template,$(DEP),$(DEPSDIR)/$(DEP)/ebin/$(DEP).app)))
|
||||
$(eval $(call DEP_VERSION_template,ejabberd,$(EBINDIR)/ejabberd.app))
|
||||
|
||||
define COPY_template
|
||||
$(call TO_DEST,$(1)): $(1) $(call TO_DEST,$(dir $(1))) ; $(call DELETE_TARGET_SO, $(1)) $$(INSTALL) -m 644 $(1) $(call TO_DEST,$(1))
|
||||
@@ -206,7 +229,7 @@ copy-files:
|
||||
|
||||
copy-files-sub: copy-files-sub2
|
||||
|
||||
install: all copy-files
|
||||
install: copy-files
|
||||
#
|
||||
# Configuration files
|
||||
$(INSTALL) -d -m 750 $(G_USER) $(ETCDIR)
|
||||
@@ -233,9 +256,9 @@ install: all copy-files
|
||||
$(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
|
||||
[ -f $(DEPSDIR)/elixir/bin/iex ] && $(INSTALL) -m 550 $(G_USER) $(DEPSDIR)/elixir/bin/iex $(BINDIR)/iex || true
|
||||
[ -f $(DEPSDIR)/elixir/bin/elixir ] && $(INSTALL) -m 550 $(G_USER) $(DEPSDIR)/elixir/bin/elixir $(BINDIR)/elixir || true
|
||||
[ -f $(DEPSDIR)/elixir/bin/mix ] && $(INSTALL) -m 550 $(G_USER) $(DEPSDIR)/elixir/bin/mix $(BINDIR)/mix || true
|
||||
#
|
||||
# Init script
|
||||
$(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" \
|
||||
@@ -311,8 +334,8 @@ uninstall-all: uninstall-binary
|
||||
rm -rf $(LOGDIR)
|
||||
|
||||
clean:
|
||||
rm -rf deps/.got
|
||||
rm -rf deps/.built
|
||||
rm -rf $(DEPSDIR)/.got
|
||||
rm -rf $(DEPSDIR)/.built
|
||||
rm -rf test/*.beam
|
||||
$(REBAR) clean
|
||||
|
||||
@@ -323,11 +346,12 @@ distclean: clean clean-rel
|
||||
rm -f config.status
|
||||
rm -f config.log
|
||||
rm -rf autom4te.cache
|
||||
rm -rf deps
|
||||
rm -rf ebin
|
||||
rm -rf $(EBINDIR)
|
||||
rm -rf $(DEPSBASE)
|
||||
rm -f Makefile
|
||||
rm -f vars.config
|
||||
rm -f src/ejabberd.app.src
|
||||
rm -f ejabberdctl.example ejabberd.init ejabberd.service
|
||||
[ ! -f ../ChangeLog ] || rm -f ../ChangeLog
|
||||
|
||||
rel: all
|
||||
@@ -338,7 +362,7 @@ TAGS:
|
||||
|
||||
Makefile: Makefile.in
|
||||
|
||||
deps := $(wildcard deps/*/ebin)
|
||||
deps := $(wildcard $(DEPSDIR)/*/ebin)
|
||||
|
||||
dialyzer/erlang.plt:
|
||||
@mkdir -p dialyzer
|
||||
@@ -382,7 +406,7 @@ test:
|
||||
@cat test/README
|
||||
@echo "*************************************************************************"
|
||||
@cd priv && ln -sf ../sql
|
||||
$(REBAR) skip_deps=true ct
|
||||
$(REBAR) $(SKIPDEPS) ct
|
||||
|
||||
.PHONY: src edoc dialyzer Makefile TAGS clean clean-rel distclean rel \
|
||||
install uninstall uninstall-binary uninstall-all translations deps test \
|
||||
|
||||
@@ -14,43 +14,45 @@ solutions very cost effectively.
|
||||
Key Features
|
||||
------------
|
||||
|
||||
- **Cross-platform**
|
||||
- **Cross-platform**
|
||||
ejabberd runs under Microsoft Windows and Unix-derived systems such as
|
||||
Linux, FreeBSD and NetBSD.
|
||||
|
||||
- **Distributed**
|
||||
- **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**
|
||||
- **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**
|
||||
- **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.
|
||||
- Straightforward installers for Linux.
|
||||
- Docker packaging to help with deploy / development on Linux, Windows or MacOS.
|
||||
- Deb and RPM packaging to support most Linux distributions.
|
||||
- Web administration.
|
||||
- Shared roster groups.
|
||||
- Command line administration tool.
|
||||
- Can integrate with existing authentication mechanisms.
|
||||
- Capability to send announce messages.
|
||||
|
||||
- **Internationalized**
|
||||
- **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**
|
||||
- **Open Standards**
|
||||
ejabberd is the first Open Source Jabber server claiming to fully comply to
|
||||
the XMPP standard.
|
||||
- Fully XMPP-compliant.
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, []}.
|
||||
@@ -0,0 +1,9 @@
|
||||
{application, configure_deps,
|
||||
[{description, "A rebar3 plugin to explicitly run configure on dependencies"},
|
||||
{vsn, "0.0.1"},
|
||||
{registered, []},
|
||||
{applications, [kernel, stdlib]},
|
||||
{env,[]},
|
||||
{modules, []},
|
||||
{links, []}
|
||||
]}.
|
||||
@@ -0,0 +1,8 @@
|
||||
-module(configure_deps).
|
||||
|
||||
-export([init/1]).
|
||||
|
||||
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
|
||||
init(State) ->
|
||||
{ok, State1} = configure_deps_prv:init(State),
|
||||
{ok, State1}.
|
||||
@@ -0,0 +1,54 @@
|
||||
-module(configure_deps_prv).
|
||||
|
||||
-export([init/1, do/1, format_error/1]).
|
||||
|
||||
-define(PROVIDER, 'configure-deps').
|
||||
-define(DEPS, [install_deps]).
|
||||
|
||||
%% ===================================================================
|
||||
%% Public API
|
||||
%% ===================================================================
|
||||
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
|
||||
init(State) ->
|
||||
Provider = providers:create([
|
||||
{namespace, default},
|
||||
{name, ?PROVIDER}, % The 'user friendly' name of the task
|
||||
{module, ?MODULE}, % The module implementation of the task
|
||||
{bare, true}, % The task can be run by the user, always true
|
||||
{deps, ?DEPS}, % The list of dependencies
|
||||
{example, "rebar3 configure-deps"}, % How to use the plugin
|
||||
{opts, []}, % list of options understood by the plugin
|
||||
{short_desc, "Explicitly run ./configure for dependencies"},
|
||||
{desc, "A rebar plugin to allow explicitly running ./configure on depdendencies. Useful if dependencies might change prior to compilation when configure is run."}
|
||||
]),
|
||||
{ok, rebar_state:add_provider(State, Provider)}.
|
||||
|
||||
|
||||
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
|
||||
do(State) ->
|
||||
Apps = rebar_state:project_apps(State) ++ lists:usort(rebar_state:all_deps(State)),
|
||||
lists:foreach(fun do_app/1, Apps),
|
||||
{ok, State}.
|
||||
|
||||
exec_configure({'configure-deps', Cmd}, Dir) ->
|
||||
rebar_utils:sh(Cmd, [{cd, Dir}, {use_stdout, true}]);
|
||||
exec_configure(_, Acc) -> Acc.
|
||||
|
||||
parse_pre_hooks({pre_hooks, PreHooks}, Acc) ->
|
||||
lists:foldl(fun exec_configure/2, Acc, PreHooks);
|
||||
parse_pre_hooks(_, Acc) -> Acc.
|
||||
|
||||
parse_additions({add, App, Additions}, {MyApp, Dir}) when App == MyApp ->
|
||||
lists:foldl(fun parse_pre_hooks/2, Dir, Additions),
|
||||
{MyApp, Dir};
|
||||
parse_additions(_, Acc) -> Acc.
|
||||
|
||||
do_app(App) ->
|
||||
Dir = rebar_app_info:dir(App),
|
||||
Opts = rebar_app_info:opts(App),
|
||||
Overrides = rebar_opts:get(Opts, overrides),
|
||||
lists:foldl(fun parse_additions/2, {binary_to_atom(rebar_app_info:name(App), utf8), Dir}, Overrides).
|
||||
|
||||
-spec format_error(any()) -> iolist().
|
||||
format_error(Reason) ->
|
||||
io_lib:format("~p", [Reason]).
|
||||
@@ -4,9 +4,7 @@ defmodule Ejabberd.ConfigFile do
|
||||
def start do
|
||||
[loglevel: 4,
|
||||
log_rotate_size: 10485760,
|
||||
log_rotate_date: "",
|
||||
log_rotate_count: 1,
|
||||
log_rate_limit: 100,
|
||||
auth_method: :internal,
|
||||
max_fsm_queue: 1000,
|
||||
language: "en",
|
||||
|
||||
+181
-169
@@ -28,6 +28,16 @@ else
|
||||
fi
|
||||
])
|
||||
|
||||
AC_ARG_WITH(rebar,
|
||||
AC_HELP_STRING([--with-rebar=bin],
|
||||
[use rebar specified]),
|
||||
[if test "$withval" = "yes" -o "$withval" = "no" -o "X$with_rebar" = "X"; then
|
||||
rebar="rebar"
|
||||
else
|
||||
rebar="$with_rebar"
|
||||
fi
|
||||
], [rebar="rebar"])
|
||||
|
||||
AC_PATH_TOOL(ERL, erl, , [${extra_erl_path}$PATH])
|
||||
AC_PATH_TOOL(ERLC, erlc, , [${extra_erl_path}$PATH])
|
||||
AC_PATH_TOOL(EPMD, epmd, , [${extra_erl_path}$PATH])
|
||||
@@ -35,18 +45,6 @@ AC_PATH_TOOL(EPMD, epmd, , [${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
|
||||
@@ -68,45 +66,9 @@ fi
|
||||
# Change default prefix
|
||||
AC_PREFIX_DEFAULT(/usr/local)
|
||||
|
||||
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(new_sql_schema,
|
||||
[AC_HELP_STRING([--enable-new-sql-schema], [use new SQL schema (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) new_sql_schema=true ;;
|
||||
no) new_sql_schema=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-new-sql-schema) ;;
|
||||
esac],[new_sql_schema=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_CONFIG_FILES([Makefile
|
||||
vars.config
|
||||
src/ejabberd.app.src])
|
||||
|
||||
AC_ARG_ENABLE(all,
|
||||
[AC_HELP_STRING([--enable-all], [same as --enable-odbc --enable-mysql --enable-pgsql --enable-sqlite --enable-pam --enable-zlib --enable-redis --enable-elixir --enable-stun --enable-sip --enable-debug --enable-tools (useful for Dialyzer checks, default: no)])],
|
||||
@@ -116,69 +78,13 @@ AC_ARG_ENABLE(all,
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-all) ;;
|
||||
esac],[])
|
||||
|
||||
AC_ARG_ENABLE(tools,
|
||||
[AC_HELP_STRING([--enable-tools], [build development tools (default: no)])],
|
||||
AC_ARG_ENABLE(debug,
|
||||
[AC_HELP_STRING([--enable-debug], [enable debug information (default: yes)])],
|
||||
[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(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])
|
||||
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(elixir,
|
||||
[AC_HELP_STRING([--enable-elixir], [enable Elixir support (default: no)])],
|
||||
@@ -188,63 +94,26 @@ AC_ARG_ENABLE(elixir,
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-elixir) ;;
|
||||
esac],[if test "x$elixir" = "x"; then elixir=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(debug,
|
||||
[AC_HELP_STRING([--enable-debug], [enable debug information (default: yes)])],
|
||||
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
|
||||
|
||||
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) debug=true ;;
|
||||
no) debug=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
|
||||
esac],[if test "x$debug" = "x"; then debug=true; fi])
|
||||
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(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_ARG_ENABLE(system_deps,
|
||||
[AC_HELP_STRING([--enable-system-deps], [makes rebar use localy installed dependences instead of downloading them (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) system_deps=true ;;
|
||||
no) system_deps=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-system-deps) ;;
|
||||
esac],[if test "x$system_deps" = "x"; then system_deps=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(stun,
|
||||
[AC_HELP_STRING([--enable-stun], [enable STUN/TURN support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) stun=true ;;
|
||||
no) stun=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-stun) ;;
|
||||
esac],[if test "x$stun" = "x"; then stun=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(sip,
|
||||
[AC_HELP_STRING([--enable-sip], [enable SIP support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) sip=true ;;
|
||||
no) sip=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sip) ;;
|
||||
esac],[if test "x$sip" = "x"; then sip=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
|
||||
ENABLEGROUP=""
|
||||
AC_ARG_ENABLE(group,
|
||||
[AS_HELP_STRING([--enable-group[[[[=GROUP]]]]], [allow this system group to start ejabberd (default: no)])],
|
||||
@@ -259,6 +128,148 @@ if test "$ENABLEGROUP" != ""; then
|
||||
AC_SUBST([INSTALLGROUP], [$ENABLEGROUP])
|
||||
fi
|
||||
|
||||
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(latest_deps,
|
||||
[AC_HELP_STRING([--enable-latest-deps], [makes rebar use latest commits for dependencies 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_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; mssql=true ;;
|
||||
no) db_type=generic; mssql=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mssql) ;;
|
||||
esac],[db_type=generic])
|
||||
|
||||
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(new_sql_schema,
|
||||
[AC_HELP_STRING([--enable-new-sql-schema], [use new SQL schema (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) new_sql_schema=true ;;
|
||||
no) new_sql_schema=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-new-sql-schema) ;;
|
||||
esac],[new_sql_schema=false])
|
||||
|
||||
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(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(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(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(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(sip,
|
||||
[AC_HELP_STRING([--enable-sip], [enable SIP support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) sip=true ;;
|
||||
no) sip=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sip) ;;
|
||||
esac],[if test "x$sip" = "x"; then sip=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(stun,
|
||||
[AC_HELP_STRING([--enable-stun], [enable STUN/TURN support (default: yes)])],
|
||||
[case "${enableval}" in
|
||||
yes) stun=true ;;
|
||||
no) stun=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-stun) ;;
|
||||
esac],[if test "x$stun" = "x"; then stun=true; fi])
|
||||
|
||||
AC_ARG_ENABLE(system_deps,
|
||||
[AC_HELP_STRING([--enable-system-deps], [makes rebar use locally installed dependencies instead of downloading them (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) system_deps=true ;;
|
||||
no) system_deps=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-system-deps) ;;
|
||||
esac],[if test "x$system_deps" = "x"; then system_deps=false; fi])
|
||||
|
||||
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])
|
||||
|
||||
ENABLEUSER=""
|
||||
AC_ARG_ENABLE(user,
|
||||
[AS_HELP_STRING([--enable-user[[[[=USER]]]]], [allow this system user to start ejabberd (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) ENABLEUSER=`whoami` ;;
|
||||
no) ENABLEUSER="" ;;
|
||||
*) ENABLEUSER=$enableval
|
||||
esac],
|
||||
[])
|
||||
if test "$ENABLEUSER" != ""; then
|
||||
echo "allow this system user to start ejabberd: $ENABLEUSER"
|
||||
AC_SUBST([INSTALLUSER], [$ENABLEUSER])
|
||||
fi
|
||||
|
||||
AC_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])
|
||||
|
||||
if test "$sqlite" = "true"; then
|
||||
AX_LIB_SQLITE3([3.6.19])
|
||||
if test "x$SQLITE3_VERSION" = "x"; then
|
||||
@@ -267,7 +278,7 @@ if test "$sqlite" = "true"; then
|
||||
fi
|
||||
|
||||
enabled_backends=""
|
||||
for backend in odbc mysql pgsql sqlite redis; do
|
||||
for backend in odbc mysql pgsql sqlite redis mssql; do
|
||||
if eval test x\${$backend} = xtrue; then
|
||||
if test "x$enabled_backends" = "x"; then
|
||||
enabled_backends=$backend
|
||||
@@ -288,6 +299,7 @@ AC_SUBST(pgsql)
|
||||
AC_SUBST(sqlite)
|
||||
AC_SUBST(pam)
|
||||
AC_SUBST(zlib)
|
||||
AC_SUBST(rebar)
|
||||
AC_SUBST(redis)
|
||||
AC_SUBST(elixir)
|
||||
AC_SUBST(stun)
|
||||
|
||||
@@ -3,13 +3,12 @@ Description=XMPP Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
User=ejabberd
|
||||
Group=ejabberd
|
||||
LimitNOFILE=65536
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
ExecStart=/bin/sh -c '@ctlscriptpath@/ejabberdctl start && @ctlscriptpath@/ejabberdctl started'
|
||||
ExecStart=@ctlscriptpath@/ejabberdctl foreground
|
||||
ExecStop=/bin/sh -c '@ctlscriptpath@/ejabberdctl stop && @ctlscriptpath@/ejabberdctl stopped'
|
||||
ExecReload=@ctlscriptpath@/ejabberdctl reload_config
|
||||
PrivateDevices=true
|
||||
|
||||
+23
-6
@@ -57,6 +57,16 @@ listen:
|
||||
request_handlers:
|
||||
/admin: ejabberd_web_admin
|
||||
/.well-known/acme-challenge: ejabberd_acme
|
||||
-
|
||||
port: 3478
|
||||
ip: "::"
|
||||
transport: udp
|
||||
module: ejabberd_stun
|
||||
use_turn: true
|
||||
## The server's public IPv4 address:
|
||||
# turn_ipv4_address: "203.0.113.3"
|
||||
## The server's public IPv6 address:
|
||||
# turn_ipv6_address: "2001:db8::3"
|
||||
-
|
||||
port: 1883
|
||||
ip: "::"
|
||||
@@ -100,14 +110,14 @@ api_permissions:
|
||||
who:
|
||||
access:
|
||||
allow:
|
||||
acl: loopback
|
||||
acl: admin
|
||||
- acl: loopback
|
||||
- acl: admin
|
||||
oauth:
|
||||
scope: "ejabberd:admin"
|
||||
access:
|
||||
allow:
|
||||
acl: loopback
|
||||
acl: admin
|
||||
- acl: loopback
|
||||
- acl: admin
|
||||
what:
|
||||
- "*"
|
||||
- "!stop"
|
||||
@@ -120,8 +130,10 @@ api_permissions:
|
||||
- connected_users_number
|
||||
|
||||
shaper:
|
||||
normal: 1000
|
||||
fast: 50000
|
||||
normal:
|
||||
rate: 3000
|
||||
burst_size: 20000
|
||||
fast: 100000
|
||||
|
||||
shaper_rules:
|
||||
max_user_sessions: 10
|
||||
@@ -150,6 +162,10 @@ modules:
|
||||
mod_http_api: {}
|
||||
mod_http_upload:
|
||||
put_url: https://@HOST@:5443/upload
|
||||
custom_headers:
|
||||
"Access-Control-Allow-Origin": "https://@HOST@"
|
||||
"Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
|
||||
"Access-Control-Allow-Headers": "Content-Type"
|
||||
mod_last: {}
|
||||
mod_mam:
|
||||
## Mnesia is limited to 2GB, better to use an SQL backend
|
||||
@@ -203,6 +219,7 @@ modules:
|
||||
mod_shared_roster: {}
|
||||
mod_stream_mgmt:
|
||||
resend_on_timeout: if_offline
|
||||
mod_stun_disco: {}
|
||||
mod_vcard: {}
|
||||
mod_vcard_xupdate: {}
|
||||
mod_version:
|
||||
|
||||
@@ -63,8 +63,6 @@
|
||||
#.
|
||||
#' 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
|
||||
|
||||
+14
-4
@@ -60,6 +60,8 @@ done
|
||||
: "${SPOOL_DIR:="{{localstatedir}}/lib/ejabberd"}"
|
||||
: "${EJABBERD_CONFIG_PATH:="$ETC_DIR/ejabberd.yml"}"
|
||||
: "${EJABBERDCTL_CONFIG_PATH:="$ETC_DIR/ejabberdctl.cfg"}"
|
||||
# Allows passing extra Erlang command-line arguments in vm.args file
|
||||
: "${VMARGS:="$ETC_DIR/vm.args"}"
|
||||
[ -f "$EJABBERDCTL_CONFIG_PATH" ] && . "$EJABBERDCTL_CONFIG_PATH"
|
||||
[ -n "$ERLANG_NODE_ARG" ] && ERLANG_NODE="$ERLANG_NODE_ARG"
|
||||
[ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && S="-s"
|
||||
@@ -77,16 +79,16 @@ if [ -n "$INET_DIST_INTERFACE" ] ; then
|
||||
ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_use_interface $INET_DIST_INTERFACE2"
|
||||
fi
|
||||
fi
|
||||
# if vm.args file exists in config directory, pass it to Erlang VM
|
||||
[ -f "$VMARGS" ] && ERLANG_OPTS="$ERLANG_OPTS -args_file $VMARGS"
|
||||
ERL_LIBS={{libdir}}
|
||||
ERL_CRASH_DUMP="$LOGS_DIR"/erl_crash_$(date "+%Y%m%d-%H%M%S").dump
|
||||
ERL_INETRC="$ETC_DIR"/inetrc
|
||||
|
||||
# define ejabberd parameters
|
||||
EJABBERD_OPTS="$EJABBERD_OPTS\
|
||||
$(sed '/^log_rate_limit/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_size/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_count/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_date/!d;s/:[ \t]*\(.[^ ]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")"
|
||||
$(sed '/^log_rotate_count/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")"
|
||||
[ -n "$EJABBERD_OPTS" ] && EJABBERD_OPTS="-ejabberd $EJABBERD_OPTS"
|
||||
EJABBERD_OPTS="-mnesia dir \"$SPOOL_DIR\" $MNESIA_OPTIONS $EJABBERD_OPTS -s ejabberd"
|
||||
|
||||
@@ -126,6 +128,14 @@ exec_iex()
|
||||
# usage
|
||||
debugwarning()
|
||||
{
|
||||
if [ "$OSTYPE" != "cygwin" ] && [ "$OSTYPE" != "win32" ] ; then
|
||||
if [ "a$TERM" = "a" ] || [ "$TERM" = "dumb" ] ; then
|
||||
echo "Terminal type not supported."
|
||||
echo "You may have to set the TERM environment variable to fix this."
|
||||
exit 8
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$EJABBERD_BYPASS_WARNINGS" != "true" ] ; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo ""
|
||||
@@ -198,7 +208,7 @@ uid()
|
||||
uuid=$(uuidgen 2>/dev/null)
|
||||
[ -z "$uuid" ] && [ -f /proc/sys/kernel/random/uuid ] && uuid=$(cat /proc/sys/kernel/random/uuid)
|
||||
[ -z "$uuid" ] && uuid=$(printf "%X" "${RANDOM:-$$}$(date +%M%S)")
|
||||
uuid=${uuid%%-*}
|
||||
uuid=$(printf '%s' $uuid | sed 's/^\(...\).*$/\1/')
|
||||
[ $# -eq 0 ] && echo "${uuid}-${ERLANG_NODE}"
|
||||
[ $# -eq 1 ] && echo "${uuid}-${1}-${ERLANG_NODE}"
|
||||
[ $# -eq 2 ] && echo "${uuid}-${1}@${2}"
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -21,6 +21,7 @@
|
||||
-record(request,
|
||||
{method :: method(),
|
||||
path = [] :: [binary()],
|
||||
raw_path :: binary(),
|
||||
q = [] :: [{binary() | nokey, binary()}],
|
||||
us = {<<>>, <<>>} :: {binary(), binary()},
|
||||
auth :: {binary(), binary()} | {oauth, binary(), []} | undefined | invalid,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -38,4 +38,5 @@
|
||||
-record(sql_escape, {string :: fun((binary()) -> binary()),
|
||||
integer :: fun((integer()) -> binary()),
|
||||
boolean :: fun((boolean()) -> binary()),
|
||||
in_array_string :: fun((binary()) -> binary())}).
|
||||
in_array_string :: fun((binary()) -> binary()),
|
||||
like_escape :: fun(() -> binary())}).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -65,6 +65,14 @@
|
||||
-define(INPUTT(Type, Name, Value),
|
||||
?INPUT(Type, Name, (translate:translate(Lang, Value)))).
|
||||
|
||||
-define(INPUTD(Type, Name, Value),
|
||||
?XA(<<"input">>,
|
||||
[{<<"type">>, Type}, {<<"name">>, Name},
|
||||
{<<"class">>, <<"btn-danger">>}, {<<"value">>, Value}])).
|
||||
|
||||
-define(INPUTTD(Type, Name, Value),
|
||||
?INPUTD(Type, Name, (translate:translate(Lang, Value)))).
|
||||
|
||||
-define(INPUTS(Type, Name, Value, Size),
|
||||
?XA(<<"input">>,
|
||||
[{<<"type">>, Type}, {<<"name">>, Name},
|
||||
@@ -93,9 +101,9 @@
|
||||
-define(GL(Ref, Title),
|
||||
?XAE(<<"div">>, [{<<"class">>, <<"guidelink">>}],
|
||||
[?XAE(<<"a">>,
|
||||
[{<<"href">>, <<"https://docs.ejabberd.im/admin/configuration/#", Ref/binary>>},
|
||||
[{<<"href">>, <<"https://docs.ejabberd.im/admin/configuration/", Ref/binary>>},
|
||||
{<<"target">>, <<"_blank">>}],
|
||||
[?C(<<"[Guide: ", Title/binary, "]">>)])])).
|
||||
[?C(<<"docs: ", Title/binary>>)])])).
|
||||
|
||||
%% h1 with a Guide Link
|
||||
-define(H1GL(Name, Ref, Title),
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
%%% RFC 1928 constants.
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% ejabberd, Copyright (C) 2017-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2017-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%-------------------------------------------------------------------
|
||||
%%% @author Evgeny Khramtsov <ekhramtsov@process-one.net>
|
||||
%%% @copyright (C) 2002-2019 ProcessOne, SARL. All Rights Reserved.
|
||||
%%% @copyright (C) 2002-2020 ProcessOne, SARL. All Rights Reserved.
|
||||
%%%
|
||||
%%% Licensed under the Apache License, Version 2.0 (the "License");
|
||||
%%% you may not use this file except in compliance with the License.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1178
-74
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ defmodule Ejabberd.Mixfile do
|
||||
|
||||
def project do
|
||||
[app: :ejabberd,
|
||||
version: "20.1.0",
|
||||
version: "20.12.0",
|
||||
description: description(),
|
||||
elixir: "~> 1.4",
|
||||
elixirc_paths: ["lib"],
|
||||
@@ -51,12 +51,28 @@ defmodule Ejabberd.Mixfile do
|
||||
end
|
||||
end
|
||||
|
||||
defp if_version_below(ver, okResult) do
|
||||
if :erlang.system_info(:otp_release) < ver do
|
||||
okResult
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
defp erlc_options do
|
||||
# Use our own includes + includes from all dependencies
|
||||
includes = ["include"] ++ deps_include(["fast_xml", "xmpp", "p1_utils"])
|
||||
[:debug_info, {:d, :ELIXIR_ENABLED}] ++ cond_options() ++ Enum.map(includes, fn(path) -> {:i, path} end) ++
|
||||
if_version_above('20', [{:d, :DEPRECATED_GET_STACKTRACE}]) ++
|
||||
if_function_exported(:erl_error, :format_exception, 6, [{:d, :HAVE_ERL_ERROR}])
|
||||
result = [:debug_info, {:d, :ELIXIR_ENABLED}] ++
|
||||
cond_options() ++
|
||||
Enum.map(includes, fn (path) -> {:i, path} end) ++
|
||||
if_version_above('20', [{:d, :DEPRECATED_GET_STACKTRACE}]) ++
|
||||
if_version_below('21', [{:d, :USE_OLD_HTTP_URI}]) ++
|
||||
if_version_below('22', [{:d, :LAGER}]) ++
|
||||
if_version_below('23', [{:d, :USE_OLD_CRYPTO_HMAC}]) ++
|
||||
if_version_below('23', [{:d, :USE_OLD_PG2}]) ++
|
||||
if_function_exported(:erl_error, :format_exception, 6, [{:d, :HAVE_ERL_ERROR}])
|
||||
defines = for {:d, value} <- result, do: {:d, value}
|
||||
result ++ [{:d, :ALL_DEFS, defines}]
|
||||
end
|
||||
|
||||
defp cond_options do
|
||||
@@ -72,17 +88,17 @@ defmodule Ejabberd.Mixfile do
|
||||
[{:lager, "~> 3.6.0"},
|
||||
{:p1_utils, "~> 1.0"},
|
||||
{:fast_xml, "~> 1.1"},
|
||||
{:xmpp, "~> 1.4"},
|
||||
{:xmpp, ">= 1.5.0"},
|
||||
{:cache_tab, "~> 1.0"},
|
||||
{:stringprep, "~> 1.0"},
|
||||
{:fast_yaml, "~> 1.0"},
|
||||
{:fast_tls, "~> 1.1"},
|
||||
{:stun, "~> 1.0"},
|
||||
{:esip, "~> 1.0"},
|
||||
{:stun, "~> 1.0.34"},
|
||||
{:esip, "~> 1.0.32"},
|
||||
{:p1_mysql, "~> 1.0"},
|
||||
{:mqtree, "~> 1.0"},
|
||||
{:p1_pgsql, "~> 1.1"},
|
||||
{:jiffy, "~> 1.0"},
|
||||
{:jiffy, "~> 1.0.4"},
|
||||
{:p1_oauth2, "~> 0.6.1"},
|
||||
{:distillery, "~> 2.0"},
|
||||
{:pkix, "~> 1.0"},
|
||||
@@ -120,6 +136,7 @@ defmodule Ejabberd.Mixfile do
|
||||
defp cond_apps do
|
||||
for {:true, app} <- [{config(:redis), :eredis},
|
||||
{config(:mysql), :p1_mysql},
|
||||
{config(:odbc), :odbc},
|
||||
{config(:pgsql), :p1_pgsql},
|
||||
{config(:sqlite), :sqlite3},
|
||||
{config(:zlib), :ezlib}], do:
|
||||
@@ -128,7 +145,7 @@ defmodule Ejabberd.Mixfile do
|
||||
|
||||
defp package do
|
||||
[# These are the default files included in the package
|
||||
files: ["lib", "src", "priv", "mix.exs", "include", "README.md", "COPYING"],
|
||||
files: ["lib", "src", "priv", "mix.exs", "include", "README.md", "COPYING", "rebar.config", "rebar.config.script"],
|
||||
maintainers: ["ProcessOne"],
|
||||
licenses: ["GPLv2"],
|
||||
links: %{"Site" => "https://www.ejabberd.im",
|
||||
|
||||
@@ -1,38 +1,39 @@
|
||||
%{
|
||||
"artificery": {:hex, :artificery, "0.4.2", "3ded6e29e13113af52811c72f414d1e88f711410cac1b619ab3a2666bbd7efd4", [:mix], [], "hexpm"},
|
||||
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
|
||||
"cache_tab": {:hex, :cache_tab, "1.0.21", "6cf110d1884de06f48455a3bafb9fa7dd57c68398a572f49727429e0caf8393a", [:rebar3], [{:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"distillery": {:hex, :distillery, "2.1.1", "f9332afc2eec8a1a2b86f22429e068ef35f84a93ea1718265e740d90dd367814", [:mix], [{:artificery, "~> 0.2", [hex: :artificery, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm"},
|
||||
"eimp": {:hex, :eimp, "1.0.13", "d052f2f8fb8c6af919595e0fce256f722c15f364995c1fadfed4d044d7eb3dab", [:rebar3], [{:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"epam": {:hex, :epam, "1.0.6", "6e57e1f5a330fa02a08ee0d4b16d9161f95177351e48c6dfede2f89b7e2f589f", [:rebar3], [], "hexpm"},
|
||||
"artificery": {:hex, :artificery, "0.4.3", "0bc4260f988dcb9dda4b23f9fc3c6c8b99a6220a331534fdf5bf2fd0d4333b02", [:mix], [], "hexpm", "12e95333a30e20884e937abdbefa3e7f5e05609c2ba8cf37b33f000b9ffc0504"},
|
||||
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm", "fab09b20e3f5db886725544cbcf875b8e73ec93363954eb8a1a9ed834aa8c1f9"},
|
||||
"cache_tab": {:hex, :cache_tab, "1.0.26", "6f6086ac80b797f54a68773d9d782e054877e217f8f1e2fbc6deb1557cc3e26a", [:rebar3], [{:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "a7f0a03e3a9d6275e4a7583a1f3088e6764dd1e362464eaa8e2fcca9c3b235c3"},
|
||||
"distillery": {:hex, :distillery, "2.1.1", "f9332afc2eec8a1a2b86f22429e068ef35f84a93ea1718265e740d90dd367814", [:mix], [{:artificery, "~> 0.2", [hex: :artificery, repo: "hexpm", optional: false]}], "hexpm", "bbc7008b0161a6f130d8d903b5b3232351fccc9c31a991f8fcbf2a12ace22995"},
|
||||
"earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"},
|
||||
"earmark_parser": {:hex, :earmark_parser, "1.4.12", "b245e875ec0a311a342320da0551da407d9d2b65d98f7a9597ae078615af3449", [:mix], [], "hexpm", "711e2cc4d64abb7d566d43f54b78f7dc129308a63bc103fbd88550d2174b3160"},
|
||||
"eimp": {:hex, :eimp, "1.0.18", "b6532f90c87741bebdfe62582e2c70caafa1337c3aa7fb85daaba3e9bad4b8a0", [:rebar3], [{:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "7df78b25d7c325fe6c4d77901013be2f4341f4207bc7a985fea00a1bea15dd3a"},
|
||||
"epam": {:hex, :epam, "1.0.7", "55889bbfdc5ab9f2e785a710229f34e550784c5ead1960d7839ea77514aef44d", [:rebar3], [], "hexpm", "6b029ebd2b244bc339cbf5cb5908d0f2d50e43f33a6e7f70818912ea5d3fd596"},
|
||||
"eredis": {:hex, :eredis, "1.2.0", "0b8e9cfc2c00fa1374cd107ea63b49be08d933df2cf175e6a89b73dd9c380de4", [:rebar3], [], "hexpm"},
|
||||
"esip": {:hex, :esip, "1.0.31", "bf2a29174091908ed8375226f51a5ed23ddd832a5872e0390cef0cfac5727969", [:rebar3], [{:fast_tls, "1.1.3", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.0.30", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.21.2", "caca5bc28ed7b3bdc0b662f8afe2bee1eedb5c3cf7b322feeeb7c6ebbde089d6", [:mix], [{:earmark, "~> 1.3.3 or ~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ezlib": {:hex, :ezlib, "1.0.6", "d43a3377006f91c853f65d5efd563d61bbc289f0115a311657c728f5e6e8c39f", [:rebar3], [], "hexpm"},
|
||||
"fast_tls": {:hex, :fast_tls, "1.1.3", "cc8ef8a16c16c2abe606f5f59f22ee2d76894af9d4d0d0e921285ce776a0c41a", [:rebar3], [{:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"fast_xml": {:hex, :fast_xml, "1.1.38", "88dd15dc980e840864c3976f9308768f46ecb4051437fc0f97f03e2de4287c91", [:rebar3], [{:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"fast_yaml": {:hex, :fast_yaml, "1.0.22", "99615f6bea033803ca8865b9ce4864ad451c746c17734255972b4a9cd77981fa", [:rebar3], [{:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"goldrush": {:hex, :goldrush, "0.1.9", "f06e5d5f1277da5c413e84d5a2924174182fb108dabb39d5ec548b27424cd106", [:rebar3], [], "hexpm"},
|
||||
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"jiffy": {:hex, :jiffy, "1.0.1", "4f25639772ca41202f41ba9c8f6ca0933554283dd4742c90651e03471c55e341", [:rebar3], [], "hexpm"},
|
||||
"jose": {:hex, :jose, "1.9.0", "4167c5f6d06ffaebffd15cdb8da61a108445ef5e85ab8f5a7ad926fdf3ada154", [:mix, :rebar3], [{:base64url, "~> 0.0.1", [hex: :base64url, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"lager": {:hex, :lager, "3.6.10", "6172b43ab720ac33914ccd0aeb21fdbdf88213847707d4b91e6af57b2ae5c4d2", [:rebar3], [{:goldrush, "0.1.9", [hex: :goldrush, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"luerl": {:hex, :luerl, "0.3.1", "5412807630aac1aaf59ffe5a1bc09259c447b4faeb1d3fe2d4ef41b87676cb04", [:rebar3], [], "hexpm"},
|
||||
"makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"mqtree": {:hex, :mqtree, "1.0.6", "9dd199ae00724dc4739c787c44da285c5849acb3abddec33cec0594be70dda1b", [:rebar3], [{:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm"},
|
||||
"p1_acme": {:hex, :p1_acme, "1.0.3", "aaa8fd1158d73b2d7164ebef0cb27652c7af29dfd5674486026c729f17a57880", [:rebar3], [{:idna, "~>6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jiffy, "~>1.0.1", [hex: :jiffy, repo: "hexpm", optional: false]}, {:jose, "~>1.9.0", [hex: :jose, repo: "hexpm", optional: false]}, {:yconf, "~>1.0.2", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"p1_mysql": {:hex, :p1_mysql, "1.0.12", "8e2043bff52aa72ac6ebdfaab909da026d559e13e9e6f1303aadf196b424abd7", [:rebar3], [], "hexpm"},
|
||||
"p1_oauth2": {:hex, :p1_oauth2, "0.6.5", "a39db41de0287d4d1af3190beaa80edf17335b20f1d0ccace6c09580e0853987", [:rebar3], [], "hexpm"},
|
||||
"p1_pgsql": {:hex, :p1_pgsql, "1.1.7", "ef64d34adbbe08258cc10b1532649446d8c086ff8663d44f430d837ec31a89f8", [:rebar3], [], "hexpm"},
|
||||
"p1_utils": {:hex, :p1_utils, "1.0.17", "563449d130b7d37426dcad38815944356b2716713a70e16abb82e3410edc2c72", [:rebar3], [], "hexpm"},
|
||||
"pkix": {:hex, :pkix, "1.0.4", "81d552f736b1cadb278069a332cc94891a1c3095eb6281b340969ee455bd6fea", [:rebar3], [], "hexpm"},
|
||||
"sqlite3": {:hex, :sqlite3, "1.1.6", "4ea71af0b45908b5f02c9b09e4c87177039ef404f20accb35049cd8924cc417c", [:rebar3], [], "hexpm"},
|
||||
"stringprep": {:hex, :stringprep, "1.0.18", "1d31ae631920ec013e6008d5cea7421912418d1b6ae177725933daaeb706084c", [:rebar3], [{:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"stun": {:hex, :stun, "1.0.30", "7e8b896d6bacc19a605919a67a3e42f831e4a3a3597cc2be102c054421c0fbbc", [:rebar3], [{:fast_tls, "1.1.3", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"},
|
||||
"xmpp": {:hex, :xmpp, "1.4.4", "d7539a240039c73c5d988b328d3e6aaa517a4f47e060f5c34d628424924b38bf", [:rebar3], [{:ezlib, "1.0.6", [hex: :ezlib, repo: "hexpm", optional: false]}, {:fast_tls, "1.1.3", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:fast_xml, "1.1.38", [hex: :fast_xml, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.17", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stringprep, "1.0.18", [hex: :stringprep, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"yconf": {:hex, :yconf, "1.0.2", "2863cd7bb7840a84855525bf611ed6391b8c42d9b9e09505ce90924216a8e6af", [:rebar3], [{:fast_yaml, "1.0.22", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"esip": {:hex, :esip, "1.0.39", "ec7705f685df1f9957bb7883c65e959e27b46899a9c9fa7f79e67919fc3e2bbb", [:rebar3], [{:fast_tls, "1.1.10", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.0.40", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "08f4cfe69e88d60ebbe5ccdaa36fe4f3411086832a19876497972747e089a076"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.23.0", "a069bc9b0bf8efe323ecde8c0d62afc13d308b1fa3d228b65bca5cf8703a529d", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "f5e2c4702468b2fd11b10d39416ddadd2fcdd173ba2a0285ebd92c39827a5a16"},
|
||||
"ezlib": {:hex, :ezlib, "1.0.9", "b17136b48bcf73962446b06d4427b0b6f2be4550bb5190a18a2979640271e244", [:rebar3], [], "hexpm", "fafc60a0de6e982be38f793da7b220b87a0da2969eba8a878351442b35cc2fde"},
|
||||
"fast_tls": {:hex, :fast_tls, "1.1.10", "c2a14d66d73b589c6d06841f72433611bf0360953b2e9164b1435d045bf1944d", [:rebar3], [{:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "17fb7dac5f64b9215b57e5315f4eafd682520d5a821b5b49cbe204882375bb85"},
|
||||
"fast_xml": {:hex, :fast_xml, "1.1.45", "68eeec9a3c5e58de9164dd288523822226955d97013bd8a4d7657cf622eeb076", [:rebar3], [{:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "2d8eb7bb642920e63f69501b7bdb596bef135fc4919d9b6895875fa88d8a63e0"},
|
||||
"fast_yaml": {:hex, :fast_yaml, "1.0.29", "02203981b9a387321a88676e8a501935df0d5d95c6b1d08c864fb9a7657c3b5b", [:rebar3], [{:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "b6e9ed0203f40079d2c14df6f8ab9dcfdc4a71e023cfb6de732b8d3081084b10"},
|
||||
"goldrush": {:hex, :goldrush, "0.1.9", "f06e5d5f1277da5c413e84d5a2924174182fb108dabb39d5ec548b27424cd106", [:rebar3], [], "hexpm", "99cb4128cffcb3227581e5d4d803d5413fa643f4eb96523f77d9e6937d994ceb"},
|
||||
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"},
|
||||
"jiffy": {:hex, :jiffy, "1.0.4", "72adeff75c52a2ff07de738f0813768abe7ce158026cc1115a170340259c0caa", [:rebar3], [], "hexpm", "113e5299ee4e6b9f40204256d7bbbd1caf646edeaef31ef0f7f5f842c0dad39e"},
|
||||
"jose": {:hex, :jose, "1.9.0", "4167c5f6d06ffaebffd15cdb8da61a108445ef5e85ab8f5a7ad926fdf3ada154", [:mix, :rebar3], [{:base64url, "~> 0.0.1", [hex: :base64url, repo: "hexpm", optional: false]}], "hexpm", "6429c4fee52b2dda7861ee19a4f09c8c1ffa213bee3a1ec187828fde95d447ed"},
|
||||
"lager": {:hex, :lager, "3.6.10", "6172b43ab720ac33914ccd0aeb21fdbdf88213847707d4b91e6af57b2ae5c4d2", [:rebar3], [{:goldrush, "0.1.9", [hex: :goldrush, repo: "hexpm", optional: false]}], "hexpm", "5d10499461826b79c5abee18bb594b3949cbdf76d9d9fd7e66d0a558137c21c9"},
|
||||
"luerl": {:hex, :luerl, "0.3.1", "5412807630aac1aaf59ffe5a1bc09259c447b4faeb1d3fe2d4ef41b87676cb04", [:rebar3], [], "hexpm", "1bc011c7297e43aec762e53b17ecb15b0ff29f9546cd153110b343cf5b043f5f"},
|
||||
"makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"},
|
||||
"makeup_elixir": {:hex, :makeup_elixir, "0.15.0", "98312c9f0d3730fde4049985a1105da5155bfe5c11e47bdc7406d88e01e4219b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "75ffa34ab1056b7e24844c90bfc62aaf6f3a37a15faa76b07bc5eba27e4a8b4a"},
|
||||
"mqtree": {:hex, :mqtree, "1.0.11", "8ea161bd2075cb23840bb4ebc94d33d08e110c82d0771b0482e022e1b7e3377a", [:rebar3], [{:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "975a8514ce14550ae945f7c297d2b12269dbfa69db410320163718ad42229adf"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "1.1.0", "3a6fca1550363552e54c216debb6a9e95bd8d32348938e13de5eda962c0d7f89", [:mix], [], "hexpm", "08eb32d66b706e913ff748f11694b17981c0b04a33ef470e33e11b3d3ac8f54b"},
|
||||
"p1_acme": {:hex, :p1_acme, "1.0.6", "0b007b776331e3d6effe700fa85d63236a98dc4e6e8c3abbbf816d1bec70df3f", [:rebar3], [{:idna, "~>6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jiffy, "~>1.0.1", [hex: :jiffy, repo: "hexpm", optional: false]}, {:jose, "~>1.9.0", [hex: :jose, repo: "hexpm", optional: false]}, {:yconf, "~>1.0.5", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm", "7cc6528cbbe7a98929e954604ec670de56ca9f7a69a14d22166e8746fbe86f10"},
|
||||
"p1_mysql": {:hex, :p1_mysql, "1.0.17", "1fd1eed07a0f1e79851e7a5dc17995ba42af1c1192dff978d5f17c9e096a6d8c", [:rebar3], [], "hexpm", "7da95ba3f36e50e80f6a7f89a0928c0bbe6c0a8c8a7a7432d1aa7349e5964a59"},
|
||||
"p1_oauth2": {:hex, :p1_oauth2, "0.6.8", "22b859f3694da30c45722fae860922150f74cfb149ef6176a67c514093238917", [:rebar3], [], "hexpm", "12a476d809f3123098948ee95676198008e96afbc433070a1382e5aa3d2a7b93"},
|
||||
"p1_pgsql": {:hex, :p1_pgsql, "1.1.10", "e4b19c9768ef4047f9c56090a91bfefc7337abb3809a28aa4a6538eef6ad76b0", [:rebar3], [], "hexpm", "5458c0db9e47425f8cc1f592356a29359267c624785b316b34a46ad7439e9367"},
|
||||
"p1_utils": {:hex, :p1_utils, "1.0.21", "9d6244bbd4af881e85af71655e8be5720b5b965b1bdd51a35c7871fd4142af9a", [:rebar3], [], "hexpm", "4b9b90e5863f5fed17f06427ba99b2dc37b216e4dd1308891f0903745e2fccbd"},
|
||||
"pkix": {:hex, :pkix, "1.0.7", "a0b8c9011edeba702d7cb73fecef1eabe3ae89b3dcf4b8f33775e4f17a7a1304", [:rebar3], [], "hexpm", "104a9e0ecd9cc0e579d148a028189a6efe6420b241f3d319d8a65d898a078295"},
|
||||
"sqlite3": {:hex, :sqlite3, "1.1.6", "4ea71af0b45908b5f02c9b09e4c87177039ef404f20accb35049cd8924cc417c", [:rebar3], [], "hexpm", "cf9fa59c5b27de0d5d94a2ef464521379e23d8c6e9fa939abf8415c767f514bb"},
|
||||
"stringprep": {:hex, :stringprep, "1.0.24", "5a2c29785cdc1eaddcba0564cd86020e5e686fe9e66fa47a80a97333f3dc75ea", [:rebar3], [{:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "aed7ac217493e5aa2f76066fb7bbfe0d4e94ca1ee72613dc954231422d911266"},
|
||||
"stun": {:hex, :stun, "1.0.40", "9cc25f667f4d36321a259521c3f4848a53bfebed989cf3d761790447daeec41d", [:rebar3], [{:fast_tls, "1.1.10", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "46073f5a05a5d6ca9de1339be990600648228c204b9a690f1b5f5dfd5a895b6a"},
|
||||
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"},
|
||||
"xmpp": {:hex, :xmpp, "1.5.0", "23b5b43e1858a5f6c53e204904ef8fb41d0f2419290bcd044fb7dc313fa2e689", [:rebar3], [{:ezlib, "1.0.9", [hex: :ezlib, repo: "hexpm", optional: false]}, {:fast_tls, "1.1.10", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:fast_xml, "1.1.45", [hex: :fast_xml, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.21", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stringprep, "1.0.24", [hex: :stringprep, repo: "hexpm", optional: false]}], "hexpm", "4be95acc98ce3e6b0c67873a14a6f7d6db0fd131d77ccc4d4243f77b12f2945f"},
|
||||
"yconf": {:hex, :yconf, "1.0.9", "32e922e47c3b18b1fa6f7502bfb433d3419e038123982fe7e478f3eb5d9aff0c", [:rebar3], [{:fast_yaml, "1.0.29", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm", "97ab7b889f92f65447ed2db485324aba382447fa4ce8b57e466ab994da5f6233"},
|
||||
}
|
||||
|
||||
+8
-1
@@ -243,7 +243,6 @@ p[dir=ltr] a {
|
||||
|
||||
background: #3eaffa;
|
||||
|
||||
text-transform: uppercase;
|
||||
font-size: 0.75em;
|
||||
color: #fff;
|
||||
}
|
||||
@@ -277,3 +276,11 @@ p.result {
|
||||
*.alignright {
|
||||
text-align: right;
|
||||
}
|
||||
.btn-danger:hover {
|
||||
color: #fff;
|
||||
background-color: #cb2431;
|
||||
}
|
||||
.btn-danger {
|
||||
color: #cb2431;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
+18
-16
@@ -60,7 +60,7 @@
|
||||
{"Client acknowledged more stanzas than sent by server","El client ha reconegut més paquets dels que ha enviat el servidor"}.
|
||||
{"Commands","Comandaments"}.
|
||||
{"Conference room does not exist","La sala de conferències no existeix"}.
|
||||
{"Configuration of room ~ts","Configuració de la sala ~ts"}.
|
||||
{"Configuration of room ~s","Configuració de la sala ~s"}.
|
||||
{"Configuration","Configuració"}.
|
||||
{"Connected Resources:","Recursos connectats:"}.
|
||||
{"Country","Pais"}.
|
||||
@@ -79,7 +79,8 @@
|
||||
{"Delete User","Eliminar Usuari"}.
|
||||
{"Description:","Descripció:"}.
|
||||
{"Disc only copy","Còpia sols en disc"}.
|
||||
{"Displayed Groups:","Mostrar grups:"}.
|
||||
{"'Displayed groups' not added (they do not exist!): ","'Mostrats' no afegits (no existeixen!): "}.
|
||||
{"Displayed:","Mostrats:"}.
|
||||
{"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"}.
|
||||
@@ -116,7 +117,7 @@
|
||||
{"Failed to extract JID from your voice request approval","No s'ha pogut extraure el JID de la teva aprovació de petició de veu"}.
|
||||
{"Failed to map delegated namespace to external component","Ha fallat mapejar la delegació de l'espai de noms al component extern"}.
|
||||
{"Failed to parse HTTP response","Ha fallat el processat de la resposta HTTP"}.
|
||||
{"Failed to process option '~ts'","Ha fallat el processat de la opció '~ts'"}.
|
||||
{"Failed to process option '~s'","Ha fallat el processat de la opció '~s'"}.
|
||||
{"Family Name","Cognom"}.
|
||||
{"February","Febrer"}.
|
||||
{"File larger than ~w bytes","El fitxer es més gran que ~w bytes"}.
|
||||
@@ -132,7 +133,7 @@
|
||||
{"Get User Password","Obtenir Contrasenya d'usuari"}.
|
||||
{"Get User Statistics","Obtenir Estadístiques d'Usuari"}.
|
||||
{"Given Name","Nom propi"}.
|
||||
{"Group ","Grup "}.
|
||||
{"Group","Grup"}.
|
||||
{"Groups","Grups"}.
|
||||
{"has been banned","ha sigut bloquejat"}.
|
||||
{"has been kicked because of a system shutdown","ha sigut expulsat perquè el sistema va a apagar-se"}.
|
||||
@@ -169,7 +170,7 @@
|
||||
{"Invitations are not allowed in this conference","Les invitacions no estan permeses en aquesta sala de conferència"}.
|
||||
{"IP addresses","Adreça IP"}.
|
||||
{"is now known as","ara es conegut com"}.
|
||||
{"It is not allowed to send error messages to the room. The participant (~ts) has sent an error message (~ts) and got kicked from the room","No està permés enviar missatges d'error a la sala. El participant (~ts) ha enviat un missatge d'error (~ts) i ha sigut expulsat de la sala"}.
|
||||
{"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 of type \"groupchat\"","No està permés enviar missatges del tipus \"groupchat\""}.
|
||||
{"It is not allowed to send private messages to the conference","No està permès l'enviament de missatges privats a la sala"}.
|
||||
{"It is not allowed to send private messages","No està permés enviar missatges privats"}.
|
||||
@@ -181,6 +182,7 @@
|
||||
{"joins the room","entra a la sala"}.
|
||||
{"July","Juliol"}.
|
||||
{"June","Juny"}.
|
||||
{"Label:","Etiqueta:"}.
|
||||
{"Last Activity","Última activitat"}.
|
||||
{"Last login","Últim login"}.
|
||||
{"Last month","Últim mes"}.
|
||||
@@ -200,7 +202,7 @@
|
||||
{"March","Març"}.
|
||||
{"Maximum Number of Occupants","Número màxim d'ocupants"}.
|
||||
{"May","Maig"}.
|
||||
{"Members not added (inexistent vhost): ","Membres no afegits (perque el vhost no existeix): "}.
|
||||
{"Members not added (inexistent vhost!): ","Membres no afegits (perquè el vhost no existeix): "}.
|
||||
{"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."}.
|
||||
@@ -224,7 +226,7 @@
|
||||
{"New Password:","Nova Contrasenya:"}.
|
||||
{"Nickname can't be empty","El sobrenom no pot estar buit"}.
|
||||
{"Nickname Registration at ","Registre del sobrenom en "}.
|
||||
{"Nickname ~ts does not exist in the room","El sobrenom ~ts no existeix a la sala"}.
|
||||
{"Nickname ~s does not exist in the room","El sobrenom ~s no existeix a la sala"}.
|
||||
{"Nickname","Sobrenom"}.
|
||||
{"No address elements found","No s'han trobat elements d'adreces ('address')"}.
|
||||
{"No addresses element found","No s'ha trobat l'element d'adreces ('addresses')"}.
|
||||
@@ -349,6 +351,7 @@
|
||||
{"Roster","Llista de contactes"}.
|
||||
{"RPC Call Error","Error de cridada RPC"}.
|
||||
{"Running Nodes","Nodes funcionant"}.
|
||||
{"~s invites you to the room ~s","~s et convida a la sala ~s"}.
|
||||
{"Saturday","Dissabte"}.
|
||||
{"Script check","Comprovar script"}.
|
||||
{"Search Results for ","Resultats de la búsqueda "}.
|
||||
@@ -409,12 +412,12 @@
|
||||
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Aquesta pàgina permet crear un compte Jabber en aquest servidor Jabber. El teu JID (Jabber IDentifier; Identificador Jabber) tindrà aquesta forma: usuari@servidor. Si us plau, llegeix amb cura les instruccions per emplenar correctament els camps."}.
|
||||
{"This page allows to unregister a Jabber account in this Jabber server.","Aquesta pàgina permet anul·lar el registre d'un compte Jabber en aquest servidor Jabber."}.
|
||||
{"This room is not anonymous","Aquesta sala no és anònima"}.
|
||||
{"This service can not process the address: ~ts","Este servei no pot processar la direcció: ~ts"}.
|
||||
{"This service can not process the address: ~s","Este servei no pot processar la direcció: ~s"}.
|
||||
{"Thursday","Dijous"}.
|
||||
{"Time delay","Temps de retard"}.
|
||||
{"Timed out waiting for stream resumption","Massa temps esperant que es resumisca la connexió"}.
|
||||
{"Time","Data"}.
|
||||
{"To register, visit ~ts","Per a registrar-te, visita ~ts"}.
|
||||
{"To register, visit ~s","Per a registrar-te, visita ~s"}.
|
||||
{"To ~ts","A ~ts"}.
|
||||
{"Token TTL","Token TTL"}.
|
||||
{"Too many active bytestreams","N'hi ha massa Bytestreams actius"}.
|
||||
@@ -422,7 +425,7 @@
|
||||
{"Too many child elements","N'hi ha massa subelements"}.
|
||||
{"Too many <item/> elements","N'hi ha massa elements <item/>"}.
|
||||
{"Too many <list/> elements","N'hi ha massa elements <list/>"}.
|
||||
{"Too many (~p) failed authentications from this IP address (~ts). The address will be unblocked at ~ts UTC","Massa autenticacions (~p) han fallat des d'aquesta adreça IP (~ts). L'adreça serà desbloquejada en ~ts UTC"}.
|
||||
{"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 receiver fields were specified","S'han especificat massa camps de receptors"}.
|
||||
{"Too many unacked stanzas","Massa missatges sense haver reconegut la seva recepció"}.
|
||||
{"Too many users in this conference","N'hi ha massa usuaris en esta sala de conferència"}.
|
||||
@@ -433,7 +436,6 @@
|
||||
{"Transactions Committed:","Transaccions Realitzades:"}.
|
||||
{"Transactions Logged:","Transaccions registrades:"}.
|
||||
{"Transactions Restarted:","Transaccions reiniciades:"}.
|
||||
{"~ts invites you to the room ~ts","~ts et convida a la sala ~ts"}.
|
||||
{"~ts's Offline Messages Queue","~ts's cua de missatges offline"}.
|
||||
{"Tuesday","Dimarts"}.
|
||||
{"Unable to generate a CAPTCHA","No s'ha pogut generar un CAPTCHA"}.
|
||||
@@ -467,12 +469,11 @@
|
||||
{"User","Usuari"}.
|
||||
{"Validate","Validar"}.
|
||||
{"Value 'get' of 'type' attribute is not allowed","El valor 'get' a l'atribut 'type' no és permès"}.
|
||||
{"Value of '~ts' should be boolean","El valor de '~ts' deuria ser booleà"}.
|
||||
{"Value of '~ts' should be datetime string","El valor de '~ts' deuria ser una data"}.
|
||||
{"Value of '~ts' should be integer","El valor de '~ts' deuria ser un numero enter"}.
|
||||
{"Value of '~s' should be boolean","El valor de '~s' deuria ser booleà"}.
|
||||
{"Value of '~s' should be datetime string","El valor de '~s' deuria ser una data"}.
|
||||
{"Value of '~s' should be integer","El valor de '~s' deuria ser un numero enter"}.
|
||||
{"Value 'set' of 'type' attribute is not allowed","El valor 'set' a l'atribut 'type' no és permès"}.
|
||||
{"vCard User Search","vCard recerca d'usuari"}.
|
||||
{"Virtual Hosting","Hosts virtuals"}.
|
||||
{"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"}.
|
||||
@@ -481,6 +482,7 @@
|
||||
{"Wednesday","Dimecres"}.
|
||||
{"Wrong parameters in the web formulary","Paràmetres incorrectes en el formulari web"}.
|
||||
{"Wrong xmlns","El xmlns ès incorrecte"}.
|
||||
{"XMPP Domains","Dominis XMPP"}.
|
||||
{"You are being removed from the room because of a system shutdown","Has sigut expulsat de la sala perquè el sistema va a apagar-se"}.
|
||||
{"You are not joined to the channel","No t'has unit al canal"}.
|
||||
{"You can later change your password using a Jabber client.","Podràs canviar la teva contrasenya més endavant utilitzant un client Jabber."}.
|
||||
@@ -494,5 +496,5 @@
|
||||
{"Your contact offline message queue is full. The message has been discarded.","La teua 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 subscription request and/or messages to ~ts have been blocked. To unblock your subscription request, visit ~ts","La teua petició de subscripció i/o missatges a ~ts han sigut bloquejats. Per a desbloquejar-los, visita ~ts"}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","La teua petició de subscripció i/o missatges a ~s han sigut bloquejats. Per a desbloquejar-los, visita ~s"}.
|
||||
{"You're not allowed to create nodes","No tens permís per a crear nodes"}.
|
||||
|
||||
+366
-355
File diff suppressed because it is too large
Load Diff
+15
-25
@@ -291,8 +291,7 @@ msgid "Configuration"
|
||||
msgstr "Konfigurace"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Konfigurace místnosti ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -495,8 +494,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Chyba parsování HTTP odpovědi"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Chyba při zpracování možnosti '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -565,8 +563,8 @@ msgid "Given Name"
|
||||
msgstr "Křestní jméno"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Skupina "
|
||||
msgid "Group"
|
||||
msgstr "Skupina"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -694,10 +692,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Pozvánky nejsou povoleny v této místnosti"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Není povoleno posílat chybové zprávy do místnosti. Účastník (~s) odeslal "
|
||||
"chybovou zprávu (~s) a byl vyhozen z místnosti"
|
||||
@@ -933,8 +930,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Přezdívka ~s v místnosti neexistuje"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1767,8 +1763,7 @@ msgid "To"
|
||||
msgstr "Pro"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Pokud se chcete zaregistrovat, navštivte ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1781,10 +1776,9 @@ msgid "Token TTL"
|
||||
msgstr "Token TTL"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Příliš mnoho (~p) chybných pokusů o přihlášení z této IP adresy (~s). Adresa "
|
||||
"bude zablokována do ~s UTC"
|
||||
@@ -1996,19 +1990,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "Hodnota 'set' atrubutu 'type' není povolena"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "Hodnota '~s' by měla být boolean"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "Hodnota '~s' by měla být datetime řetězec"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "Hodnota '~s' by měla být celé číslo"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2109,10 +2100,9 @@ msgid ""
|
||||
msgstr "Fronta offline zpráv pro váš kontakt je plná. Zpráva byla zahozena."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "Nesmíte posílat zprávy na ~s. Pro povolení navštivte ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+15
-25
@@ -300,8 +300,7 @@ msgid "Configuration"
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Konfiguration für Raum ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -507,8 +506,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Konnte HTTP-Antwort nicht parsen"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Konnte Option '~s' nicht verarbeiten"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -578,8 +576,8 @@ msgid "Given Name"
|
||||
msgstr "Vorname"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Gruppe "
|
||||
msgid "Group"
|
||||
msgstr "Gruppe"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -708,10 +706,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Einladungen sind in dieser Konferenz nicht erlaubt"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Es ist nicht erlaubt Fehlermeldungen an den Raum zu senden. Der Teilnehmer "
|
||||
"(~s) hat eine Fehlermeldung (~s) gesendet und wurde aus dem Raum gekickt"
|
||||
@@ -949,8 +946,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Der Benutzername ~s existiert im Raum nicht"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1790,8 +1786,7 @@ msgid "To"
|
||||
msgstr "An"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Um sich anzumelden, besuchen Sie ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1804,10 +1799,9 @@ msgid "Token TTL"
|
||||
msgstr "Token TTL"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Zu viele (~p) fehlgeschlagene Anmeldeversuche von dieser IP Adresse (~s). "
|
||||
"Die Adresse wird bis ~s UTC blockiert."
|
||||
@@ -2019,19 +2013,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "Wert 'set' des 'type'-Attributs ist nicht erlaubt"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "Wert von '~s' sollte boolesch sein"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "Wert von '~s' sollte datetime-String sein"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "Wert von '~s' sollte eine Ganzzahl sein"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2140,10 +2131,9 @@ msgstr ""
|
||||
"verworfen."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Ihre Nachrichten an ~s werden blockiert. Um dies zu ändern, besuchen Sie ~s"
|
||||
|
||||
|
||||
+20
-29
@@ -294,8 +294,7 @@ msgid "Configuration"
|
||||
msgstr "Διαμόρφωση"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Διαμόρφωση Αίθουσας σύνεδριασης ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -505,9 +504,8 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Αποτυχία ανάλυσης της απόκρισης HTTP"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgstr "Αποτυχία επεξεργασίας της επιλογής '~ s'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Αποτυχία επεξεργασίας της επιλογής '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
#: mod_vcard_sql.erl:174 mod_vcard_ldap.erl:330 mod_vcard_ldap.erl:343
|
||||
@@ -576,8 +574,8 @@ msgid "Given Name"
|
||||
msgstr "Ονομα"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Ομάδα "
|
||||
msgid "Group"
|
||||
msgstr "Ομάδα"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -705,13 +703,12 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Οι προσκλήσεις δεν επιτρέπονται σε αυτή τη διάσκεψη"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Δεν επιτρέπεται η αποστολή μηνυμάτων σφάλματος στο δωμάτιο. Ο συμμετέχων (~ "
|
||||
"s) έχει στείλει ένα μήνυμα σφάλματος (~ s) και έχει πέταχτεί έξω από την "
|
||||
"Δεν επιτρέπεται η αποστολή μηνυμάτων σφάλματος στο δωμάτιο. Ο συμμετέχων (~s"
|
||||
") έχει στείλει ένα μήνυμα σφάλματος (~s) και έχει πέταχτεί έξω από την "
|
||||
"αίθουσα"
|
||||
|
||||
#: mod_muc_room.erl:564 mod_muc_room.erl:575
|
||||
@@ -946,8 +943,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Ψευδώνυμο ~s δεν υπάρχει σε αυτή την αίθουσα"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1797,9 +1793,8 @@ msgid "To"
|
||||
msgstr "Πρώς"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgstr "Για να εγγραφείτε, επισκεφθείτε το ~ s"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Για να εγγραφείτε, επισκεφθείτε το ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
#, fuzzy
|
||||
@@ -2025,20 +2020,17 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "Δεν επιτρέπεται η παράμετρος 'set' του 'type'"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgstr "Η τιμή του '~ s' πρέπει να είναι boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "Η τιμή του '~s' πρέπει να είναι boolean"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgstr "Η τιμή του '~ s' θα πρέπει να είναι χρονοσειρά"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "Η τιμή του '~s' θα πρέπει να είναι χρονοσειρά"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgstr "Η τιμή του '~ s' θα πρέπει να είναι ακέραιος"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "Η τιμή του '~s' θα πρέπει να είναι ακέραιος"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
#, fuzzy
|
||||
@@ -2146,10 +2138,9 @@ msgstr ""
|
||||
"Η μνήμη χωρίς σύνδεση μήνυματών είναι πλήρης. Το μήνυμα έχει απορριφθεί."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Τα μηνύματά σας πρως ~s είναι αποκλεισμένα. Για αποδεσμεύση, επισκεφθείτε ~s"
|
||||
|
||||
|
||||
+8
-12
@@ -290,8 +290,7 @@ msgid "Configuration"
|
||||
msgstr "Agordo"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Agordo de babilejo ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -566,8 +565,8 @@ msgid "Given Name"
|
||||
msgstr "Meza Nomo"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Grupo "
|
||||
msgid "Group"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -936,8 +935,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Kaŝnomo ~s ne ekzistas en la babilejo"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1782,10 +1780,9 @@ msgid "Token TTL"
|
||||
msgstr ""
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Tro da malsukcesaj aŭtentprovoj (~p) de ĉi tiu IP-adreso (~s). La adreso "
|
||||
"estos malbarata je ~s UTC."
|
||||
@@ -2113,10 +2110,9 @@ msgstr ""
|
||||
"forĵetita"
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "Viaj mesaĝoj al ~s estas blokata. Por malbloki ilin, iru al ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+18
-16
@@ -60,7 +60,7 @@
|
||||
{"Client acknowledged more stanzas than sent by server","El cliente ha reconocido más paquetes de los que el servidor ha enviado"}.
|
||||
{"Commands","Comandos"}.
|
||||
{"Conference room does not exist","La sala de conferencias no existe"}.
|
||||
{"Configuration of room ~ts","Configuración para la sala ~ts"}.
|
||||
{"Configuration of room ~s","Configuración para la sala ~s"}.
|
||||
{"Configuration","Configuración"}.
|
||||
{"Connected Resources:","Recursos conectados:"}.
|
||||
{"Country","País"}.
|
||||
@@ -79,7 +79,8 @@
|
||||
{"Delete User","Borrar usuario"}.
|
||||
{"Description:","Descripción:"}.
|
||||
{"Disc only copy","Copia en disco solamente"}.
|
||||
{"Displayed Groups:","Mostrar grupos:"}.
|
||||
{"'Displayed groups' not added (they do not exist!): ","'Mostrados' que no han sido añadidos (¡no existen!): "}.
|
||||
{"Displayed:","Mostrados:"}.
|
||||
{"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"}.
|
||||
@@ -116,7 +117,7 @@
|
||||
{"Failed to extract JID from your voice request approval","Fallo al extraer el Jabber ID de tu aprobación de petición de voz"}.
|
||||
{"Failed to map delegated namespace to external component","Falló el mapeo de espacio de nombres delegado al componente externo"}.
|
||||
{"Failed to parse HTTP response","Falló la comprensión de la respuesta HTTP"}.
|
||||
{"Failed to process option '~ts'","Falló el procesado de la opción '~ts'"}.
|
||||
{"Failed to process option '~s'","Falló el procesado de la opción '~s'"}.
|
||||
{"Family Name","Apellido"}.
|
||||
{"February","febrero"}.
|
||||
{"File larger than ~w bytes","El fichero es más grande que ~w bytes"}.
|
||||
@@ -132,7 +133,7 @@
|
||||
{"Get User Password","Ver contraseña de usuario"}.
|
||||
{"Get User Statistics","Ver estadísticas de usuario"}.
|
||||
{"Given Name","Nombre"}.
|
||||
{"Group ","Grupo "}.
|
||||
{"Group","Grupo"}.
|
||||
{"Groups","Grupos"}.
|
||||
{"has been banned","ha sido bloqueado"}.
|
||||
{"has been kicked because of a system shutdown","ha sido expulsado porque el sistema se va a detener"}.
|
||||
@@ -169,7 +170,7 @@
|
||||
{"Invitations are not allowed in this conference","Las invitaciones no están permitidas en esta sala"}.
|
||||
{"IP addresses","Direcciones IP"}.
|
||||
{"is now known as","se cambia el nombre a"}.
|
||||
{"It is not allowed to send error messages to the room. The participant (~ts) has sent an error message (~ts) and got kicked from the room","No está permitido enviar mensajes de error a la sala. Este participante (~ts) ha enviado un mensaje de error (~ts) y fue expulsado de la sala"}.
|
||||
{"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 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"}.
|
||||
{"It is not allowed to send private messages","No está permitido enviar mensajes privados"}.
|
||||
@@ -181,6 +182,7 @@
|
||||
{"joins the room","entra en la sala"}.
|
||||
{"July","julio"}.
|
||||
{"June","junio"}.
|
||||
{"Label:","Etiqueta:"}.
|
||||
{"Last Activity","Última actividad"}.
|
||||
{"Last login","Última conexión"}.
|
||||
{"Last month","Último mes"}.
|
||||
@@ -200,7 +202,7 @@
|
||||
{"March","marzo"}.
|
||||
{"Maximum Number of Occupants","Número máximo de ocupantes"}.
|
||||
{"May","mayo"}.
|
||||
{"Members not added (inexistent vhost): ","Miembros no añadidos (el vhost no existe): "}.
|
||||
{"Members not added (inexistent vhost!): ","Miembros no añadidos (el vhost no existe): "}.
|
||||
{"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."}.
|
||||
@@ -224,7 +226,7 @@
|
||||
{"New Password:","Nueva contraseña:"}.
|
||||
{"Nickname can't be empty","El apodo no puede estar vacío"}.
|
||||
{"Nickname Registration at ","Registro del apodo en "}.
|
||||
{"Nickname ~ts does not exist in the room","El apodo ~ts no existe en la sala"}.
|
||||
{"Nickname ~s does not exist in the room","El apodo ~s no existe en la sala"}.
|
||||
{"Nickname","Apodo"}.
|
||||
{"No address elements found","No se encontraron elementos de dirección ('address')"}.
|
||||
{"No addresses element found","No se encontró elemento de direcciones ('addresses')"}.
|
||||
@@ -349,6 +351,7 @@
|
||||
{"Roster","Lista de contactos"}.
|
||||
{"RPC Call Error","Error en la llamada RPC"}.
|
||||
{"Running Nodes","Nodos funcionando"}.
|
||||
{"~s invites you to the room ~s","~s te invita a la sala ~s"}.
|
||||
{"Saturday","sábado"}.
|
||||
{"Script check","Comprobación de script"}.
|
||||
{"Search Results for ","Buscar resultados por "}.
|
||||
@@ -409,12 +412,12 @@
|
||||
{"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."}.
|
||||
{"This room is not anonymous","Sala no anónima"}.
|
||||
{"This service can not process the address: ~ts","Este servicio no puede procesar la dirección: ~ts"}.
|
||||
{"This service can not process the address: ~s","Este servicio no puede procesar la dirección: ~s"}.
|
||||
{"Thursday","jueves"}.
|
||||
{"Time delay","Retraso temporal"}.
|
||||
{"Timed out waiting for stream resumption","Ha pasado demasiado tiempo esperando que la conexión se restablezca"}.
|
||||
{"Time","Fecha"}.
|
||||
{"To register, visit ~ts","Para registrarte, visita ~ts"}.
|
||||
{"To register, visit ~s","Para registrarte, visita ~s"}.
|
||||
{"To ~ts","A ~ts"}.
|
||||
{"Token TTL","Token TTL"}.
|
||||
{"Too many active bytestreams","Demasiados bytestreams activos"}.
|
||||
@@ -422,7 +425,7 @@
|
||||
{"Too many child elements","Demasiados subelementos"}.
|
||||
{"Too many <item/> elements","Demasiados elementos <item/>"}.
|
||||
{"Too many <list/> elements","Demasiados elementos <list/>"}.
|
||||
{"Too many (~p) failed authentications from this IP address (~ts). The address will be unblocked at ~ts UTC","Demasiadas (~p) autenticaciones fallidas de esta dirección IP (~ts). La dirección será desbloqueada en ~ts UTC"}.
|
||||
{"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 receiver fields were specified","Se han especificado demasiados campos de destinatario"}.
|
||||
{"Too many unacked stanzas","Demasiados mensajes sin haber reconocido recibirlos"}.
|
||||
{"Too many users in this conference","Demasiados usuarios en esta sala"}.
|
||||
@@ -433,7 +436,6 @@
|
||||
{"Transactions Committed:","Transacciones finalizadas:"}.
|
||||
{"Transactions Logged:","Transacciones registradas:"}.
|
||||
{"Transactions Restarted:","Transacciones reiniciadas:"}.
|
||||
{"~ts invites you to the room ~ts","~ts te invita a la sala ~ts"}.
|
||||
{"~ts's Offline Messages Queue","Cola de mensajes diferidos de ~ts"}.
|
||||
{"Tuesday","martes"}.
|
||||
{"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}.
|
||||
@@ -467,12 +469,11 @@
|
||||
{"User","Usuario"}.
|
||||
{"Validate","Validar"}.
|
||||
{"Value 'get' of 'type' attribute is not allowed","El valor 'get' del atributo 'type' no está permitido"}.
|
||||
{"Value of '~ts' should be boolean","El valor de '~ts' debería ser booleano"}.
|
||||
{"Value of '~ts' should be datetime string","El valor de '~ts' debería ser una fecha"}.
|
||||
{"Value of '~ts' should be integer","El valor de '~ts' debería ser un entero"}.
|
||||
{"Value of '~s' should be boolean","El valor de '~s' debería ser booleano"}.
|
||||
{"Value of '~s' should be datetime string","El valor de '~s' debería ser una fecha"}.
|
||||
{"Value of '~s' should be integer","El valor de '~s' debería ser un entero"}.
|
||||
{"Value 'set' of 'type' attribute is not allowed","El valor 'set' del atributo 'type' no está permitido"}.
|
||||
{"vCard User Search","Buscar vCard de usuario"}.
|
||||
{"Virtual Hosting","Dominios Virtuales"}.
|
||||
{"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"}.
|
||||
@@ -481,6 +482,7 @@
|
||||
{"Wednesday","miércoles"}.
|
||||
{"Wrong parameters in the web formulary","Parámetros incorrectos en el formulario web"}.
|
||||
{"Wrong xmlns","xmlns incorrecto"}.
|
||||
{"XMPP Domains","Dominios XMPP"}.
|
||||
{"You are being removed from the room because of a system shutdown","Estás siendo expulsado de la sala porque el sistema se va a detener"}.
|
||||
{"You are not joined to the channel","No has entrado en el canal"}.
|
||||
{"You can later change your password using a Jabber client.","Puedes cambiar tu contraseña después, usando un cliente Jabber."}.
|
||||
@@ -494,5 +496,5 @@
|
||||
{"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 subscription request and/or messages to ~ts have been blocked. To unblock your subscription request, visit ~ts","Tu petición de suscripción y/o mensajes a ~ts ha sido bloqueado. Para desbloquear tu petición de suscripción visita ~ts"}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Tu petición de suscripción y/o mensajes a ~s ha sido bloqueado. Para desbloquear tu petición de suscripción visita ~s"}.
|
||||
{"You're not allowed to create nodes","No tienes permitido crear nodos"}.
|
||||
|
||||
+422
-412
File diff suppressed because it is too large
Load Diff
+15
-25
@@ -293,8 +293,7 @@ msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Configuration pour le salon ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -501,8 +500,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Echec de lecture de la réponse HTTP"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Echec de traitement de l'option '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -571,8 +569,8 @@ msgid "Given Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Groupe "
|
||||
msgid "Group"
|
||||
msgstr "Groupe"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -701,10 +699,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Les invitations ne sont pas autorisées dans ce salon"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"L'envoyer de messages d'erreur au salon n'est pas autorisé. Le participant "
|
||||
"(~s) à envoyé un message d'erreur (~s) et à été expulsé du salon"
|
||||
@@ -942,8 +939,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Le pseudo ~s n'existe pas dans ce salon"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1784,8 +1780,7 @@ msgid "To"
|
||||
msgstr "A"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Pour vous enregistrer, visitez ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1798,10 +1793,9 @@ msgid "Token TTL"
|
||||
msgstr "Jeton TTL"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Trop (~p) d'authentification ont échoué pour cette adresse IP (~s). "
|
||||
"L'adresse sera débloquée à ~s UTC"
|
||||
@@ -2016,19 +2010,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "La valeur de l'attribut 'type' ne peut être 'set'"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "La valeur de '~s' ne peut être booléen"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "La valeur de '~s' doit être une chaine datetime"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "La valeur de '~s' doit être un entier"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2139,10 +2130,9 @@ msgstr ""
|
||||
"été détruit."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Vos messages pour ~s sont bloqués. Pour les débloquer, veuillez visiter ~s"
|
||||
|
||||
|
||||
+15
-25
@@ -291,8 +291,7 @@ msgid "Configuration"
|
||||
msgstr "Configuración"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Configuración para a sala ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -498,8 +497,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Non se puido analizar a resposta HTTP"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Fallo ao procesar a opción '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -568,8 +566,8 @@ msgid "Given Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Grupo "
|
||||
msgid "Group"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -697,10 +695,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "As invitacións non están permitidas nesta sala"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Non está permitido enviar mensaxes de erro á sala. Este participante (~s) "
|
||||
"enviou unha mensaxe de erro (~s) e foi expulsado da sala"
|
||||
@@ -937,8 +934,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "O alcume ~s non existe na sala"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1776,8 +1772,7 @@ msgid "To"
|
||||
msgstr "Para"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Para rexistrarse, visita ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1790,10 +1785,9 @@ msgid "Token TTL"
|
||||
msgstr "Token TTL"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Demasiados (~p) fallou autenticaciones desde esta dirección IP (~s). A "
|
||||
"dirección será desbloqueada as ~s UTC"
|
||||
@@ -2005,19 +1999,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "O valor \"set\" do atributo 'type' non está permitido"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "O valor de '~s' debería ser booleano"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "O valor de '~s' debería ser unha data"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "O valor de '~s' debería ser un enteiro"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2122,10 +2113,9 @@ msgstr ""
|
||||
"descartouse."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"As súas mensaxes a ~s encóntranse bloqueadas. Para desbloquear, visite ~s"
|
||||
|
||||
|
||||
+14
-23
@@ -295,8 +295,7 @@ msgstr "תצורה"
|
||||
|
||||
# תצורה של חדר
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "תצורת חדר ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -500,8 +499,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "נכשל לפענח תגובת HTTP"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "נכשל לעבד אפשרות '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -572,8 +570,8 @@ msgid "Given Name"
|
||||
msgstr "שם פרטי"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "קבוצה "
|
||||
msgid "Group"
|
||||
msgstr "קבוצה"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -702,10 +700,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "הזמנות אינן מותרות בועידה זו"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"אין זה מותר לשלוח הודעות שגיאה לחדר. משתתף זה (~s) שלח הודעת שגיאה (~s) "
|
||||
"ונבעט מתוך החדר"
|
||||
@@ -1784,8 +1781,7 @@ msgid "To"
|
||||
msgstr "לכבוד"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "כדי להירשם, בקרו ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1798,10 +1794,9 @@ msgid "Token TTL"
|
||||
msgstr "סימן TTL"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"יותר מדי (~p) אימותים כושלים מתוך כתובת IP זו (~s). הכתובת תורשה לקבל גישה "
|
||||
"בשעה ~s UTC"
|
||||
@@ -2015,19 +2010,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr ""
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "ערך של '~s' צריך להיות boolean"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "ערך של '~s' צריך להיות מחרוזת datetime"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "ערך של '~s' צריך להיות integer"
|
||||
|
||||
# וירטואליים
|
||||
@@ -2132,10 +2124,9 @@ msgid ""
|
||||
msgstr "תור הודעות קשר לא מקוונות הינו מלא. ההודעה סולקה."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "ההודעות שלך לערוץ ~s הינן חסומות. כדי לבטל את חסימתן, בקר בכתובת ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+24
-25
@@ -295,8 +295,8 @@ msgid "Configuration"
|
||||
msgstr "Beállítás"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
msgid "Configuration of room ~ts"
|
||||
msgstr "A(z) ~ts szoba beállítása"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "A(z) ~s szoba beállítása"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
msgid "Connected Resources:"
|
||||
@@ -567,8 +567,8 @@ msgid "Given Name"
|
||||
msgstr "Keresztnév"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Csoport "
|
||||
msgid "Group"
|
||||
msgstr "Csoport"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -694,11 +694,11 @@ msgstr "Meghívások nem engedélyezettek ebben a konferenciában"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Nem engedélyezett hibaüzeneteket küldeni a szobába. A résztvevő (~ts) "
|
||||
"hibaüzenetet (~ts) küldött, és ki lett rúgva a szobából"
|
||||
"Nem engedélyezett hibaüzeneteket küldeni a szobába. A résztvevő (~s) "
|
||||
"hibaüzenetet (~s) küldött, és ki lett rúgva a szobából"
|
||||
|
||||
#: mod_muc_room.erl:564 mod_muc_room.erl:575
|
||||
msgid "It is not allowed to send private messages"
|
||||
@@ -1734,8 +1734,8 @@ msgid "This room is not anonymous"
|
||||
msgstr "Ez a szoba nem névtelen"
|
||||
|
||||
#: mod_multicast.erl:498
|
||||
msgid "This service can not process the address: ~ts"
|
||||
msgstr "Ez a szolgáltatás nem tudja feldolgozni a címet: ~ts"
|
||||
msgid "This service can not process the address: ~s"
|
||||
msgstr "Ez a szolgáltatás nem tudja feldolgozni a címet: ~s"
|
||||
|
||||
#: mod_muc_log.erl:470
|
||||
msgid "Thursday"
|
||||
@@ -1758,8 +1758,8 @@ msgid "To"
|
||||
msgstr "Címzett"
|
||||
|
||||
#: mod_register.erl:226
|
||||
msgid "To register, visit ~ts"
|
||||
msgstr "Regisztráláshoz látogassa meg ezt az oldalt: ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Regisztráláshoz látogassa meg ezt az oldalt: ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
msgid "To ~ts"
|
||||
@@ -1769,10 +1769,9 @@ msgstr "Címzett: ~ts"
|
||||
msgid "Token TTL"
|
||||
msgstr "Token élettartama"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Túl sok (~p) sikertelen hitelesítés erről az IP-címről (~ts) A cím ~ts-kor "
|
||||
"lesz feloldva UTC szerint"
|
||||
@@ -1981,17 +1980,17 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "A „type” attribútum „set” értéke nem engedélyezett"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgstr "A(z) „~ts” értéke csak logikai lehet"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "A(z) „~s” értéke csak logikai lehet"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgstr "A(z) „~ts” értéke csak dátum és idő karakterlánc lehet"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "A(z) „~s” értéke csak dátum és idő karakterlánc lehet"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgstr "A(z) „~ts” értéke csak egész szám lehet"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "A(z) „~s” értéke csak egész szám lehet"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
msgid "Virtual Hosting"
|
||||
@@ -2097,12 +2096,12 @@ msgstr ""
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"A feliratkozási kérelme és/vagy ~ts számára küldött üzenetei blokkolva "
|
||||
"A feliratkozási kérelme és/vagy ~s számára küldött üzenetei blokkolva "
|
||||
"lettek. A feliratkozási kérelmének feloldásához látogassa meg ezt az oldalt: "
|
||||
"~ts"
|
||||
"~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
msgid "ejabberd"
|
||||
|
||||
+6
-8
@@ -291,8 +291,7 @@ msgid "Configuration"
|
||||
msgstr "Pengaturan"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Pengaturan ruangan ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -568,10 +567,11 @@ msgid "Given Name"
|
||||
msgstr "Nama Tengah"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgid "Group"
|
||||
msgstr "Grup"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
#, fuzzy
|
||||
msgid "Groups"
|
||||
msgstr "Grup"
|
||||
|
||||
@@ -940,8 +940,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Nama Julukan ~s tidak berada di dalam ruangan"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -2126,10 +2125,9 @@ msgstr ""
|
||||
"Kontak offline Anda pada antrian pesan sudah penuh. Pesan telah dibuang."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Pesan Anda untuk ~s sedang diblokir. Untuk membuka blokir tersebut, kunjungi "
|
||||
"~s"
|
||||
|
||||
+6
-9
@@ -298,8 +298,7 @@ msgid "Configuration"
|
||||
msgstr "Configurazione"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Configurazione per la stanza ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -577,8 +576,8 @@ msgid "Given Name"
|
||||
msgstr "Altro nome"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Gruppo "
|
||||
msgid "Group"
|
||||
msgstr "Gruppo"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -947,8 +946,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Il nickname ~s non esiste nella stanza"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -2135,10 +2133,9 @@ msgstr ""
|
||||
"scartato"
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "I messaggi verso ~s sono bloccati. Per sbloccarli, visitare ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+11
-14
@@ -288,8 +288,7 @@ msgid "Configuration"
|
||||
msgstr "設定"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "チャットルーム ~s の設定"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -565,10 +564,12 @@ msgid "Given Name"
|
||||
msgstr "ミドルネーム"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
#, fuzzy
|
||||
msgid "Group"
|
||||
msgstr "グループ"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
#, fuzzy
|
||||
msgid "Groups"
|
||||
msgstr "グループ"
|
||||
|
||||
@@ -697,10 +698,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "この会議では、発言権の要求はできません"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"このルームにエラーメッセージを送ることは許可されていません。参加者(~s)はエ"
|
||||
"ラーメッセージを(~s)を送信してルームからキックされました。"
|
||||
@@ -939,8 +939,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "ニックネーム ~s はこのチャットルームにいません"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1783,10 +1782,9 @@ msgid "Token TTL"
|
||||
msgstr ""
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"~p回の認証に失敗しました。このIPアドレス(~s)は~s UTCまでブロックされます。"
|
||||
|
||||
@@ -2109,10 +2107,9 @@ msgstr ""
|
||||
"相手先のオフラインメッセージキューが一杯です。このメッセージは破棄されます。"
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"~s 宛のメッセージはブロックされています。解除するにはこちらを見てください ~s"
|
||||
|
||||
|
||||
+8
-12
@@ -292,8 +292,7 @@ msgid "Configuration"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Instellingen van chatruimte ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -571,8 +570,8 @@ msgid "Given Name"
|
||||
msgstr "Tussennaam"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Groep "
|
||||
msgid "Group"
|
||||
msgstr "Groep"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -946,8 +945,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "De bijnaam ~s bestaat niet in deze chatruimte"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1807,10 +1805,9 @@ msgid "Token TTL"
|
||||
msgstr ""
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Te veel (~p) mislukte authenticatie-pogingen van dit IP-adres (~s). Dit "
|
||||
"adres zal worden gedeblokkeerd om ~s UTC"
|
||||
@@ -2138,10 +2135,9 @@ msgstr ""
|
||||
"opgeslagen."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Uw berichten aan ~s worden geblokkeerd. Om ze te deblokkeren, ga naar ~s"
|
||||
|
||||
|
||||
+6
-9
@@ -290,8 +290,7 @@ msgid "Configuration"
|
||||
msgstr "Konfigurasjon"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Konfigurasjon for rom ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -566,8 +565,8 @@ msgid "Given Name"
|
||||
msgstr "Mellomnavn"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Gruppe "
|
||||
msgid "Group"
|
||||
msgstr "Gruppe"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -936,8 +935,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Kallenavn ~s eksisterer ikke i dette rommet"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -2108,10 +2106,9 @@ msgid ""
|
||||
msgstr "Kontaktens frakoblede meldingskø er full. Meldingen har blitt kassert."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "Dine meldinger til ~s blir blokkert. For å åpne igjen, besøk ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+14
-23
@@ -294,8 +294,7 @@ msgid "Configuration"
|
||||
msgstr "Konfiguracja"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Konfiguracja pokoju ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -500,8 +499,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Nie udało się zanalizować odpowiedzi HTTP"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Nie udało się przetworzyć opcji '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -570,8 +568,8 @@ msgid "Given Name"
|
||||
msgstr "Imię"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Grupa "
|
||||
msgid "Group"
|
||||
msgstr "Grupa"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -699,10 +697,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Zaproszenia są wyłączone w tym pokoju"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Użytkownik nie może wysyłać wiadomości o błędach do pokoju. Użytkownik (~s) "
|
||||
"wysłał błąd (~s) i został wyrzucony z pokoju"
|
||||
@@ -1776,8 +1773,7 @@ msgid "To"
|
||||
msgstr "Do"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Żeby się zarejestrować odwiedź ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1790,10 +1786,9 @@ msgid "Token TTL"
|
||||
msgstr "Limit czasu tokenu"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Zbyt wiele (~p) nieudanych prób logowanie z tego adresu IP (~s). Ten adres "
|
||||
"zostanie odblokowany o ~s UTC"
|
||||
@@ -2005,19 +2000,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "Wartość 'set' dla atrybutu 'type' jest niedozwolona"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "Wartość '~s' powinna być typu logicznego"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "Wartość '~s' powinna być typu daty"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "Wartość '~s' powinna być liczbą"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2118,10 +2110,9 @@ msgstr ""
|
||||
"Kolejka wiadomości offline adresata jest pełna. Wiadomość została odrzucona."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "Twoje wiadomości do ~s są blokowane. Aby je odblokować, odwiedź ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+15
-25
@@ -291,8 +291,7 @@ msgid "Configuration"
|
||||
msgstr "Configuração"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Configuração para ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -499,8 +498,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Falha ao analisar resposta HTTP"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Falha ao processar opção '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -570,8 +568,8 @@ msgid "Given Name"
|
||||
msgstr "Nome do meio"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Grupo "
|
||||
msgid "Group"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -701,10 +699,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Convites estão desabilitados nesta sala de conferência"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Não é permitido o envio de mensagens de erro a esta sala. O membro (~s) "
|
||||
"enviou uma mensagem de erro (~s) e foi desconectado (\"kicked\")."
|
||||
@@ -942,8 +939,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "O apelido ~s não existe na sala"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1784,8 +1780,7 @@ msgid "To"
|
||||
msgstr "Para"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Para registrar, visite ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1798,10 +1793,9 @@ msgid "Token TTL"
|
||||
msgstr "Token TTL"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Número excessivo (~p) de tentativas falhas de autenticação (~s). O endereço "
|
||||
"será desbloqueado às ~s UTC"
|
||||
@@ -2016,19 +2010,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "Valor 'set' não permitido para atributo 'type'"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "Value de '~s' deveria ser um booleano"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "Valor de '~s' deveria ser data e hora"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "Valor de '~s' deveria ser um inteiro"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2132,10 +2123,9 @@ msgid ""
|
||||
msgstr "Sua fila de mensagens offline esta cheia. Sua mensagem foi descartada"
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Suas mensagens para ~s estão bloqueadas. Para desbloqueá-las, visite: ~s"
|
||||
|
||||
|
||||
+3
-5
@@ -300,7 +300,7 @@ msgstr "Configuração"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Configuração para "
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -585,9 +585,8 @@ msgid "Given Name"
|
||||
msgstr "Segundo nome"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
#, fuzzy
|
||||
msgid "Group "
|
||||
msgstr "Grupos"
|
||||
msgstr ""
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -969,8 +968,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "A alcunha ~s não existe na sala"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
|
||||
+16
-27
@@ -289,8 +289,7 @@ msgid "Configuration"
|
||||
msgstr "Конфигурация"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Конфигурация комнаты ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -491,8 +490,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "Ошибка разбора HTTP ответа"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "Ошибка обработки опции '~s'"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -559,8 +557,8 @@ msgid "Given Name"
|
||||
msgstr "Имя"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Группа "
|
||||
msgid "Group"
|
||||
msgstr "Группа"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -685,10 +683,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Рассылка приглашений отключена в этой конференции"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Запрещено посылать сообщения об ошибках в эту комнату. Участник (~s) послал "
|
||||
"сообщение об ошибке (~s) и был выкинут из комнаты"
|
||||
@@ -924,8 +921,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr "Псевдоним не может быть пустым значением"
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Псевдоним ~s в комнате отсутствует"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1726,8 +1722,7 @@ msgid "This room is not anonymous"
|
||||
msgstr "Эта комната не анонимная"
|
||||
|
||||
#: mod_multicast.erl:498
|
||||
#, fuzzy
|
||||
msgid "This service can not process the address: ~ts"
|
||||
msgid "This service can not process the address: ~s"
|
||||
msgstr "Сервер не может обработать адрес: ~s"
|
||||
|
||||
#: mod_muc_log.erl:470
|
||||
@@ -1751,8 +1746,7 @@ msgid "To"
|
||||
msgstr "Кому"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "Для регистрации посетите ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1765,10 +1759,9 @@ msgid "Token TTL"
|
||||
msgstr "Токен TTL"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Слишком много (~p) неудачных попыток аутентификации с этого IP-адреса (~s). "
|
||||
"Адрес будет разблокирован в ~s UTC"
|
||||
@@ -1977,19 +1970,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "Значение 'set' атрибута 'type' недопустимо"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "Значение '~s' должно быть булевым"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "Значение '~s' должно быть датой"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "Значение '~s' должно быть целочисленным"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2089,10 +2079,9 @@ msgstr ""
|
||||
"было сохранено."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Ваши запросы на добавление в контакт-лист, а также сообщения к ~s "
|
||||
"блокируются. Для снятия блокировки перейдите по ссылке ~s"
|
||||
|
||||
+6
-9
@@ -291,8 +291,7 @@ msgid "Configuration"
|
||||
msgstr "Konfigurácia"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Konfigurácia miestnosti ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -567,8 +566,8 @@ msgid "Given Name"
|
||||
msgstr "Prostredné meno: "
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Skupina "
|
||||
msgid "Group"
|
||||
msgstr "Skupina"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -936,8 +935,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Prezývka ~s v miestnosti neexistuje"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -2113,10 +2111,9 @@ msgid ""
|
||||
msgstr "Fronta offline správ tohoto kontaktu je plná. Správa bola zahodená."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "Správa určená pre ~s bola zablokovaná. Oblokovať ju môžete na ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+6
-9
@@ -295,8 +295,7 @@ msgid "Configuration"
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Konfiguration för ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -570,8 +569,8 @@ msgid "Given Name"
|
||||
msgstr "Mellannamn"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Grupp "
|
||||
msgid "Group"
|
||||
msgstr "Grupp"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -942,8 +941,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Smeknamnet ~s existerar inte i det här rummet"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -2121,10 +2119,9 @@ msgid ""
|
||||
msgstr "Din kontaktkö for offlinekontakter ar full"
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"Dina meddelanden till ~s är blockerade. För att avblockera dem, gå till ~s"
|
||||
|
||||
|
||||
+2
-2
@@ -569,8 +569,8 @@ msgid "Given Name"
|
||||
msgstr "ชื่อกลาง"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "กลุ่ม"
|
||||
msgid "Group"
|
||||
msgstr "กลุ่"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
|
||||
+5
-8
@@ -294,8 +294,7 @@ msgid "Configuration"
|
||||
msgstr "Ayarlar"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "~s odasının ayarları"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -573,7 +572,7 @@ msgstr "Ortanca İsim"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Group "
|
||||
msgstr ""
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -943,8 +942,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "~s takma ismi odada yok"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -2128,10 +2126,9 @@ msgid ""
|
||||
msgstr "Çevirim-dışı mesaj kuyruğunuz dolu. Mesajını dikkate alınmadı."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
"~s kullanıcısına mesajlarınız engelleniyor. Durumu düzeltmek için ~s "
|
||||
"adresini ziyaret ediniz."
|
||||
|
||||
+10
-15
@@ -295,8 +295,7 @@ msgid "Configuration"
|
||||
msgstr "Конфігурація"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Конфігурація кімнати ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -568,8 +567,8 @@ msgid "Given Name"
|
||||
msgstr "По-батькові"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Група "
|
||||
msgid "Group"
|
||||
msgstr "Група"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -699,10 +698,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Голосові запити відключені в цій конференції"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"Не дозволяється відправляти помилкові повідомлення в кімнату. Учасник (~s) "
|
||||
"відправив помилкове повідомлення (~s), та був виганий з кімнати"
|
||||
@@ -940,8 +938,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Псевдонім ~s в кімнаті відсутній"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1794,10 +1791,9 @@ msgid "Token TTL"
|
||||
msgstr ""
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"Забагато (~p) помилок авторизації з цієї IP адреси (~s). Адресу буде "
|
||||
"розблоковано о ~s UTC"
|
||||
@@ -2126,10 +2122,9 @@ msgstr ""
|
||||
"збережено."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "Ваші повідомлення до ~s блокуються. Для розблокування відвідайте ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+5
-7
@@ -571,8 +571,8 @@ msgid "Given Name"
|
||||
msgstr "Họ Đệm"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Nhóm "
|
||||
msgid "Group"
|
||||
msgstr "Nhóm"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -946,8 +946,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Bí danh ~s không tồn tại trong phòng này"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -2140,10 +2139,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Danh sách chờ thư liên lạc ngoại tuyến của bạn đã đầy. Thư này đã bị loại bỏ."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr ""
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+10
-15
@@ -293,8 +293,7 @@ msgid "Configuration"
|
||||
msgstr "Apontiaedjes"
|
||||
|
||||
#: mod_muc_room.erl:3489
|
||||
#, fuzzy
|
||||
msgid "Configuration of room ~ts"
|
||||
msgid "Configuration of room ~s"
|
||||
msgstr "Apontiaedje del såle ~s"
|
||||
|
||||
#: ejabberd_web_admin.erl:937
|
||||
@@ -571,8 +570,8 @@ msgid "Given Name"
|
||||
msgstr "No do mitan"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgstr "Groupe "
|
||||
msgid "Group"
|
||||
msgstr "Groupe"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
msgid "Groups"
|
||||
@@ -702,10 +701,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "Les dmandes di vwès sont dismetowes e cisse conferince ci"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"On n' pout nén evoyî des messaedjes d' aroke sol såle. Li pårticipan (~s) a-"
|
||||
"st evoyî on messaedje d' aroke (~s) ey a stî tapé foû."
|
||||
@@ -943,8 +941,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "Li metou no ~s n' egzistêye nén dins l' såle"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1798,10 +1795,9 @@ msgid "Token TTL"
|
||||
msgstr ""
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr ""
|
||||
"I gn a-st avou pår trop (~p) d' otintifiaedjes k' ont fwait berwete vinant "
|
||||
"di ciste adresse IP la (~s). L' adresse serè disblokêye a ~s UTC"
|
||||
@@ -2129,10 +2125,9 @@ msgstr ""
|
||||
"messaedje a stî tapé å diale."
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "Vos messaedjes po ~s sont blokés. Po les disbloker, alez vey ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+13
-22
@@ -491,8 +491,7 @@ msgid "Failed to parse HTTP response"
|
||||
msgstr "HTTP响应解析失败"
|
||||
|
||||
#: mod_muc_room.erl:3632
|
||||
#, fuzzy
|
||||
msgid "Failed to process option '~ts'"
|
||||
msgid "Failed to process option '~s'"
|
||||
msgstr "选项'~s'处理失败"
|
||||
|
||||
#: mod_vcard_mnesia.erl:103 mod_vcard_mnesia.erl:117 mod_vcard_sql.erl:160
|
||||
@@ -561,7 +560,7 @@ msgid "Given Name"
|
||||
msgstr "中间名"
|
||||
|
||||
#: mod_shared_roster.erl:879
|
||||
msgid "Group "
|
||||
msgid "Group"
|
||||
msgstr "组"
|
||||
|
||||
#: mod_roster.erl:956
|
||||
@@ -690,10 +689,9 @@ msgid "Invitations are not allowed in this conference"
|
||||
msgstr "此会议不允许邀请"
|
||||
|
||||
#: mod_muc_room.erl:373 mod_muc_room.erl:519 mod_muc_room.erl:1293
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It is not allowed to send error messages to the room. The participant (~ts) "
|
||||
"has sent an error message (~ts) and got kicked from the room"
|
||||
"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"
|
||||
msgstr ""
|
||||
"不允许将错误消息发送到该房间. 参与者(~s)已发送过一条消息(~s)并已被踢出房间"
|
||||
|
||||
@@ -928,8 +926,7 @@ msgid "Nickname can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mod_muc_room.erl:2994
|
||||
#, fuzzy
|
||||
msgid "Nickname ~ts does not exist in the room"
|
||||
msgid "Nickname ~s does not exist in the room"
|
||||
msgstr "昵称~s不在该房间"
|
||||
|
||||
#: mod_muc_room.erl:3396
|
||||
@@ -1754,8 +1751,7 @@ msgid "To"
|
||||
msgstr "到"
|
||||
|
||||
#: mod_register.erl:226
|
||||
#, fuzzy
|
||||
msgid "To register, visit ~ts"
|
||||
msgid "To register, visit ~s"
|
||||
msgstr "要注册,请访问 ~s"
|
||||
|
||||
#: mod_configure.erl:666
|
||||
@@ -1768,10 +1764,9 @@ msgid "Token TTL"
|
||||
msgstr "TTL令牌"
|
||||
|
||||
#: mod_fail2ban.erl:219
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Too many (~p) failed authentications from this IP address (~ts). The address "
|
||||
"will be unblocked at ~ts UTC"
|
||||
"Too many (~p) failed authentications from this IP address (~s). The address "
|
||||
"will be unblocked at ~s UTC"
|
||||
msgstr "来自IP地址(~p)的(~s)失败认证太多. 该地址将在UTC时间~s被禁用."
|
||||
|
||||
#: mod_muc_room.erl:2768 mod_muc_room.erl:3402
|
||||
@@ -1981,19 +1976,16 @@ msgid "Value 'set' of 'type' attribute is not allowed"
|
||||
msgstr "不允许 'type' 属性的 'set' 值"
|
||||
|
||||
#: pubsub_subscription.erl:237 pubsub_subscription_sql.erl:202
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be boolean"
|
||||
msgid "Value of '~s' should be boolean"
|
||||
msgstr "'~s' 的值应为布尔型"
|
||||
|
||||
#: pubsub_subscription.erl:215 pubsub_subscription_sql.erl:180
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be datetime string"
|
||||
msgid "Value of '~s' should be datetime string"
|
||||
msgstr "'~s' 的值应为日期时间字符串"
|
||||
|
||||
#: pubsub_subscription.erl:209 pubsub_subscription.erl:227
|
||||
#: pubsub_subscription_sql.erl:174 pubsub_subscription_sql.erl:192
|
||||
#, fuzzy
|
||||
msgid "Value of '~ts' should be integer"
|
||||
msgid "Value of '~s' should be integer"
|
||||
msgstr "'~s' 的值应为整数"
|
||||
|
||||
#: ejabberd_web_admin.erl:433
|
||||
@@ -2093,10 +2085,9 @@ msgid ""
|
||||
msgstr "您的联系人离线消息队列已满. 消息已被丢弃"
|
||||
|
||||
#: ejabberd_captcha.erl:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Your subscription request and/or messages to ~ts have been blocked. To "
|
||||
"unblock your subscription request, visit ~ts"
|
||||
"Your subscription request and/or messages to ~s have been blocked. To "
|
||||
"unblock your subscription request, visit ~s"
|
||||
msgstr "您发送给~s的消息已被阻止. 要解除阻止, 请访问 ~s"
|
||||
|
||||
#: mod_disco.erl:438
|
||||
|
||||
+93
-87
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -18,67 +18,72 @@
|
||||
%%%
|
||||
%%%----------------------------------------------------------------------
|
||||
|
||||
{deps, [{lager, ".*", {git, "https://github.com/erlang-lager/lager", "3.6.10"}},
|
||||
{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.17"}}},
|
||||
{cache_tab, ".*", {git, "https://github.com/processone/cache_tab", {tag, "1.0.21"}}},
|
||||
{fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.1.3"}}},
|
||||
{stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.18"}}},
|
||||
{fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.38"}}},
|
||||
{idna, ".*", {git, "https://github.com/benoitc/erlang-idna", {tag, "6.0.0"}}},
|
||||
{xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.4.4"}}},
|
||||
{fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.22"}}},
|
||||
{yconf, ".*", {git, "https://github.com/processone/yconf", {tag, "1.0.2"}}},
|
||||
{jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "0.14.8"}}},
|
||||
{p1_oauth2, ".*", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.5"}}},
|
||||
{pkix, ".*", {git, "https://github.com/processone/pkix", {tag, "1.0.4"}}},
|
||||
{deps, [{base64url, ".*", {git, "https://github.com/dvv/base64url.git", {tag, "1.0.1"}}},
|
||||
{cache_tab, ".*", {git, "https://github.com/processone/cache_tab", {tag, "1.0.26"}}},
|
||||
{eimp, ".*", {git, "https://github.com/processone/eimp", {tag, "1.0.18"}}},
|
||||
{if_var_true, elixir,
|
||||
{elixir, ".*", {git, "https://github.com/elixir-lang/elixir", {tag, "v1.4.4"}}}},
|
||||
{if_var_true, pam,
|
||||
{epam, ".*", {git, "https://github.com/processone/epam", {tag, "1.0.10"}}}},
|
||||
{if_var_true, redis,
|
||||
{eredis, ".*", {git, "https://github.com/wooga/eredis", {tag, "v1.0.8"}}}},
|
||||
{if_var_true, sip,
|
||||
{esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.39"}}}},
|
||||
{if_var_true, zlib,
|
||||
{ezlib, ".*", {git, "https://github.com/processone/ezlib", {tag, "1.0.9"}}}},
|
||||
{fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.1.10"}}},
|
||||
{fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.45"}}},
|
||||
{fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.29"}}},
|
||||
{idna, ".*", {git, "https://github.com/benoitc/erlang-idna", {tag, "6.0.0"}}},
|
||||
{jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "1.0.5"}}},
|
||||
{jose, ".*", {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.9.0"}}},
|
||||
{eimp, ".*", {git, "https://github.com/processone/eimp", {tag, "1.0.13"}}},
|
||||
{mqtree, ".*", {git, "https://github.com/processone/mqtree", {tag, "1.0.6"}}},
|
||||
{p1_acme, ".*", {git, "https://github.com/processone/p1_acme.git", {tag, "1.0.3"}}},
|
||||
{base64url, ".*", {git, "https://github.com/dvv/base64url.git", {tag, "v1.0"}}},
|
||||
{if_var_true, stun, {stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.30"}}}},
|
||||
{if_var_true, sip, {esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.31"}}}},
|
||||
{if_var_true, mysql, {p1_mysql, ".*", {git, "https://github.com/processone/p1_mysql",
|
||||
{tag, "1.0.12"}}}},
|
||||
{if_var_true, pgsql, {p1_pgsql, ".*", {git, "https://github.com/processone/p1_pgsql",
|
||||
{tag, "1.1.8"}}}},
|
||||
{if_var_true, sqlite, {sqlite3, ".*", {git, "https://github.com/processone/erlang-sqlite3",
|
||||
{tag, "1.1.6"}}}},
|
||||
{if_var_true, pam, {epam, ".*", {git, "https://github.com/processone/epam",
|
||||
{tag, "1.0.6"}}}},
|
||||
{if_var_true, zlib, {ezlib, ".*", {git, "https://github.com/processone/ezlib",
|
||||
{tag, "1.0.6"}}}},
|
||||
%% Elixir support, needed to run tests
|
||||
{if_var_true, elixir, {elixir, ".*", {git, "https://github.com/elixir-lang/elixir",
|
||||
{tag, {if_version_above, "17", "v1.4.4", "v1.1.1"}}}}},
|
||||
%% TODO: When modules are fully migrated to new structure and mix, we will not need anymore rebar_elixir_plugin
|
||||
{if_not_rebar3, {if_var_true, elixir, {rebar_elixir_plugin, ".*",
|
||||
{git, "https://github.com/processone/rebar_elixir_plugin", "0.1.0"}}}},
|
||||
{if_var_true, tools, {luerl, ".*", {git, "https://github.com/rvirding/luerl",
|
||||
{tag, "v0.3"}}}},
|
||||
{if_var_true, redis, {eredis, ".*", {git, "https://github.com/wooga/eredis",
|
||||
{tag, "v1.0.8"}}}}]}.
|
||||
{lager, ".*", {git, "https://github.com/erlang-lager/lager", {tag, "3.6.10"}}},
|
||||
{if_var_true, tools,
|
||||
{luerl, ".*", {git, "https://github.com/rvirding/luerl", {tag, "v0.3"}}}},
|
||||
{mqtree, ".*", {git, "https://github.com/processone/mqtree", {tag, "1.0.11"}}},
|
||||
{p1_acme, ".*", {git, "https://github.com/processone/p1_acme.git", {tag, "1.0.10"}}},
|
||||
{if_var_true, mysql,
|
||||
{p1_mysql, ".*", {git, "https://github.com/processone/p1_mysql", {tag, "1.0.17"}}}},
|
||||
{p1_oauth2, ".*", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.8"}}},
|
||||
{if_var_true, pgsql,
|
||||
{p1_pgsql, ".*", {git, "https://github.com/processone/p1_pgsql", {tag, "1.1.10"}}}},
|
||||
{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.21"}}},
|
||||
{pkix, ".*", {git, "https://github.com/processone/pkix", {tag, "1.0.7"}}},
|
||||
{if_not_rebar3, %% Needed because modules are not fully migrated to new structure and mix
|
||||
{if_var_true, elixir,
|
||||
{rebar_elixir_plugin, ".*", {git, "https://github.com/processone/rebar_elixir_plugin", "0.1.0"}}}},
|
||||
{if_var_true, sqlite,
|
||||
{sqlite3, ".*", {git, "https://github.com/processone/erlang-sqlite3", {tag, "v1.1.6"}}}},
|
||||
{stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.24"}}},
|
||||
{if_var_true, stun,
|
||||
{stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.40"}}}},
|
||||
{xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.5.1"}}},
|
||||
{yconf, ".*", {git, "https://github.com/processone/yconf", {tag, "1.0.9"}}}
|
||||
]}.
|
||||
|
||||
{gitonly_deps, [elixir, luerl]}.
|
||||
|
||||
{if_var_true, latest_deps,
|
||||
{floating_deps, [cache_tab,
|
||||
fast_tls,
|
||||
stringprep,
|
||||
fast_xml,
|
||||
esip,
|
||||
stun,
|
||||
fast_yaml,
|
||||
xmpp,
|
||||
p1_utils,
|
||||
p1_mysql,
|
||||
p1_pgsql,
|
||||
p1_oauth2,
|
||||
epam,
|
||||
ezlib,
|
||||
eimp,
|
||||
epam,
|
||||
esip,
|
||||
ezlib,
|
||||
fast_tls,
|
||||
fast_xml,
|
||||
fast_yaml,
|
||||
mqtree,
|
||||
p1_acme,
|
||||
p1_mysql,
|
||||
p1_oauth2,
|
||||
p1_pgsql,
|
||||
p1_utils,
|
||||
pkix,
|
||||
yconf,
|
||||
p1_acme]}}.
|
||||
sqlite3,
|
||||
stringprep,
|
||||
stun,
|
||||
xmpp,
|
||||
yconf]}}.
|
||||
|
||||
{erl_first_files, ["src/ejabberd_sql_pt.erl", "src/ejabberd_config.erl",
|
||||
"src/gen_mod.erl", "src/mod_muc_room.erl",
|
||||
@@ -86,21 +91,22 @@
|
||||
|
||||
{erl_opts, [nowarn_deprecated_function,
|
||||
{i, "include"},
|
||||
{i, "deps/fast_xml/include"},
|
||||
{i, "deps/xmpp/include"},
|
||||
{i, "deps/p1_utils/include"},
|
||||
{if_version_above, "20", {d, 'DEPRECATED_GET_STACKTRACE'}},
|
||||
{if_version_below, "21", {d, 'USE_OLD_HTTP_URI'}},
|
||||
{if_version_below, "22", {d, 'LAGER'}},
|
||||
{if_version_below, "23", {d, 'USE_OLD_CRYPTO_HMAC'}},
|
||||
{if_version_below, "23", {d, 'USE_OLD_PG2'}},
|
||||
{if_var_match, db_type, mssql, {d, 'mssql'}},
|
||||
{if_var_false, debug, no_debug_info},
|
||||
{if_var_true, debug, debug_info},
|
||||
{if_var_true, elixir, {d, 'ELIXIR_ENABLED'}},
|
||||
{if_var_true, hipe, native},
|
||||
{if_var_true, new_sql_schema, {d, 'NEW_SQL_SCHEMA'}},
|
||||
{if_var_true, roster_gateway_workaround, {d, 'ROSTER_GATWAY_WORKAROUND'}},
|
||||
{if_var_true, sip, {d, 'SIP'}},
|
||||
{if_var_true, stun, {d, 'STUN'}},
|
||||
{if_version_above, "20", {d, 'DEPRECATED_GET_STACKTRACE'}},
|
||||
{if_version_below, "22", {d, 'LAGER'}},
|
||||
{if_var_true, roster_gateway_workaround, {d, 'ROSTER_GATWAY_WORKAROUND'}},
|
||||
{if_var_match, db_type, mssql, {d, 'mssql'}},
|
||||
{if_var_true, elixir, {d, 'ELIXIR_ENABLED'}},
|
||||
{if_var_true, new_sql_schema, {d, 'NEW_SQL_SCHEMA'}},
|
||||
{if_var_true, hipe, native},
|
||||
{if_have_fun, {erl_error, format_exception, 6}, {d, 'HAVE_ERL_ERROR'}},
|
||||
{if_have_fun, {erl_error, format_exception, 6}, {d, 'HAVE_ERL_ERROR'}},
|
||||
{if_rebar3, {extra_src_dirs, [sql]}},
|
||||
{src_dirs, [src,
|
||||
{if_var_true, tools, tools},
|
||||
{if_var_true, elixir, include}]}]}.
|
||||
@@ -108,14 +114,17 @@
|
||||
{deps_erl_opts, [{if_var_true, hipe, native}]}.
|
||||
|
||||
{if_rebar3, {plugins, [rebar3_hex, {provider_asn1, "0.2.0"}]}}.
|
||||
{if_rebar3, {project_plugins, [configure_deps]}}.
|
||||
{if_not_rebar3, {plugins, [
|
||||
deps_erl_opts, override_deps_versions2, override_opts, configure_deps,
|
||||
{if_var_true, elixir, rebar_elixir_compiler},
|
||||
{if_var_true, elixir, rebar_exunit}
|
||||
]}}.
|
||||
|
||||
{if_var_true, elixir,
|
||||
{lib_dirs, ["deps/elixir/lib"]}}.
|
||||
{if_rebar3, {if_var_true, elixir,
|
||||
{project_app_dirs, [".", "elixir/lib"]}}}.
|
||||
{if_not_rebar3, {if_var_true, elixir,
|
||||
{lib_dirs, ["deps/elixir/lib"]}}}.
|
||||
{if_var_true, elixir,
|
||||
{src_dirs, ["include"]}}.
|
||||
|
||||
@@ -130,21 +139,18 @@
|
||||
{xref_exclusions, [
|
||||
"(\"gen_transport\":_/_)",
|
||||
"(\"eprof\":_/_)",
|
||||
{if_var_false, mysql, "(\".*mysql.*\":_/_)"},
|
||||
{if_var_false, pgsql, "(\".*pgsql.*\":_/_)"},
|
||||
{if_var_false, pam, "(\"epam\":_/_)"},
|
||||
{if_var_false, zlib, "(\"ezlib\":_/_)"},
|
||||
{if_var_false, http, "(\"lhttpc\":_/_)"},
|
||||
{if_var_false, odbc, "(\"odbc\":_/_)"},
|
||||
{if_var_false, sqlite, "(\"sqlite3\":_/_)"},
|
||||
{if_var_false, elixir, "(\"Elixir.*\":_/_)"},
|
||||
{if_var_false, redis, "(\"eredis\":_/_)"}]}.
|
||||
{if_var_false, http, "(\"lhttpc\":_/_)"},
|
||||
{if_var_false, mysql, "(\".*mysql.*\":_/_)"},
|
||||
{if_var_false, odbc, "(\"odbc\":_/_)"},
|
||||
{if_var_false, pam, "(\"epam\":_/_)"},
|
||||
{if_var_false, pgsql, "(\".*pgsql.*\":_/_)"},
|
||||
{if_var_false, redis, "(\"eredis\":_/_)"},
|
||||
{if_var_false, sqlite, "(\"sqlite3\":_/_)"},
|
||||
{if_var_false, zlib, "(\"ezlib\":_/_)"}]}.
|
||||
|
||||
{eunit_compile_opts, [{i, "tools"},
|
||||
{i, "include"},
|
||||
{i, "deps/p1_utils/include"},
|
||||
{i, "deps/fast_xml/include"},
|
||||
{i, "deps/xmpp/include"}]}.
|
||||
{i, "include"}]}.
|
||||
|
||||
{cover_enabled, true}.
|
||||
{cover_export_enabled, true}.
|
||||
@@ -153,14 +159,14 @@
|
||||
{overrides, [
|
||||
{del, [{erl_opts, [warnings_as_errors]}]}]}.
|
||||
|
||||
{post_hook_configure, [{"fast_tls", []},
|
||||
{"stringprep", []},
|
||||
{"fast_yaml", []},
|
||||
{"eimp", []},
|
||||
{if_var_true, sip, {"esip", []}},
|
||||
{"fast_xml", [{if_var_true, full_xml, "--enable-full-xml"}]},
|
||||
{post_hook_configure, [{"eimp", []},
|
||||
{if_var_true, pam, {"epam", []}},
|
||||
{if_var_true, zlib, {"ezlib", []}}]}.
|
||||
{if_var_true, sip, {"esip", []}},
|
||||
{if_var_true, zlib, {"ezlib", []}},
|
||||
{"fast_tls", []},
|
||||
{"fast_xml", [{if_var_true, full_xml, "--enable-full-xml"}]},
|
||||
{"fast_yaml", []},
|
||||
{"stringprep", []}]}.
|
||||
|
||||
%% Local Variables:
|
||||
%% mode: erlang
|
||||
|
||||
+15
-8
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -196,9 +196,14 @@ AppendList2 = fun(Append) ->
|
||||
end,
|
||||
|
||||
Rebar3DepsFilter =
|
||||
fun(DepsList) ->
|
||||
lists:map(fun({DepName, _, {git, _, {tag, Version}}}) ->
|
||||
{DepName, Version};
|
||||
fun(DepsList, GitOnlyDeps) ->
|
||||
lists:map(fun({DepName, _, {git, _, {tag, Version}}} = Dep) ->
|
||||
case lists:member(DepName, GitOnlyDeps) of
|
||||
true ->
|
||||
Dep;
|
||||
_ ->
|
||||
{DepName, Version}
|
||||
end;
|
||||
(Dep) ->
|
||||
Dep
|
||||
end, DepsList)
|
||||
@@ -304,12 +309,14 @@ fun(Hooks) ->
|
||||
end,
|
||||
|
||||
ProcessErlOpt = fun(Vals) ->
|
||||
lists:map(
|
||||
R = lists:map(
|
||||
fun({i, Path}) ->
|
||||
{i, ResolveDepPath(Path)};
|
||||
(ErlOpt) ->
|
||||
ErlOpt
|
||||
end, Vals)
|
||||
end, Vals),
|
||||
M = lists:filter(fun({d, M}) -> true; (_) -> false end, R),
|
||||
[{d, 'ALL_DEFS', M} | R]
|
||||
end,
|
||||
|
||||
ProcssXrefExclusions = fun(Items) ->
|
||||
@@ -365,8 +372,8 @@ Rules = [
|
||||
AppendList2(ProcssXrefExclusions), [], []},
|
||||
{[deps], [floating_deps], true,
|
||||
ProcessFloatingDeps, [], []},
|
||||
{[deps], IsRebar3,
|
||||
Rebar3DepsFilter, []},
|
||||
{[deps], [gitonly_deps], IsRebar3,
|
||||
Rebar3DepsFilter, [], []},
|
||||
{[deps], SystemDeps /= false,
|
||||
GlobalDepsFilter, []}
|
||||
],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%-------------------------------------------------------------------
|
||||
%%% @author Evgeniy Khramtsov <ekhramtsov@process-one.net>
|
||||
%%% @copyright (C) 2013-2019, Evgeniy Khramtsov
|
||||
%%% @copyright (C) 2013-2020, Evgeniy Khramtsov
|
||||
%%% @doc
|
||||
%%%
|
||||
%%% @end
|
||||
|
||||
+8
-1
@@ -1,5 +1,5 @@
|
||||
--
|
||||
-- ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
-- ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License as
|
||||
@@ -368,6 +368,13 @@ CREATE TABLE oauth_token (
|
||||
expire bigint NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE oauth_client (
|
||||
client_id text PRIMARY KEY,
|
||||
client_name text NOT NULL,
|
||||
grant_type text NOT NULL,
|
||||
options text NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE route (
|
||||
domain text NOT NULL,
|
||||
server_host text NOT NULL,
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
--
|
||||
-- ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
-- ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License as
|
||||
|
||||
+4
-4
@@ -1,5 +1,5 @@
|
||||
--
|
||||
-- ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
-- ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License as
|
||||
@@ -26,8 +26,8 @@ CREATE TABLE [dbo].[archive] (
|
||||
[timestamp] [bigint] NOT NULL,
|
||||
[peer] [varchar] (250) NOT NULL,
|
||||
[bare_peer] [varchar] (250) NOT NULL,
|
||||
[xml] [text] NOT NULL,
|
||||
[txt] [text] NULL,
|
||||
[xml] [ntext] NOT NULL,
|
||||
[txt] [ntext] NULL,
|
||||
[id] [bigint] IDENTITY(1,1) NOT NULL,
|
||||
[kind] [varchar] (10) NULL,
|
||||
[nick] [varchar] (250) NULL,
|
||||
@@ -209,7 +209,7 @@ WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW
|
||||
CREATE TABLE [dbo].[pubsub_item] (
|
||||
[nodeid] [bigint] NULL,
|
||||
[itemid] [varchar] (255) NOT NULL,
|
||||
[publisher] [text] NOT NULL,
|
||||
[publisher] [varchar] (250) NOT NULL,
|
||||
[creation] [varchar] (32) NOT NULL,
|
||||
[modification] [varchar] (32) NOT NULL,
|
||||
[payload] [text] NOT NULL DEFAULT ''
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
--
|
||||
-- ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
-- ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
--
|
||||
-- ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
-- ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
--
|
||||
-- ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
-- ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
--
|
||||
-- ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
-- ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License as
|
||||
|
||||
+5
-5
@@ -1,5 +1,5 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -107,8 +107,8 @@ match_acl(_Host, {shared_group, {G, H}}, #{usr := {U, S, _}}) ->
|
||||
end;
|
||||
match_acl(Host, {shared_group, G}, Map) ->
|
||||
match_acl(Host, {shared_group, {G, Host}}, Map);
|
||||
match_acl(_Host, {user_regexp, {UR, S}}, #{usr := {U, S, _}}) ->
|
||||
match_regexp(U, UR);
|
||||
match_acl(_Host, {user_regexp, {UR, S1}}, #{usr := {U, S2, _}}) ->
|
||||
S1 == S2 andalso match_regexp(U, UR);
|
||||
match_acl(_Host, {user_regexp, UR}, #{usr := {U, S, _}}) ->
|
||||
ejabberd_router:is_my_host(S) andalso match_regexp(U, UR);
|
||||
match_acl(_Host, {server_regexp, SR}, #{usr := {_, S, _}}) ->
|
||||
@@ -117,8 +117,8 @@ match_acl(_Host, {resource_regexp, RR}, #{usr := {_, _, R}}) ->
|
||||
match_regexp(R, RR);
|
||||
match_acl(_Host, {node_regexp, {UR, SR}}, #{usr := {U, S, _}}) ->
|
||||
match_regexp(U, UR) andalso match_regexp(S, SR);
|
||||
match_acl(_Host, {user_glob, {UR, S}}, #{usr := {U, S, _}}) ->
|
||||
match_regexp(U, UR);
|
||||
match_acl(_Host, {user_glob, {UR, S1}}, #{usr := {U, S2, _}}) ->
|
||||
S1 == S2 andalso match_regexp(U, UR);
|
||||
match_acl(_Host, {user_glob, UR}, #{usr := {U, S, _}}) ->
|
||||
ejabberd_router:is_my_host(S) andalso match_regexp(U, UR);
|
||||
match_acl(_Host, {server_glob, SR}, #{usr := {_, S, _}}) ->
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
%%% Purpose : Validator for ejabberd configuration options
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
%%% Created : 16 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
%%% Created : 7 Sep 2016 by Paweł Chmielowski <pawel@process-one.net>
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+17
-11
@@ -5,7 +5,7 @@
|
||||
%%% Created : 7 May 2006 by Mickael Remond <mremond@process-one.net>
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -151,7 +151,7 @@ get_commands_spec() ->
|
||||
module = ?MODULE, function = set_loglevel,
|
||||
args_desc = ["Desired logging level: none | emergency | alert | critical "
|
||||
"| error | warning | notice | info | debug"],
|
||||
args_example = [debug],
|
||||
args_example = ["debug"],
|
||||
args = [{loglevel, string}],
|
||||
result = {res, rescode}},
|
||||
|
||||
@@ -208,6 +208,9 @@ get_commands_spec() ->
|
||||
|
||||
#ejabberd_commands{name = join_cluster, tags = [cluster],
|
||||
desc = "Join this node into the cluster handled by Node",
|
||||
longdesc = "This command works only with ejabberdctl, "
|
||||
"not mod_http_api or other code that runs inside the "
|
||||
"same ejabberd node that will be joined.",
|
||||
module = ?MODULE, function = join_cluster,
|
||||
args_desc = ["Nodename of the node to join"],
|
||||
args_example = [<<"ejabberd1@machine7">>],
|
||||
@@ -215,8 +218,11 @@ get_commands_spec() ->
|
||||
result = {res, rescode}},
|
||||
#ejabberd_commands{name = leave_cluster, tags = [cluster],
|
||||
desc = "Remove and shutdown Node from the running cluster",
|
||||
longdesc = "This command can be run from any running node of the cluster, "
|
||||
"even the node to be removed.",
|
||||
longdesc = "This command can be run from any running "
|
||||
"node of the cluster, even the node to be removed. "
|
||||
"In the removed node, this command works only when "
|
||||
"using ejabberdctl, not mod_http_api or other code that "
|
||||
"runs inside the same ejabberd node that will leave.",
|
||||
module = ?MODULE, function = leave_cluster,
|
||||
args_desc = ["Nodename of the node to kick from the cluster"],
|
||||
args_example = [<<"ejabberd1@machine8">>],
|
||||
@@ -409,7 +415,7 @@ status() ->
|
||||
false ->
|
||||
{ejabberd_not_running, "ejabberd is not running in that node."};
|
||||
{value, {_, _, Version}} ->
|
||||
{ok, io_lib:format("ejabberd ~ts is running in that node", [Version])}
|
||||
{ok, io_lib:format("ejabberd ~s is running in that node", [Version])}
|
||||
end,
|
||||
{Is_running, String1 ++ String2}.
|
||||
|
||||
@@ -472,7 +478,7 @@ stop_kindly(DelaySeconds, AnnouncementTextString) ->
|
||||
ok.
|
||||
|
||||
send_service_message_all_mucs(Subject, AnnouncementText) ->
|
||||
Message = str:format("~ts~n~ts", [Subject, AnnouncementText]),
|
||||
Message = str:format("~s~n~s", [Subject, AnnouncementText]),
|
||||
lists:foreach(
|
||||
fun(ServerHost) ->
|
||||
MUCHosts = gen_mod:get_module_opt_hosts(ServerHost, mod_muc),
|
||||
@@ -516,12 +522,12 @@ register(User, Host, Password) ->
|
||||
true ->
|
||||
case ejabberd_auth:try_register(User, Host, Password) of
|
||||
ok ->
|
||||
{ok, io_lib:format("User ~ts@~ts successfully registered", [User, Host])};
|
||||
{ok, io_lib:format("User ~s@~s successfully registered", [User, Host])};
|
||||
{error, exists} ->
|
||||
Msg = io_lib:format("User ~ts@~ts already registered", [User, Host]),
|
||||
Msg = io_lib:format("User ~s@~s already registered", [User, Host]),
|
||||
{error, conflict, 10090, Msg};
|
||||
{error, Reason} ->
|
||||
String = io_lib:format("Can't register user ~ts@~ts at node ~p: ~ts",
|
||||
String = io_lib:format("Can't register user ~s@~s at node ~p: ~s",
|
||||
[User, Host, node(),
|
||||
mod_register:format_error(Reason)]),
|
||||
{error, cannot_register, 10001, String}
|
||||
@@ -554,7 +560,7 @@ registered_vhosts() ->
|
||||
|
||||
reload_config() ->
|
||||
case ejabberd_config:reload() of
|
||||
ok -> {ok, ""};
|
||||
ok -> ok;
|
||||
Err ->
|
||||
Reason = ejabberd_config:format_error(Err),
|
||||
{error, Reason}
|
||||
@@ -562,7 +568,7 @@ reload_config() ->
|
||||
|
||||
dump_config(Path) ->
|
||||
case ejabberd_config:dump(Path) of
|
||||
ok -> {ok, ""};
|
||||
ok -> ok;
|
||||
Err ->
|
||||
Reason = ejabberd_config:format_error(Err),
|
||||
{error, Reason}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
%%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+52
-34
@@ -5,7 +5,7 @@
|
||||
%%% Created : 23 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -33,7 +33,7 @@
|
||||
set_password/3, check_password/4,
|
||||
check_password/6, check_password_with_authmodule/4,
|
||||
check_password_with_authmodule/6, try_register/3,
|
||||
get_users/0, get_users/1, password_to_scram/1,
|
||||
get_users/0, get_users/1, password_to_scram/2,
|
||||
get_users/2, import_info/0,
|
||||
count_users/1, import/5, import_start/2,
|
||||
count_users/2, get_password/2,
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
-export([auth_modules/1, convert_to_scram/1]).
|
||||
|
||||
-include("scram.hrl").
|
||||
-include_lib("xmpp/include/scram.hrl").
|
||||
-include("logger.hrl").
|
||||
|
||||
-define(SALT_LENGTH, 16).
|
||||
@@ -197,16 +197,21 @@ plain_password_required(Server) ->
|
||||
|
||||
-spec store_type(binary()) -> plain | scram | external.
|
||||
store_type(Server) ->
|
||||
lists:foldl(
|
||||
fun(_, external) -> external;
|
||||
(M, scram) ->
|
||||
case M:store_type(Server) of
|
||||
external -> external;
|
||||
_ -> scram
|
||||
end;
|
||||
(M, plain) ->
|
||||
M:store_type(Server)
|
||||
end, plain, auth_modules(Server)).
|
||||
case auth_modules(Server) of
|
||||
[ejabberd_auth_anonymous] -> external;
|
||||
Modules ->
|
||||
lists:foldl(
|
||||
fun(ejabberd_auth_anonymous, Type) -> Type;
|
||||
(_, external) -> external;
|
||||
(M, scram) ->
|
||||
case M:store_type(Server) of
|
||||
external -> external;
|
||||
_ -> scram
|
||||
end;
|
||||
(M, plain) ->
|
||||
M:store_type(Server)
|
||||
end, plain, Modules)
|
||||
end.
|
||||
|
||||
-spec check_password(binary(), binary(), binary(), binary()) -> boolean().
|
||||
check_password(User, AuthzId, Server, Password) ->
|
||||
@@ -554,7 +559,7 @@ db_try_register(User, Server, Password, Mod) ->
|
||||
case erlang:function_exported(Mod, try_register, 3) of
|
||||
true ->
|
||||
Password1 = case Mod:store_type(Server) of
|
||||
scram -> password_to_scram(Password);
|
||||
scram -> password_to_scram(Server, Password);
|
||||
_ -> Password
|
||||
end,
|
||||
Ret = case use_cache(Mod, Server) of
|
||||
@@ -579,7 +584,7 @@ db_set_password(User, Server, Password, Mod) ->
|
||||
case erlang:function_exported(Mod, set_password, 3) of
|
||||
true ->
|
||||
Password1 = case Mod:store_type(Server) of
|
||||
scram -> password_to_scram(Password);
|
||||
scram -> password_to_scram(Server, Password);
|
||||
_ -> Password
|
||||
end,
|
||||
Ret = case use_cache(Mod, Server) of
|
||||
@@ -605,6 +610,7 @@ db_get_password(User, Server, Mod) ->
|
||||
false when UseCache ->
|
||||
case ets_cache:lookup(cache_tab(Mod), {User, Server}) of
|
||||
{ok, exists} -> error;
|
||||
not_found -> error;
|
||||
Other -> Other
|
||||
end;
|
||||
false ->
|
||||
@@ -621,20 +627,29 @@ db_user_exists(User, Server, Mod) ->
|
||||
case db_get_password(User, Server, Mod) of
|
||||
{ok, _} ->
|
||||
true;
|
||||
not_found ->
|
||||
false;
|
||||
error ->
|
||||
case {Mod:store_type(Server), use_cache(Mod, Server)} of
|
||||
{external, true} ->
|
||||
case ets_cache:lookup(
|
||||
cache_tab(Mod), {User, Server},
|
||||
fun() ->
|
||||
case Mod:user_exists(User, Server) of
|
||||
{CacheTag, true} -> {CacheTag, {ok, exists}};
|
||||
{CacheTag, false} -> {CacheTag, error};
|
||||
{_, {error, _}} = Err -> Err
|
||||
end
|
||||
end) of
|
||||
Val = case ets_cache:lookup(cache_tab(Mod), {User, Server}, error) of
|
||||
error ->
|
||||
ets_cache:update(cache_tab(Mod), {User, Server}, {ok, exists},
|
||||
fun() ->
|
||||
case Mod:user_exists(User, Server) of
|
||||
{CacheTag, true} -> {CacheTag, {ok, exists}};
|
||||
{CacheTag, false} -> {CacheTag, not_found};
|
||||
{_, {error, _}} = Err -> Err
|
||||
end
|
||||
end);
|
||||
Other ->
|
||||
Other
|
||||
end,
|
||||
case Val of
|
||||
{ok, _} ->
|
||||
true;
|
||||
not_found ->
|
||||
false;
|
||||
error ->
|
||||
false;
|
||||
{error, _} = Err ->
|
||||
@@ -743,25 +758,28 @@ is_password_scram_valid(Password, Scram) ->
|
||||
false;
|
||||
_ ->
|
||||
IterationCount = Scram#scram.iterationcount,
|
||||
Hash = Scram#scram.hash,
|
||||
Salt = base64:decode(Scram#scram.salt),
|
||||
SaltedPassword = scram:salted_password(Password, Salt, IterationCount),
|
||||
StoredKey = scram:stored_key(scram:client_key(SaltedPassword)),
|
||||
SaltedPassword = scram:salted_password(Hash, Password, Salt, IterationCount),
|
||||
StoredKey = scram:stored_key(Hash, scram:client_key(Hash, SaltedPassword)),
|
||||
base64:decode(Scram#scram.storedkey) == StoredKey
|
||||
end.
|
||||
|
||||
password_to_scram(Password) ->
|
||||
password_to_scram(Password, ?SCRAM_DEFAULT_ITERATION_COUNT).
|
||||
password_to_scram(Host, Password) ->
|
||||
password_to_scram(Host, Password, ?SCRAM_DEFAULT_ITERATION_COUNT).
|
||||
|
||||
password_to_scram(#scram{} = Password, _IterationCount) ->
|
||||
password_to_scram(_Host, #scram{} = Password, _IterationCount) ->
|
||||
Password;
|
||||
password_to_scram(Password, IterationCount) ->
|
||||
password_to_scram(Host, Password, IterationCount) ->
|
||||
Hash = ejabberd_option:auth_scram_hash(Host),
|
||||
Salt = p1_rand:bytes(?SALT_LENGTH),
|
||||
SaltedPassword = scram:salted_password(Password, Salt, IterationCount),
|
||||
StoredKey = scram:stored_key(scram:client_key(SaltedPassword)),
|
||||
ServerKey = scram:server_key(SaltedPassword),
|
||||
SaltedPassword = scram:salted_password(Hash, Password, Salt, IterationCount),
|
||||
StoredKey = scram:stored_key(Hash, scram:client_key(Hash, SaltedPassword)),
|
||||
ServerKey = scram:server_key(Hash, SaltedPassword),
|
||||
#scram{storedkey = base64:encode(StoredKey),
|
||||
serverkey = base64:encode(ServerKey),
|
||||
salt = base64:encode(Salt),
|
||||
hash = Hash,
|
||||
iterationcount = IterationCount}.
|
||||
|
||||
%%%----------------------------------------------------------------------
|
||||
@@ -928,7 +946,7 @@ convert_to_scram(Server) ->
|
||||
fun({U, S}) ->
|
||||
case get_password(U, S) of
|
||||
Pass when is_binary(Pass) ->
|
||||
SPass = password_to_scram(Pass),
|
||||
SPass = password_to_scram(Server, Pass),
|
||||
set_password(U, S, SPass);
|
||||
_ ->
|
||||
ok
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
%%% Created : 17 Feb 2006 by Mickael Remond <mremond@process-one.net>
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -45,7 +45,7 @@
|
||||
plain_password_required/1]).
|
||||
|
||||
-include("logger.hrl").
|
||||
-include("jid.hrl").
|
||||
-include_lib("xmpp/include/jid.hrl").
|
||||
|
||||
start(Host) ->
|
||||
ejabberd_hooks:add(sm_register_connection_hook, Host,
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
%%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net>
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2020 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user