From 6c564775c4cfa75ae5191baf3fbf8b862fb98d31 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Mon, 9 Jan 2017 17:22:31 +0300 Subject: [PATCH] Remove unused mod_ip_blacklist module --- src/mod_ip_blacklist.erl | 139 --------------------------------------- 1 file changed, 139 deletions(-) delete mode 100644 src/mod_ip_blacklist.erl diff --git a/src/mod_ip_blacklist.erl b/src/mod_ip_blacklist.erl deleted file mode 100644 index ab17a8891..000000000 --- a/src/mod_ip_blacklist.erl +++ /dev/null @@ -1,139 +0,0 @@ -%%%---------------------------------------------------------------------- -%%% File : mod_ip_blacklist.erl -%%% Author : Mickael Remond -%%% Purpose : Download blacklists from ProcessOne -%%% Created : 5 May 2008 by Mickael Remond -%%% Usage : Add the following line in modules section of ejabberd.cfg: -%%% {mod_ip_blacklist, []} -%%% -%%% -%%% ejabberd, Copyright (C) 2002-2016 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program is distributed in the hope that it will be useful, -%%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License along -%%% with this program; if not, write to the Free Software Foundation, Inc., -%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -%%% -%%%---------------------------------------------------------------------- - --module(mod_ip_blacklist). - --author('mremond@process-one.net'). - --behaviour(gen_mod). - -%% API: --export([start/2, preinit/2, init/1, stop/1]). - --export([update_bl_c2s/0]). - --export([is_ip_in_c2s_blacklist/3, mod_opt_type/1, depends/2]). - --include("ejabberd.hrl"). --include("logger.hrl"). - --define(PROCNAME, ?MODULE). - --define(BLC2S, - <<"http://xaai.process-one.net/bl_c2s.txt">>). - --define(UPDATE_INTERVAL, 6). - --record(state, {timer}). - -%% Start once for all vhost --record(bl_c2s, {ip = <<"">> :: binary()}). - -start(_Host, _Opts) -> - Pid = spawn(?MODULE, preinit, [self(), #state{}]), - receive {ok, Pid, PreinitResult} -> PreinitResult end. - -preinit(Parent, State) -> - Pid = self(), - try register(?PROCNAME, Pid) of - true -> Parent ! {ok, Pid, true}, init(State) - catch - error:_ -> Parent ! {ok, Pid, true} - end. - -depends(_Host, _Opts) -> - []. - -%% TODO: -stop(_Host) -> ok. - -init(State) -> - ets:new(bl_c2s, - [named_table, public, {keypos, #bl_c2s.ip}]), - update_bl_c2s(), - ejabberd_hooks:add(check_bl_c2s, ?MODULE, - is_ip_in_c2s_blacklist, 50), - timer:apply_interval(timer:hours(?UPDATE_INTERVAL), - ?MODULE, update_bl_c2s, []), - loop(State). - -%% Remove timer when stop is received. -loop(_State) -> receive stop -> ok end. - -%% Download blacklist file from ProcessOne XAAI -%% and update the table internal table -%% TODO: Support comment lines starting by % -update_bl_c2s() -> - ?INFO_MSG("Updating C2S Blacklist", []), - case p1_http:get(?BLC2S) of - {ok, 200, _Headers, Body} -> - IPs = str:tokens(iolist_to_binary(Body), <<"\n">>), - ets:delete_all_objects(bl_c2s), - lists:foreach(fun (IP) -> - ets:insert(bl_c2s, - #bl_c2s{ip = IP}) - end, - IPs); - {error, Reason} -> - ?ERROR_MSG("Cannot download C2S blacklist file. " - "Reason: ~p", - [Reason]) - end. - -%% Hook is run with: -%% ejabberd_hooks:run_fold(check_bl_c2s, false, [IP]), -%% Return: false: IP not blacklisted -%% true: IP is blacklisted -%% IPV4 IP tuple: --spec is_ip_in_c2s_blacklist( - {true, binary(), binary()} | false, - {inet:ip_address(), non_neg_integer()}, - binary()) -> {stop, {true, binary(), binary()}} | false. -is_ip_in_c2s_blacklist(_Val, IP, Lang) when is_tuple(IP) -> - BinaryIP = jlib:ip_to_list(IP), - case ets:lookup(bl_c2s, BinaryIP) of - [] -> %% Not in blacklist - false; - [_] -> - LogReason = io_lib:fwrite( - "This IP address is blacklisted in ~s", - [?BLC2S]), - ReasonT = io_lib:fwrite( - translate:translate( - Lang, - <<"This IP address is blacklisted in ~s">>), - [?BLC2S]), - {stop, {true, LogReason, ReasonT}} - end; -is_ip_in_c2s_blacklist(_Val, _IP, _Lang) -> false. - -%% TODO: -%% - For now, we do not kick user already logged on a given IP after -%% we update the blacklist. - - -mod_opt_type(_) -> [].