Commit graph

1044 commits

Author SHA1 Message Date
Andrevich
f0b58fd26d Add link importer and shared URI parser
Add two new ucode scripts: import_link.uc (a headless importer for proxy share-links) and node_parse.uc (a shared parse_uri implementation). import_link.uc reads a link or a file of links, uses the shared parse_uri to convert each share-link into a homeproxy UCI node section, names sections with a stable FNV-1a hash, commits imported nodes (no grouphash) and emits JSON results. node_parse.uc implements comprehensive parsing for many URI schemes (vless, vmess, trojan, ss, hysteria, tuic, ssh, wireguard, naive, http(s), socks, etc.), performs validation, and surfaces sing-box feature checks for QUIC/UTLS support. This centralizes link parsing to avoid duplicate implementations and keeps the subscription importer and CLI/agent import in sync.
2026-06-17 00:56:50 +04:00
Andrevich
65fcc196cc Redact multi-line UCI and add connectivity checks
Update Russian translations for UI strings and improve diagnostics/reporting logic.

- po/ru/homeproxy.po: adjust Russian translations ("Direct IP", TLS phrasing, "passed").
- root/usr/share/rpcd/ucode/luci.homeproxy: harden UCI sanitization to handle multi-line option values (e.g. PEM keys) by redacting the option value and skipping subsequent continuation lines to avoid leaking secret bodies. Add a Connectivity section to generated diagnostics that probes several sites (Baidu, Google, YouTube, Yandex, Speedtest) using wget and records OK/FAIL for each site. Exit-IP rows are intentionally omitted.
2026-06-16 17:17:16 +04:00
Andrevich
9ead8879ee Update homeproxy.po 2026-06-16 16:46:52 +04:00
Andrevich
1c87de8fe0 Update Russian translations for routing terms
Refine Russian translations in po/ru/homeproxy.po: change "Routing Nodes" translation from "Узлы маршрутизации" to "Правила узлов", change "Routing Rules" from "Правила маршрутизации" to "Расширенные правила", and update the combined UI hint to use the new terms.
2026-06-16 16:30:19 +04:00
Andrevich
ca4209ae28 Add DNS choices, xhttp padding fix, cron & UI tweaks
Several small but important updates:

- UI (htdocs/luci-static/resources/view/homeproxy/client.js): add Cloudflare (1.1.1.1) and Google (8.8.8.8) DNS presets; restrict the "Same as main node" (main-out) option to non-custom routing modes and only when a main_node exists; always expose ByeDPI outbound when enabled; rename "Proxy filter mode" to "Proxy mode for devices" and add explanatory hints for gaming/global proxy IP options.
- Node UI (htdocs/luci-static/resources/view/homeproxy/node.js): fix closure variable (i -> k) to avoid iteration bug and shorten the probe hint text.
- Generator (root/etc/homeproxy/scripts/generate_client.uc): add xhttp_padding() to coerce disabled xhttp padding values ('0', '0-0' or empty) to the safe default '100-1000' and apply it when emitting sing-box/hiddify xhttp fields to prevent fatal core errors.
- Init script (root/etc/init.d/homeproxy): restore subscription auto-update cron entry on start when enabled (adds daily run at configured hour and restarts cron), reintroducing behavior lost during a prior init rewrite.
- Translations (po/ru/homeproxy.po): add and update Russian translations for the new/changed UI strings.

These changes prevent runtime failures for certain provider configs, restore missing auto-update behavior, improve UI clarity, and fix a node probing bug.
2026-06-16 16:25:18 +04:00
Andrevich
bfbf714da4 Add xhttp split-download and packet-up options
Introduce XHTTP packet-up controls and split-download support across UI, parsers and generators.

- htdocs/luci-static/resources/view/homeproxy/node.js: parse additional xhttp fields from links (scMaxEachPostBytes / sc_min_each_post_bytes and scMinPostsIntervalMs / sc_min_posts_interval_ms), add UI inputs for padding, packet-up limits and detailed split-download settings (host/path/server/port/SNI/ALPN/insecure).
- po/ru/homeproxy.po: add Russian translations for all new UI labels and help texts.
- root/etc/homeproxy/scripts/generate_client.uc: add xhttp_download() helper to build a per-core download transport, emit both camelCase (hiddify) and snake_case (sing-box) xhttp options, and attach the download section under the appropriate core-specific key.
- root/etc/homeproxy/scripts/update_subscriptions.uc: accept both dialects when parsing xhttp options (camelCase and snake_case) and handle both downloadSettings (hiddify) and download (sing-box), normalizing host/server/port and TLS/alpn/utls fields.

These changes ensure compatibility with both hiddify-core and sing-box dialects and expose finer-grained xhttp controls in the UI.
2026-06-16 12:09:10 +04:00
Andrevich
bb4f443627 generate_client: emit transport host with the correct JSON type per transport
sing-box's HTTP/2 (`http`) transport takes a host ARRAY, while xhttp and
httpupgrade take a single string. The UI's DynamicList (and some share-link
parsers) store http_host as a UCI list, which emitted a JSON array and crashed
hiddify-core on xhttp nodes ("json: cannot unmarshal array into Go value of type
string", #3).

Add a transport_host() helper that coerces the host to the correct shape per
transport at both generate sites. This fixes every input path (UI edit,
share-link, subscription), auto-repairs already-broken `list http_host` configs
on the next regeneration, and preserves HTTP/2 multi-host — without any UI or
migration changes.

Fixes #3

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:29:53 +04:00
Andrevich
6505ece16d Add connectivity tests, BYEDPI UI updates & fixes
Introduce a Connectivity diagnostics section (connection checks, exit IP / active node info) with new RPCs and live polling; move connection-check UI out of status into diagnostics and add translations. Add active URLTest node display and several routing/DNS UI tweaks for 'proxy_banned_ru' mode (russia-dns, secure-dns, main-out, byedpi-out). Rework ByeDPI presets: group presets by letter, add community presets, improve "Test all" flow with ordered execution, a Stop button, clearer progress/messages and updated translations. Fix template/comment text (replace crude QUIC comment), and harden client config generation by recognizing built-in DNS tags and skipping empty/dangling routing node outbounds to avoid crashes. Minor README_ru wording update and assorted i18n strings added.
2026-06-16 10:44:47 +04:00
Andrevich
96b4c7430a strToTime: preserve unit-bearing durations
Return null for empty inputs, coerce the input to a string, and only append 's' when the value doesn't already end with a letter (e.g. preserve "10s" or "1m30s"). This prevents emitting malformed values like "10ss" and documents the intent with a comment.
2026-06-15 15:17:16 +04:00
Andrevich
ab1bab1020 Add headless WireGuard/AmneziaWG import script
Add root/usr/share/homeproxy/scripts/import_conf.uc: a ucode script to import a WireGuard/AmneziaWG .conf into the homeproxy UCI 'node' section from the CLI/SSH. Parses Interface/Peer blocks (including AWG-specific fields), maps keys (private/public/preshared, endpoint host:port with IPv6-safe parsing, addresses, MTU, etc.) to a node object, and writes it idempotently to the 'homeproxy' config using a stable FNV-1a hash-derived section name. Emits a single JSON line with result or error and is intentionally dependency-free (avoids digest/md5 for OpenWrt compatibility). Usage: ucode import_conf.uc <path-to-.conf> [label].
2026-06-15 12:52:07 +04:00
Andrevich
de13202a7b Clarify UI text; handle nodes and kmod installs
Several related fixes and improvements:

- htdocs/luci-static/.../client.js: Reworded the Russia Inside/Re-filter description to clarify contents and routing behavior shown in the UI.

- root/etc/homeproxy/scripts/generate_client.uc: Tightened UDP-over-TCP generation so it is only emitted for hiddify when node.udp_over_tcp is enabled; treat an empty cfg.node as equivalent to 'main-out' when selecting effective_outbound and avoid creating redundant outbounds. These changes make outbound selection more robust and prevent unnecessary outbound creation.

- root/usr/share/homeproxy/scripts/core_mgmt.uc: Made download_pkg tolerant of an optional leading core argument (accepts both (url, tmp_path) and (core, url, tmp_path)); improved install_kmods by defaulting to a detected package manager and returning a proper success/failure result with an error message when kmod installation fails. This improves compatibility with different callers and surfaces installation errors.
2026-06-14 23:29:17 +04:00
Andrevich
e07082d002 Rebrand to Re:HomeProxy and installer improvements
Rename project and packages to Re:HomeProxy (luci-app-re-homeproxy), update package metadata and build scripts, and adjust UI labels and menus accordingly. Improve core install flow: add RAM detection, overlay-compression heuristics, automatic selection between full and compact (UPX) builds, stricter storage/RAM checks, and a variant argument for prepare_install; fetch sing-box-extended releases more robustly. Fix runtime behavior: init.d restores a default config when missing, add packaged homeproxy.default, prefer user-preferred core in ucode, and suppress top-level TLS for Shadowsocks in generated client configs. UI tweaks include better install/remove UX, gating "Same as main node" for custom routing, and updated diagnostics/status strings. Update translations (po files) and rpcd/menu/acl renames to match the rebrand.
2026-06-14 21:32:23 +04:00
Andrevich
ec59f7e653 Enhance ByeDPI strategy tester and routing fixes
Improve the ByeDPI strategy tester UI and backend and adjust routing logic for special nodes.

- UI (htdocs/luci-static/.../node.js): probe 4 sites (YouTube, Telegram, Discord, Speedtest) to reveal destination-sensitive strategies, display per-site pass/fail dots and aggregate full/partial results, update 'Test all' flow and messages, and require curl for full testing.
- RPC (root/usr/share/rpcd/ucode/luci.homeproxy): byedpi_strategy_test now starts one ciadpi instance and runs parallel curl probes, returns detailed per-host results and reasons (dns/tls/timeout/etc.), preserves/restores nft redirect rules and ByeDPI skgid, and handles cases without curl by returning a startup-only result.
- Generator (root/etc/homeproxy/scripts/generate_client.uc): route secure-dns via direct-out when main node is byedpi-out, and force ruleset downloads via direct-out when main path uses WireGuard/AmneziaWG or is byedpi-out; add clarifying comments about why these exceptions are required.
2026-06-14 14:51:04 +04:00
Andrevich
e6d56c49cb Honor preferred core, sing-box TLS fix, UI text
Improve core detection and generation logic, avoid sing-box strict errors, and update UI copy/translations.

- generate_client.uc: Add preferred_core handling and explicit detection for hiddify-core vs sing-box to mirror init.d precedence; fall back to UCI custom path when neither standard binary is present. This ensures the generated dialect matches the core the system actually runs.
- generate_client.uc: Suppress the stray 'tls' field on Shadowsocks outbounds when using sing-box (sing-box rejects unknown fields while hiddify-core is lenient). This prevents generation errors for ShadowTLS-wrapped Shadowsocks.
- client.js and po/*.po: Update the UI description to include approximate list sizes for "Russia Inside" and "Re-filter" and propagate those changes to Persian and Russian translations.
2026-06-14 11:51:00 +04:00
Andrevich
758e52ed95 Add ByeDPI: loop fix, per-list node, secure-DNS, diagnostics
- Fix conntrack loop: run ciadpi as root+gid 8181, exclude egress via meta skgid
- ByeDPI as main node and per-list RU-rules node (generate_client.uc + client.js)
- ByeDPI preset selector + strategy tester fixes (node.js)
- Diagnostics: ByeDPI status/ports in Core section and report; pidof detection
- Harden firewall gen against CRLF (tr -d '\r') + .gitattributes LF enforcement
- Fix strToInt crash in byedpi_strategy_test
2026-06-13 23:39:34 +04:00
Andrevich
dac137feca Move ByeDPI UI to node page and add installer
Move ByeDPI configuration and testing UI from the Client tab to the Node Settings page and add an integrated installer/prepare flow. client.js: add fs/ui requires, new RPC declarations and core_mgmt download helper, change ByeDPI flag to auto-install on first enable with a modal-driven install flow and requirement checks; remove the large in-page ByeDPI settings block (now on Node page). node.js: add a full ByeDPI tab (presets, command options, strategy tester, test-all runner, UDP-over-TCP and QUIC-block flags) with RPC-based testing and curl detection. status.js: disable package removal when ByeDPI is selected as the main node and pass a flag to the card builder. Update po and pot translation strings and adjust several UI texts and warnings. Also update init/scripts/ucode files related to ByeDPI packaging and management.
2026-06-13 19:10:24 +04:00
Andrevich
f55ccb0e31 Add ByeDPI UI, presets and strategy tester
Expose ByeDPI controls in the Client UI: add an enable flag, port / options fields, grouped preset selector, and a command-options field. Implement an interactive "Test current strategy" button and a "Test all strategies" runner (requires curl) that exercises ciadpi and shows which presets work. Add Status page UI to show/install/remove curl and wire new RPC methods (byedpi_strategy_test enhanced to actually start ciadpi and optionally perform an HTTP test via curl, plus curl_status/curl_install/curl_remove). Adjust package install helpers (apk handling and signing key copy) in core_mgmt and rpcd ucode. Update POT/PO translation templates for the new strings.
2026-06-13 16:38:37 +04:00
Andrevich
923ba106e6 Add ByeDPI (ciadpi) support and UI
Introduce local ByeDPI (ciadpi) integration: add a ByeDPI tab in Client settings (presets, cmd options, tester, UDP-over-TCP and QUIC-blocking), a ByeDPI card on the Status page with install/remove/update actions and live status, and route support (byedpi-out) in generated client configs. Add RPC handlers for byedpi status, prepare/install/remove, strategy test and custom core detection; update ucode to detect custom core paths and expose core info. Init script now launches ciadpi when enabled and can add an nft rule to block QUIC; generate_client handles byedpi outbound fallback. Also update menu ordering and add translation strings for new core descriptions.
2026-06-13 15:25:17 +04:00
Andrevich
60c583b4da Update protocol text, DNS IP and translations
Clarify supported protocols in the import modal, reword the latency-switch description, and fix the Comss.one DNS IP. Updated corresponding .po translation files and the POT template to reflect the new strings and translations.
2026-06-12 21:50:01 +04:00
Andrevich
40d0d00303 Add URLTest UI, unique node labels, translations
Introduce a URLTest info field and UI options in the client view (adds a DummyValue info block and main_urltest_nodes list, shown when main_node=urltest). Ensure imported WireGuard/AmneziaWG nodes get unique labels by appending -N if a label collision is detected. Update source list descriptions (Re-filter and Russia Inside) and add corresponding translation strings in POT and fa_IR/ru/zh_Hans PO files.
2026-06-12 21:29:08 +04:00
Andrevich
67743694cf Add diagnostics UI; ShadowTLS & install refactor
Add a new HomeProxy diagnostics page (htdocs/.../diagnostics.js) for core/config/DNS/nftables checks and report generation. Introduce ShadowTLS options (flag + password) in node settings and wire dependencies for Shadowsocks. Refactor core installation flow in status.js into prepare/download/install_pkg/install_kmods steps with new RPC calls, improving download/install error handling and progress messages. Update UI copy in client.js, and refresh localization strings and backend ucode/scripts to match the new features.
2026-06-12 20:05:00 +04:00
Andrevich
9538866efb Add i18n strings, postinst, ACL and core output fix
Add postinst hook in Makefile to reload rpcd after package install. Add new UI translation entries (status.js) to templates and fa_IR, ru, zh_Hans PO files for core/package management and status messages. Fix core_mgmt.uc output by printing the result directly (remove json() wrapper). Grant rpcd ACL exec permission for /usr/bin/ucode to allow invoking ucode from the service.
2026-06-12 11:30:32 +04:00
Andrevich
b916dc2d99 Move core management to core_mgmt script
Add a new /usr/share/homeproxy/scripts/core_mgmt.uc to handle core info, remote checks, install and remove operations (apk/opkg, GitHub API, package downloads). Update LuCI frontend to call the new script (fs.exec_direct) instead of in-process rpc methods, adjust core descriptions and translations, and conditionally hide China/GFW list version fields when routing_mode is proxy_banned_ru. In generate_client.uc prefer direct-out for ruleset downloads if the main node (or urltest nodes) use WireGuard/AmneziaWG. Also ensure RUN_DIR exists earlier in the init script and remove the old core_* rpc handlers from luci.homeproxy.
2026-06-12 10:38:52 +04:00
Andrevich
6e8b37cf8e Add core management UI and RPC methods
Introduce core management features for hiddify and sing-box: add client-side UI in htdocs/luci-static/resources/view/homeproxy/status.js (new RPC declarations, buildCoreCard, core info display, install/check/remove buttons, and load/render changes) and server-side RPC handlers in root/usr/share/rpcd/ucode/luci.homeproxy (core_info, core_check_remote, core_install, core_remove).

The server side detects package manager (apk/opkg), architecture, free /tmp and overlay space, inspects installed versions, queries GitHub releases for latest versions, and performs installs/removals via wget + apk/opkg with basic validation and error reporting. The UI shows package manager, arch, free space, install status/version, remote update check, and interactive install/update/remove flows.
2026-06-12 00:44:59 +04:00
Andrevich
8bd62d6fb4 Add 'main-out' node and WireGuard address handling
Allow 'main-out' as a valid node value and expose it in the client UI (luci) so users can select "Same as main node". Improve WireGuard endpoint generation by normalizing local addresses: add a helper to append /32 or /128 as needed and support arrays of addresses. Recognize 'main-out' in outbound resolution and change ruleset download detour logic to use 'direct-out' when the main node is WireGuard/AmneziaWG (endpoints may not be ready at startup), otherwise use 'main-out'. Changes affect htdocs/luci-static/resources/homeproxy.js, htdocs/luci-static/resources/view/homeproxy/client.js and root/etc/homeproxy/scripts/generate_client.uc.
2026-06-11 23:47:01 +04:00
Andrevich
846cd03c29 Polish UI, DoH defaults and RU routing rules
Add small UI enhancements and adjust DNS/routing defaults for the Russia (proxy_banned_ru) mode. Changes include:

- UI: add icons and clearer labels in htdocs/.../client.js (main node, secure/russia DNS labels, flags, source/node labels, Separate URLTest). Reorder and rename some DNS options.
- DNS: switch default secure DNS to Cloudflare DoH (https://cloudflare-dns.com/dns-query) and update DoH/DoT option entries and default.
- Routing: change default config (root/etc/config/homeproxy) to routing_mode=proxy_banned_ru, routing_port=all, disable ipv6_support, enable proxy_calls and no_proxy_torrents by default.
- generate_client.uc: use new secure DNS default, add comment about Cloudflare DoH via proxy, add early resolve rule, and reorder/modify torrent and VoIP proxy rules so torrent bypass has priority and port/protocol mappings are corrected.
- init script: include proxy_banned_ru in dnsmasq configuration branch.
- Localization: update template and translations (fa_IR, ru, zh_Hans) to reflect new strings.

These changes aim to improve UX, prefer Cloudflare DoH for encrypted DNS by default, prevent DNS leaks, and refine routing behavior for the RU-specific proxy mode.
2026-06-11 21:45:53 +04:00
Andrevich
e08f3e75aa Add .conf import, torrent bypass & routing tweaks
Add WireGuard/AmneziaWG .conf import and UI, add a "Do not proxify torrents" option and implement torrent bypass rules, and refine routing rule ordering and related UI/messages.

- htdocs/.../node.js: implement parseWireGuardConf(), add .conf import button and handler, always expose AmneziaWG node type, and remove obsolete apply-button block.
- htdocs/.../client.js: fix data index for features/hosts, add no_proxy_torrents flag to routing UI (with dependency), and add automatic routing priority description.
- root/etc/.../generate_client.uc: read no_proxy_torrents, add torrent-bypass route rules, fix tproxy condition, sort/priority RU rule handling and adjust refilter download URL formatting.
- po/*: add new translation strings for the .conf import UI, torrent option, and routing priority message.

These changes enable importing WG/AWG configs directly, allow forcing torrent traffic to bypass proxies, and make RU routing source priority explicit and deterministic.
2026-06-11 19:19:49 +04:00
Andrevich
5ce206ca08 Update client.js 2026-06-11 17:31:00 +04:00
Andrevich
1a31da6636 Update generate_client.uc 2026-06-11 17:24:14 +04:00
Andrevich
36f454b19b Add proxy_banned_ru advanced routing support
Introduce a new 'proxy_banned_ru' routing mode with optional advanced custom rules and nodes. UI changes: add 'Advanced custom rules' flag, 'Same as main node' option, update routing_mode defaults based on installed languages, increase URLTest tolerance placeholders (50 -> 150), rename Yandex label, and update several localized strings. Client logic (generate_client.uc): honor show_advanced_rules, add has_outbound helper, generate advanced routing_node outbounds and rules (including 'main-out' handling), avoid duplicate outbounds, and switch several local rule sets to remote downloads with update detours. Status/UI: remove direct display of refilter/itdoginfo versions. Scripts: stop automatic refilter/itdoginfo updates from crond and remove SRS GitHub download logic from update_resources.sh. Also add validation to prevent duplicate routing sources. Translation templates and PO files updated to reflect string changes.
2026-06-11 17:16:58 +04:00
Andrevich
79f168e5d3 Add Russia Simplified routing mode
Introduce a new routing mode 'proxy_banned_ru' and related UI, logic and resource handling. UI: client.js gains a new routing_mode value, DNS options (russia_dns_server, secure_dns_server), proxy_calls flag, validation tweaks, and a new 'RU Proxy Rules' section for per-source rules and URLTest node groups. Status: status.js shows versions for refilter and itdoginfo when RU mode is active. Backend: generate_client.uc updated to read new settings, create russia-dns/secure-dns servers, route proxy lists via secure DNS, change default routing/resolver behavior, generate per-rule outbounds and rule sets for RU rules and handle proxy_calls. Scheduling/resources: update_crond.sh now triggers refilter/itdoginfo updates when RU mode is active; update_resources.sh adds check_srs_update to fetch .srs files from GitHub releases and handles 'refilter' and 'itdoginfo' lists. Localization: updated POT and added translations (fa_IR, ru, zh_Hans) for new strings. These changes enable targeted handling of Russian domains and proxying of blocked content with automated resource updates.
2026-06-11 16:16:18 +04:00
Andrevich
bd7a8618c6 Add luci-app-homeproxy Provides/Conflicts/Replaces
Add package metadata for luci-app-homeproxy to the IPK/APK packaging steps: include --info "provides:luci-app-homeproxy" in the APK build and add Provides/Conflicts/Replaces: luci-app-homeproxy to the IPK control. This lets the package advertise compatibility, avoid duplicate installs, and permit replacement of an existing luci-app-homeproxy package during upgrades.
2026-06-11 12:59:57 +04:00
Andrevich
e8ca7ccc8f Add preferred core selection/detection
Expose and persist a preferred core option across UI and runtime. UI: show a 'Preferred core' dropdown in routing when multiple cores are available and populate it with auto/hiddify/singbox (htdocs/luci-static/.../client.js). Translations: add msgid for 'Preferred core' to POT and update fa_IR, ru, zh_Hans PO files. Init script: read config preferred_core, try the preferred core first and fall back to any installed core, keeping previous error behavior if none found (root/etc/init.d/homeproxy). Backend: rpcd ucode now reports available_cores by checking /usr/bin/hiddify-core and /usr/bin/sing-box (root/usr/share/rpcd/ucode/luci.homeproxy).
2026-06-11 12:52:16 +04:00
Andrevich
8623608622 Enhance node/tag resolution and proxy IP info
Refactor UI and backend to show clearer node labels and richer IP metadata. Add a shared resolveTag() in the status view to map sing-box outbound tags to human-readable UCI labels and remove duplicated logic; show IP country/org and delay alongside the IP. Update generate_client.uc to make default_domain_resolver compatible with both sing-box variants (object action for extended sing-box, plain tag/string for standard). Update luci.homeproxy RPC logic to follow GLOBAL.now to the active leaf node (including Selector), pick the first suitable fallback group if needed, and return richer direct/proxy entries (ip, country, org, delay, node) via a toEntry helper.
2026-06-11 00:05:30 +04:00
Andrevich
dea996732a Add Persian i18n, CI packaging and UI tweaks
Add full Farsi (fa_IR) translation and CI/build support: - Add po/fa_IR/homeproxy.po (Persian translations). - Extend .github/build-ipk.sh to build a luci-i18n-homeproxy-fa package for both apk and ipk formats. - Update .github/workflows/build-ipk.yml to watch po/**, expose FA artifact names to the environment, and upload fa APK/IPK artifacts.

UI/runtime changes: - Update htdocs/luci-static/resources/view/homeproxy/node.js to rename TLS fingerprint field tls_fingerprint -> tls_utls in parsed link objects. - Add active node polling and display (getActiveNode) in htdocs/luci-static/resources/view/homeproxy/status.js and show the Active Node dummy field when core_type === 'singbox'.

Other: - Update RPC/uCode (root/usr/share/rpcd/ucode/luci.homeproxy) and translation templates/other locale files to support the new UI/RPC changes and translation strings.
2026-06-10 23:26:24 +04:00
Andrevich
9fc25e4849 Add core detection, MTProxy inbound and bug fixes
Detect and expose core type/version reliably and add MTProxy inbound

- LuCI: fall back to /var/run/homeproxy/core.info when RPC lacks core info; load features before rendering status view.
- init: write core_type and version to /var/run/homeproxy/core.info on start.
- rpcd ucode: improve kernel module detection (use /sys/module), normalize access checks and parse core version/tags more robustly.
- UI: remove ip-full from Tun prerequisite message; only show direct/proxy IP checks for hiddify cores.
- Server view: add MTProxy server options (secrets, domain fronting, timeouts, concurrency) and expose MTProxy type when using singbox core.
- Client generator: emit MTProxy fields (secrets -> users, domain fronting, timeouts, concurrency) and propagate xhttp x_padding_bytes when using singbox.
- Node parsing: handle amnezia last_config JSON, fix labels and host/port resolution, and extract xhttp fields (path/host/mode/padding).
2026-06-10 20:18:30 +04:00
Andrevich
2d259e19dc Add multi-core detection and conditional core handling
Detect active core (hiddify-core vs sing-box) and update UI and runtime generation to handle both.

- htdocs/*: Update client/server status rendering to show detected core name/version or a "no core installed" message; adjust UI descriptions to "multi-core" wording; rename runtime log label to "core client".
- root/etc/homeproxy/scripts/generate_client.uc: Detect active core and set is_hiddify/is_singbox flags; make sniff/sniff_override/set_system_proxy fields conditional for hiddify; add sing-box-specific sniff route entry while keeping other route entries intact.
- root/etc/init.d/homeproxy: Select appropriate run command (srun for hiddify, run for sing-box) and use it when launching the core.

These changes enable support for both hiddify-core and sing-box, avoiding inappropriate configuration options for the inactive core and providing clearer UI feedback about which core is installed.
2026-06-10 16:36:24 +04:00
Andrevich
dbdde24846 Add AmneziaWG support and sing-box detection
Support for AmneziaWG (vpn://) links and sing-box core was added across UI, backend and init scripts. UI: parseVpnLink() handles AmneziaVPN vpn:// payloads; node editor adds amneziawg type and numerous Amnezia-specific fields; share import now accepts vpn:// links, deduplicates inputs and imports vpn + URI configs. View changes: renderStatus shows detected core name (hiddify-core or sing-box). Backend: generate_client treats amneziawg as a wireguard endpoint with extra amnezia parameters and includes amneziawg nodes in endpoint/outbound selection. Init script: start logic now prefers hiddify-core or sing-box and logs the actual binary started. RPCD: feature detection updated to probe for sing-box and parse its version/tags.
2026-06-10 16:12:15 +04:00
Andrevich
0266c5e1c9 Add outbound interface binding, Direct/Proxy IP checks, YouTube test, Clash API for all routing modes, and zh-cn i18n package
New Features
Outbound Interface Binding

Added Binded interface field to every outbound node — allows pinning a proxy node to a specific network interface. using SO_BINDTODEVICE
The bind_interface value is preserved across subscription updates and not overwritten when nodes are refreshed
Status Page — IP Check

Added Direct IP button: shows the current exit IP and latency of the direct outbound
Added Proxy IP button: shows the exit IP, latency, and active node name of the currently selected proxy in the URLTest/Fallback group
Status Page — YouTube Check

Added YouTube connectivity check alongside the existing Google, Yandex, Baidu, Speedtest checks
Clash API

sing-box Clash API now enabled on 127.0.0.1:9090 for all routing modes
Build
Added luci-i18n-homeproxy-zh-cn package to the build pipeline — Chinese Simplified translation is now distributed as a standalone installable package, for both main and legacy (OpenWRT 23.05) releases
Translations
Added Russian and Chinese Simplified translations for all new UI strings
Fixed missing Russian translation for unchecked
2026-05-25 12:20:08 +04:00
Andrevich
aac9cff875 Add Mieru, Naïve, SSH, WireGuard parsing, UI fixes, missing node crash fixes, Release naming change
Changelog
Link Import (Import share links)
Added support for importing Mieru, SSH, WireGuard, and NaïveProxy share links — these were parsed by the subscription backend but silently ignored by the UI importer
Added VLESS xhttp transport support, including Hiddify extensions: TLS fragment, allowInsecure, custom headers, and download settings (xhttp/reality/TLS)
Added Trojan xhttp transport support with the same Hiddify fragment and allowInsecure extensions
Fixed Hysteria2 insecure detection — the old check treated insecure=0 as insecure (any non-empty string is truthy in JS)
Fixed TUIC missing with_quic feature guard, added tls_insecure, zero_rtt_handshake, and heartbeat fields
Mieru Node UI
Added Mieru as a selectable node type (requires with_quic build, same as Hysteria/TUIC)
Added Mieru-specific fields: Protocol (TCP / UDP / TCP and UDP), Port range, Multiplexing level, and Handshake mode
The generic Port field is now hidden for Mieru nodes since Mieru uses a port range instead of a single port
Added Russian and Chinese translations for all new Mieru UI strings
Stability Fix
Fixed a hiddify-core crash (nil pointer dereference in OutboundMonitoring.Start) that occurred when a node was deleted but still referenced in a URLTest group — the config generator now silently skips non-existent nodes instead of emitting a broken outbound
Client Routing
Added inbound matching to routing rules — rules can now be scoped to specific inbound tags (dns-in, mixed-in, tproxy-in, tun-in, or any server-defined inbound)
Build & Versioning
Package versions now use YYYY.MM.DD-rN format (e.g. 2025.05.19-r83) — date-based CalVer with APK-native revision suffix, replacing the opaque unix epoch + git hash format
Release tag and package version are now consistent with each other (previously they were two different values)
Makefile and build-ipk.yml updated to comply with OpenWRT CONTRIBUTING.md
2026-05-19 16:44:33 +04:00
Andrevich
e7f0c4e33f Add inbound matching support to client UI and generator
Introduce an 'inbound' field in the client UI to allow matching inbound tags (dns-in, mixed-in, redirect-in, tproxy-in, tun-in and server-based cfg-<name>-in entries). The UI option is populated from server sections and marked modal-only. Also update the client generator to include cfg.inbound into route rules so selected inbound matches are emitted into the generated configuration.
2026-05-18 12:57:44 +04:00
Andrevich
f55cc2b2a7 Add TLS fragmentation details to docs
Expand the TLS fragmentation (tls_fragment) section in both English and Russian docs: clarify that fragmentation isolates the SNI, add fragment modes (SNI/Domain, Random), list key parameters (fragment size, fragment interval, Mixed SNI case, padding), and include a caution not to enable fragment and padding together. Add applicability note for TLS-based protocols and a source link.
2026-05-17 14:36:54 +04:00
Andrevich
03b0459987 Add wiki docs and link Custom JSON in READMEs
Replace verbose "Custom JSON" sections in README.md and README_ru.md with links to new wiki pages, and add a set of localized wiki docs. New files: wiki/Custom-JSON-Config-en.md, wiki/Custom-JSON-Config-ru.md, wiki/Supported-Protocols-en.md, wiki/Supported-Protocols-ru.md, wiki/Troubleshooting-en.md, wiki/Troubleshooting-ru.md, and wiki/Home.md. The wiki pages contain the previously inlined JSON examples, guidance (including default_mark/self_mark notes), supported-protocols details and troubleshooting steps to keep the top-level READMEs concise and centralize detailed documentation.
2026-05-16 23:49:54 +04:00
Andrevich
6f1d01e1d9
Update README for package installation instructions 2026-05-16 17:12:47 +04:00
Andrevich
6efd465493
Update README.md 2026-05-16 16:59:04 +04:00
Andrevich
f7f424fe7a Merge branch 'master' of https://github.com/1andrevich/homeproxy-hiddify 2026-05-16 16:34:13 +04:00
Andrevich
154ee27615 Attempt to fix "Cannot read properties of undefined (reading 'content')"
Pass the fallback object into L.resolveDefault and normalize the loaded value for domain lists. Previously the default was incorrectly provided as the second argument to then(), and res.content could be undefined. This change supplies {} as the resolveDefault fallback and returns res.content ?? null for both proxy_list and direct_list
2026-05-16 16:34:10 +04:00
Andrevich
03deb689cb
Add free space requirement to README_ru.md
Added note about required free space for installation.
2026-05-16 15:42:44 +04:00
Andrevich
5ac20a0aba
Specify free space requirement for installation
Added note about required free space for installation.
2026-05-16 15:42:03 +04:00
Andrevich
1a3d659fe6 Execute subscription update script directly
Replace the RPC-based subscription update and polling flow with a direct fs.exec_direct call to /etc/homeproxy/scripts/update_subscriptions.uc from the UI. Remove client-side rpc usage and the async polling logic, and update error handling to reload on success and reset the map on failure (use this.map.reset()). Remove the corresponding server-side rpcd ucode methods (subscription_update and subscription_update_status) and the now-unused translation string.
2026-05-16 15:17:10 +04:00