fix(metablogizer): Use Python for reliable mitmproxy route updates
Replace fragile sed-based JSON manipulation with Python for adding mitmproxy routes. The new add_mitmproxy_route() helper function: - Updates both /srv/mitmproxy/ and /srv/mitmproxy-in/ routes files - Uses proper JSON parsing instead of string substitution - Ensures sites are immediately accessible after one-click deploy Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
4f40316757
commit
2b7850379d
@ -97,6 +97,30 @@ reload_haproxy() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Add mitmproxy route for domain -> backend mapping
|
||||||
|
add_mitmproxy_route() {
|
||||||
|
local domain="$1"
|
||||||
|
local address="$2"
|
||||||
|
local port="$3"
|
||||||
|
|
||||||
|
# Add to both mitmproxy and mitmproxy-in routes files
|
||||||
|
for routes_file in /srv/mitmproxy/haproxy-routes.json /srv/mitmproxy-in/haproxy-routes.json; do
|
||||||
|
[ -f "$routes_file" ] || continue
|
||||||
|
python3 - "$routes_file" "$domain" "$address" "$port" 2>/dev/null <<'PYEOF'
|
||||||
|
import json, sys
|
||||||
|
routes_file, domain, address, port = sys.argv[1], sys.argv[2], sys.argv[3], int(sys.argv[4])
|
||||||
|
try:
|
||||||
|
with open(routes_file) as f:
|
||||||
|
routes = json.load(f)
|
||||||
|
routes[domain] = [address, port]
|
||||||
|
with open(routes_file, 'w') as f:
|
||||||
|
json.dump(routes, f, indent=2)
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
PYEOF
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# Get .onion address for a site if Tor hidden service exists
|
# Get .onion address for a site if Tor hidden service exists
|
||||||
get_onion_address() {
|
get_onion_address() {
|
||||||
local site_name="$1"
|
local site_name="$1"
|
||||||
@ -439,18 +463,7 @@ EOF
|
|||||||
uci commit haproxy
|
uci commit haproxy
|
||||||
|
|
||||||
# Add mitmproxy route for WAF inspection
|
# Add mitmproxy route for WAF inspection
|
||||||
local routes_file="/srv/mitmproxy-in/haproxy-routes.json"
|
add_mitmproxy_route "$domain" "$server_address" "$server_port"
|
||||||
if [ -f "$routes_file" ]; then
|
|
||||||
# Add route: domain -> [server_address, server_port]
|
|
||||||
local tmp_routes="/tmp/routes_update_$$.json"
|
|
||||||
jsonfilter -i "$routes_file" -e '@' 2>/dev/null | \
|
|
||||||
sed "s/}$/,\"$domain\":[\"$server_address\",$server_port]}/" > "$tmp_routes" 2>/dev/null
|
|
||||||
if [ -s "$tmp_routes" ]; then
|
|
||||||
mv "$tmp_routes" "$routes_file"
|
|
||||||
else
|
|
||||||
rm -f "$tmp_routes"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Regenerate HAProxy config and reload
|
# Regenerate HAProxy config and reload
|
||||||
reload_haproxy &
|
reload_haproxy &
|
||||||
@ -1163,18 +1176,7 @@ EOF
|
|||||||
uci commit haproxy
|
uci commit haproxy
|
||||||
|
|
||||||
# Add mitmproxy route for WAF inspection
|
# Add mitmproxy route for WAF inspection
|
||||||
local routes_file="/srv/mitmproxy-in/haproxy-routes.json"
|
add_mitmproxy_route "$domain" "$server_address" "$port"
|
||||||
if [ -f "$routes_file" ]; then
|
|
||||||
# Add route: domain -> [server_address, port]
|
|
||||||
local tmp_routes="/tmp/routes_update_$$.json"
|
|
||||||
jsonfilter -i "$routes_file" -e '@' 2>/dev/null | \
|
|
||||||
sed "s/}$/,\"$domain\":[\"$server_address\",$port]}/" > "$tmp_routes" 2>/dev/null
|
|
||||||
if [ -s "$tmp_routes" ]; then
|
|
||||||
mv "$tmp_routes" "$routes_file"
|
|
||||||
else
|
|
||||||
rm -f "$tmp_routes"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
reload_haproxy &
|
reload_haproxy &
|
||||||
fi
|
fi
|
||||||
@ -1961,18 +1963,7 @@ EOF
|
|||||||
uci commit haproxy
|
uci commit haproxy
|
||||||
|
|
||||||
# Add mitmproxy route for WAF inspection
|
# Add mitmproxy route for WAF inspection
|
||||||
local routes_file="/srv/mitmproxy-in/haproxy-routes.json"
|
add_mitmproxy_route "$domain" "$server_address" "$port"
|
||||||
if [ -f "$routes_file" ]; then
|
|
||||||
# Add route: domain -> [server_address, port]
|
|
||||||
local tmp_routes="/tmp/routes_update_$$.json"
|
|
||||||
jsonfilter -i "$routes_file" -e '@' 2>/dev/null | \
|
|
||||||
sed "s/}$/,\"$domain\":[\"$server_address\",$port]}/" > "$tmp_routes" 2>/dev/null
|
|
||||||
if [ -s "$tmp_routes" ]; then
|
|
||||||
mv "$tmp_routes" "$routes_file"
|
|
||||||
else
|
|
||||||
rm -f "$tmp_routes"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
reload_haproxy &
|
reload_haproxy &
|
||||||
fi
|
fi
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user