mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-05-20 17:52:33 +02:00
plugin's config is now in yaml
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
@@ -3,20 +3,26 @@ Plugin = {
|
||||
description = [[
|
||||
Inject custom headers into every intercepted request.
|
||||
|
||||
**Config**:
|
||||
- one 'Header-Name: value' per line.
|
||||
**Config** (YAML):
|
||||
```yaml
|
||||
headers:
|
||||
- "X-My-Header: myvalue"
|
||||
```
|
||||
]],
|
||||
on_request = { sync = true },
|
||||
}
|
||||
|
||||
local headers = {}
|
||||
|
||||
function on_config(config_text)
|
||||
function on_config()
|
||||
headers = {}
|
||||
for line in config_text:gmatch("[^\n]+") do
|
||||
local name, value = line:match("^([^:]+):%s*(.+)$")
|
||||
if name and value then
|
||||
table.insert(headers, { name = name, value = value })
|
||||
local cfg = get_config()
|
||||
if cfg and cfg.headers then
|
||||
for _, line in ipairs(cfg.headers) do
|
||||
local name, value = line:match("^([^:]+):%s*(.+)$")
|
||||
if name and value then
|
||||
table.insert(headers, { name = name, value = value })
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+20
-19
@@ -3,33 +3,34 @@ Plugin = {
|
||||
description = [[
|
||||
Checks that the proxy's outbound IP is in an allowed list on startup.
|
||||
|
||||
**Config**:
|
||||
- one IP per line
|
||||
- prefix with `!` for a blacklist entry (blocked)
|
||||
- prefix with `#` to comment it out (ignored)
|
||||
- if no IPs are configured, the check is skipped
|
||||
**Config** (YAML):
|
||||
```yaml
|
||||
ips:
|
||||
- "1.2.3.4" # whitelist entry
|
||||
- "!5.6.7.8" # blacklist entry (blocked)
|
||||
```
|
||||
- If no IPs are configured, the check is skipped.
|
||||
]],
|
||||
on_start = { sync = false },
|
||||
on_start = { sync = false },
|
||||
disable_by_default = true,
|
||||
}
|
||||
|
||||
local whitelist = {}
|
||||
local blacklist = {}
|
||||
|
||||
function on_config(config_text)
|
||||
whitelist = {}
|
||||
blacklist = {}
|
||||
|
||||
for line in config_text:gmatch("[^\n]+") do
|
||||
local trimmed = line:match("^%s*(.-)%s*$")
|
||||
if trimmed ~= "" and trimmed:sub(1, 1) ~= "#" then
|
||||
if trimmed:sub(1, 1) == "!" then
|
||||
local ip = trimmed:sub(2):match("^%s*(.-)%s*$")
|
||||
if ip ~= "" then
|
||||
table.insert(blacklist, ip)
|
||||
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
|
||||
else
|
||||
table.insert(whitelist, trimmed)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+28
-29
@@ -3,43 +3,40 @@ Plugin = {
|
||||
description = [[
|
||||
Auto-forward requests and exclude them from history based on patterns.
|
||||
|
||||
**Config**:
|
||||
- `pattern` - whitelist: only intercept matching requests/responses and history entries
|
||||
- `!pattern` - blacklist: skip matching requests/responses and history entries
|
||||
- `r:pattern` - whitelist for requests/responses only (history unaffected)
|
||||
- `r:!pattern` - blacklist for requests/responses only
|
||||
- `h:pattern` - whitelist for history entries only (requests unaffected)
|
||||
- `h:!pattern` - blacklist for history entries only
|
||||
- lines starting with `#` are comments
|
||||
**Config** (YAML):
|
||||
```yaml
|
||||
patterns:
|
||||
- "pattern" # whitelist: only intercept matching requests/responses and history
|
||||
- "!pattern" # blacklist: skip matching requests/responses and history
|
||||
- "r:pattern" # whitelist for requests/responses only
|
||||
- "r:!pattern" # blacklist for requests/responses only
|
||||
- "h:pattern" # whitelist for history only
|
||||
- "h:!pattern" # blacklist for history only
|
||||
```
|
||||
|
||||
Example (ignore static assets):
|
||||
```
|
||||
!%.css$
|
||||
!%.js$
|
||||
!%.png$
|
||||
```yaml
|
||||
patterns:
|
||||
- "!%.css$"
|
||||
- "!%.js$"
|
||||
- "!%.png$"
|
||||
```
|
||||
|
||||
Example (focus on mytarget.com, skip everything else):
|
||||
```
|
||||
mytarget%.com/
|
||||
Example (focus on mytarget.com):
|
||||
```yaml
|
||||
patterns:
|
||||
- "mytarget%.com/"
|
||||
```
|
||||
|
||||
Example (intercept mytarget.com except its static assets):
|
||||
```
|
||||
mytarget%.com/
|
||||
!%.css$
|
||||
!%.js$
|
||||
!%.png$
|
||||
```
|
||||
|
||||
Example (disable history: whitelist never matches any real URL):
|
||||
```
|
||||
h:^$
|
||||
Example (disable history):
|
||||
```yaml
|
||||
patterns:
|
||||
- "h:^$"
|
||||
```
|
||||
]],
|
||||
priority = 100,
|
||||
on_request = { sync = true },
|
||||
on_response = { sync = true },
|
||||
on_response = { sync = true },
|
||||
on_history_entry = { sync = true },
|
||||
}
|
||||
|
||||
@@ -50,11 +47,13 @@ local whitelist_req = {}
|
||||
local blacklist_hist = {}
|
||||
local whitelist_hist = {}
|
||||
|
||||
function on_config(config_text)
|
||||
function on_config()
|
||||
blacklist, whitelist = {}, {}
|
||||
blacklist_req, whitelist_req = {}, {}
|
||||
blacklist_hist, whitelist_hist = {}, {}
|
||||
for line in config_text:gmatch("[^\n]+") do
|
||||
local cfg = get_config()
|
||||
if not cfg or not cfg.patterns then return end
|
||||
for _, line in ipairs(cfg.patterns) do
|
||||
local trimmed = line:match("^%s*(.-)%s*$")
|
||||
if trimmed ~= "" and trimmed:sub(1, 1) ~= "#" then
|
||||
local scope = trimmed:match("^([rh]):")
|
||||
|
||||
Reference in New Issue
Block a user