The header consisted of too many unrelated stuff and macros misuse.
Some stuff is moved into scram.hrl and type_compat.hrl.
All macros have been replaced with the corresponding function calls.
TODO: probably type_compat.hrl is not even needed anymore since
we support only Erlang >= OTP 17.5
false -> ok;
_ -> 'Elixir.Logger':bare_log(error, io_lib:format(Format, Args), [?MODULE])
end).
+
+%% Uncomment if you want to debug p1_fsm/gen_fsm
+%%-define(DBGFSM, true).
%%%
%%%----------------------------------------------------------------------
--include("ejabberd.hrl").
+-include("type_compat.hrl").
-define(MAX_USERS_DEFAULT, 200).
captcha_whitelist = (?SETS):empty() :: ?TGB_SET,
mam = false :: boolean(),
pubsub = <<"">> :: binary(),
- lang = ?MYLANG :: binary()
+ lang = ejabberd_config:get_mylang() :: binary()
}).
-type config() :: #config{}.
%%%
%%%----------------------------------------------------------------------
--include("ejabberd.hrl").
-
%% -------------------------------
%% Pubsub constants
-define(ERR_EXTENDED(E, C), mod_pubsub:extended_error(E, C)).
--- /dev/null
+%%%----------------------------------------------------------------------
+%%%
+%%% ejabberd, Copyright (C) 2002-2018 ProcessOne
+%%%
+%%% This program is free software; you can redistribute it and/or
+%%% modify it under the terms of the GNU General Public License as
+%%% published by the Free Software Foundation; either version 2 of the
+%%% License, or (at your option) any later version.
+%%%
+%%% This program is distributed in the hope that it will be useful,
+%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%%% General Public License for more details.
+%%%
+%%% You should have received a copy of the GNU General Public License along
+%%% with this program; if not, write to the Free Software Foundation, Inc.,
+%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+%%%
+%%%----------------------------------------------------------------------
+
+-record(scram, {storedkey = <<"">> :: binary(),
+ serverkey = <<"">> :: binary(),
+ salt = <<"">> :: binary(),
+ iterationcount = 0 :: integer()}).
+
+-type scram() :: #scram{}.
+
+-define(SCRAM_DEFAULT_ITERATION_COUNT, 4096).
%%%
%%%----------------------------------------------------------------------
--ifndef(EJABBERD_HRL).
--define(EJABBERD_HRL, true).
-
--define(VERSION, ejabberd_config:get_version()).
-
--define(MYHOSTS, ejabberd_config:get_myhosts()).
-
--define(MYNAME, hd(ejabberd_config:get_myhosts())).
-
--define(MYLANG, ejabberd_config:get_mylang()).
-
--define(MSGS_DIR, filename:join(["priv", "msgs"])).
-
--define(SQL_DIR, filename:join(["priv", "sql"])).
-
--define(CONFIG_PATH, <<"ejabberd.yml">>).
-
--define(LOG_PATH, "ejabberd.log").
-
--define(EJABBERD_URI, <<"http://www.process-one.net/en/ejabberd/">>).
-
--define(COPYRIGHT, "Copyright (c) ProcessOne").
-
-%%-define(DBGFSM, true).
-
--record(scram,
- {storedkey = <<"">>,
- serverkey = <<"">>,
- salt = <<"">>,
- iterationcount = 0 :: integer()}).
-
--type scram() :: #scram{}.
-
--define(SCRAM_DEFAULT_ITERATION_COUNT, 4096).
-
-ifdef(ERL_DEPRECATED_TYPES).
-define(TDICT, dict()).
-define(TQUEUE, queue:queue()).
-endif.
-
--endif.
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("jid.hrl").
-spec load_from_config() -> ok.
load_from_config() ->
- Hosts = [global|?MYHOSTS],
+ Hosts = [global|ejabberd_config:get_myhosts()],
lists:foreach(
fun(Host) ->
ACLs = ejabberd_config:get_option(
acl_rule_matches({user, {U, S}}, #{usr := {U, S, _}}, _Host) ->
true;
acl_rule_matches({user, U}, #{usr := {U, S, _}}, _Host) ->
- lists:member(S, ?MYHOSTS);
+ lists:member(S, ejabberd_config:get_myhosts());
acl_rule_matches({server, S}, #{usr := {_, S, _}}, _Host) ->
true;
acl_rule_matches({resource, R}, #{usr := {_, _, R}}, _Host) ->
acl_rule_matches({user_regexp, {UR, S}}, #{usr := {U, S, _}}, _Host) ->
is_regexp_match(U, UR);
acl_rule_matches({user_regexp, UR}, #{usr := {U, S, _}}, _Host) ->
- lists:member(S, ?MYHOSTS) andalso is_regexp_match(U, UR);
+ lists:member(S, ejabberd_config:get_myhosts()) andalso is_regexp_match(U, UR);
acl_rule_matches({server_regexp, SR}, #{usr := {_, S, _}}, _Host) ->
is_regexp_match(S, SR);
acl_rule_matches({resource_regexp, RR}, #{usr := {_, _, R}}, _Host) ->
acl_rule_matches({user_glob, {UR, S}}, #{usr := {U, S, _}}, _Host) ->
is_glob_match(U, UR);
acl_rule_matches({user_glob, UR}, #{usr := {U, S, _}}, _Host) ->
- lists:member(S, ?MYHOSTS) andalso is_glob_match(U, UR);
+ lists:member(S, ejabberd_config:get_myhosts()) andalso is_glob_match(U, UR);
acl_rule_matches({server_glob, SR}, #{usr := {_, S, _}}, _Host) ->
is_glob_match(S, SR);
acl_rule_matches({resource_glob, RR}, #{usr := {_, _, R}}, _Host) ->
%% 3. tls-sni-01: https://tools.ietf.org/html/draft-ietf-acme-acme-05#section-7.4
%% 4. (?) oob-01: https://tools.ietf.org/html/draft-ietf-acme-acme-05#section-7.5
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("ejabberd_http.hrl").
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-record(state, {}).
-export([start/1, stop/0, mech_new/4, mech_step/2,
parse/1, format_error/1, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-behaviour(cyrsasl).
-export([start/1, stop/0, mech_new/4, mech_step/2, format_error/1]).
--include("ejabberd.hrl").
+-include("scram.hrl").
-include("logger.hrl").
-behaviour(cyrsasl).
terminate/2, code_change/3]).
-export([start_link/0, opt_type/1, register_certfiles/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("ejabberd_commands.hrl").
%% delete_authz/3
]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_commands.hrl").
ejabberd_listener, stop_listeners, []},
{"Sending announcement to connected users",
mod_announce, send_announcement_to_all,
- [?MYNAME, Subject, AnnouncementText]},
+ [ejabberd_config:get_myname(), Subject, AnnouncementText]},
{"Sending service message to MUC rooms",
ejabberd_admin, send_service_message_all_mucs,
[Subject, AnnouncementText]},
ServerHost, mod_muc, <<"conference.@HOST@">>),
mod_muc:broadcast_service_message(ServerHost, MUCHost, Message)
end,
- ?MYHOSTS).
+ ejabberd_config:get_myhosts()).
%%%
%%% ejabberd_update
lists:map(fun({U, _S}) -> U end, SUsers).
registered_vhosts() ->
- ?MYHOSTS.
+ ejabberd_config:get_myhosts().
reload_config() ->
ejabberd_config:reload_file().
lists:foreach(
fun(Host) ->
{atomic, ok} = mod_offline:remove_expired_messages(Host)
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
delete_old_messages(Days) ->
lists:foreach(
fun(Host) ->
{atomic, _} = mod_offline:remove_old_messages(Days, Host)
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
%%%
%%% Mnesia management
%% loaded modules
keep_modules_tables() ->
lists:map(fun(Module) -> module_tables(Module) end,
- gen_mod:loaded_modules(?MYNAME)).
+ gen_mod:loaded_modules(ejabberd_config:get_myname())).
%% TODO: This mapping should probably be moved to a callback function in each
%% module.
-export([start/2, prep_stop/1, stop/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
%%%
ejabberd_cluster:wait_for_sync(infinity),
{T2, _} = statistics(wall_clock),
?INFO_MSG("ejabberd ~s is started in the node ~p in ~.2fs",
- [?VERSION, node(), (T2-T1)/1000]),
+ [ejabberd_config:get_version(),
+ node(), (T2-T1)/1000]),
lists:foreach(fun erlang:garbage_collect/1, processes()),
{ok, SupPid};
Err ->
%% All the processes were killed when this function is called
stop(_State) ->
- ?INFO_MSG("ejabberd ~s is stopped in the node ~p", [?VERSION, node()]),
+ ?INFO_MSG("ejabberd ~s is stopped in the node ~p",
+ [ejabberd_config:get_version(), node()]),
delete_pid_file(),
%%ejabberd_debug:stop(),
ok.
-export([auth_modules/1, opt_type/1]).
--include("ejabberd.hrl").
+-include("scram.hrl").
-include("logger.hrl").
-define(AUTH_CACHE, auth_cache).
fun(Host, Acc) ->
Modules = auth_modules(Host),
maps:put(Host, Modules, Acc)
- end, #{}, ?MYHOSTS),
+ end, #{}, ejabberd_config:get_myhosts()),
lists:foreach(
fun({Host, Modules}) ->
start(Host, Modules)
stop(Host, OldModules -- NewModules),
reload(Host, lists_intersection(OldModules, NewModules)),
maps:put(Host, NewModules, Acc)
- end, HostModules, ?MYHOSTS),
+ end, HostModules, ejabberd_config:get_myhosts()),
init_cache(NewHostModules),
{noreply, State#state{host_modules = NewHostModules}};
handle_cast(Msg, State) ->
lists:flatmap(
fun(Host) ->
[{Host, Mod} || Mod <- auth_modules(Host)]
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec auth_modules(binary()) -> [module()].
auth_modules(Server) ->
get_users/2, count_users/2, store_type/1,
plain_password_required/1, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("jid.hrl").
try_register/3, user_exists/2, remove_user/2,
store_type/1, plain_password_required/1, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
%%%----------------------------------------------------------------------
store_type/1, plain_password_required/1,
opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("eldap.hrl").
plain_password_required/1, use_cache/1]).
-export([need_transform/1, transform/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
+-include("scram.hrl").
-include("ejabberd_auth.hrl").
-record(reg_users_counter, {vhost = <<"">> :: binary(),
plain_password_required/1]).
-export([passwd_schema/0]).
--include("ejabberd.hrl").
-include("ejabberd_sql_pt.hrl").
+-include("scram.hrl").
-include("ejabberd_auth.hrl").
start(_Host) ->
remove_user/2, store_type/1, plain_password_required/1,
convert_to_scram/1, opt_type/1, export/1]).
--include("ejabberd.hrl").
+-include("scram.hrl").
-include("logger.hrl").
-include("ejabberd_sql_pt.hrl").
-include("ejabberd_auth.hrl").
handle_sync_event/4, handle_info/3, terminate/3,
code_change/4]).
--include("ejabberd.hrl").
+-include("type_compat.hrl").
-include("logger.hrl").
-
-include("xmpp.hrl").
-
-include("ejabberd_http.hrl").
-
-include("bosh.hrl").
%%-define(DBGFSM, true).
reply/2, copy_state/2, set_timeout/2, route/2,
host_up/1, host_down/1]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
-include("mod_roster.hrl").
handle_stream_start(StreamStart, #{lserver := LServer} = State) ->
case ejabberd_router:is_my_host(LServer) of
false ->
- send(State#{lserver => ?MYNAME}, xmpp:serr_host_unknown());
+ send(State#{lserver => ejabberd_config:get_myname()}, xmpp:serr_host_unknown());
true ->
State1 = change_shaper(State),
Opts = ejabberd_config:codec_options(LServer),
tls_verify => TLSVerify,
pres_a => ?SETS:new(),
zlib => Zlib,
- lang => ?MYLANG,
- server => ?MYNAME,
- lserver => ?MYNAME,
+ lang => ejabberd_config:get_mylang(),
+ server => ejabberd_config:get_myname(),
+ lserver => ejabberd_config:get_myname(),
access => Access,
shaper => Shaper},
State2 = xmpp_stream_in:set_timeout(State1, Timeout),
listen_opt_type(accept_interval) ->
fun(I) when is_integer(I), I>=0 -> I end;
listen_opt_type(O) ->
- StreamOpts = mod_stream_mgmt:mod_options(?MYNAME),
+ StreamOpts = mod_stream_mgmt:mod_options(ejabberd_config:get_myname()),
case lists:keyfind(O, 1, StreamOpts) of
false ->
[access, shaper, certfile, ciphers, dhfile, cafile,
config_reloaded/0, process_iq/1]).
-include("xmpp.hrl").
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_http.hrl").
register_handlers() ->
ejabberd_hooks:add(host_up, ?MODULE, host_up, 50),
ejabberd_hooks:add(host_down, ?MODULE, host_down, 50),
- lists:foreach(fun host_up/1, ?MYHOSTS).
+ lists:foreach(fun host_up/1, ejabberd_config:get_myhosts()).
unregister_handlers() ->
ejabberd_hooks:delete(host_up, ?MODULE, host_up, 50),
ejabberd_hooks:delete(host_down, ?MODULE, host_down, 50),
- lists:foreach(fun host_down/1, ?MYHOSTS).
+ lists:foreach(fun host_down/1, ejabberd_config:get_myhosts()).
code_change(_OldVsn, State, _Extra) -> {ok, State}.
<<TransferProt/binary, ":", Host/binary, ":",
PortString/binary, "/captcha/", Str/binary>>;
_ ->
- <<"http://", (?MYNAME)/binary, "/captcha/", Str/binary>>
+ <<"http://", (ejabberd_config:get_myname())/binary, "/captcha/", Str/binary>>
end.
get_transfer_protocol(PortString) ->
get_known_nodes/0, node_id/0, get_node_by_id/1,
send/2, wait_for_sync/1, subscribe/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-spec init() -> ok.
terminate/2, code_change/3]).
-include("ejabberd_commands.hrl").
--include("ejabberd.hrl").
-include("logger.hrl").
-include_lib("stdlib/include/ms_transform.hrl").
-export([generate_md_output/3]).
-include("ejabberd_commands.hrl").
--include("ejabberd.hrl").
-define(RAW(V), if HTMLOutput -> fxml:crypt(iolist_to_binary(V)); true -> iolist_to_binary(V) end).
-define(TAG(N), if HTMLOutput -> [<<"<", ??N, "/>">>]; true -> md_tag(N, <<"">>) end).
-export([start/0, load_file/1, reload_file/0, read_file/1,
get_option/1, get_option/2, add_option/2, has_option/1,
- get_version/0, get_myhosts/0, get_mylang/0, get_lang/1,
+ get_version/0, get_myhosts/0, get_myname/0,
+ get_mylang/0, get_lang/1, get_uri/0, get_copyright/0,
get_ejabberd_config_path/0, is_using_elixir_config/0,
prepare_opt_val/4, transform_options/1, collect_options/1,
convert_to_yaml/1, convert_to_yaml/2, v_db/2,
{get_global_option, 3}, {get_local_option, 3},
{get_option, 3}, {is_file_readable, 1}]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_config.hrl").
-include_lib("kernel/include/file.hrl").
undefined ->
case os:getenv("EJABBERD_CONFIG_PATH") of
false ->
- ?CONFIG_PATH;
+ "ejabberd.yml";
Path ->
Path
end
get_myhosts() ->
get_option(hosts).
+-spec get_myname() -> binary().
+
+get_myname() ->
+ hd(get_myhosts()).
+
-spec get_mylang() -> binary().
get_mylang() ->
get_lang(Host) ->
get_option({language, Host}, <<"en">>).
+-spec get_uri() -> binary().
+get_uri() ->
+ <<"http://www.process-one.net/en/ejabberd/">>.
+
+-spec get_copyright() -> binary().
+get_copyright() ->
+ <<"Copyright (c) ProcessOne">>.
+
replace_module(mod_announce_odbc) -> {mod_announce, sql};
replace_module(mod_blocking_odbc) -> {mod_blocking, sql};
replace_module(mod_caps_odbc) -> {mod_caps, sql};
-include("ejabberd_ctl.hrl").
-include("ejabberd_commands.hrl").
--include("ejabberd.hrl").
-include("logger.hrl").
-define(DEFAULT_VERSION, 1000000).
-export([init/2, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("ejabberd_http.hrl").
expand_custom_headers(Headers) ->
lists:map(fun({K, V}) ->
- {K, misc:expand_keyword(<<"@VERSION@">>, V, ?VERSION)}
+ {K, misc:expand_keyword(<<"@VERSION@">>, V,
+ ejabberd_config:get_version())}
end, Headers).
code_to_phrase(100) -> <<"Continue">>;
{_, CertFile} ->
CertFile;
false ->
- case ejabberd_pkix:get_certfile(?MYNAME) of
+ case ejabberd_pkix:get_certfile(ejabberd_config:get_myname()) of
{ok, CertFile} ->
CertFile;
error ->
- ejabberd_config:get_option({domain_certfile, ?MYNAME})
+ ejabberd_config:get_option({domain_certfile, ejabberd_config:get_myname()})
end
end.
monitor/1, reset_stream/1, close/1, change_shaper/2,
socket_handoff/3, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
end, HOpts),
Opts = ejabberd_c2s_config:get_c2s_limits() ++ SOpts,
PingInterval = ejabberd_config:get_option(
- {websocket_ping_interval, ?MYNAME},
+ {websocket_ping_interval, ejabberd_config:get_myname()},
?PING_INTERVAL) * 1000,
WSTimeout = ejabberd_config:get_option(
- {websocket_timeout, ?MYNAME},
+ {websocket_timeout, ejabberd_config:get_myname()},
?WEBSOCKET_TIMEOUT) * 1000,
Socket = {http_ws, self(), IP},
?DEBUG("Client connected through websocket ~p",
add_listener/3, delete_listener/2, transform_options/1,
validate_cfg/1, opt_type/1, config_reloaded/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
%% We do not block on send anymore.
-export([route_iq/2, route_iq/3]).
-deprecated([{route_iq, 2}, {route_iq, 3}]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include_lib("stdlib/include/ms_transform.hrl").
-include("xmpp.hrl").
init([]) ->
process_flag(trap_exit, true),
- lists:foreach(fun host_up/1, ?MYHOSTS),
+ lists:foreach(fun host_up/1, ejabberd_config:get_myhosts()),
ejabberd_hooks:add(host_up, ?MODULE, host_up, 10),
ejabberd_hooks:add(host_down, ?MODULE, host_down, 100),
gen_iq_handler:start(?MODULE),
{noreply, State}.
terminate(_Reason, _State) ->
- lists:foreach(fun host_down/1, ?MYHOSTS),
+ lists:foreach(fun host_down/1, ejabberd_config:get_myhosts()),
ejabberd_hooks:delete(host_up, ?MODULE, host_up, 10),
ejabberd_hooks:delete(host_down, ?MODULE, host_down, 100),
ok.
-export([start/0, restart/0, reopen_log/0, rotate_log/0, get/0, set/1,
get_log_path/0, opt_type/1]).
--include("ejabberd.hrl").
-type loglevel() :: 0 | 1 | 2 | 3 | 4 | 5.
undefined ->
case os:getenv("EJABBERD_LOG_PATH") of
false ->
- ?LOG_PATH;
+ "ejabberd.log";
Path ->
Path
end
-include("xmpp.hrl").
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_http.hrl").
clean/1,
opt_type/1]).
--include("ejabberd.hrl").
-include("ejabberd_oauth.hrl").
-include("logger.hrl").
-include("jid.hrl").
init() ->
- rest:start(?MYNAME),
+ rest:start(ejabberd_config:get_myname()),
ok.
store(R) ->
SJID = jid:encode({User, Server, <<"">>}),
case rest:with_retry(
post,
- [?MYNAME, Path, [],
+ [ejabberd_config:get_myname(), Path, [],
{[{<<"token">>, R#oauth_token.token},
{<<"user">>, SJID},
{<<"scope">>, R#oauth_token.scope},
lookup(Token) ->
Path = path(<<"lookup">>),
- case rest:with_retry(post, [?MYNAME, Path, [],
+ case rest:with_retry(post, [ejabberd_config:get_myname(), Path, [],
{[{<<"token">>, Token}]}],
2, 500) of
{ok, 200, {Data}} ->
clean/1]).
-include("ejabberd_oauth.hrl").
--include("ejabberd.hrl").
-include("ejabberd_sql_pt.hrl").
-include("jid.hrl").
-include("logger.hrl").
Scope = str:join(R#oauth_token.scope, <<" ">>),
Expire = R#oauth_token.expire,
case ?SQL_UPSERT(
- ?MYNAME,
+ ejabberd_config:get_myname(),
"oauth_token",
["!token=%(Token)s",
"jid=%(SJID)s",
lookup(Token) ->
case ejabberd_sql:sql_query(
- ?MYNAME,
+ ejabberd_config:get_myname(),
?SQL("select @(jid)s, @(scope)s, @(expire)d"
" from oauth_token where token=%(Token)s")) of
{selected, [{SJID, Scope, Expire}]} ->
clean(TS) ->
ejabberd_sql:sql_query(
- ?MYNAME,
+ ejabberd_config:get_myname(),
?SQL("delete from oauth_token where expire < %(TS)d")).
-define(CHUNK_SIZE, 1024*20). %20k
--include("ejabberd.hrl").
+-include("scram.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_privacy.hrl").
-spec export_server(binary()) -> any().
export_server(Dir) ->
- export_hosts(?MYHOSTS, Dir).
+ export_hosts(ejabberd_config:get_myhosts(), Dir).
-spec export_host(binary(), binary()) -> any().
export_host(Dir, Host) ->
-export([start_link/0, init/1, opt_type/1,
config_reloaded/0, start_host/1, stop_host/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
start_link() ->
{ok, Spec} -> [Spec];
undefined -> []
end
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec get_spec(binary()) -> {ok, supervisor:child_spec()} | undefined.
get_spec(Host) ->
-spec config_reloaded() -> ok.
config_reloaded() ->
- lists:foreach(fun start_host/1, ?MYHOSTS).
+ lists:foreach(fun start_host/1, ejabberd_config:get_myhosts()).
-spec start_host(binary()) -> ok.
start_host(Host) ->
-define(CALL_TIMEOUT, 60*1000). %% 60 seconds
-include("logger.hrl").
--include("ejabberd.hrl").
-record(state, {connection :: pid() | undefined,
num :: pos_integer(),
%% Supervisor callbacks
-export([init/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-define(DEFAULT_POOL_SIZE, 10).
%%% Internal functions
%%%===================================================================
is_redis_configured() ->
- lists:any(fun is_redis_configured/1, ?MYHOSTS).
+ lists:any(fun is_redis_configured/1, ejabberd_config:get_myhosts()).
is_redis_configured(Host) ->
ServerConfigured = ejabberd_config:has_option({redis_server, Host}),
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-record(state, {pid = self() :: pid()}).
transform_options/1, get_random_pid/0,
host_up/1, config_reloaded/0, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-define(DEFAULT_POOL_SIZE, 10).
end.
is_riak_configured() ->
- lists:any(fun is_riak_configured/1, ?MYHOSTS).
+ lists:any(fun is_riak_configured/1, ejabberd_config:get_myhosts()).
is_riak_configured(Host) ->
ServerConfigured = ejabberd_config:has_option({riak_server, Host}),
%% This value is used in SIP and Megaco for a transaction lifetime.
-define(IQ_TIMEOUT, 32000).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_router.hrl").
-include("xmpp.hrl").
-export([init/1, handle_cast/2, handle_call/3, handle_info/2,
terminate/2, code_change/3, start_link/0]).
--include("ejabberd.hrl").
-include("ejabberd_router.hrl").
-include("logger.hrl").
-include_lib("stdlib/include/ms_transform.hrl").
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([init/1, handle_cast/2, handle_call/3, handle_info/2,
terminate/2, code_change/3, start_link/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_router.hrl").
-export([init/0, register_route/5, unregister_route/3, find_routes/1,
get_all_routes/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_sql_pt.hrl").
-include("ejabberd_router.hrl").
Node = erlang:atom_to_binary(node(), latin1),
?DEBUG("Cleaning SQL 'route' table...", []),
case ejabberd_sql:sql_query(
- ?MYNAME, ?SQL("delete from route where node=%(Node)s")) of
+ ejabberd_config:get_myname(), ?SQL("delete from route where node=%(Node)s")) of
{updated, _} ->
ok;
Err ->
PidS = misc:encode_pid(Pid),
LocalHintS = enc_local_hint(LocalHint),
Node = erlang:atom_to_binary(node(Pid), latin1),
- case ?SQL_UPSERT(?MYNAME, "route",
+ case ?SQL_UPSERT(ejabberd_config:get_myname(), "route",
["!domain=%(Domain)s",
"!server_host=%(ServerHost)s",
"!node=%(Node)s",
PidS = misc:encode_pid(Pid),
Node = erlang:atom_to_binary(node(Pid), latin1),
case ejabberd_sql:sql_query(
- ?MYNAME,
+ ejabberd_config:get_myname(),
?SQL("delete from route where domain=%(Domain)s "
"and pid=%(PidS)s and node=%(Node)s")) of
{updated, _} ->
find_routes(Domain) ->
case ejabberd_sql:sql_query(
- ?MYNAME,
+ ejabberd_config:get_myname(),
?SQL("select @(server_host)s, @(node)s, @(pid)s, @(local_hint)s "
"from route where domain=%(Domain)s")) of
{selected, Rows} ->
get_all_routes() ->
case ejabberd_sql:sql_query(
- ?MYNAME,
+ ejabberd_config:get_myname(),
?SQL("select @(domain)s from route where domain <> server_host")) of
{selected, Domains} ->
{ok, [Domain || {Domain} <- Domains]};
-export([get_info_s2s_connections/1,
transform_options/1, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
{attributes, record_info(fields, temporarily_blocked)}]),
ejabberd_hooks:add(host_up, ?MODULE, host_up, 50),
ejabberd_hooks:add(host_down, ?MODULE, host_down, 60),
- lists:foreach(fun host_up/1, ?MYHOSTS),
+ lists:foreach(fun host_up/1, ejabberd_config:get_myhosts()),
{ok, #state{}}.
handle_call(_Request, _From, State) ->
terminate(_Reason, _State) ->
ejabberd_commands:unregister_commands(get_commands_spec()),
- lists:foreach(fun host_down/1, ?MYHOSTS),
+ lists:foreach(fun host_down/1, ejabberd_config:get_myhosts()),
ejabberd_hooks:delete(host_up, ?MODULE, host_up, 50),
ejabberd_hooks:delete(host_down, ?MODULE, host_down, 60),
ok.
s2s -> % bypass RFC 3920 10.3
false;
local ->
- Hosts = (?MYHOSTS),
+ Hosts = ejabberd_config:get_myhosts(),
P = fun (ParentDomain) ->
lists:member(ParentDomain, Hosts)
end,
-export([stop/1, close/1, close/2, send/2, update_state/2, establish/1,
host_up/1, host_down/1]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
State1 = State#{tls_options => TLSOpts2,
auth_domains => sets:new(),
xmlns => ?NS_SERVER,
- lang => ?MYLANG,
- server => ?MYNAME,
- lserver => ?MYNAME,
- server_host => ?MYNAME,
+ lang => ejabberd_config:get_mylang(),
+ server => ejabberd_config:get_myname(),
+ lserver => ejabberd_config:get_myname(),
+ server_host => ejabberd_config:get_myname(),
established => false,
shaper => Shaper},
State2 = xmpp_stream_in:set_timeout(State1, Timeout),
-export([start/3, start_link/3, connect/1, close/1, close/2, stop/1, send/2,
route/2, establish/1, update_state/2, host_up/1, host_down/1]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
State1 = State#{on_route => queue,
queue => p1_queue:new(QueueType, QueueLimit),
xmlns => ?NS_SERVER,
- lang => ?MYLANG,
+ lang => ejabberd_config:get_mylang(),
server_host => ServerHost,
shaper => none},
State2 = xmpp_stream_out:set_timeout(State1, Timeout),
%% API
-export([send/2]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
State2 = xmpp_stream_in:set_timeout(State1, Timeout),
State3 = State2#{access => Access,
xmlns => ?NS_COMPONENT,
- lang => ?MYLANG,
- server => ?MYNAME,
+ lang => ejabberd_config:get_mylang(),
+ server => ejabberd_config:get_myname(),
host_opts => dict:from_list(HostOpts1),
stream_version => undefined,
tls_options => TLSOpts,
end,
lists:foreach(
fun(H) ->
- ejabberd_router:register_route(H, ?MYNAME),
+ ejabberd_router:register_route(H, ejabberd_config:get_myname()),
ejabberd_hooks:run(component_connected, [H])
end, Routes),
State.
-export([tcp_init/2, udp_init/2, udp_recv/5, start/2,
socket_type/0, listen_opt_type/1]).
--include("ejabberd.hrl").
%%%===================================================================
%%% API
true ->
Opts;
false ->
- case ejabberd_pkix:get_certfile(?MYNAME) of
+ case ejabberd_pkix:get_certfile(ejabberd_config:get_myname()) of
{ok, CertFile} ->
[{certfile, CertFile}|Opts];
error ->
- case ejabberd_config:get_option({domain_certfile, ?MYNAME}) of
+ case ejabberd_config:get_option({domain_certfile, ejabberd_config:get_myname()}) of
undefined ->
Opts;
CertFile ->
-export([init/1, handle_call/3, handle_cast/2,
handle_info/2, terminate/2, code_change/3, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
ejabberd_hooks:add(host_up, ?MODULE, host_up, 50),
ejabberd_hooks:add(host_down, ?MODULE, host_down, 60),
ejabberd_hooks:add(config_reloaded, ?MODULE, config_reloaded, 50),
- lists:foreach(fun host_up/1, ?MYHOSTS),
+ lists:foreach(fun host_up/1, ejabberd_config:get_myhosts()),
ejabberd_commands:register_commands(get_commands_spec()),
{ok, #state{}}.
{noreply, State}.
terminate(_Reason, _State) ->
- lists:foreach(fun host_down/1, ?MYHOSTS),
+ lists:foreach(fun host_down/1, ejabberd_config:get_myhosts()),
ejabberd_hooks:delete(host_up, ?MODULE, host_up, 50),
ejabberd_hooks:delete(host_down, ?MODULE, host_down, 60),
ejabberd_hooks:delete(config_reloaded, ?MODULE, config_reloaded, 50),
-spec get_sm_backends() -> [module()].
get_sm_backends() ->
- lists:usort([get_sm_backend(Host) || Host <- ?MYHOSTS]).
+ lists:usort([get_sm_backend(Host) || Host <- ejabberd_config:get_myhosts()]).
-spec get_vh_by_backend(module()) -> [binary()].
lists:filter(
fun(Host) ->
get_sm_backend(Host) == Mod
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
%%--------------------------------------------------------------------
%%% Cache stuff
fun(Host) ->
Mod = get_sm_backend(Host),
use_cache(Mod, Host)
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec cache_nodes(module(), binary()) -> [node()].
cache_nodes(Mod, LServer) ->
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3, start_link/0]).
--include("ejabberd.hrl").
-include("ejabberd_sm.hrl").
-include_lib("stdlib/include/ms_transform.hrl").
-export([init/1, handle_cast/2, handle_call/3, handle_info/2,
terminate/2, code_change/3, start_link/0]).
--include("ejabberd.hrl").
-include("ejabberd_sm.hrl").
-include("logger.hrl").
get_sessions/1,
get_sessions/2]).
--include("ejabberd.hrl").
-include("ejabberd_sm.hrl").
-include("logger.hrl").
-include("ejabberd_sql_pt.hrl").
session_established/2, session_established/3,
opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_sql_pt.hrl").
get_pids/1, get_random_pid/1, transform_options/1,
opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-define(PGSQL_PORT, 5432).
end.
create_sqlite_tables(DB) ->
- SqlDir = case code:priv_dir(ejabberd) of
- {error, _} ->
- ?SQL_DIR;
- PrivDir ->
- filename:join(PrivDir, "sql")
- end,
+ SqlDir = misc:sql_dir(),
File = filename:join(SqlDir, "lite.sql"),
case file:open(File, [read, binary]) of
{ok, Fd} ->
-export([tcp_init/2, udp_init/2, udp_recv/5, start/2,
socket_type/0, listen_opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
%%%===================================================================
prepare_turn_opts(Opts, _UseTurn = false) ->
set_certfile(Opts);
prepare_turn_opts(Opts, _UseTurn = true) ->
- NumberOfMyHosts = length(?MYHOSTS),
+ NumberOfMyHosts = length(ejabberd_config:get_myhosts()),
case proplists:get_value(turn_ip, Opts) of
undefined ->
?WARNING_MSG("option 'turn_ip' is undefined, "
"'auth_type' is set to 'user', "
"more likely the TURN relay won't "
"be working properly. Using ~s as "
- "a fallback", [?MYNAME]);
+ "a fallback", [ejabberd_config:get_myname()]);
true ->
ok
end,
- [{auth_realm, ?MYNAME}];
+ [{auth_realm, ejabberd_config:get_myname()}];
_ ->
[]
end,
true ->
Opts;
false ->
- Realm = proplists:get_value(auth_realm, Opts, ?MYNAME),
+ Realm = proplists:get_value(auth_realm, Opts, ejabberd_config:get_myname()),
case ejabberd_pkix:get_certfile(Realm) of
{ok, CertFile} ->
[{certfile, CertFile}|Opts];
%% API
-export([update/0, update/1, update_info/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
%%====================================================================
%% External exports
-export([make_xhtml/1, make_xhtml/2, error/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
list_users_in_diapason/4, pretty_print_xml/1,
term_to_id/1, opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
%%%% list_vhosts
list_vhosts(Lang, JID) ->
- Hosts = (?MYHOSTS),
+ Hosts = ejabberd_config:get_myhosts(),
HostsAllowed = lists:filter(fun (Host) ->
acl:any_rules_allowed(Host,
[configure, webadmin_view],
ejabberd_auth:count_users(Host)
+ Total
end,
- 0, ?MYHOSTS),
+ 0, ejabberd_config:get_myhosts()),
OutS2SNumber = ejabberd_s2s:outgoing_s2s_number(),
InS2SNumber = ejabberd_s2s:incoming_s2s_number(),
[?XAE(<<"table">>, [],
?C(<<" ">>),
?INPUT(<<"text">>,
<<"export_piefxis_host_dirhost">>,
- (?MYNAME))]),
+ (ejabberd_config:get_myname()))]),
?XE(<<"td">>,
[?INPUT(<<"text">>,
<<"export_piefxis_host_dirpath">>,
?C(<<" ">>),
?INPUT(<<"text">>,
<<"export_sql_filehost">>,
- (?MYNAME))]),
+ (ejabberd_config:get_myname()))]),
?XE(<<"td">>,
[?INPUT(<<"text">>,
<<"export_sql_filepath">>,
-export([check/2, socket_handoff/5]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([start/2, handler/2, process/2, socket_type/0,
transform_listen_option/2, listen_opt_type/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_http.hrl").
-include("mod_roster.hrl").
-behaviour(p1_fsm).
--include("ejabberd.hrl").
+-include("type_compat.hrl").
-include("logger.hrl").
%% External exports
-export([start_link/7, bind/3, search/2,
modify_passwd/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
%%====================================================================
decode_octet_string/3, uids_domain_subst/2, opt_type/1,
options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("eldap.hrl").
-export([add_iq_handler/6, handle/5, iqdisc/1]).
-deprecated([{add_iq_handler, 6}, {handle, 5}, {iqdisc, 1}]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
{ram_db_type, 2},
{ram_db_type, 3}]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include_lib("stdlib/include/ms_transform.hrl").
%% Start all the modules in all the hosts
start_modules() ->
- Hosts = ?MYHOSTS,
+ Hosts = ejabberd_config:get_myhosts(),
?INFO_MSG("Loading modules for ~s", [format_hosts_list(Hosts)]),
lists:foreach(fun start_modules/1, Hosts).
lists:foreach(
fun(Host) ->
stop_modules(Host)
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec stop_modules(binary()) -> ok.
get_module_opt(Host, Module, Opt, F) when is_function(F) ->
get_module_opt(Host, Module, Opt, undefined);
get_module_opt(global, Module, Opt, Default) ->
- Hosts = (?MYHOSTS),
+ Hosts = ejabberd_config:get_myhosts(),
[Value | Values] = lists:map(fun (Host) ->
get_module_opt(Host, Module, Opt,
Default)
undefined ->
case get_opt(host, Opts) of
undefined ->
- [<<Prefix/binary, Host/binary>> || Host <- ?MYHOSTS];
+ [<<Prefix/binary, Host/binary>> || Host <- ejabberd_config:get_myhosts()];
Host ->
[Host]
end;
lists:foreach(
fun(Host) ->
reload_modules(Host)
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec is_equal_opt(atom(), opts(), opts()) ->
true | {false, any(), any()}.
%% External exports
-export([import_file/1, import_dir/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
{expr_to_term, 1},
{term_to_expr, 1}]).
--include("ejabberd.hrl").
-include("jlib.hrl").
%send_iq(From, To, ID, SubTags) ->
atom_to_binary/1, binary_to_atom/1, tuple_to_binary/1,
l2i/1, i2l/1, i2l/2, expr_to_term/1, term_to_expr/1,
now_to_usec/1, usec_to_now/1, encode_pid/1, decode_pid/2,
- compile_exprs/2, join_atoms/2, try_read_file/1,
- css_dir/0, img_dir/0, js_dir/0, read_css/1, read_img/1, read_js/1]).
+ compile_exprs/2, join_atoms/2, try_read_file/1, get_descr/2,
+ css_dir/0, img_dir/0, js_dir/0, msgs_dir/0, sql_dir/0,
+ read_css/1, read_img/1, read_js/1]).
%% Deprecated functions
-export([decode_base64/1, encode_base64/1]).
-spec css_dir() -> file:filename().
css_dir() ->
- case os:getenv("EJABBERD_CSS_PATH") of
- false ->
- case code:priv_dir(ejabberd) of
- {error, _} -> filename:join(["priv", "css"]);
- Path -> filename:join([Path, "css"])
- end;
- Path -> Path
- end.
+ get_dir("css").
-spec img_dir() -> file:filename().
img_dir() ->
- case os:getenv("EJABBERD_IMG_PATH") of
- false ->
- case code:priv_dir(ejabberd) of
- {error, _} -> filename:join(["priv", "img"]);
- Path -> filename:join([Path, "img"])
- end;
- Path -> Path
- end.
+ get_dir("img").
-spec js_dir() -> file:filename().
js_dir() ->
- case os:getenv("EJABBERD_JS_PATH") of
- false ->
- case code:priv_dir(ejabberd) of
- {error, _} -> filename:join(["priv", "js"]);
- Path -> filename:join([Path, "js"])
- end;
- Path -> Path
- end.
+ get_dir("js").
+
+-spec msgs_dir() -> file:filename().
+msgs_dir() ->
+ get_dir("msgs").
+
+-spec sql_dir() -> file:filename().
+sql_dir() ->
+ get_dir("sql").
-spec read_css(file:filename()) -> {ok, binary()} | {error, file:posix()}.
read_css(File) ->
read_js(File) ->
read_file(filename:join(js_dir(), File)).
+-spec get_descr(binary(), binary()) -> binary().
+get_descr(Lang, Text) ->
+ Desc = translate:translate(Lang, Text),
+ Copyright = ejabberd_config:get_copyright(),
+ <<Desc/binary, $\n, Copyright/binary>>.
+
%%%===================================================================
%%% Internal functions
%%%===================================================================
[Path, file:format_error(Why)]),
Err
end.
+
+-spec get_dir(string()) -> file:filename().
+get_dir(Type) ->
+ Env = "EJABBERD_" ++ string:to_upper(Type) ++ "_PATH",
+ case os:getenv(Env) of
+ false ->
+ case code:priv_dir(ejabberd) of
+ {error, _} -> filename:join(["priv", Type]);
+ Path -> filename:join([Path, Type])
+ end;
+ Path ->
+ Path
+ end.
ping_item/4, ping_command/4, mod_opt_type/1, depends/2,
mod_options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
]).
--include("ejabberd.hrl").
-include("ejabberd_commands.hrl").
-include("mod_roster.hrl").
-include("mod_privacy.hrl").
case Name of
<<"uptimeseconds">> -> trunc(element(1, erlang:statistics(wall_clock))/1000);
<<"processes">> -> length(erlang:processes());
- <<"registeredusers">> -> lists:foldl(fun(Host, Sum) -> ejabberd_auth:count_users(Host) + Sum end, 0, ?MYHOSTS);
+ <<"registeredusers">> -> lists:foldl(fun(Host, Sum) -> ejabberd_auth:count_users(Host) + Sum end, 0, ejabberd_config:get_myhosts());
<<"onlineusersnode">> -> length(ejabberd_sm:dirty_get_my_sessions_list());
<<"onlineusers">> -> length(ejabberd_sm:dirty_get_sessions_list())
end.
-include("logger.hrl").
--include("ejabberd.hrl").
-include("ejabberd_commands.hrl").
-include("xmpp.hrl").
-include("ejabberd_sql_pt.hrl").
_ ->
update_sql(Host)
end
- end, ?MYHOSTS),
+ end, ejabberd_config:get_myhosts()),
ok.
-record(state, {host :: binary(),
announce_motd_delete/1,
announce_all_hosts_motd_delete/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_announce.hrl").
announce_motd(To#jid.lserver, Packet).
announce_all_hosts_motd(Packet) ->
- Hosts = ?MYHOSTS,
+ Hosts = ejabberd_config:get_myhosts(),
[announce_motd(Host, Packet) || Host <- Hosts].
announce_motd(Host, Packet) ->
announce_motd_update(To#jid.lserver, Packet).
announce_all_hosts_motd_update(Packet) ->
- Hosts = ?MYHOSTS,
+ Hosts = ejabberd_config:get_myhosts(),
[announce_motd_update(Host, Packet) || Host <- Hosts].
announce_motd_update(LServer, Packet) ->
fun(Host) ->
Mod = gen_mod:db_mod(Host, ?MODULE),
delete_motd(Mod, Host)
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec send_motd({presence(), ejabberd_c2s:state()}) -> {presence(), ejabberd_c2s:state()}.
send_motd({_, #{pres_last := _}} = Acc) ->
-export([filter_packet/1, filter_offline_msg/1, filter_subscription/2]).
-include("xmpp.hrl").
--include("ejabberd.hrl").
-include("logger.hrl").
-define(SETS, gb_sets).
-export([start/2, stop/1, reload/3, process_iq/1, depends/2,
disco_features/5, mod_options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([depends/2, mod_opt_type/1, mod_options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include_lib("stdlib/include/ms_transform.hrl").
-include("xmpp.hrl").
-export([init/1, handle_cast/2, handle_call/3, handle_info/2,
terminate/2, code_change/3, start_link/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("bosh.hrl").
%% API
-export([init/0, open_session/2, close_session/1, find_session/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_sql_pt.hrl").
Node = erlang:atom_to_binary(node(), latin1),
?DEBUG("Cleaning SQL 'bosh' table...", []),
case ejabberd_sql:sql_query(
- ?MYNAME, ?SQL("delete from bosh where node=%(Node)s")) of
+ ejabberd_config:get_myname(), ?SQL("delete from bosh where node=%(Node)s")) of
{updated, _} ->
ok;
Err ->
open_session(SID, Pid) ->
PidS = misc:encode_pid(Pid),
Node = erlang:atom_to_binary(node(Pid), latin1),
- case ?SQL_UPSERT(?MYNAME, "bosh",
+ case ?SQL_UPSERT(ejabberd_config:get_myname(), "bosh",
["!sid=%(SID)s",
"node=%(Node)s",
"pid=%(PidS)s"]) of
close_session(SID) ->
case ejabberd_sql:sql_query(
- ?MYNAME, ?SQL("delete from bosh where sid=%(SID)s")) of
+ ejabberd_config:get_myname(), ?SQL("delete from bosh where sid=%(SID)s")) of
{updated, _} ->
ok;
_Err ->
find_session(SID) ->
case ejabberd_sql:sql_query(
- ?MYNAME,
+ ejabberd_config:get_myname(),
?SQL("select @(pid)s, @(node)s from bosh where sid=%(SID)s")) of
{selected, [{Pid, Node}]} ->
try {ok, misc:decode_pid(Pid, Node)}
-export([user_send_packet/1, user_receive_packet/1,
c2s_presence_in/2, mod_opt_type/1, mod_options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
<<"">> ->
Acc;
Hash ->
- [#caps{hash = <<"sha-1">>, node = ?EJABBERD_URI,
+ [#caps{hash = <<"sha-1">>, node = ejabberd_config:get_uri(),
version = Hash} | Acc]
end;
false ->
-spec is_valid_node(binary()) -> boolean().
is_valid_node(Node) ->
case str:tokens(Node, <<"#">>) of
- [?EJABBERD_URI|_] ->
- true;
- _ ->
+ [H|_] ->
+ H == ejabberd_config:get_uri();
+ [] ->
false
end.
is_carbon_copy/1, mod_opt_type/1, depends/2, clean_cache/1,
mod_options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_carboncopy.hrl").
-export([init/1, handle_cast/2, handle_call/3, handle_info/2,
terminate/2, code_change/3, start_link/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("mod_carboncopy.hrl").
%% API
-export([init/2, enable/4, disable/3, list/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_sql_pt.hrl").
c2s_authenticated_packet/2, csi_activity/2,
c2s_copy_session/2, c2s_session_resumed/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
adhoc_sm_items/4, adhoc_sm_commands/4, mod_options/1,
depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("ejabberd_sm.hrl").
lists:map(
fun (N) ->
S = iolist_to_binary(atom_to_list(N)),
- #disco_item{jid = jid:make(?MYNAME),
+ #disco_item{jid = jid:make(ejabberd_config:get_myname()),
node = <<"stopped nodes/", S/binary>>,
name = S}
end,
AccountJID = jid:decode(AccountString),
User = AccountJID#jid.luser,
Server = AccountJID#jid.lserver,
- true = lists:member(Server, ?MYHOSTS),
+ true = lists:member(Server, ejabberd_config:get_myhosts()),
true = Server == Host orelse
get_permission_level(From) == global,
case ejabberd_auth:try_register(User, Server, Password) of
disco_local_features/5, disco_sm_features/5,
disco_local_identity/5, disco_sm_identity/5]).
--include("ejabberd.hrl").
+-include("type_compat.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
fun(ServerHost) ->
Proc = gen_mod:get_module_proc(ServerHost, ?MODULE),
gen_server:cast(Proc, {component_connected, Host})
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec component_disconnected(binary(), binary()) -> ok.
component_disconnected(Host, _Reason) ->
fun(ServerHost) ->
Proc = gen_mod:get_module_proc(ServerHost, ?MODULE),
gen_server:cast(Proc, {component_disconnected, Host})
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec ejabberd_local(iq()) -> iq().
ejabberd_local(IQ) ->
get_info/5, transform_module_options/1, mod_opt_type/1,
mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("translate.hrl").
-include("xmpp.hrl").
Hosts = lists:sort(fun (H1, H2) ->
byte_size(H1) >= byte_size(H2)
end,
- ?MYHOSTS),
+ ejabberd_config:get_myhosts()),
lists:filter(fun (H) ->
case lists:dropwhile(fun (VH) ->
not
handle_info/2, terminate/2, code_change/3,
mod_opt_type/1, depends/2, mod_options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
mod_opt_type/1, mod_options/1, depends/2]).
-include_lib("stdlib/include/ms_transform.hrl").
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([start/2, stop/1, reload/3, process/2, mod_opt_type/1, depends/2,
mod_options/1]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
-include("ejabberd_http.hrl").
-export([reopen_log/0, mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_http.hrl").
-include_lib("kernel/include/file.hrl").
"but couldn't find the related "
"ejabberd virtual host", [Host]),
{FileSize1, Code1, Headers1, Contents1} = ?HTTP_ERR_HOST_UNKNOWN,
- add_to_log(FileSize1, Code1, Request#request{host = ?MYNAME}),
+ add_to_log(FileSize1, Code1, Request#request{host = ejabberd_config:get_myname()}),
{Code1, Headers1, Contents1}
end.
lists:foreach(
fun(Host) ->
gen_server:cast(get_proc_name(Host), reopen_log)
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
add_to_log(FileSize, Code, Request) ->
gen_server:cast(get_proc_name(Request#request.host),
expand_home/1,
expand_host/2]).
--include("ejabberd.hrl").
-include("ejabberd_http.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
handle_info/2, terminate/2, code_change/3,
mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_irc.hrl").
end.
iq_get_vcard(Lang) ->
- Desc = translate:translate(Lang, <<"ejabberd IRC module">>),
#vcard_temp{fn = <<"ejabberd/mod_irc">>,
- url = ?EJABBERD_URI,
- desc = <<Desc/binary, $\n, ?COPYRIGHT>>}.
+ url = ejabberd_config:get_uri(),
+ desc = misc:get_descr(Lang, <<"ejabberd IRC module">>)}.
command_items(ServerHost, Host, Lang) ->
lists:map(fun({Node, Name, _Function}) ->
handle_sync_event/4, handle_info/3, terminate/3,
code_change/4]).
--include("ejabberd.hrl").
+-include("type_compat.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
{error, SError, SStateData} -> {SError, SStateData};
_ ->
{xmpp:err_internal_server_error(
- <<"Server Connect Failed">>, ?MYLANG),
+ <<"Server Connect Failed">>, ejabberd_config:get_mylang()),
FullStateData}
end,
(StateData#state.mod):closed_connection(StateData#state.host,
Msg = ejabberd_regexp:replace(String,
<<".*433 +[^ ]* +">>, <<"">>),
Msg1 = filter_message(Msg),
- xmpp:err_conflict(Msg1, ?MYLANG).
+ xmpp:err_conflict(Msg1, ejabberd_config:get_mylang()).
process_nick_in_use(StateData, String) ->
Error = error_nick_in_use(StateData, String),
send_text(StateData,
io_lib:format("NOTICE ~s :\001VERSION ejabberd IRC "
"transport ~s (c) Alexey Shchepin\001\r\n",
- [FromUser, ?VERSION])
+ [FromUser, ejabberd_config:get_version()])
++
io_lib:format("NOTICE ~s :\001VERSION http://ejabberd.jabber"
"studio.org/\001\r\n",
StateData#state.nick),
to = StateData#state.user,
type = error,
- sub_els = [xmpp:err_internal_server_error(String, ?MYLANG)]})
+ sub_els = [xmpp:err_internal_server_error(String, ejabberd_config:get_mylang())]})
end, dict:fetch_keys(StateData#state.channels)).
error_unknown_num(_StateData, String, Type) ->
Msg = ejabberd_regexp:replace(String,
<<".*[45][0-9][0-9] +[^ ]* +">>, <<"">>),
Msg1 = filter_message(Msg),
- xmpp:err_undefined_condition(Type, Msg1, ?MYLANG).
+ xmpp:err_undefined_condition(Type, Msg1, ejabberd_config:get_mylang()).
remove_element(E, Set) ->
case (?SETS):is_element(E, Set) of
remove_user/2, mod_opt_type/1, mod_options/1,
register_user/2, depends/2, privacy_check_packet/4]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
sql -> {sql, Host};
Other -> {Other, global}
end
- end, ?MYHOSTS)),
+ end, ejabberd_config:get_myhosts())),
Results = lists:map(
fun({DBType, ServerHost}) ->
Mod = gen_mod:db_mod(DBType, ?MODULE),
-author('christophe.romain@process-one.net').
-behaviour(gen_mod).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
handle_info/2, terminate/2, code_change/3,
mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_muc.hrl").
-spec process_vcard(iq()) -> iq().
process_vcard(#iq{type = get, lang = Lang, sub_els = [#vcard_temp{}]} = IQ) ->
- Desc = translate:translate(Lang, <<"ejabberd MUC module">>),
xmpp:make_iq_result(
IQ, #vcard_temp{fn = <<"ejabberd/mod_muc">>,
- url = ?EJABBERD_URI,
- desc = <<Desc/binary, $\n, ?COPYRIGHT>>});
+ url = ejabberd_config:get_uri(),
+ desc = misc:get_descr(Lang, <<"ejabberd MUC module">>)});
process_vcard(#iq{type = set, lang = Lang} = IQ) ->
Txt = <<"Value 'set' of 'type' attribute is not allowed">>,
xmpp:make_error(IQ, xmpp:err_not_allowed(Txt, Lang));
{allow_visitor_status,true},
{anonymous,true},
{captcha_protected,false},
- {lang, ?MYLANG},
+ {lang, ejabberd_config:get_mylang()},
{logging,false},
{members_by_default,true},
{members_only,false},
subscribe_room/4, unsubscribe_room/2, get_subscribers/2,
web_page_host/3, mod_options/1, get_commands_spec/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_muc.hrl").
false ->
[]
end
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
%%----------------------------
%% Ad-hoc commands
Rooms = read_rooms(F, RJID, []),
file:close(F),
%% Read the default room options defined for the first virtual host
- DefRoomOpts = gen_mod:get_module_opt(?MYNAME, mod_muc,
+ DefRoomOpts = gen_mod:get_module_opt(ejabberd_config:get_myname(), mod_muc,
default_room_options),
- [muc_create_room(?MYNAME, A, DefRoomOpts) || A <- Rooms],
+ [muc_create_room(ejabberd_config:get_myname(), A, DefRoomOpts) || A <- Rooms],
ok.
%% Act
act_on_rooms(Action, Rooms, ServerHost) ->
- ServerHosts = [ {A, find_host(A)} || A <- ?MYHOSTS ],
+ ServerHosts = [ {A, find_host(A)} || A <- ejabberd_config:get_myhosts() ],
Delete = fun({_N, H, _Pid} = Room) ->
SH = case ServerHost of
global -> find_serverhost(H, ServerHosts);
false ->
[]
end
- end, ?MYHOSTS);
+ end, ejabberd_config:get_myhosts());
find_hosts(ServerHost) when is_list(ServerHost) ->
find_hosts(list_to_binary(ServerHost));
find_hosts(ServerHost) ->
handle_info/2, terminate/2, code_change/3,
mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
terminate/3,
code_change/4]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
DiscoInfo = make_disco_info(JID, State),
DiscoHash = mod_caps:compute_disco_hash(DiscoInfo, sha),
Els1 = [#caps{hash = <<"sha-1">>,
- node = ?EJABBERD_URI,
+ node = ejabberd_config:get_uri(),
version = DiscoHash}],
Els2 = if is_binary(AvatarHash) ->
[#vcard_xupdate{hash = AvatarHash}|Els1];
true = mod_caps:is_valid_node(Node),
DiscoInfo = make_disco_info(From, StateData),
Hash = mod_caps:compute_disco_hash(DiscoInfo, sha),
- Node = <<(?EJABBERD_URI)/binary, $#, Hash/binary>>,
+ Node = <<(ejabberd_config:get_uri())/binary, $#, Hash/binary>>,
Extras = iq_disco_info_extras(Lang, StateData, true),
{result, DiscoInfo#disco_info{node = Node, xdata = [Extras]}}
catch _:{badmatch, _} ->
-export([purge_loop/1, mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("translate.hrl").
-include("xmpp.hrl").
xdata = iq_disco_info_extras(From, State)}.
iq_vcard(Lang) ->
- Desc = translate:translate(Lang, <<"ejabberd Multicast service">>),
#vcard_temp{fn = <<"ejabberd/mod_multicast">>,
- url = ?EJABBERD_URI,
- desc = <<Desc/binary, $\n, ?COPYRIGHT>>}.
+ url = ejabberd_config:get_uri(),
+ desc = misc:get_descr(Lang, <<"ejabberd Multicast service">>)}.
%%%-------------------------
%%% Route
end.
sender_type(From) ->
- Local_hosts = (?MYHOSTS),
+ Local_hosts = ejabberd_config:get_myhosts(),
case lists:member(From#jid.lserver, Local_hosts) of
true -> local;
false -> remote
-deprecated({get_queue_length,2}).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-behaviour(gen_server).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([start/2, stop/1, reload/3, check_packet/4,
mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
import_start/2, import_stop/2, import/5, import_info/0,
mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_privacy.hrl").
import/5, import_start/2, mod_opt_type/1, set_data/3,
mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_private.hrl").
roster_access/2, process_message/1,
process_presence_out/1, process_presence_in/1]).
--include("ejabberd.hrl").
+-include("type_compat.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
fun(ServerHost) ->
Proc = gen_mod:get_module_proc(ServerHost, ?MODULE),
gen_server:cast(Proc, {component_connected, Host})
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec component_disconnected(binary(), binary()) -> ok.
component_disconnected(Host, _Reason) ->
fun(ServerHost) ->
Proc = gen_mod:get_module_proc(ServerHost, ?MODULE),
gen_server:cast(Proc, {component_disconnected, Host})
- end, ?MYHOSTS).
+ end, ejabberd_config:get_myhosts()).
-spec process_message(stanza()) -> stop | ok.
process_message(#message{from = #jid{luser = <<"">>, lresource = <<"">>} = From,
%% API
-export([init/0, register_stream/2, unregister_stream/1, activate_stream/4]).
--include("ejabberd.hrl").
-include("logger.hrl").
-record(proxy65, {pid_t :: pid(),
process_disco_items/1, process_vcard/1, process_bytestreams/1,
transform_module_options/1, delete_listener/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("translate.hrl").
Txt = <<"Value 'set' of 'type' attribute is not allowed">>,
xmpp:make_error(IQ, xmpp:err_not_allowed(Txt, Lang));
process_vcard(#iq{type = get, lang = Lang} = IQ) ->
- Desc = translate:translate(Lang, <<"ejabberd SOCKS5 Bytestreams module">>),
xmpp:make_iq_result(
IQ, #vcard_temp{fn = <<"ejabberd/mod_proxy65">>,
- url = ?EJABBERD_URI,
- desc = <<Desc/binary, $\n, ?COPYRIGHT>>}).
+ url = ejabberd_config:get_uri(),
+ desc = misc:get_descr(Lang, <<"ejabberd SOCKS5 Bytestreams module">>)}).
-spec process_bytestreams(iq()) -> iq().
process_bytestreams(#iq{type = get, from = JID, to = To, lang = Lang} = IQ) ->
%% API
-export([init/0, register_stream/2, unregister_stream/1, activate_stream/4]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("ejabberd_sql_pt.hrl").
NodeS = erlang:atom_to_binary(node(), latin1),
?DEBUG("Cleaning SQL 'proxy65' table...", []),
case ejabberd_sql:sql_query(
- ?MYNAME,
+ ejabberd_config:get_myname(),
?SQL("delete from proxy65 where "
"node_i=%(NodeS)s or node_t=%(NodeS)s")) of
{updated, _} ->
"values (%(SID)s, %(PidS)s, %(NodeS)s, '', '', '')"))
end
end,
- case ejabberd_sql:sql_transaction(?MYNAME, F) of
+ case ejabberd_sql:sql_transaction(ejabberd_config:get_myname(), F) of
{atomic, _} ->
ok;
{aborted, Reason} ->
ejabberd_sql:sql_query_t(
?SQL("delete from proxy65 where sid=%(SID)s"))
end,
- case ejabberd_sql:sql_transaction(?MYNAME, F) of
+ case ejabberd_sql:sql_transaction(ejabberd_config:get_myname(), F) of
{atomic, _} ->
ok;
{aborted, Reason} ->
ejabberd_sql:abort(Err)
end
end,
- case ejabberd_sql:sql_transaction(?MYNAME, F) of
+ case ejabberd_sql:sql_transaction(ejabberd_config:get_myname(), F) of
{atomic, Result} ->
Result;
{aborted, {limit, _, _} = Limit} ->
-include("mod_proxy65.hrl").
--include("ejabberd.hrl").
-include("logger.hrl").
-define(WAIT_TIMEOUT, 60000).
-protocol({xep, 163, '1.2'}).
-protocol({xep, 248, '0.2'}).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("pubsub.hrl").
-spec iq_get_vcard(binary()) -> vcard_temp().
iq_get_vcard(Lang) ->
- Desc = translate:translate(Lang, <<"ejabberd Publish-Subscribe module">>),
+ Desc = misc:get_descr(Lang, <<"ejabberd Publish-Subscribe module">>),
#vcard_temp{fn = <<"ejabberd/mod_pubsub">>,
- url = ?EJABBERD_URI,
- desc = <<Desc/binary, $\n, ?COPYRIGHT>>}.
+ url = ejabberd_config:get_uri(),
+ desc = Desc}.
-spec iq_pubsub(binary() | ljid(), atom(), iq()) ->
{result, pubsub()} | {error, stanza_error()}.
{result, ok};
_ ->
Txt = <<"No pending subscriptions found">>,
- {error, xmpp:err_unexpected_request(Txt, ?MYLANG)}
+ {error, xmpp:err_unexpected_request(Txt, ejabberd_config:get_mylang())}
end.
%% @doc <p>Create new pubsub nodes</p>
end;
_ ->
Txt = <<"You're not allowed to create nodes">>,
- {error, xmpp:err_forbidden(Txt, ?MYLANG)}
+ {error, xmpp:err_forbidden(Txt, ejabberd_config:get_mylang())}
end
end,
Reply = #pubsub{create = Node},
%%</ul>
-spec delete_node(host(), binary(), jid()) -> {result, pubsub_owner()} | {error, stanza_error()}.
delete_node(_Host, <<>>, _Owner) ->
- {error, xmpp:err_not_allowed(<<"No node specified">>, ?MYLANG)};
+ {error, xmpp:err_not_allowed(<<"No node specified">>, ejabberd_config:get_mylang())};
delete_node(Host, Node, Owner) ->
Action = fun (#pubsub_node{type = Type, id = Nidx}) ->
case node_call(Host, Type, get_affiliation, [Nidx, Owner]) of
Error -> Error
end;
_ ->
- {error, xmpp:err_forbidden(<<"Owner privileges required">>, ?MYLANG)}
+ {error, xmpp:err_forbidden(<<"Owner privileges required">>, ejabberd_config:get_mylang())}
end
end,
Reply = undefined,
end;
false ->
Txt = <<"Automatic node creation is not enabled">>,
- {error, xmpp:err_item_not_found(Txt, ?MYLANG)}
+ {error, xmpp:err_item_not_found(Txt, ejabberd_config:get_mylang())}
end;
Error ->
Error
{error, extended_error(xmpp:err_feature_not_implemented(),
err_unsupported('modify-affiliations'))};
Affiliation /= owner ->
- {error, xmpp:err_forbidden(<<"Owner privileges required">>, ?MYLANG)};
+ {error, xmpp:err_forbidden(<<"Owner privileges required">>, ejabberd_config:get_mylang())};
true ->
node_call(Host, Type, get_node_affiliations, [Nidx])
end
{result, undefined};
_ ->
{error, xmpp:err_forbidden(
- <<"Owner privileges required">>, ?MYLANG)}
+ <<"Owner privileges required">>, ejabberd_config:get_mylang())}
end
end,
case transaction(Host, Node, Action, sync_dirty) of
{error, extended_error(xmpp:err_feature_not_implemented(),
err_unsupported('manage-subscriptions'))};
Affiliation /= owner ->
- {error, xmpp:err_forbidden(<<"Owner privileges required">>, ?MYLANG)};
+ {error, xmpp:err_forbidden(<<"Owner privileges required">>, ejabberd_config:get_mylang())};
true ->
node_call(Host, Type, get_node_subscriptions, [Nidx])
end
end;
_ ->
{error, xmpp:err_forbidden(
- <<"Owner privileges required">>, ?MYLANG)}
+ <<"Owner privileges required">>, ejabberd_config:get_mylang())}
end
end,
{aborted, Reason} ->
?ERROR_MSG("transaction return internal error: ~p~n", [{aborted, Reason}]),
ErrTxt = <<"Database failure">>,
- {error, xmpp:err_internal_server_error(ErrTxt, ?MYLANG)}
+ {error, xmpp:err_internal_server_error(ErrTxt, ejabberd_config:get_mylang())}
end;
_ ->
Fun()
{error, Error};
{aborted, Reason} ->
?ERROR_MSG("transaction return internal error: ~p~n", [{aborted, Reason}]),
- {error, xmpp:err_internal_server_error(<<"Database failure">>, ?MYLANG)};
+ {error, xmpp:err_internal_server_error(<<"Database failure">>, ejabberd_config:get_mylang())};
Other ->
?ERROR_MSG("transaction return internal error: ~p~n", [Other]),
- {error, xmpp:err_internal_server_error(<<"Database failure">>, ?MYLANG)}
+ {error, xmpp:err_internal_server_error(<<"Database failure">>, ejabberd_config:get_mylang())}
end.
%%%% helpers
%% For IQ callbacks
-export([delete_session/3]).
--include("ejabberd.hrl").
-include("ejabberd_commands.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
sql -> {sql, Host};
Other -> {Other, global}
end
- end, ?MYHOSTS)),
+ end, ejabberd_config:get_myhosts())),
Results = lists:map(
fun({DBType, Host}) ->
Mod = gen_mod:db_mod(DBType, ?MODULE),
transform_options/1, transform_module_options/1,
mod_opt_type/1, mod_options/1, opt_type/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([start/2, stop/1, reload/3, process/2, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
mod_opt_type/1, mod_options/1, set_roster/1, del_roster/3,
depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
of
{<<"">>, _} -> <<"">>;
{CUser, CServer} ->
- case lists:member(CServer, ?MYHOSTS) of
+ case lists:member(CServer, ejabberd_config:get_myhosts()) of
false -> <<"">>;
true ->
<<"/admin/server/", CServer/binary, "/user/",
s2s_in_packet/2, s2s_out_packet/2, s2s_in_recv/3,
s2s_in_features/2, s2s_out_init/2, s2s_out_closed/2]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
-export([start/2, stop/1, log_user_send/1, mod_options/1,
log_user_receive/1, mod_opt_type/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
is_user_in_group/3, add_user_to_group/3, opts_to_binary/1,
remove_user_from_group/3, mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
out_subscription/1, mod_opt_type/1, mod_options/1,
opt_type/1, depends/2, transform_module_options/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_roster.hrl").
-export([start/2, stop/1, reload/3, process_local_iq/1,
process_sm_iq/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
message_out/2, request/2, request/3, response/2,
locate/1, mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include_lib("esip/include/esip.hrl").
%%%===================================================================
ejabberd:start_app(esip),
esip:set_config_value(max_server_transactions, 10000),
esip:set_config_value(max_client_transactions, 10000),
- esip:set_config_value(software, <<"ejabberd ", (?VERSION)/binary>>),
+ esip:set_config_value(
+ software, <<"ejabberd ", (ejabberd_config:get_version())/binary>>),
esip:set_config_value(module, ?MODULE),
Spec = {mod_sip_registrar, {mod_sip_registrar, start_link, []},
transient, 2000, worker, [mod_sip_registrar]},
handle_sync_event/4, handle_info/3, terminate/3,
code_change/4]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include_lib("esip/include/esip.hrl").
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include_lib("esip/include/esip.hrl").
-export([start/2, stop/1, reload/3, process_iq/1,
mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
ejabberd_auth:count_users(Host)
+ Total
end,
- 0, ?MYHOSTS),
+ 0, ejabberd_config:get_myhosts()),
?STATVAL((integer_to_binary(NumUsers)),
<<"users">>);
get_local_stat(_Server, _, Name) ->
%% adjust pending session timeout / access queue
-export([get_resume_timeout/1, set_resume_timeout/2, queue_find/2]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
-include("p1_queue.hrl").
-export([start/2, stop/1, reload/3, process_local_iq/1,
mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([init/1, handle_call/3, handle_cast/2,
handle_info/2, terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-include("mod_vcard.hrl").
Txt = <<"Value 'set' of 'type' attribute is not allowed">>,
xmpp:make_error(IQ, xmpp:err_not_allowed(Txt, Lang));
process_local_iq(#iq{type = get, lang = Lang} = IQ) ->
- Desc = translate:translate(Lang, <<"Erlang Jabber Server">>),
xmpp:make_iq_result(
IQ, #vcard_temp{fn = <<"ejabberd">>,
- url = ?EJABBERD_URI,
- desc = <<Desc/binary, $\n, ?COPYRIGHT>>,
+ url = ejabberd_config:get_uri(),
+ desc = misc:get_descr(Lang, <<"Erlang Jabber Server">>),
bday = <<"2002-11-16">>}).
-spec process_sm_iq(iq()) -> iq().
process_sm_iq(#iq{type = set, lang = Lang, from = From} = IQ) ->
#jid{lserver = LServer} = From,
- case lists:member(LServer, ?MYHOSTS) of
+ case lists:member(LServer, ejabberd_config:get_myhosts()) of
true ->
case ejabberd_hooks:run_fold(vcard_iq_set, LServer, IQ, []) of
drop -> ignore;
Txt = <<"Value 'set' of 'type' attribute is not allowed">>,
xmpp:make_error(IQ, xmpp:err_not_allowed(Txt, Lang));
process_vcard(#iq{type = get, lang = Lang} = IQ) ->
- Desc = translate:translate(Lang, <<"ejabberd vCard module">>),
xmpp:make_iq_result(
IQ, #vcard_temp{fn = <<"ejabberd/mod_vcard">>,
- url = ?EJABBERD_URI,
- desc = <<Desc/binary, $\n, ?COPYRIGHT>>}).
+ url = ejabberd_config:get_uri(),
+ desc = misc:get_descr(Lang, <<"ejabberd vCard module">>)}).
-spec process_search(iq()) -> iq().
process_search(#iq{type = get, to = To, lang = Lang} = IQ) ->
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("eldap.hrl").
-include("xmpp.hrl").
Attrs,
VCardMap,
{Username,
- ?MYNAME})}
+ ejabberd_config:get_myname()})}
end,
SearchReported),
J = <<Username/binary, $@, LServer/binary>>,
-export([need_transform/1, transform/1]).
-export([mod_opt_type/1, mod_options/1]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("mod_vcard.hrl").
-include("logger.hrl").
find_my_host(LServer) ->
Parts = str:tokens(LServer, <<".">>),
- find_my_host(Parts, ?MYHOSTS).
+ find_my_host(Parts, ejabberd_config:get_myhosts()).
-find_my_host([], _Hosts) -> ?MYNAME;
+find_my_host([], _Hosts) -> ejabberd_config:get_myname();
find_my_host([_ | Tail] = Parts, Hosts) ->
Domain = parts_to_string(Parts),
case lists:member(Domain, Hosts) of
%% API
-export([compute_hash/1]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-export([start/2, stop/1, reload/3, process_local_iq/1,
mod_opt_type/1, mod_options/1, depends/2]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
false -> undefined
end,
xmpp:make_iq_result(IQ, #version{name = <<"ejabberd">>,
- ver = ?VERSION,
+ ver = ejabberd_config:get_version(),
os = OS}).
get_os() ->
collection ->
Txt = <<"Publishing items to collection node is not allowed">>,
{error, mod_pubsub:extended_error(
- xmpp:err_not_allowed(Txt, ?MYLANG),
+ xmpp:err_not_allowed(Txt, ejabberd_config:get_mylang()),
mod_pubsub:err_unsupported('publish'))};
_ ->
node_hometree:publish_item(Nidx, Publisher, Model,
{selected, []} ->
{error, xmpp:err_item_not_found()};
{'EXIT', _} ->
- {error, xmpp:err_internal_server_error(<<"Database failure">>, ?MYLANG)}
+ {error, xmpp:err_internal_server_error(<<"Database failure">>, ejabberd_config:get_mylang())}
end.
get_item(Nidx, ItemId, JID, AccessModel, PresenceSubscription, RosterGroup, _SubId) ->
Other -> Other
end;
_ ->
- {error, xmpp:err_conflict(<<"Node already exists">>, ?MYLANG)}
+ {error, xmpp:err_conflict(<<"Node already exists">>, ejabberd_config:get_mylang())}
end.
delete_node(Key, Node) ->
case find_node(Key, Node) of
false ->
- {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)};
+ {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())};
Record ->
lists:foreach(fun (#pubsub_node{options = Opts} = Child) ->
NewOpts = remove_config_parent(Node, Opts),
get_node(Host, Node) ->
case find_node(Host, Node) of
- false -> {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)};
+ false -> {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())};
Record -> Record
end.
get_parentnodes(Host, Node, _From) ->
case find_node(Host, Node) of
false ->
- {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)};
+ {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())};
#pubsub_node{parents = Parents} ->
Q = qlc:q([N
|| #pubsub_node{nodeid = {NHost, NNode}} = N
get_subnodes_helper(Host, <<>>);
get_subnodes(Host, Node) ->
case find_node(Host, Node) of
- false -> {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)};
+ false -> {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())};
_ -> get_subnodes_helper(Host, Node)
end.
validate_parentage(Key, Owners, [ParentID | T]) ->
case find_node(Key, ParentID) of
false ->
- {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)};
+ {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())};
#pubsub_node{owners = POwners, options = POptions} ->
NodeType = find_opt(node_type, ?DEFAULT_NODETYPE, POptions),
MutualOwners = [O || O <- Owners, PO <- POwners, O == PO],
get_node(Host, Node) ->
case mnesia:read({pubsub_node, {Host, Node}}) of
[Record] when is_record(Record, pubsub_node) -> Record;
- _ -> {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)}
+ _ -> {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())}
end.
get_node(Nidx) ->
case mnesia:index_read(pubsub_node, Nidx, #pubsub_node.id) of
[Record] when is_record(Record, pubsub_node) -> Record;
- _ -> {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)}
+ _ -> {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())}
end.
get_nodes(Host, _From) ->
{error, xmpp:err_forbidden()}
end;
_ ->
- {error, xmpp:err_conflict(<<"Node already exists">>, ?MYLANG)}
+ {error, xmpp:err_conflict(<<"Node already exists">>, ejabberd_config:get_mylang())}
end.
delete_node(Host, Node) ->
case Nidx of
none ->
Txt = <<"Node index not found">>,
- {error, xmpp:err_internal_server_error(Txt, ?MYLANG)};
+ {error, xmpp:err_internal_server_error(Txt, ejabberd_config:get_mylang())};
_ ->
lists:foreach(fun ({Key, Value}) ->
SKey = iolist_to_binary(atom_to_list(Key)),
{selected, [RItem]} ->
raw_to_node(Host, RItem);
{'EXIT', _Reason} ->
- {error, xmpp:err_internal_server_error(<<"Database failure">>, ?MYLANG)};
+ {error, xmpp:err_internal_server_error(<<"Database failure">>, ejabberd_config:get_mylang())};
_ ->
- {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)}
+ {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())}
end.
get_node(Nidx) ->
{selected, [{Host, Node, Parent, Type}]} ->
raw_to_node(Host, {Node, Parent, Type, Nidx});
{'EXIT', _Reason} ->
- {error, xmpp:err_internal_server_error(<<"Database failure">>, ?MYLANG)};
+ {error, xmpp:err_internal_server_error(<<"Database failure">>, ejabberd_config:get_mylang())};
_ ->
- {error, xmpp:err_item_not_found(<<"Node not found">>, ?MYLANG)}
+ {error, xmpp:err_item_not_found(<<"Node not found">>, ejabberd_config:get_mylang())}
end.
get_nodes(Host, _From) ->
{error, xmpp:err_forbidden()}
end;
{result, _} ->
- {error, xmpp:err_conflict(<<"Node already exists">>, ?MYLANG)};
+ {error, xmpp:err_conflict(<<"Node already exists">>, ejabberd_config:get_mylang())};
{error, db_fail} ->
- {error, xmpp:err_internal_server_error(<<"Database failure">>, ?MYLANG)}
+ {error, xmpp:err_internal_server_error(<<"Database failure">>, ejabberd_config:get_mylang())}
end.
delete_node(Host, Node) ->
%% API
-export([from_dir/1]).
--include("ejabberd.hrl").
+-include("scram.hrl").
-include("xmpp.hrl").
-include("logger.hrl").
-include("mod_roster.hrl").
RoomCfg = convert_room_config(Data),
case proplists:get_bool(<<"persistent">>, Config) of
true when RoomJID /= error ->
- mod_muc:store_room(?MYNAME, RoomJID#jid.lserver,
+ mod_muc:store_room(ejabberd_config:get_myname(), RoomJID#jid.lserver,
RoomJID#jid.luser, RoomCfg);
_ ->
ok
N when is_integer(N) -> N;
_ ->
Txt = {<<"Value of '~s' should be integer">>, [Opt]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}
end;
val_xfield(expire = Opt, [Val]) ->
try xmpp_util:decode_timestamp(Val)
catch _:{bad_timestamp, _} ->
Txt = {<<"Value of '~s' should be datetime string">>, [Opt]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}
end;
val_xfield(include_body = Opt, [Val]) -> xopt_to_bool(Opt, Val);
val_xfield(show_values, Vals) -> Vals;
N when is_integer(N) -> N;
_ ->
Txt = {<<"Value of '~s' should be integer">>, [Opt]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}
end.
%% Convert XForm booleans to Erlang booleans.
xopt_to_bool(_, <<"true">>) -> true;
xopt_to_bool(Option, _) ->
Txt = {<<"Value of '~s' should be boolean">>, [Option]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}.
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}.
%% Return a field for an XForm for Key, with data filled in, if
%% applicable, from Options.
N when is_integer(N) -> N;
_ ->
Txt = {<<"Value of '~s' should be integer">>, [Opt]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}
end;
val_xfield(expire = Opt, [Val]) ->
try xmpp_util:decode_timestamp(Val)
catch _:{bad_timestamp, _} ->
Txt = {<<"Value of '~s' should be datetime string">>, [Opt]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}
end;
val_xfield(include_body = Opt, [Val]) -> xopt_to_bool(Opt, Val);
val_xfield(show_values, Vals) -> Vals;
N when is_integer(N) -> N;
_ ->
Txt = {<<"Value of '~s' should be integer">>, [Opt]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}
end.
%% Convert XForm booleans to Erlang booleans.
xopt_to_bool(_, <<"true">>) -> true;
xopt_to_bool(Option, _) ->
Txt = {<<"Value of '~s' should be boolean">>, [Option]},
- {error, xmpp:err_not_acceptable(Txt, ?MYLANG)}.
+ {error, xmpp:err_not_acceptable(Txt, ejabberd_config:get_mylang())}.
%% Return a field for an XForm for Key, with data filled in, if
%% applicable, from Options.
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-record(maxrate, {maxrate = 0 :: integer(),
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--include("ejabberd.hrl").
-include("logger.hrl").
-include_lib("kernel/include/file.hrl").
end.
translate(Msg) ->
- case ?MYLANG of
+ case ejabberd_config:get_mylang() of
<<"en">> -> Msg;
Lang ->
LLang = ascii_tolower(Lang),
-spec get_msg_dir() -> {calendar:datetime(), file:filename()}.
get_msg_dir() ->
- Dir = case os:getenv("EJABBERD_MSGS_PATH") of
- false ->
- case code:priv_dir(ejabberd) of
- {error, _} -> ?MSGS_DIR;
- Path -> filename:join([Path, "msgs"])
- end;
- Path -> Path
- end,
+ Dir = misc:msgs_dir(),
case file:read_file_info(Dir) of
{ok, #file_info{mtime = MTime}} ->
{MTime, Dir};
-module(win32_dns).
-export([get_nameservers/0]).
--include("ejabberd.hrl").
-include("logger.hrl").
-define(IF_KEY, "\\hklm\\system\\CurrentControlSet\\Services\\TcpIp\\Parameters\\Interfaces").
pp/1,
sockname/1, peername/1]).
--include("ejabberd.hrl").
-include("xmpp.hrl").
-include("logger.hrl").