mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-05-21 18:12:33 +02:00
+stylua
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
+46
-44
@@ -1,6 +1,6 @@
|
||||
Plugin = {
|
||||
name = "IP Filter (Whitelist/Blacklist)",
|
||||
description = [[
|
||||
name = "IP Filter (Whitelist/Blacklist)",
|
||||
description = [[
|
||||
Checks that the proxy's outbound IP is in an allowed list on startup.
|
||||
|
||||
**Config** (YAML):
|
||||
@@ -11,61 +11,63 @@ ips:
|
||||
```
|
||||
- If no IPs are configured, the check is skipped.
|
||||
]],
|
||||
on_start = { sync = false },
|
||||
disable_by_default = true,
|
||||
on_start = { sync = false },
|
||||
disable_by_default = true,
|
||||
}
|
||||
|
||||
local whitelist = {}
|
||||
local blacklist = {}
|
||||
|
||||
function on_config()
|
||||
whitelist, blacklist = {}, {}
|
||||
local cfg = get_config()
|
||||
if cfg and cfg.ips then
|
||||
for _, entry in ipairs(cfg.ips) do
|
||||
local trimmed = entry:match("^%s*(.-)%s*$")
|
||||
if trimmed ~= "" then
|
||||
if trimmed:sub(1, 1) == "!" then
|
||||
local ip = trimmed:sub(2):match("^%s*(.-)%s*$")
|
||||
if ip ~= "" then table.insert(blacklist, ip) end
|
||||
else
|
||||
table.insert(whitelist, trimmed)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
whitelist, blacklist = {}, {}
|
||||
local cfg = get_config()
|
||||
if cfg and cfg.ips then
|
||||
for _, entry in ipairs(cfg.ips) do
|
||||
local trimmed = entry:match("^%s*(.-)%s*$")
|
||||
if trimmed ~= "" then
|
||||
if trimmed:sub(1, 1) == "!" then
|
||||
local ip = trimmed:sub(2):match("^%s*(.-)%s*$")
|
||||
if ip ~= "" then
|
||||
table.insert(blacklist, ip)
|
||||
end
|
||||
else
|
||||
table.insert(whitelist, trimmed)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function on_start()
|
||||
if #whitelist == 0 and #blacklist == 0 then
|
||||
return
|
||||
end
|
||||
if #whitelist == 0 and #blacklist == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local result, err = shell_pipe("curl -sf https://api.ipify.org 2>/dev/null")
|
||||
result = result and result:match("^%s*(.-)%s*$") or nil
|
||||
local result, err = shell_pipe("curl -sf https://api.ipify.org 2>/dev/null")
|
||||
result = result and result:match("^%s*(.-)%s*$") or nil
|
||||
|
||||
if err or not result or result == "" then
|
||||
log("could not determine outbound IP, skipping check")
|
||||
notif("IP Filter", "Could not determine outbound IP, skipping check", "warning")
|
||||
return
|
||||
end
|
||||
if err or not result or result == "" then
|
||||
log("could not determine outbound IP, skipping check")
|
||||
notif("IP Filter", "Could not determine outbound IP, skipping check", "warning")
|
||||
return
|
||||
end
|
||||
|
||||
for _, ip in ipairs(blacklist) do
|
||||
if result == ip then
|
||||
notif("IP Filter", "Outbound IP " .. result .. " is blacklisted!", "error")
|
||||
return
|
||||
end
|
||||
end
|
||||
for _, ip in ipairs(blacklist) do
|
||||
if result == ip then
|
||||
notif("IP Filter", "Outbound IP " .. result .. " is blacklisted!", "error")
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if #whitelist == 0 then
|
||||
return
|
||||
end
|
||||
if #whitelist == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
for _, ip in ipairs(whitelist) do
|
||||
if result == ip then
|
||||
return
|
||||
end
|
||||
end
|
||||
for _, ip in ipairs(whitelist) do
|
||||
if result == ip then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
notif("IP Filter", "Outbound IP " .. result .. " is not in the whitelist!", "error")
|
||||
notif("IP Filter", "Outbound IP " .. result .. " is not in the whitelist!", "error")
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user