mirror of
https://github.com/Cheviiot/Sphera.git
synced 2026-08-03 15:57:21 +00:00
- Redesign store README as a minimal storefront - Refine app README and remove technical clutter - Update Sphera icon with refined vector styling - Use original v2rayA app icon - Use raw GitHub URL for v2rayA icon per Umbrel Community Store spec - Add custom v2rayA image build for UmbrelOS nf_tables iptables
68 lines
2.6 KiB
Docker
68 lines
2.6 KiB
Docker
FROM mzz2017/v2raya:v2.4.9@sha256:47f9acf99b23f19d804ab15303e8a7df7f66913d14c5ce0b39936d036dbb8500
|
|
|
|
USER root
|
|
|
|
# v2rayA inside Docker hard-codes "iptables-legacy" and "ip6tables-legacy".
|
|
# UmbrelOS ships iptables 1.8.x with nf_tables backend, and v2rayA's redirect
|
|
# mode emits REDIRECT rules without a protocol (-p), which both backends reject.
|
|
# Replace the legacy binaries with small wrappers that forward to the modern
|
|
# iptables and patch the problematic REDIRECT rule on the fly.
|
|
RUN set -eux; \
|
|
rm -f /sbin/iptables-legacy /usr/sbin/iptables-legacy \
|
|
/sbin/ip6tables-legacy /usr/sbin/ip6tables-legacy; \
|
|
printf '%s\n' \
|
|
'#!/bin/sh' \
|
|
'has_redirect=0' \
|
|
'has_proto=0' \
|
|
'for arg in "$@"; do' \
|
|
' case "$arg" in' \
|
|
' -j) next_is_target=1 ;;' \
|
|
' REDIRECT) if [ "$next_is_target" = 1 ]; then has_redirect=1; fi; next_is_target=0 ;;' \
|
|
' -p) has_proto=1 ;;' \
|
|
' esac' \
|
|
'done' \
|
|
'if [ "$has_redirect" = 1 ] && [ "$has_proto" = 0 ]; then' \
|
|
' new_args=""' \
|
|
' inserted=0' \
|
|
' for arg in "$@"; do' \
|
|
' if [ "$inserted" = 0 ] && [ "$arg" = "-j" ]; then' \
|
|
' new_args="$new_args -p tcp"' \
|
|
' inserted=1' \
|
|
' fi' \
|
|
' new_args="$new_args $arg"' \
|
|
' done' \
|
|
' set -- $new_args' \
|
|
'fi' \
|
|
'exec iptables "$@"' \
|
|
> /sbin/iptables-legacy; \
|
|
printf '%s\n' \
|
|
'#!/bin/sh' \
|
|
'has_redirect=0' \
|
|
'has_proto=0' \
|
|
'for arg in "$@"; do' \
|
|
' case "$arg" in' \
|
|
' -j) next_is_target=1 ;;' \
|
|
' REDIRECT) if [ "$next_is_target" = 1 ]; then has_redirect=1; fi; next_is_target=0 ;;' \
|
|
' -p) has_proto=1 ;;' \
|
|
' esac' \
|
|
'done' \
|
|
'if [ "$has_redirect" = 1 ] && [ "$has_proto" = 0 ]; then' \
|
|
' new_args=""' \
|
|
' inserted=0' \
|
|
' for arg in "$@"; do' \
|
|
' if [ "$inserted" = 0 ] && [ "$arg" = "-j" ]; then' \
|
|
' new_args="$new_args -p tcp"' \
|
|
' inserted=1' \
|
|
' fi' \
|
|
' new_args="$new_args $arg"' \
|
|
' done' \
|
|
' set -- $new_args' \
|
|
'fi' \
|
|
'exec ip6tables "$@"' \
|
|
> /sbin/ip6tables-legacy; \
|
|
chmod +x /sbin/iptables-legacy /sbin/ip6tables-legacy; \
|
|
ln -s /sbin/iptables-legacy /usr/sbin/iptables-legacy 2>/dev/null || true; \
|
|
ln -s /sbin/ip6tables-legacy /usr/sbin/ip6tables-legacy 2>/dev/null || true
|
|
|
|
ENTRYPOINT ["v2raya"]
|