Commit graph

1006 commits

Author SHA1 Message Date
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
Andrevich
0b981105ec Another attempt to fix subscription button 2026-05-16 14:47:00 +04:00
Andrevich
47d516fdc6 Subscription update fix attempt 2026-05-16 14:15:00 +04:00
Andrevich
ef1c4ab9f7 Use fixed /tmp path for subscription status
Replace `${RUN_DIR}/subscription_update.status` with `/tmp/hp_subscription_update.status` in root/usr/share/rpcd/ucode/luci.homeproxy
2026-05-16 13:51:15 +04:00
Andrevich
db8670fdf5 Workflow fix 2026-05-16 12:49:17 +04:00
Andrevich
0c27743883 Add legacy IPK build and async subscription update
Introduce a legacy build mode for OpenWRT 23.05 and make subscription updates asynchronous with status polling. Changes: add LEGACY arg to .github/build-ipk.sh (produce -legacy IPKs and patch update_subscriptions.uc to avoid ucode-mod-digest by injecting an md5 shim), adjust control Depends and artifact names; update .github/workflows/build-ipk.yml to build/publish legacy IPKs and tweak asset matching; implement non-blocking subscription_update + new subscription_update_status RPC in root/usr/share/rpcd/ucode/luci.homeproxy; update frontend (htdocs/...) to poll update status with timeout and use translated timeout message (po/ru/...). This enables compatibility with systems missing ucode-mod-digest and avoids blocking UI during long subscription updates.
2026-05-16 12:44:06 +04:00
Andrevich
2e2d462796
Update section title and text to Russian localization 2026-05-15 20:55:47 +04:00
Andrevich
8ba560398d
Update package names in installation instructions 2026-05-15 20:54:38 +04:00
Andrevich
643dc9483e Merge branch 'master' of https://github.com/1andrevich/homeproxy-hiddify 2026-05-15 20:50:11 +04:00
Andrevich
0ece2ed931 Show modal and handle subscription update errors
Display a modal while subscriptions are being updated and improve handling of update results: hide the modal on completion or error, only reload the page when the update exit code is 0, show a notification on non-zero exit codes, and reset the map on failure. Also add corresponding Russian translations for the new UI strings. Changes in htdocs/luci-static/resources/view/homeproxy/node.js and po/ru/homeproxy.po.
2026-05-15 20:49:54 +04:00
Andrevich
c7b918eeef
Add Russian language link to README
Added link to Russian version of README.
2026-05-15 20:39:51 +04:00
Andrevich
d7957e3d00 Add Russian README for HomeProxy-hiddify
Add README_ru.md containing Russian documentation for HomeProxy-hiddify
2026-05-15 20:39:38 +04:00
Andrevich
8dc1e92c6e Merge branch 'master' of https://github.com/1andrevich/homeproxy-hiddify 2026-05-15 20:16:41 +04:00
Andrevich
73bf7c1e3b Remove sing-box-s and consolidate server handling
Replace references to the deprecated 'sing-box-s' instance with 'hiddify-c', remove the separate generate_server.uc script, and consolidate server inbound generation into generate_client.uc. UI code (server.js, status.js) now checks/logs only for 'hiddify-c'. ACL (luci-app-homeproxy-hiddify.json) no longer exposes sing-box-s.log. RPC ucode (luci.homeproxy) restricts log_clean types to 'homeproxy' and 'hiddify-c'. Overall cleanup unifies server generation and removes obsolete sing-box-s artifacts.
2026-05-15 20:16:39 +04:00
Andrevich
437a15e465
Add Telegram badge to README 2026-05-15 20:11:05 +04:00
Andrevich
bd99331e19
Revise installation instructions for hiddify-core
Updated installation instructions for hiddify-core package on OpenWRT, including commands for downloading and installing the package. Adjusted section titles and added clarity to the steps.
2026-05-15 18:04:02 +04:00
Andrevich
0a5fd113a2 Update release upload pattern
Replace the previous .github/luci-*_*.* upload pattern with an explicit glob .github/*.{apk,ipk,pub} for both push/workflow_dispatch and release uploads (file_glob remains true). Remove the steps that published the signing public key (.github/homeproxy-hiddify.pub) into separate release
2026-05-15 16:27:18 +04:00
Andrevich
8444d3b0af Update homeproxy.po 2026-05-15 15:57:46 +04:00
Andrevich
05c9ef5900 Add Russian i18n package and APK release updates
Add full Russian translation (po/ru/homeproxy.po) and extend packaging pipeline to build a separate luci-i18n-homeproxy-ru package (APK/IPK) in .github/build-ipk.sh. Update GitHub Actions workflow to expose and upload i18n artifacts and signing key (env vars + artifact uploads), broaden release file globbing, and adjust artifact names. Update README with APK install instructions and OpenWRT/ImmortalWrt version notes and key installation guidance.
2026-05-15 15:42:35 +04:00
Andrevich
6e5b8e3da3 Check PROG executable in start_service
Add a pre-start check in start_service to verify $PROG exists and is executable. If the binary is missing, log an error advising to install hiddify-core and return status 1 to avoid continuing with an invalid runtime state.
2026-05-14 20:44:37 +04:00
Andrevich
5df70e84cb Parse hiddify-core output and handle unknown version
Client and server views now build a version string (v<version> or 'unknown') and use it in the status render template to avoid duplicating the 'v' prefix and to show a fallback when version is missing. The rpcd ucode for luci.homeproxy now reads the full hiddify-core output, extracts the version and Tags using regexes, closes the process earlier, and trims/splits tags into feature flags for more robust parsing.
2026-05-14 20:38:13 +04:00
Andrevich
15e75f4c18 Remove publishing of signing public key
Delete the workflow step that uploaded the APK signing public key (.github/homeproxy-hiddify.pub) to GitHub Releases in .github/workflows/build-ipk.yml. The svenstaro/upload-release-action step conditioned on push/workflow_dispatch and APK_SIGN_KEY has been removed; the main 'Publishing to GitHub Releases' step remains.
2026-05-14 19:27:55 +04:00
Andrevich
4329461a7a Switch to apk mkpkg and build apk-tools in CI
Replace the manual control/data tarball creation with apk mkpkg in .github/build-ipk.sh — pass package metadata, scripts, dependencies and optional signing key, then move the resulting .apk to the output dir. Update CI (.github/workflows/build-ipk.yml) to checkout alpinelinux/apk-tools at a specific commit, install meson/ninja and other build deps, and build/install apk-tools so apk mkpkg is available in the runner. This simplifies packaging and removes the custom tar-based APK assembly.
2026-05-14 19:24:35 +04:00
Andrevich
04ea032a7b Build APK v2 manually; simplify workflow deps
Replace the previous apk mkpkg flow with manual APK v2 assembly: compute package size, generate .PKGINFO, copy install scripts (.post-install/.post-upgrade/.pre-deinstall), create control and data tar.gz streams, and concatenate them into an unsigned APK compatible with OpenWRT's apk format.

Also simplify the CI workflow by removing the checkout/build/install of alpinelinux/apk-tools and the meson/ninja steps, and reduce installed apt packages to the essentials required for packaging (build-essential, curl, fakeroot, lua5.1). This avoids building apk-tools in CI and produces a compatible APK v2 output directly.
2026-05-14 18:45:28 +04:00
Andrevich
494aada900 Add APK signing and trim dependencies
Enable optional APK signing and publish the signing public key; remove unnecessary kmod dependency and shorten package description. Changes: .github/workflows/build-ipk.yml reads APK_SIGNING_KEY secret, exposes APK_SIGN_KEY env, writes a public key (.github/homeproxy-hiddify.pub), and uploads it to artifacts/releases when signing is used. .github/build-ipk.sh now conditionally passes --sign-key to apk build and shortens the package description. Makefile and control metadata drop the kmod-nft-tproxy dependency and remove the ARM64/AMD64 mention from the description.
2026-05-14 18:12:28 +04:00
Andrevich
3d96375cea Rename UI labels to HomeProxy-hiddify
Update homeproxy client and server views to use the new branding and backend reference: replace "HomeProxy" with "HomeProxy-hiddify", change status captions, replace "sing-box v%s" with "hiddify-core v%s", and update section descriptions to mention "based on hiddify-core".
2026-05-14 16:45:20 +04:00
Andrevich
da38851d23 Add Mieru support and enhance URI parsers
Add support for the Mieru protocol and extend outbound generation and subscription parsing to handle new fields and edge cases. Changes include: generate_client.uc - treat mieru server_port as 0, add portBindings, multiplexing, handshake_mode, and mie ru-specific handling; add naive-specific quic, extra_headers and udp_over_tcp branching and preserve ssh udp_over_tcp behavior. update_subscriptions.uc - parse naive extra headers and params (quic, uot, sni), add robust SSH parsing to avoid parseURL corruption (extract user/host/port, private keys, host keys, passphrases, and ssh_udp_over_tcp handling), add tuic zero_rtt and heartbeat params, and implement a new 'mieru' URI parser. Adjust validation to skip port checks for mieru and improve node cache handling when updating existing nodes so newly parsed fields are preserved.
2026-05-14 16:31:19 +04:00
Andrevich
7a42114f30
Refine README content and remove TBD placeholders (#2)
Updated README to enhance clarity and remove TBD notes.
2026-05-14 00:31:02 +04:00
Andrevich
38ca01a9b4
Refine README content and remove TBD placeholders
Updated README to enhance clarity and remove TBD notes.
2026-05-14 00:30:34 +04:00
Andrevich
020e65280a Update luci.homeproxy 2026-05-14 00:27:22 +04:00
Andrevich
375d53ecc3 Merge branch 'master' of https://github.com/1andrevich/homeproxy-hiddify 2026-05-14 00:22:49 +04:00
Andrevich
900ac53717 Support custom_json, XHTTP, Naïve and parsing fixes
Adds a new 'custom_json' routing mode that can use a user-provided client config; UI changes in client.js to expose custom_json options and trigger subscription updates via RPC. node.js: require rpc, add NaïveProxy node type and XHTTP transport with UI fields (xhttp_mode, xhttp_headers), and adjust field dependencies. generate_client.uc: add TLS fragment support, normalize TLS ALPN to an array, handle xhttp mode/headers, rename log/output filenames, add default_mark and use it in routing, and write out hiddify-c.json. update_subscriptions.uc: import urldecode_params and extend URI parsing (naive, ssh, enhanced trojan parsing including xhttp and hiddify extras), add WireGuard parsing, and make base64 node decoding more robust. init.d: support custom_json by copying user-supplied config or generating config as appropriate and include custom_json in DNSMasq routing cases. Add an RPC method (subscription_update) in luci.homeproxy to run the subscription updater.
2026-05-14 00:22:45 +04:00
Andrevich
ca99f2f521
Modify build-ipk workflow for HomeProxy
Updated workflow name and removed 'dev' branch from triggers.
2026-05-13 18:55:50 +04:00
Andrevich
67fc51f3b6 Add Yandex and Speedtest connectivity checks
Extend the HomeProxy status page and RPC handler to include connectivity checks for Yandex and Speedtest. Adds two new DummyValue entries ('_check_yandex', '_check_speedtest') in the status view and adds corresponding cases in luci.homeproxy to map 'yandex' and 'speedtest' to their URLs. This enables the existing getConnStat routine to report on those additional services.
2026-05-13 18:53:20 +04:00
Andrevich
5d488ede7b Update build-ipk.yml 2026-05-13 18:28:41 +04:00
Andrevich
be6493cc32 Update build-ipk.yml 2026-05-13 18:23:12 +04:00
Andrevich
6d58063953 Generate release tag and publish draft prerelease
Add a step that generates a timestamped RELEASE_TAG (UTC) and exports it to GITHUB_ENV. Add a new upload step (svenstaro/upload-release-action@v2) to publish the built .github/luci-app-homeproxy-hiddify_*.* artifact as a draft prerelease when triggered by push or workflow_dispatch, using the generated tag as the release name. Existing publish-for-release behavior for release events is preserved.
2026-05-13 18:16:39 +04:00
Andrevich
203cea0b17 Rename package to luci-app-homeproxy-hiddify
Update package name and references to the hiddify variant: change README download URL to luci-app-homeproxy-hiddify_latest_all.ipk; rename luci menu and rpcd ACL JSON files to luci-app-homeproxy-hiddify and update their acl/depends keys; update i18n POT/PO source references accordingly (po/templates/homeproxy.pot, po/zh_Hans/homeproxy.po). This aligns menu/ACL entries and translations with the released package name.
2026-05-13 18:12:23 +04:00
Andrevich
eafe4a0cb1 Merge branch 'master' of https://github.com/1andrevich/homeproxy-hiddify 2026-05-13 18:03:57 +04:00