forked from disco-v8/Ban4ip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathban4ipd_exec.php
71 lines (66 loc) · 2.84 KB
/
ban4ipd_exec.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// ------------------------------------------------------------
//
// BAN for IP
//
// T.Kabu/MyDNS.JP http://www.MyDNS.JP/
// Future Versatile Group http://www.fvg-on.net/
//
// ------------------------------------------------------------
?>
<?php
// ----------------------------------------------------------------------
// Sub Routine
// ----------------------------------------------------------------------
function ban4ip_exec($BAN4IPD_CONF, $TARGET_CMD)
{
// 既存のログメッセージがあるなら
if (isset($BAN4IPD_CONF['log_msg']))
{
// 既存のログメッセージ待避
$LOG_MSG = $BAN4IPD_CONF['log_msg'];
}
// ないなら
else
{
$LOG_MSG = '';
}
// 指定されたコマンド(exec_befor/after_ban/unban)が設定されていないなら
if (!isset($BAN4IPD_CONF[$TARGET_CMD]) || (isset($BAN4IPD_CONF[$TARGET_CMD]) && strlen($BAN4IPD_CONF[$TARGET_CMD]) == 0))
{
// コマンド実行処理を抜ける
return $BAN4IPD_CONF;
}
// 指定されたコマンドをスペースで配列に変換
$EXEC_CMD = preg_split("/[\s\t]+/", $BAN4IPD_CONF[$TARGET_CMD]);
// 指定されたコマンド(exec_befor/after_ban/unban)が実行できないなら
if (!is_executable($EXEC_CMD[0]))
{
// 指定されたコマンドが実行できない旨のメッセージを設定
$BAN4IPD_CONF['log_msg'] = date("Y-m-d H:i:s", $BAN4IPD_CONF['logtime'])." ban4ip[".getmypid()."]: WARN [".$BAN4IPD_CONF['target_service']."] Cannot execute ".$TARGET_CMD."!? (".$BAN4IPD_CONF[$TARGET_CMD].")"."\n";
// 親プロセスに送信
ban4ip_sendmsg($BAN4IPD_CONF);
// 既存のログメッセージを戻す
$BAN4IPD_CONF['log_msg'] = $LOG_MSG;
// コマンド実行処理を抜ける
return $BAN4IPD_CONF;
}
// 指定されたコマンドを実行
$RESULT = system($BAN4IPD_CONF[$TARGET_CMD].' --source '.$TARGET_CONF['target_address'].' --proto '.$TARGET_CONF['target_protcol'].' --dport '.$TARGET_CONF['target_port'].' --jump '.$TARGET_CONF['target_rule']);
// 指定されたコマンドを実行した旨のメッセージを設定
$BAN4IPD_CONF['log_msg'] = date("Y-m-d H:i:s", $BAN4IPD_CONF['logtime'])." ban4ip[".getmypid()."]: NOTICE [".$BAN4IPD_CONF['target_service']."] EXEC ".$TARGET_CMD." \"".$BAN4IPD_CONF[$TARGET_CMD]."\"";
// 実行結果があるなら
if (strlen($RESULT))
{
// 一部を返す
$BAN4IPD_CONF['log_msg'] .=" (".substr($RESULT, 0, 32).")";
}
$BAN4IPD_CONF['log_msg'] .= "\n";
// 親プロセスに送信
ban4ip_sendmsg($BAN4IPD_CONF);
// 既存のログメッセージを戻す
$BAN4IPD_CONF['log_msg'] = $LOG_MSG;
// コマンド実行処理を抜ける
return $BAN4IPD_CONF;
}
?>