From 473952f62033331e38cae105c9ed80e5dc195a41 Mon Sep 17 00:00:00 2001 From: fres_a Date: Thu, 14 May 2026 10:04:14 +0300 Subject: [PATCH] Restructure repo around sing-box-rr package layout --- .gitignore | 9 +- SOURCE_DATE_EPOCH | 1 + VERSION | 1 + build-apk.sh | 287 +++++++++++++ build-ipk.sh | 245 +++++++++++ clients/android | 1 - clients/apple | 1 - cmd/internal/build/main.go | 26 -- release/DEFAULT_BUILD_TAGS | 1 - release/DEFAULT_BUILD_TAGS_OTHERS | 1 - release/DEFAULT_BUILD_TAGS_WINDOWS | 1 - .fpm_openwrt => sing-box-rr/.fpm_openwrt | 0 .fpm_pacman => sing-box-rr/.fpm_pacman | 0 .fpm_systemd => sing-box-rr/.fpm_systemd | 0 .../.github}/CRONET_GO_VERSION | 0 {.github => sing-box-rr/.github}/FUNDING.yml | 0 .../.github}/ISSUE_TEMPLATE/bug_report.yml | 0 .../.github}/ISSUE_TEMPLATE/bug_report_zh.yml | 0 .../.github}/build_alpine_apk.sh | 0 .../.github}/build_openwrt_apk.sh | 0 {.github => sing-box-rr/.github}/deb2ipk.sh | 0 .../.github}/detect_track.sh | 0 .../.github}/renovate.json | 0 .../.github}/setup_go_for_macos1013.sh | 0 .../.github}/setup_go_for_windows7.sh | 0 .../.github}/update_clients.sh | 0 .../.github}/update_cronet.sh | 0 .../.github}/update_cronet_dev.sh | 0 .../.github}/update_dependencies.sh | 0 .../.github}/workflows/build.yml | 0 .../.github}/workflows/docker.yml | 0 .../.github}/workflows/lint.yml | 0 .../.github}/workflows/linux.yml | 0 .../.github}/workflows/stale.yml | 0 sing-box-rr/.gitignore | 25 ++ .gitmodules => sing-box-rr/.gitmodules | 0 .golangci.yml => sing-box-rr/.golangci.yml | 0 .../.goreleaser.yaml | 0 sing-box-rr/BUILD.md | 384 ++++++++++++++++++ DONATE.md => sing-box-rr/DONATE.md | 0 Dockerfile => sing-box-rr/Dockerfile | 0 .../Dockerfile.binary | 0 LICENSE => sing-box-rr/LICENSE | 0 sing-box-rr/Makefile | 120 ++++++ Makefile => sing-box-rr/Makefile.sing-box | 0 README.md => sing-box-rr/README.md | 22 +- .../adapter}/certificate.go | 0 .../adapter}/connections.go | 0 {adapter => sing-box-rr/adapter}/dns.go | 0 {adapter => sing-box-rr/adapter}/endpoint.go | 0 .../adapter}/endpoint/adapter.go | 0 .../adapter}/endpoint/manager.go | 0 .../adapter}/endpoint/registry.go | 0 .../adapter}/experimental.go | 0 {adapter => sing-box-rr/adapter}/fakeip.go | 0 .../adapter}/fakeip_metadata.go | 0 {adapter => sing-box-rr/adapter}/handler.go | 0 {adapter => sing-box-rr/adapter}/inbound.go | 0 .../adapter}/inbound/adapter.go | 0 .../adapter}/inbound/manager.go | 0 .../adapter}/inbound/registry.go | 0 {adapter => sing-box-rr/adapter}/lifecycle.go | 0 .../adapter}/lifecycle_legacy.go | 0 {adapter => sing-box-rr/adapter}/network.go | 0 {adapter => sing-box-rr/adapter}/outbound.go | 0 .../adapter}/outbound/adapter.go | 0 .../adapter}/outbound/manager.go | 0 .../adapter}/outbound/registry.go | 0 {adapter => sing-box-rr/adapter}/platform.go | 0 {adapter => sing-box-rr/adapter}/prestart.go | 0 {adapter => sing-box-rr/adapter}/provider.go | 0 .../adapter}/provider/adapter.go | 0 .../adapter}/provider/manager.go | 0 .../adapter}/provider/registry.go | 0 {adapter => sing-box-rr/adapter}/router.go | 0 {adapter => sing-box-rr/adapter}/rule.go | 0 {adapter => sing-box-rr/adapter}/service.go | 0 .../adapter}/service/adapter.go | 0 .../adapter}/service/manager.go | 0 .../adapter}/service/registry.go | 0 {adapter => sing-box-rr/adapter}/ssm.go | 0 {adapter => sing-box-rr/adapter}/time.go | 0 {adapter => sing-box-rr/adapter}/upstream.go | 0 .../adapter}/upstream_legacy.go | 0 {adapter => sing-box-rr/adapter}/v2ray.go | 0 box.go => sing-box-rr/box.go | 19 - .../cmd}/internal/admin_panel_pack/main.go | 0 .../cmd}/internal/app_store_connect/main.go | 0 .../cmd}/internal/build_libbox/main.go | 6 +- .../cmd}/internal/build_shared/sdk.go | 0 .../cmd}/internal/build_shared/tag.go | 0 .../cmd}/internal/format_docs/main.go | 0 .../cmd}/internal/protogen/main.go | 0 .../cmd}/internal/read_tag/main.go | 0 .../cmd}/internal/tun_bench/main.go | 0 .../internal/update_android_version/main.go | 0 .../internal/update_apple_version/main.go | 0 .../cmd}/internal/update_certificates/main.go | 0 {cmd => sing-box-rr/cmd}/sing-box/cache.db | Bin {cmd => sing-box-rr/cmd}/sing-box/cmd.go | 0 .../cmd}/sing-box/cmd_check.go | 0 .../cmd}/sing-box/cmd_format.go | 0 .../cmd}/sing-box/cmd_generate.go | 0 .../cmd}/sing-box/cmd_generate_ech.go | 0 .../cmd}/sing-box/cmd_generate_tls.go | 0 .../cmd}/sing-box/cmd_generate_vapid.go | 0 .../cmd}/sing-box/cmd_generate_wireguard.go | 0 .../cmd}/sing-box/cmd_geoip.go | 0 .../cmd}/sing-box/cmd_geoip_export.go | 0 .../cmd}/sing-box/cmd_geoip_list.go | 0 .../cmd}/sing-box/cmd_geoip_lookup.go | 0 .../cmd}/sing-box/cmd_geosite.go | 0 .../cmd}/sing-box/cmd_geosite_export.go | 0 .../cmd}/sing-box/cmd_geosite_list.go | 0 .../cmd}/sing-box/cmd_geosite_lookup.go | 0 .../cmd}/sing-box/cmd_geosite_matcher.go | 0 .../cmd}/sing-box/cmd_merge.go | 0 .../cmd}/sing-box/cmd_rule_set.go | 0 .../cmd}/sing-box/cmd_rule_set_compile.go | 0 .../cmd}/sing-box/cmd_rule_set_convert.go | 0 .../cmd}/sing-box/cmd_rule_set_decompile.go | 0 .../cmd}/sing-box/cmd_rule_set_format.go | 0 .../cmd}/sing-box/cmd_rule_set_match.go | 0 .../cmd}/sing-box/cmd_rule_set_merge.go | 0 .../cmd}/sing-box/cmd_rule_set_upgrade.go | 0 {cmd => sing-box-rr/cmd}/sing-box/cmd_run.go | 0 .../cmd}/sing-box/cmd_tools.go | 0 .../cmd}/sing-box/cmd_tools_connect.go | 0 .../cmd}/sing-box/cmd_tools_fetch.go | 0 .../cmd}/sing-box/cmd_tools_fetch_http3.go | 0 .../sing-box/cmd_tools_fetch_http3_stub.go | 0 .../cmd}/sing-box/cmd_tools_synctime.go | 0 .../cmd}/sing-box/cmd_version.go | 0 .../cmd}/sing-box/generate_completions.go | 0 {cmd => sing-box-rr/cmd}/sing-box/main.go | 0 .../common}/badtls/raw_conn.go | 0 .../common}/badtls/raw_half_conn.go | 0 .../common}/badtls/read_wait.go | 0 .../common}/badtls/read_wait_stub.go | 0 .../common}/badtls/registry.go | 0 .../common}/badtls/registry_utls.go | 0 .../common}/badversion/version.go | 0 .../common}/badversion/version_json.go | 0 .../common}/badversion/version_test.go | 0 .../common}/byteformats/formats.go | 0 .../common}/byteformats/json.go | 0 .../common}/byteformats/json_test.go | 0 .../common}/certificate/chrome.go | 0 .../common}/certificate/mozilla.go | 0 .../common}/certificate/store.go | 0 .../common}/cloudflare/api.go | 0 .../common}/cloudflare/constant.go | 0 .../common}/cloudflare/models.go | 0 .../common}/cloudflare/option.go | 0 .../common}/cloudflare/utils.go | 0 .../common}/compatible/map.go | 0 .../common}/convertor/adguard/convertor.go | 0 .../convertor/adguard/convertor_test.go | 0 .../common}/dialer/default.go | 0 .../dialer/default_parallel_interface.go | 0 .../dialer/default_parallel_network.go | 0 .../common}/dialer/detour.go | 0 .../common}/dialer/dialer.go | 0 .../common}/dialer/resolve.go | 0 .../common}/dialer/router.go | 0 {common => sing-box-rr/common}/dialer/tfo.go | 0 .../common}/dialer/wireguard.go | 0 .../common}/geoip/reader.go | 0 .../common}/geosite/compat_test.go | 0 .../common}/geosite/geosite_test.go | 0 .../common}/geosite/reader.go | 0 .../common}/geosite/rule.go | 0 .../common}/geosite/writer.go | 0 .../common}/interrupt/conn.go | 0 .../common}/interrupt/context.go | 0 .../common}/interrupt/group.go | 0 {common => sing-box-rr/common}/ja3/LICENSE | 0 {common => sing-box-rr/common}/ja3/README.md | 0 {common => sing-box-rr/common}/ja3/error.go | 0 {common => sing-box-rr/common}/ja3/ja3.go | 0 {common => sing-box-rr/common}/ja3/parser.go | 0 .../common}/kmutex/mutex.go | 0 .../common}/kmutex/mutex_test.go | 0 {common => sing-box-rr/common}/ktls/ktls.go | 0 .../common}/ktls/ktls_alert.go | 0 .../common}/ktls/ktls_cipher_suites_linux.go | 0 .../common}/ktls/ktls_close.go | 0 .../common}/ktls/ktls_const.go | 0 .../common}/ktls/ktls_handshake_messages.go | 0 .../common}/ktls/ktls_key_update.go | 0 .../common}/ktls/ktls_linux.go | 0 .../common}/ktls/ktls_prf.go | 0 .../common}/ktls/ktls_read.go | 0 .../common}/ktls/ktls_read_wait.go | 0 .../common}/ktls/ktls_stub_nolinkname.go | 0 .../common}/ktls/ktls_stub_nonlinux.go | 0 .../common}/ktls/ktls_stub_oldgo.go | 0 .../common}/ktls/ktls_write.go | 0 .../common}/listener/listener.go | 0 .../common}/listener/listener_tcp.go | 0 .../common}/listener/listener_udp.go | 0 .../common}/migrate/source/raw.go | 0 {common => sing-box-rr/common}/mux/client.go | 0 {common => sing-box-rr/common}/mux/router.go | 0 .../common}/pipelistener/listener.go | 0 .../common}/process/searcher.go | 0 .../common}/process/searcher_android.go | 0 .../common}/process/searcher_darwin.go | 0 .../common}/process/searcher_darwin_shared.go | 0 .../common}/process/searcher_linux.go | 0 .../common}/process/searcher_linux_shared.go | 0 .../process/searcher_linux_shared_test.go | 0 .../common}/process/searcher_stub.go | 0 .../common}/process/searcher_windows.go | 0 .../common}/redir/redir_darwin.go | 0 .../common}/redir/redir_linux.go | 0 .../common}/redir/redir_other.go | 0 .../common}/redir/tproxy_linux.go | 0 .../common}/redir/tproxy_other.go | 0 .../common}/settings/proxy_android.go | 0 .../common}/settings/proxy_darwin.go | 0 .../common}/settings/proxy_linux.go | 0 .../common}/settings/proxy_stub.go | 0 .../common}/settings/proxy_windows.go | 0 .../common}/settings/system_proxy.go | 0 .../common}/settings/wifi.go | 0 .../common}/settings/wifi_linux.go | 0 .../common}/settings/wifi_linux_connman.go | 0 .../common}/settings/wifi_linux_iwd.go | 0 .../common}/settings/wifi_linux_nm.go | 0 .../common}/settings/wifi_linux_wpa.go | 0 .../common}/settings/wifi_stub.go | 0 .../common}/settings/wifi_windows.go | 0 .../common}/sniff/bittorrent.go | 0 .../common}/sniff/bittorrent_test.go | 0 {common => sing-box-rr/common}/sniff/dns.go | 0 .../common}/sniff/dns_test.go | 0 {common => sing-box-rr/common}/sniff/dtls.go | 0 .../common}/sniff/dtls_test.go | 0 {common => sing-box-rr/common}/sniff/http.go | 0 .../common}/sniff/http_test.go | 0 .../common}/sniff/internal/qtls/qtls.go | 0 {common => sing-box-rr/common}/sniff/ntp.go | 0 .../common}/sniff/ntp_test.go | 0 {common => sing-box-rr/common}/sniff/quic.go | 0 .../common}/sniff/quic_blacklist.go | 0 .../common}/sniff/quic_capture_test.go | 0 .../common}/sniff/quic_test.go | 0 {common => sing-box-rr/common}/sniff/rdp.go | 0 .../common}/sniff/rdp_test.go | 0 {common => sing-box-rr/common}/sniff/sniff.go | 0 {common => sing-box-rr/common}/sniff/ssh.go | 0 .../common}/sniff/ssh_test.go | 0 {common => sing-box-rr/common}/sniff/stun.go | 0 .../common}/sniff/stun_test.go | 0 {common => sing-box-rr/common}/sniff/tls.go | 0 {common => sing-box-rr/common}/srs/binary.go | 0 .../common}/srs/compat_test.go | 0 {common => sing-box-rr/common}/srs/ip_cidr.go | 0 {common => sing-box-rr/common}/srs/ip_set.go | 0 .../common}/taskmonitor/monitor.go | 0 {common => sing-box-rr/common}/tls/acme.go | 0 .../common}/tls/acme_contstant.go | 0 .../common}/tls/acme_stub.go | 0 {common => sing-box-rr/common}/tls/client.go | 0 {common => sing-box-rr/common}/tls/common.go | 0 {common => sing-box-rr/common}/tls/config.go | 0 {common => sing-box-rr/common}/tls/ech.go | 0 .../common}/tls/ech_shared.go | 0 .../common}/tls/ech_tag_stub.go | 0 {common => sing-box-rr/common}/tls/ktls.go | 0 .../common}/tls/masque_client.go | 0 {common => sing-box-rr/common}/tls/mkcert.go | 0 .../common}/tls/reality_client.go | 0 .../common}/tls/reality_server.go | 0 .../common}/tls/reality_stub.go | 0 {common => sing-box-rr/common}/tls/server.go | 0 .../common}/tls/std_client.go | 0 .../common}/tls/std_server.go | 0 .../common}/tls/time_wrapper.go | 0 .../common}/tls/utls_client.go | 0 .../common}/tls/utls_stub.go | 0 .../common}/tlsfragment/conn.go | 0 .../common}/tlsfragment/conn_test.go | 0 .../common}/tlsfragment/index.go | 0 .../common}/tlsfragment/index_test.go | 0 .../common}/tlsfragment/wait_darwin.go | 0 .../common}/tlsfragment/wait_linux.go | 0 .../common}/tlsfragment/wait_stub.go | 0 .../common}/tlsfragment/wait_windows.go | 0 {common => sing-box-rr/common}/uot/router.go | 0 .../common}/urltest/context.go | 0 .../common}/urltest/urltest.go | 0 {common => sing-box-rr/common}/utils.go | 0 {common => sing-box-rr/common}/vision/hook.go | 0 .../common}/xray/buf/buffer.go | 0 .../common}/xray/buf/copy.go | 0 {common => sing-box-rr/common}/xray/buf/io.go | 0 .../common}/xray/buf/multi_buffer.go | 0 .../common}/xray/buf/override.go | 0 .../common}/xray/buf/reader.go | 0 .../common}/xray/buf/writer.go | 0 .../common}/xray/bytespool/pool.go | 0 {common => sing-box-rr/common}/xray/common.go | 0 .../common}/xray/cpuid/cpuid.go | 0 .../common}/xray/crypto/crypto.go | 0 .../common}/xray/errors/errors.go | 0 .../common}/xray/interfaces.go | 0 .../common}/xray/json/badoption/range.go | 0 .../common}/xray/net/address.go | 0 .../common}/xray/net/destination.go | 0 .../common}/xray/net/net.go | 0 .../common}/xray/net/network.go | 0 .../common}/xray/net/port.go | 0 .../common}/xray/net/system.go | 0 .../common}/xray/pipe/impl.go | 0 .../common}/xray/pipe/pipe.go | 0 .../common}/xray/pipe/reader.go | 0 .../common}/xray/pipe/writer.go | 0 .../common}/xray/serial/serial.go | 0 .../common}/xray/serial/string.go | 0 .../common}/xray/signal/done/done.go | 0 .../common}/xray/signal/notifier.go | 0 .../common}/xray/signal/pubsub/pubsub.go | 0 .../xray/signal/semaphore/semaphore.go | 0 .../common}/xray/signal/timer.go | 0 .../common}/xray/stat/connection.go | 0 .../common}/xray/stats/stats.go | 0 .../common}/xray/task/common.go | 0 .../common}/xray/task/periodic.go | 0 .../common}/xray/task/task.go | 0 .../common}/xray/utils/browser.go | 0 .../common}/xray/utils/padding.go | 0 .../common}/xray/uuid/uuid.go | 0 .../constant}/certificate.go | 0 {constant => sing-box-rr/constant}/cgo.go | 0 .../constant}/cgo_disabled.go | 0 {constant => sing-box-rr/constant}/dhcp.go | 0 {constant => sing-box-rr/constant}/dns.go | 0 {constant => sing-box-rr/constant}/err.go | 0 .../constant}/goos/gengoos.go | 0 .../constant}/goos/goos.go | 0 .../constant}/goos/zgoos_aix.go | 0 .../constant}/goos/zgoos_android.go | 0 .../constant}/goos/zgoos_darwin.go | 0 .../constant}/goos/zgoos_dragonfly.go | 0 .../constant}/goos/zgoos_freebsd.go | 0 .../constant}/goos/zgoos_hurd.go | 0 .../constant}/goos/zgoos_illumos.go | 0 .../constant}/goos/zgoos_ios.go | 0 .../constant}/goos/zgoos_js.go | 0 .../constant}/goos/zgoos_linux.go | 0 .../constant}/goos/zgoos_netbsd.go | 0 .../constant}/goos/zgoos_openbsd.go | 0 .../constant}/goos/zgoos_plan9.go | 0 .../constant}/goos/zgoos_solaris.go | 0 .../constant}/goos/zgoos_windows.go | 0 .../constant}/goos/zgoos_zos.go | 0 .../constant}/hysteria2.go | 0 .../constant}/manager_api.go | 0 {constant => sing-box-rr/constant}/network.go | 0 .../constant}/node_manager_api.go | 0 {constant => sing-box-rr/constant}/os.go | 0 {constant => sing-box-rr/constant}/path.go | 0 .../constant}/path_unix.go | 0 .../constant}/protocol.go | 0 .../constant}/provider.go | 0 {constant => sing-box-rr/constant}/proxy.go | 0 {constant => sing-box-rr/constant}/quic.go | 0 .../constant}/quic_stub.go | 0 {constant => sing-box-rr/constant}/rule.go | 0 {constant => sing-box-rr/constant}/speed.go | 0 {constant => sing-box-rr/constant}/time.go | 0 {constant => sing-box-rr/constant}/timeout.go | 0 {constant => sing-box-rr/constant}/v2ray.go | 0 {constant => sing-box-rr/constant}/version.go | 0 {daemon => sing-box-rr/daemon}/deprecated.go | 0 {daemon => sing-box-rr/daemon}/instance.go | 0 {daemon => sing-box-rr/daemon}/platform.go | 0 .../daemon}/started_service.go | 0 .../daemon}/started_service.pb.go | 0 .../daemon}/started_service.proto | 0 .../daemon}/started_service_grpc.pb.go | 0 debug.go => sing-box-rr/debug.go | 0 debug_http.go => sing-box-rr/debug_http.go | 0 debug_stub.go => sing-box-rr/debug_stub.go | 0 debug_unix.go => sing-box-rr/debug_unix.go | 0 {dns => sing-box-rr/dns}/client.go | 0 {dns => sing-box-rr/dns}/client_log.go | 0 {dns => sing-box-rr/dns}/client_truncate.go | 0 .../dns}/extension_edns0_subnet.go | 0 {dns => sing-box-rr/dns}/rcode.go | 0 {dns => sing-box-rr/dns}/router.go | 0 .../dns}/transport/conn_pool.go | 0 .../dns}/transport/dhcp/dhcp.go | 0 .../dns}/transport/dhcp/dhcp_shared.go | 0 .../dns}/transport/fakeip/fakeip.go | 0 .../dns}/transport/fakeip/memory.go | 0 .../dns}/transport/fakeip/store.go | 0 .../dns}/transport/fallback/fallback.go | 0 .../dns}/transport/fallback/strategy.go | 0 .../dns}/transport/hosts/hosts.go | 0 .../dns}/transport/hosts/hosts_file.go | 0 .../dns}/transport/hosts/hosts_test.go | 0 .../dns}/transport/hosts/hosts_unix.go | 0 .../dns}/transport/hosts/hosts_windows.go | 0 .../dns}/transport/hosts/testdata/hosts | 0 {dns => sing-box-rr/dns}/transport/https.go | 0 .../dns}/transport/https_transport.go | 0 .../dns}/transport/local/local.go | 0 .../dns}/transport/local/local_darwin.go | 0 .../dns}/transport/local/local_darwin_dhcp.go | 0 .../transport/local/local_darwin_nodhcp.go | 0 .../dns}/transport/local/local_resolved.go | 0 .../transport/local/local_resolved_linux.go | 0 .../transport/local/local_resolved_stub.go | 0 .../dns}/transport/local/local_shared.go | 0 .../dns}/transport/local/resolv.go | 0 .../dns}/transport/local/resolv_default.go | 0 .../dns}/transport/local/resolv_test.go | 0 .../dns}/transport/local/resolv_unix.go | 0 .../dns}/transport/local/resolv_windows.go | 0 .../dns}/transport/quic/http3.go | 0 .../dns}/transport/quic/quic.go | 0 {dns => sing-box-rr/dns}/transport/sdns.go | 0 {dns => sing-box-rr/dns}/transport/tcp.go | 0 {dns => sing-box-rr/dns}/transport/tls.go | 0 {dns => sing-box-rr/dns}/transport/udp.go | 0 {dns => sing-box-rr/dns}/transport_adapter.go | 0 {dns => sing-box-rr/dns}/transport_dialer.go | 0 {dns => sing-box-rr/dns}/transport_manager.go | 0 .../dns}/transport_registry.go | 0 {docs => sing-box-rr/docs}/CNAME | 0 {docs => sing-box-rr/docs}/assets/icon.svg | 0 {docs => sing-box-rr/docs}/changelog.md | 0 .../docs}/clients/android/features.md | 0 .../docs}/clients/android/index.md | 0 .../docs}/clients/apple/features.md | 0 .../docs}/clients/apple/index.md | 0 {docs => sing-box-rr/docs}/clients/general.md | 0 {docs => sing-box-rr/docs}/clients/index.md | 0 .../docs}/clients/index.zh.md | 0 {docs => sing-box-rr/docs}/clients/privacy.md | 0 .../docs}/configuration/certificate/index.md | 0 .../configuration/certificate/index.zh.md | 0 .../docs}/configuration/dns/fakeip.md | 0 .../docs}/configuration/dns/fakeip.zh.md | 0 .../docs}/configuration/dns/index.md | 0 .../docs}/configuration/dns/index.zh.md | 0 .../docs}/configuration/dns/rule.md | 0 .../docs}/configuration/dns/rule.zh.md | 0 .../docs}/configuration/dns/rule_action.md | 0 .../docs}/configuration/dns/rule_action.zh.md | 0 .../docs}/configuration/dns/server/dhcp.md | 0 .../docs}/configuration/dns/server/dhcp.zh.md | 0 .../docs}/configuration/dns/server/fakeip.md | 0 .../configuration/dns/server/fakeip.zh.md | 0 .../docs}/configuration/dns/server/hosts.md | 0 .../configuration/dns/server/hosts.zh.md | 0 .../docs}/configuration/dns/server/http3.md | 0 .../configuration/dns/server/http3.zh.md | 0 .../docs}/configuration/dns/server/https.md | 0 .../configuration/dns/server/https.zh.md | 0 .../docs}/configuration/dns/server/index.md | 0 .../configuration/dns/server/index.zh.md | 0 .../docs}/configuration/dns/server/legacy.md | 0 .../configuration/dns/server/legacy.zh.md | 0 .../docs}/configuration/dns/server/local.md | 0 .../configuration/dns/server/local.zh.md | 0 .../docs}/configuration/dns/server/quic.md | 0 .../docs}/configuration/dns/server/quic.zh.md | 0 .../configuration/dns/server/resolved.md | 0 .../configuration/dns/server/resolved.zh.md | 0 .../configuration/dns/server/tailscale.md | 0 .../configuration/dns/server/tailscale.zh.md | 0 .../docs}/configuration/dns/server/tcp.md | 0 .../docs}/configuration/dns/server/tcp.zh.md | 0 .../docs}/configuration/dns/server/tls.md | 0 .../docs}/configuration/dns/server/tls.zh.md | 0 .../docs}/configuration/dns/server/udp.md | 0 .../docs}/configuration/dns/server/udp.zh.md | 0 .../docs}/configuration/endpoint/index.md | 0 .../docs}/configuration/endpoint/index.zh.md | 0 .../docs}/configuration/endpoint/tailscale.md | 0 .../configuration/endpoint/tailscale.zh.md | 0 .../docs}/configuration/endpoint/wireguard.md | 0 .../configuration/endpoint/wireguard.zh.md | 0 .../configuration/experimental/cache-file.md | 0 .../experimental/cache-file.zh.md | 0 .../configuration/experimental/clash-api.md | 0 .../experimental/clash-api.zh.md | 0 .../docs}/configuration/experimental/index.md | 0 .../configuration/experimental/index.zh.md | 0 .../configuration/experimental/v2ray-api.md | 0 .../experimental/v2ray-api.zh.md | 0 .../docs}/configuration/inbound/anytls.md | 0 .../docs}/configuration/inbound/anytls.zh.md | 0 .../docs}/configuration/inbound/direct.md | 0 .../docs}/configuration/inbound/direct.zh.md | 0 .../docs}/configuration/inbound/http.md | 0 .../docs}/configuration/inbound/http.zh.md | 0 .../docs}/configuration/inbound/hysteria.md | 0 .../configuration/inbound/hysteria.zh.md | 0 .../docs}/configuration/inbound/hysteria2.md | 0 .../configuration/inbound/hysteria2.zh.md | 0 .../docs}/configuration/inbound/index.md | 0 .../docs}/configuration/inbound/index.zh.md | 0 .../docs}/configuration/inbound/mixed.md | 0 .../docs}/configuration/inbound/mixed.zh.md | 0 .../docs}/configuration/inbound/naive.md | 0 .../docs}/configuration/inbound/naive.zh.md | 0 .../docs}/configuration/inbound/redirect.md | 0 .../configuration/inbound/redirect.zh.md | 0 .../configuration/inbound/shadowsocks.md | 0 .../configuration/inbound/shadowsocks.zh.md | 0 .../docs}/configuration/inbound/shadowtls.md | 0 .../configuration/inbound/shadowtls.zh.md | 0 .../docs}/configuration/inbound/socks.md | 0 .../docs}/configuration/inbound/socks.zh.md | 0 .../docs}/configuration/inbound/tproxy.md | 0 .../docs}/configuration/inbound/tproxy.zh.md | 0 .../docs}/configuration/inbound/trojan.md | 0 .../docs}/configuration/inbound/trojan.zh.md | 0 .../docs}/configuration/inbound/tuic.md | 0 .../docs}/configuration/inbound/tuic.zh.md | 0 .../docs}/configuration/inbound/tun.md | 0 .../docs}/configuration/inbound/tun.zh.md | 0 .../docs}/configuration/inbound/vless.md | 0 .../docs}/configuration/inbound/vless.zh.md | 0 .../docs}/configuration/inbound/vmess.md | 0 .../docs}/configuration/inbound/vmess.zh.md | 0 .../docs}/configuration/index.md | 0 .../docs}/configuration/index.zh.md | 0 .../docs}/configuration/log/index.md | 0 .../docs}/configuration/log/index.zh.md | 0 .../docs}/configuration/ntp/index.md | 0 .../docs}/configuration/ntp/index.zh.md | 0 .../docs}/configuration/outbound/anytls.md | 0 .../docs}/configuration/outbound/anytls.zh.md | 0 .../docs}/configuration/outbound/block.md | 0 .../docs}/configuration/outbound/block.zh.md | 0 .../docs}/configuration/outbound/direct.md | 0 .../docs}/configuration/outbound/direct.zh.md | 0 .../docs}/configuration/outbound/dns.md | 0 .../docs}/configuration/outbound/dns.zh.md | 0 .../docs}/configuration/outbound/http.md | 0 .../docs}/configuration/outbound/http.zh.md | 0 .../docs}/configuration/outbound/hysteria.md | 0 .../configuration/outbound/hysteria.zh.md | 0 .../docs}/configuration/outbound/hysteria2.md | 0 .../configuration/outbound/hysteria2.zh.md | 0 .../docs}/configuration/outbound/index.md | 0 .../docs}/configuration/outbound/index.zh.md | 0 .../docs}/configuration/outbound/mieru.md | 0 .../docs}/configuration/outbound/mieru.zh.md | 0 .../docs}/configuration/outbound/naive.md | 0 .../docs}/configuration/outbound/naive.zh.md | 0 .../docs}/configuration/outbound/selector.md | 0 .../configuration/outbound/selector.zh.md | 0 .../configuration/outbound/shadowsocks.md | 0 .../configuration/outbound/shadowsocks.zh.md | 0 .../docs}/configuration/outbound/shadowtls.md | 0 .../configuration/outbound/shadowtls.zh.md | 0 .../docs}/configuration/outbound/socks.md | 0 .../docs}/configuration/outbound/socks.zh.md | 0 .../docs}/configuration/outbound/ssh.md | 0 .../docs}/configuration/outbound/ssh.zh.md | 0 .../docs}/configuration/outbound/tor.md | 0 .../docs}/configuration/outbound/tor.zh.md | 0 .../docs}/configuration/outbound/trojan.md | 0 .../docs}/configuration/outbound/trojan.zh.md | 0 .../docs}/configuration/outbound/tuic.md | 0 .../docs}/configuration/outbound/tuic.zh.md | 0 .../docs}/configuration/outbound/urltest.md | 0 .../configuration/outbound/urltest.zh.md | 0 .../docs}/configuration/outbound/vless.md | 0 .../docs}/configuration/outbound/vless.zh.md | 0 .../docs}/configuration/outbound/vmess.md | 0 .../docs}/configuration/outbound/vmess.zh.md | 0 .../docs}/configuration/outbound/wireguard.md | 0 .../configuration/outbound/wireguard.zh.md | 0 .../docs}/configuration/route/geoip.md | 0 .../docs}/configuration/route/geoip.zh.md | 0 .../docs}/configuration/route/geosite.md | 0 .../docs}/configuration/route/geosite.zh.md | 0 .../docs}/configuration/route/index.md | 0 .../docs}/configuration/route/index.zh.md | 0 .../docs}/configuration/route/rule.md | 0 .../docs}/configuration/route/rule.zh.md | 0 .../docs}/configuration/route/rule_action.md | 0 .../configuration/route/rule_action.zh.md | 0 .../docs}/configuration/route/sniff.md | 0 .../docs}/configuration/route/sniff.zh.md | 0 .../docs}/configuration/rule-set/adguard.md | 0 .../configuration/rule-set/adguard.zh.md | 0 .../configuration/rule-set/headless-rule.md | 0 .../rule-set/headless-rule.zh.md | 0 .../docs}/configuration/rule-set/index.md | 0 .../docs}/configuration/rule-set/index.zh.md | 0 .../configuration/rule-set/source-format.md | 0 .../rule-set/source-format.zh.md | 0 .../docs}/configuration/service/ccm.md | 0 .../docs}/configuration/service/ccm.zh.md | 0 .../docs}/configuration/service/derp.md | 0 .../docs}/configuration/service/derp.zh.md | 0 .../docs}/configuration/service/index.md | 0 .../docs}/configuration/service/index.zh.md | 0 .../docs}/configuration/service/ocm.md | 0 .../docs}/configuration/service/ocm.zh.md | 0 .../docs}/configuration/service/resolved.md | 0 .../configuration/service/resolved.zh.md | 0 .../docs}/configuration/service/ssm-api.md | 0 .../docs}/configuration/service/ssm-api.zh.md | 0 .../docs}/configuration/shared/dial.md | 0 .../docs}/configuration/shared/dial.zh.md | 0 .../configuration/shared/dns01_challenge.md | 0 .../shared/dns01_challenge.zh.md | 0 .../docs}/configuration/shared/listen.md | 0 .../docs}/configuration/shared/listen.zh.md | 0 .../docs}/configuration/shared/multiplex.md | 0 .../configuration/shared/multiplex.zh.md | 0 .../docs}/configuration/shared/pre-match.md | 0 .../configuration/shared/pre-match.zh.md | 0 .../docs}/configuration/shared/tcp-brutal.md | 0 .../configuration/shared/tcp-brutal.zh.md | 0 .../docs}/configuration/shared/tls.md | 0 .../docs}/configuration/shared/tls.zh.md | 0 .../configuration/shared/udp-over-tcp.md | 0 .../configuration/shared/udp-over-tcp.zh.md | 0 .../configuration/shared/v2ray-transport.md | 0 .../shared/v2ray-transport.zh.md | 0 .../docs}/configuration/shared/wifi-state.md | 0 .../configuration/shared/wifi-state.zh.md | 0 {docs => sing-box-rr/docs}/deprecated.md | 0 {docs => sing-box-rr/docs}/deprecated.zh.md | 0 {docs => sing-box-rr/docs}/index.md | 0 {docs => sing-box-rr/docs}/index.zh.md | 0 .../docs}/installation/build-from-source.md | 12 +- .../installation/build-from-source.zh.md | 12 +- .../docs}/installation/docker.md | 0 .../docs}/installation/docker.zh.md | 0 .../docs}/installation/package-manager.md | 0 .../docs}/installation/package-manager.zh.md | 0 .../docs}/installation/tools/arch-install.sh | 0 .../docs}/installation/tools/deb-install.sh | 0 .../docs}/installation/tools/install.sh | 0 .../docs}/installation/tools/rpm-install.sh | 0 .../docs}/installation/tools/sing-box.repo | 0 .../docs}/manual/misc/tunnelvision.md | 0 .../docs}/manual/proxy-protocol/hysteria2.md | 0 .../manual/proxy-protocol/shadowsocks.md | 0 .../docs}/manual/proxy-protocol/trojan.md | 0 .../docs}/manual/proxy/client.md | 0 .../docs}/manual/proxy/server.md | 0 {docs => sing-box-rr/docs}/migration.md | 0 {docs => sing-box-rr/docs}/migration.zh.md | 0 {docs => sing-box-rr/docs}/sponsors.md | 0 {docs => sing-box-rr/docs}/support.md | 0 {docs => sing-box-rr/docs}/support.zh.md | 0 .../admin_panel-manager-node/client.json | 0 .../admin_panel-manager-node/manager.json | 0 .../admin_panel-manager-node/node.json | 0 .../screens/desktop/00-login.png | Bin .../screens/desktop/01-dashboard.png | Bin .../screens/desktop/02-squads.png | Bin .../screens/desktop/03-nodes.png | Bin .../screens/desktop/04-users.png | Bin .../screens/desktop/05-bandwidth-limiters.png | Bin .../screens/desktop/06-traffic-limiters.png | Bin .../desktop/07-connection-limiters.png | Bin .../screens/desktop/08-rate-limiters.png | Bin .../screens/mobile/00-login.png | Bin .../screens/mobile/01-dashboard.png | Bin .../screens/mobile/02-squads.png | Bin .../screens/mobile/03-nodes.png | Bin .../screens/mobile/04-users.png | Bin .../screens/mobile/05-bandwidth-limiters.png | Bin .../screens/mobile/06-traffic-limiters.png | Bin .../screens/mobile/07-connection-limiters.png | Bin .../screens/mobile/08-rate-limiters.png | Bin .../screens/mobile/09-nav-open.png | Bin .../examples}/amnezia/client.json | 0 .../examples}/bond/client.json | 0 .../examples}/bond/client_multi.json | 0 .../examples}/bond/client_split.json | 0 .../examples}/bond/server.json | 0 .../examples}/dns_fallback/client.json | 0 .../examples}/failover/client.json | 0 .../examples}/failover/server.json | 0 .../examples}/fallback/client.json | 0 .../limiters/bandwidth/connection.json | 0 .../examples}/limiters/bandwidth/global.json | 0 .../examples}/limiters/bandwidth/manager.json | 0 .../examples}/limiters/bandwidth/multi.json | 0 .../examples}/limiters/bandwidth/users.json | 0 .../limiters/connection/connection.json | 0 .../limiters/connection/manager.json | 0 .../examples}/limiters/connection/users.json | 0 .../examples}/limiters/rate/connection.json | 0 .../examples}/limiters/rate/global.json | 0 .../examples}/limiters/rate/manager.json | 0 .../examples}/limiters/rate/users.json | 0 .../examples}/limiters/traffic/global.json | 0 .../examples}/limiters/traffic/manager.json | 0 .../examples}/limiters/traffic/users.json | 0 .../examples}/masque/client.json | 0 .../examples}/mieru/client.json | 0 .../examples}/mkcp/client.json | 0 .../examples}/mkcp/server.json | 0 .../examples}/mtproxy/server.json | 0 .../examples}/parser/client.json | 0 .../examples}/provider/inline.json | 0 .../examples}/provider/local.json | 0 .../examples}/provider/remote.json | 0 .../examples}/sdns/client.json | 0 .../examples}/unified_delay/client.json | 0 .../examples}/vless_encryption/client.json | 0 .../examples}/vless_encryption/server.json | 0 .../examples}/vpn/client-server/client.json | 0 .../examples}/vpn/client-server/server.json | 0 .../vpn/client1-server-client2/client1.json | 0 .../vpn/client1-server-client2/client2.json | 0 .../vpn/client1-server-client2/server.json | 0 .../proxy_client.json | 0 .../server.json | 0 .../vpn_client.json | 0 .../examples}/vpn/server-client/client.json | 0 .../examples}/vpn/server-client/server.json | 0 .../examples}/warp/client.json | 0 .../examples}/wireguard/client.json | 0 .../examples}/xhttp/client.json | 0 .../examples}/xhttp/server.json | 0 .../experimental}/cachefile/cache.go | 0 .../experimental}/cachefile/fakeip.go | 0 .../experimental}/cachefile/rdrc.go | 0 .../experimental}/clashapi.go | 0 .../experimental}/clashapi/api_meta.go | 0 .../experimental}/clashapi/api_meta_group.go | 0 .../clashapi/api_meta_upgrade.go | 0 .../experimental}/clashapi/cache.go | 0 .../experimental}/clashapi/common.go | 0 .../experimental}/clashapi/configs.go | 0 .../experimental}/clashapi/connections.go | 0 .../experimental}/clashapi/ctxkeys.go | 0 .../experimental}/clashapi/dns.go | 0 .../experimental}/clashapi/errors.go | 0 .../experimental}/clashapi/profile.go | 0 .../experimental}/clashapi/provider.go | 0 .../experimental}/clashapi/proxies.go | 0 .../experimental}/clashapi/ruleprovider.go | 0 .../experimental}/clashapi/rules.go | 0 .../experimental}/clashapi/script.go | 0 .../experimental}/clashapi/server.go | 2 - .../experimental}/clashapi/server_fs.go | 0 .../clashapi/server_resources.go | 0 .../clashapi/trafficontrol/manager.go | 0 .../clashapi/trafficontrol/tracker.go | 0 .../experimental}/deprecated/constants.go | 0 .../experimental}/deprecated/manager.go | 0 .../experimental}/deprecated/stderr.go | 0 .../experimental}/libbox/build_info.go | 0 .../experimental}/libbox/command.go | 0 .../experimental}/libbox/command_client.go | 0 .../experimental}/libbox/command_server.go | 0 .../experimental}/libbox/command_types.go | 0 .../experimental}/libbox/config.go | 0 .../libbox/connection_owner_darwin.go | 0 .../experimental}/libbox/deprecated.go | 0 .../experimental}/libbox/dns.go | 0 .../experimental}/libbox/fdroid.go | 0 .../experimental}/libbox/fdroid_mirrors.go | 0 .../experimental}/libbox/ffi.json | 0 .../experimental}/libbox/http.go | 0 .../libbox/internal/procfs/procfs.go | 0 .../experimental}/libbox/iterator.go | 0 .../experimental}/libbox/link_flags_stub.go | 0 .../experimental}/libbox/link_flags_unix.go | 0 .../experimental}/libbox/log.go | 0 .../experimental}/libbox/memory.go | 0 .../experimental}/libbox/monitor.go | 0 .../experimental}/libbox/panic.go | 0 .../experimental}/libbox/pidfd_android.go | 0 .../experimental}/libbox/platform.go | 0 .../experimental}/libbox/pprof.go | 0 .../experimental}/libbox/profile_import.go | 0 .../experimental}/libbox/remote_profile.go | 0 .../experimental}/libbox/semver.go | 0 .../experimental}/libbox/semver_test.go | 0 .../experimental}/libbox/service.go | 0 .../experimental}/libbox/service_other.go | 0 .../experimental}/libbox/service_windows.go | 0 .../experimental}/libbox/setup.go | 0 .../experimental}/libbox/tun.go | 0 .../experimental}/libbox/tun_darwin.go | 0 .../experimental}/libbox/tun_name_darwin.go | 0 .../experimental}/libbox/tun_name_linux.go | 0 .../experimental}/libbox/tun_name_other.go | 0 .../experimental}/locale/locale.go | 0 .../experimental}/locale/locale_zh_CN.go | 0 .../experimental}/v2rayapi.go | 0 .../experimental}/v2rayapi/server.go | 0 .../experimental}/v2rayapi/stats.go | 0 .../experimental}/v2rayapi/stats.pb.go | 0 .../experimental}/v2rayapi/stats.proto | 0 .../experimental}/v2rayapi/stats_grpc.pb.go | 0 go.mod => sing-box-rr/go.mod | 0 go.sum => sing-box-rr/go.sum | 0 {include => sing-box-rr/include}/ccm.go | 0 {include => sing-box-rr/include}/ccm_stub.go | 0 .../include}/ccm_stub_darwin.go | 0 {include => sing-box-rr/include}/clashapi.go | 0 .../include}/clashapi_stub.go | 0 {include => sing-box-rr/include}/dhcp.go | 0 {include => sing-box-rr/include}/dhcp_stub.go | 0 {include => sing-box-rr/include}/masque.go | 0 .../include}/masque_stub.go | 0 {include => sing-box-rr/include}/mtproxy.go | 0 .../include}/mtproxy_stub.go | 0 .../include}/naive_outbound.go | 0 .../include}/naive_outbound_stub.go | 0 {include => sing-box-rr/include}/ocm.go | 0 {include => sing-box-rr/include}/ocm_stub.go | 0 .../include}/oom_killer.go | 0 {include => sing-box-rr/include}/profiler.go | 0 .../include}/profiler_stub.go | 0 {include => sing-box-rr/include}/quic.go | 0 {include => sing-box-rr/include}/quic_stub.go | 0 {include => sing-box-rr/include}/registry.go | 49 +-- {include => sing-box-rr/include}/tailscale.go | 0 .../include}/tailscale_stub.go | 0 .../include}/tz_android.go | 0 {include => sing-box-rr/include}/tz_ios.go | 0 {include => sing-box-rr/include}/v2rayapi.go | 0 .../include}/v2rayapi_stub.go | 0 {include => sing-box-rr/include}/wireguard.go | 0 .../include}/wireguard_stub.go | 0 {log => sing-box-rr/log}/export.go | 0 {log => sing-box-rr/log}/factory.go | 0 {log => sing-box-rr/log}/format.go | 0 {log => sing-box-rr/log}/id.go | 0 {log => sing-box-rr/log}/level.go | 0 {log => sing-box-rr/log}/log.go | 0 {log => sing-box-rr/log}/nop.go | 0 {log => sing-box-rr/log}/observable.go | 0 {log => sing-box-rr/log}/override.go | 0 {log => sing-box-rr/log}/platform.go | 0 mkdocs.yml => sing-box-rr/mkdocs.yml | 0 {option => sing-box-rr/option}/admin_panel.go | 0 {option => sing-box-rr/option}/anytls.go | 0 {option => sing-box-rr/option}/bond.go | 0 {option => sing-box-rr/option}/ccm.go | 0 {option => sing-box-rr/option}/certificate.go | 0 {option => sing-box-rr/option}/cloudflare.go | 0 {option => sing-box-rr/option}/debug.go | 0 {option => sing-box-rr/option}/direct.go | 0 {option => sing-box-rr/option}/dns.go | 0 {option => sing-box-rr/option}/dns_record.go | 0 {option => sing-box-rr/option}/endpoint.go | 0 .../option}/experimental.go | 0 {option => sing-box-rr/option}/failover.go | 0 {option => sing-box-rr/option}/group.go | 0 {option => sing-box-rr/option}/hysteria.go | 0 {option => sing-box-rr/option}/hysteria2.go | 0 {option => sing-box-rr/option}/inbound.go | 0 {option => sing-box-rr/option}/limiter.go | 0 {option => sing-box-rr/option}/manager.go | 0 {option => sing-box-rr/option}/manager_api.go | 0 {option => sing-box-rr/option}/masque.go | 0 {option => sing-box-rr/option}/mieru.go | 0 {option => sing-box-rr/option}/mtproxy.go | 0 {option => sing-box-rr/option}/multiplex.go | 0 {option => sing-box-rr/option}/naive.go | 0 {option => sing-box-rr/option}/node.go | 0 .../option}/node_manager_api.go | 0 {option => sing-box-rr/option}/ntp.go | 0 {option => sing-box-rr/option}/ocm.go | 0 {option => sing-box-rr/option}/oom_killer.go | 0 {option => sing-box-rr/option}/options.go | 1 - {option => sing-box-rr/option}/outbound.go | 0 {option => sing-box-rr/option}/parser.go | 0 {option => sing-box-rr/option}/platform.go | 0 {option => sing-box-rr/option}/profiler.go | 0 {option => sing-box-rr/option}/provider.go | 0 {option => sing-box-rr/option}/redir.go | 0 {option => sing-box-rr/option}/resolved.go | 0 {option => sing-box-rr/option}/route.go | 0 {option => sing-box-rr/option}/rule.go | 0 {option => sing-box-rr/option}/rule_action.go | 0 {option => sing-box-rr/option}/rule_dns.go | 0 {option => sing-box-rr/option}/rule_set.go | 0 {option => sing-box-rr/option}/service.go | 0 {option => sing-box-rr/option}/shadowsocks.go | 0 .../option}/shadowsocksr.go | 0 {option => sing-box-rr/option}/shadowtls.go | 0 {option => sing-box-rr/option}/simple.go | 0 {option => sing-box-rr/option}/ssh.go | 0 {option => sing-box-rr/option}/ssmapi.go | 0 {option => sing-box-rr/option}/tailscale.go | 0 {option => sing-box-rr/option}/tls.go | 0 {option => sing-box-rr/option}/tls_acme.go | 0 {option => sing-box-rr/option}/tor.go | 0 {option => sing-box-rr/option}/trojan.go | 0 {option => sing-box-rr/option}/tuic.go | 0 {option => sing-box-rr/option}/tun.go | 0 .../option}/tun_platform.go | 0 {option => sing-box-rr/option}/types.go | 0 .../option}/udp_over_tcp.go | 0 {option => sing-box-rr/option}/v2ray.go | 0 .../option}/v2ray_transport.go | 0 {option => sing-box-rr/option}/vless.go | 0 {option => sing-box-rr/option}/vmess.go | 0 {option => sing-box-rr/option}/vpn.go | 0 {option => sing-box-rr/option}/warp.go | 0 {option => sing-box-rr/option}/wireguard.go | 0 .../parser}/clash/anytls.go | 0 {parser => sing-box-rr/parser}/clash/base.go | 0 {parser => sing-box-rr/parser}/clash/http.go | 0 .../parser}/clash/hysteria.go | 0 .../parser}/clash/hysteria2.go | 0 .../parser}/clash/parser.go | 0 .../parser}/clash/shadowsocks.go | 0 .../parser}/clash/socks5.go | 0 {parser => sing-box-rr/parser}/clash/ssh.go | 0 .../parser}/clash/trojan.go | 0 {parser => sing-box-rr/parser}/clash/tuic.go | 0 {parser => sing-box-rr/parser}/clash/utils.go | 0 {parser => sing-box-rr/parser}/clash/vless.go | 0 {parser => sing-box-rr/parser}/clash/vmess.go | 0 .../parser}/link/hysteria.go | 0 .../parser}/link/hysteria2.go | 0 {parser => sing-box-rr/parser}/link/parser.go | 0 .../parser}/link/shadowsocks.go | 0 {parser => sing-box-rr/parser}/link/trojan.go | 0 {parser => sing-box-rr/parser}/link/tuic.go | 0 {parser => sing-box-rr/parser}/link/utils.go | 0 {parser => sing-box-rr/parser}/link/vless.go | 0 {parser => sing-box-rr/parser}/link/vmess.go | 0 {parser => sing-box-rr/parser}/parser.go | 0 {parser => sing-box-rr/parser}/raw/parser.go | 0 .../parser}/singbox/parser.go | 0 .../parser}/sip008/parser.go | 0 .../protocol}/anytls/inbound.go | 0 .../protocol}/anytls/outbound.go | 0 .../protocol}/block/outbound.go | 0 .../protocol}/bond/conn.go | 0 .../protocol}/bond/inbound.go | 0 .../protocol}/bond/outbound.go | 0 .../protocol}/bond/protocol.go | 0 .../protocol}/bond/router.go | 0 .../protocol}/direct/inbound.go | 0 .../protocol}/direct/loopback_detect.go | 0 .../protocol}/direct/outbound.go | 0 .../protocol}/dns/handle.go | 0 .../protocol}/dns/outbound.go | 0 .../protocol}/failover/conn.go | 0 .../protocol}/failover/inbound.go | 0 .../protocol}/failover/outbound.go | 0 .../protocol}/failover/protocol.go | 0 .../protocol}/failover/router.go | 0 .../protocol}/failover/strategy.go | 0 .../protocol}/group/fallback.go | 0 .../protocol}/group/selector.go | 0 .../protocol}/group/urltest.go | 0 .../protocol}/http/inbound.go | 0 .../protocol}/http/outbound.go | 0 .../protocol}/hysteria/inbound.go | 0 .../protocol}/hysteria/outbound.go | 0 .../protocol}/hysteria2/inbound.go | 0 .../protocol}/hysteria2/outbound.go | 0 .../protocol}/limiter/bandwidth/conn.go | 0 .../protocol}/limiter/bandwidth/limiter.go | 0 .../protocol}/limiter/bandwidth/outbound.go | 0 .../protocol}/limiter/bandwidth/strategy.go | 0 .../protocol}/limiter/connection/lock.go | 0 .../protocol}/limiter/connection/outbound.go | 0 .../protocol}/limiter/connection/strategy.go | 0 .../protocol}/limiter/rate/outbound.go | 0 .../protocol}/limiter/rate/strategy.go | 0 .../protocol}/limiter/traffic/conn.go | 0 .../protocol}/limiter/traffic/limiter.go | 0 .../protocol}/limiter/traffic/outbound.go | 0 .../protocol}/limiter/traffic/strategy.go | 0 .../protocol}/masque/config.go | 0 .../protocol}/masque/outbound.go | 0 .../protocol}/mieru/outbound.go | 0 .../protocol}/mixed/inbound.go | 0 .../protocol}/mtproxy/dialer.go | 0 .../protocol}/mtproxy/inbound.go | 0 .../protocol}/mtproxy/logger.go | 0 .../protocol}/mtproxy/network.go | 0 .../protocol}/naive/inbound.go | 0 .../protocol}/naive/inbound_conn.go | 0 .../protocol}/naive/outbound.go | 0 .../protocol}/naive/quic/inbound_init.go | 0 .../protocol}/parser/outbound.go | 0 .../protocol}/redirect/redirect.go | 0 .../protocol}/redirect/tproxy.go | 0 .../protocol}/shadowsocks/inbound.go | 0 .../protocol}/shadowsocks/inbound_multi.go | 0 .../protocol}/shadowsocks/inbound_relay.go | 0 .../protocol}/shadowsocks/outbound.go | 0 .../protocol}/shadowtls/inbound.go | 0 .../protocol}/shadowtls/outbound.go | 0 .../protocol}/socks/inbound.go | 0 .../protocol}/socks/outbound.go | 0 .../protocol}/ssh/outbound.go | 0 .../protocol}/tailscale/dns_transport.go | 0 .../protocol}/tailscale/endpoint.go | 0 .../protocol}/tailscale/tun_device_unix.go | 0 .../protocol}/tailscale/tun_device_windows.go | 0 .../protocol}/tor/outbound.go | 0 .../protocol}/tor/proxy.go | 0 .../protocol}/trojan/inbound.go | 0 .../protocol}/trojan/outbound.go | 0 .../protocol}/tuic/inbound.go | 0 .../protocol}/tuic/outbound.go | 0 .../protocol}/tun/hook.go | 0 .../protocol}/tun/inbound.go | 0 .../protocol}/vless/encryption/client.go | 0 .../protocol}/vless/encryption/common.go | 0 .../protocol}/vless/encryption/server.go | 0 .../protocol}/vless/encryption/xor.go | 0 .../protocol}/vless/inbound.go | 0 .../protocol}/vless/outbound.go | 0 .../protocol}/vmess/inbound.go | 0 .../protocol}/vmess/outbound.go | 0 .../protocol}/vpn/client.go | 0 .../protocol}/vpn/protocol.go | 0 .../protocol}/vpn/router.go | 0 .../protocol}/vpn/server.go | 0 .../protocol}/warp/config.go | 0 .../protocol}/warp/endpoint.go | 0 .../protocol}/wireguard/endpoint.go | 0 .../provider}/local/provider.go | 0 .../provider}/remote/provider.go | 0 sing-box-rr/release/DEFAULT_BUILD_TAGS | 1 + sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS | 1 + .../release/DEFAULT_BUILD_TAGS_WINDOWS | 1 + {release => sing-box-rr/release}/LDFLAGS | 0 .../release}/completions/sing-box.bash | 0 .../release}/completions/sing-box.fish | 0 .../release}/completions/sing-box.zsh | 0 .../release}/config/config.json | 0 .../release}/config/openwrt.conf | 0 .../release}/config/openwrt.init | 0 .../release}/config/openwrt.keep | 0 .../release}/config/openwrt.prerm | 0 .../release}/config/sing-box-split-dns.xml | 0 .../release}/config/sing-box.confd | 0 .../release}/config/sing-box.initd | 0 .../release}/config/sing-box.postinst | 0 .../release}/config/sing-box.rules | 0 .../release}/config/sing-box.service | 0 .../release}/config/sing-box.sysusers | 0 .../release}/config/sing-box@.service | 0 .../release}/local/common.sh | 0 .../release}/local/debug.sh | 0 .../release}/local/enable.sh | 0 .../release}/local/install.sh | 0 .../release}/local/install_go.sh | 0 .../release}/local/reinstall.sh | 0 .../release}/local/sing-box.service | 0 .../release}/local/uninstall.sh | 0 .../release}/local/update.sh | 0 {route => sing-box-rr/route}/conn.go | 0 {route => sing-box-rr/route}/dns.go | 0 {route => sing-box-rr/route}/network.go | 0 .../route}/platform_searcher.go | 0 {route => sing-box-rr/route}/process_cache.go | 0 {route => sing-box-rr/route}/route.go | 0 {route => sing-box-rr/route}/router.go | 0 .../route}/rule/match_state.go | 0 .../route}/rule/rule_abstract.go | 0 .../route}/rule/rule_abstract_test.go | 0 .../route}/rule/rule_action.go | 0 .../route}/rule/rule_default.go | 0 .../rule/rule_default_interface_address.go | 0 {route => sing-box-rr/route}/rule/rule_dns.go | 0 .../route}/rule/rule_headless.go | 0 .../route}/rule/rule_interface_address.go | 0 .../route}/rule/rule_item_adguard.go | 0 .../route}/rule/rule_item_auth_user.go | 0 .../route}/rule/rule_item_cidr.go | 0 .../route}/rule/rule_item_clash_mode.go | 0 .../route}/rule/rule_item_client.go | 0 .../route}/rule/rule_item_domain.go | 0 .../route}/rule/rule_item_domain_keyword.go | 0 .../route}/rule/rule_item_domain_regex.go | 0 .../route}/rule/rule_item_inbound.go | 0 .../route}/rule/rule_item_ip_accept_any.go | 0 .../route}/rule/rule_item_ip_is_private.go | 0 .../route}/rule/rule_item_ipversion.go | 0 .../route}/rule/rule_item_network.go | 0 .../rule/rule_item_network_is_constrained.go | 0 .../rule/rule_item_network_is_expensive.go | 0 .../route}/rule/rule_item_network_type.go | 0 .../route}/rule/rule_item_outbound.go | 0 .../route}/rule/rule_item_package_name.go | 0 .../route}/rule/rule_item_port.go | 0 .../route}/rule/rule_item_port_range.go | 0 .../route}/rule/rule_item_preferred_by.go | 0 .../route}/rule/rule_item_process_name.go | 0 .../route}/rule/rule_item_process_path.go | 0 .../rule/rule_item_process_path_regex.go | 0 .../route}/rule/rule_item_protocol.go | 0 .../route}/rule/rule_item_query_type.go | 0 .../route}/rule/rule_item_rule_set.go | 0 .../route}/rule/rule_item_user.go | 0 .../route}/rule/rule_item_user_id.go | 0 .../route}/rule/rule_item_wifi_bssid.go | 0 .../route}/rule/rule_item_wifi_ssid.go | 0 .../rule/rule_network_interface_address.go | 0 {route => sing-box-rr/route}/rule/rule_set.go | 0 .../route}/rule/rule_set_local.go | 0 .../route}/rule/rule_set_remote.go | 0 .../route}/rule/rule_set_semantics_test.go | 0 {route => sing-box-rr/route}/rule_conds.go | 0 .../service}/admin_panel/README.md | 0 .../service}/admin_panel/service.go | 0 .../service}/admin_panel/service_stub.go | 0 .../service}/admin_panel/service_test.go | 0 .../service}/admin_panel/web/.gitignore | 0 .../service}/admin_panel/web/index.html | 0 .../admin_panel/web/package-lock.json | 0 .../service}/admin_panel/web/package.json | 0 .../service}/admin_panel/web/src/App.tsx | 0 .../admin_panel/web/src/api/client.ts | 0 .../service}/admin_panel/web/src/api/types.ts | 0 .../admin_panel/web/src/assets/icon.svg | 0 .../admin_panel/web/src/auth/AuthContext.tsx | 0 .../web/src/components/ColorPickerButton.tsx | 0 .../web/src/components/CopyableId.tsx | 0 .../web/src/components/CrudPage.tsx | 0 .../admin_panel/web/src/components/Layout.tsx | 0 .../web/src/components/LoginBackdropMesh.tsx | 0 .../web/src/components/LoginThemeControls.tsx | 0 .../web/src/components/PageHeader.tsx | 0 .../service}/admin_panel/web/src/main.tsx | 0 .../notifications/NotificationsProvider.tsx | 0 .../web/src/pages/BandwidthLimitersPage.tsx | 0 .../web/src/pages/ConnectionLimitersPage.tsx | 0 .../web/src/pages/DashboardPage.tsx | 0 .../admin_panel/web/src/pages/LoginPage.tsx | 0 .../admin_panel/web/src/pages/NodesPage.tsx | 0 .../web/src/pages/RateLimitersPage.tsx | 0 .../admin_panel/web/src/pages/SquadsPage.tsx | 0 .../web/src/pages/TrafficLimitersPage.tsx | 0 .../admin_panel/web/src/pages/UsersPage.tsx | 0 .../admin_panel/web/src/pages/squadField.tsx | 0 .../service}/admin_panel/web/src/theme.ts | 0 .../web/src/theme/AppThemeProvider.tsx | 0 .../admin_panel/web/src/vite-env.d.ts | 0 .../service}/admin_panel/web/tsconfig.json | 0 .../admin_panel/web/tsconfig.tsbuildinfo | 0 .../service}/admin_panel/web/vite.config.ts | 0 .../service}/ccm/credential.go | 0 .../service}/ccm/credential_darwin.go | 0 .../service}/ccm/credential_other.go | 0 .../service}/ccm/service.go | 0 .../service}/ccm/service_usage.go | 0 .../service}/ccm/service_user.go | 0 .../service}/derp/service.go | 0 .../service}/manager/constant/dto.go | 0 .../service}/manager/constant/error.go | 0 .../service}/manager/constant/manager.go | 0 .../service}/manager/constant/node.go | 0 .../service}/manager/constant/repository.go | 0 .../manager/repository/postgresql/filter.go | 0 .../repository/postgresql/migration.go | 0 .../repository/postgresql/repository.go | 0 .../manager/repository/postgresql/utils.go | 0 .../manager/repository/sqlite/filter.go | 0 .../manager/repository/sqlite/migration.go | 0 .../manager/repository/sqlite/repository.go | 0 .../manager/repository/sqlite/utils.go | 0 .../service}/manager/service.go | 0 .../service}/manager/service_stub.go | 0 .../manager_api/grpc/client/client.go | 0 .../manager_api/grpc/client/converter.go | 0 .../manager_api/grpc/client/manager.go | 0 .../service}/manager_api/grpc/client/tls.go | 0 .../manager_api/grpc/manager/manager.pb.go | 0 .../manager_api/grpc/manager/manager.proto | 0 .../grpc/manager/manager_grpc.pb.go | 0 .../manager_api/grpc/server/converter.go | 0 .../service}/manager_api/grpc/server/rpc.go | 0 .../manager_api/grpc/server/server.go | 0 .../manager_api/http/client/client.go | 0 .../manager_api/http/client/manager.go | 0 .../manager_api/http/server/openapi.yaml | 0 .../manager_api/http/server/server.go | 0 .../manager_api/http/server/server_test.go | 0 .../manager_api/http/server/swagger.go | 0 .../service}/manager_api/service.go | 0 .../service}/node/constant/bandwidth.go | 0 .../service}/node/constant/connection.go | 0 .../service}/node/constant/inbound.go | 0 .../service}/node/constant/rate.go | 0 .../service}/node/constant/traffic.go | 0 .../service}/node/inbound/hysteria.go | 0 .../service}/node/inbound/hysteria2.go | 0 .../service}/node/inbound/mtproxy.go | 0 .../service}/node/inbound/trojan.go | 0 .../service}/node/inbound/tuic.go | 0 .../service}/node/inbound/vless.go | 0 .../service}/node/inbound/vmess.go | 0 .../service}/node/limiter/bandwidth.go | 0 .../service}/node/limiter/connection.go | 0 .../service}/node/limiter/rate.go | 0 .../service}/node/limiter/traffic.go | 0 .../service}/node/service.go | 0 .../node_manager_api/client/client.go | 0 .../service}/node_manager_api/client/tls.go | 0 .../node_manager_api/manager/manager.pb.go | 0 .../node_manager_api/manager/manager.proto | 0 .../manager/manager_grpc.pb.go | 0 .../service}/node_manager_api/server/node.go | 0 .../node_manager_api/server/server.go | 0 .../service}/node_manager_api/service.go | 0 .../service}/ocm/credential.go | 0 .../service}/ocm/credential_darwin.go | 0 .../service}/ocm/credential_other.go | 0 .../service}/ocm/service.go | 0 .../service}/ocm/service_usage.go | 0 .../service}/ocm/service_user.go | 0 .../service}/ocm/service_websocket.go | 0 .../service}/oomkiller/config.go | 0 .../service}/oomkiller/service.go | 0 .../service}/oomkiller/service_stub.go | 0 .../service}/oomkiller/service_timer.go | 0 .../service}/profiler/service.go | 0 .../service}/resolved/resolve1.go | 0 .../service}/resolved/service.go | 0 .../service}/resolved/stub.go | 0 .../service}/resolved/transport.go | 0 .../service}/ssmapi/api.go | 0 .../service}/ssmapi/cache.go | 0 .../service}/ssmapi/server.go | 0 .../service}/ssmapi/traffic.go | 0 .../service}/ssmapi/user.go | 0 {test => sing-box-rr/test}/box_test.go | 0 {test => sing-box-rr/test}/brutal_test.go | 0 .../test}/clash_darwin_test.go | 0 .../test}/clash_other_test.go | 0 {test => sing-box-rr/test}/clash_test.go | 0 .../test}/config/hysteria-client.json | 0 .../test}/config/hysteria-server.json | 0 .../test}/config/hysteria2-client.yml | 0 .../test}/config/hysteria2-server.yml | 0 .../test}/config/naive-nginx.conf | 0 .../test}/config/naive-quic.json | 0 {test => sing-box-rr/test}/config/naive.json | 0 {test => sing-box-rr/test}/config/nginx.conf | 0 .../test}/config/shadowsocksr.json | 0 {test => sing-box-rr/test}/config/trojan.json | 0 .../test}/config/tuic-client.json | 0 .../test}/config/tuic-server.json | 0 .../test}/config/vless-server.json | 0 .../test}/config/vless-tls-client.json | 0 .../test}/config/vless-tls-server.json | 0 .../test}/config/vmess-client.json | 0 .../test}/config/vmess-grpc-client.json | 0 .../test}/config/vmess-grpc-server.json | 0 .../test}/config/vmess-mux-client.json | 0 .../test}/config/vmess-server.json | 0 .../test}/config/vmess-ws-client.json | 0 .../test}/config/vmess-ws-server.json | 0 .../test}/config/wireguard.conf | 0 {test => sing-box-rr/test}/direct_test.go | 0 {test => sing-box-rr/test}/docker_test.go | 0 .../test}/domain_inbound_test.go | 0 {test => sing-box-rr/test}/ech_test.go | 0 {test => sing-box-rr/test}/go.mod | 0 {test => sing-box-rr/test}/go.sum | 0 {test => sing-box-rr/test}/http_test.go | 0 {test => sing-box-rr/test}/hysteria2_test.go | 0 {test => sing-box-rr/test}/hysteria_test.go | 0 .../test}/inbound_detour_test.go | 0 {test => sing-box-rr/test}/ktls_test.go | 0 {test => sing-box-rr/test}/mkcert.go | 0 {test => sing-box-rr/test}/mux_cool_test.go | 0 {test => sing-box-rr/test}/mux_test.go | 0 {test => sing-box-rr/test}/naive_self_test.go | 0 {test => sing-box-rr/test}/naive_test.go | 0 {test => sing-box-rr/test}/reality_test.go | 0 .../test}/shadowsocks_legacy_test.go | 0 .../test}/shadowsocks_test.go | 0 {test => sing-box-rr/test}/shadowtls_test.go | 0 {test => sing-box-rr/test}/socks_test.go | 0 {test => sing-box-rr/test}/ss_plugin_test.go | 0 {test => sing-box-rr/test}/tfo_test.go | 0 {test => sing-box-rr/test}/tls_test.go | 0 {test => sing-box-rr/test}/trojan_test.go | 0 {test => sing-box-rr/test}/tuic_test.go | 0 {test => sing-box-rr/test}/v2ray_api_test.go | 0 {test => sing-box-rr/test}/v2ray_grpc_test.go | 0 .../test}/v2ray_httpupgrade_test.go | 0 .../test}/v2ray_transport_test.go | 0 {test => sing-box-rr/test}/v2ray_ws_test.go | 0 {test => sing-box-rr/test}/vmess_test.go | 0 {test => sing-box-rr/test}/wrapper_test.go | 0 .../transport}/masque/adapter.go | 0 .../transport}/masque/buffer.go | 0 .../transport}/masque/device.go | 0 .../transport}/masque/device_stack.go | 0 .../transport}/masque/masque.go | 0 .../transport}/masque/options.go | 0 .../transport}/masque/tunnel.go | 0 .../transport}/masque/utils.go | 0 .../transport}/simple-obfs/README.md | 0 .../transport}/simple-obfs/http.go | 0 .../transport}/simple-obfs/tls.go | 0 .../transport}/sip003/args.go | 0 .../transport}/sip003/obfs.go | 0 .../transport}/sip003/plugin.go | 0 .../transport}/sip003/v2ray.go | 0 .../transport}/trojan/mux.go | 0 .../transport}/trojan/protocol.go | 0 .../transport}/trojan/protocol_wait.go | 0 .../transport}/trojan/service.go | 0 .../transport}/trojan/service_wait.go | 0 .../transport}/v2ray/grpc.go | 0 .../transport}/v2ray/grpc_lite.go | 0 .../transport}/v2ray/quic.go | 0 .../transport}/v2ray/transport.go | 0 .../transport}/v2raygrpc/client.go | 0 .../transport}/v2raygrpc/conn.go | 0 .../v2raygrpc/credentials/credentials.go | 0 .../v2raygrpc/credentials/spiffe.go | 0 .../v2raygrpc/credentials/syscallconn.go | 0 .../transport}/v2raygrpc/credentials/util.go | 0 .../transport}/v2raygrpc/custom_name.go | 0 .../transport}/v2raygrpc/server.go | 0 .../transport}/v2raygrpc/stream.pb.go | 0 .../transport}/v2raygrpc/stream.proto | 0 .../transport}/v2raygrpc/stream_grpc.pb.go | 0 .../transport}/v2raygrpc/tls_credentials.go | 0 .../transport}/v2raygrpclite/client.go | 0 .../transport}/v2raygrpclite/conn.go | 0 .../transport}/v2raygrpclite/server.go | 0 .../transport}/v2rayhttp/client.go | 0 .../transport}/v2rayhttp/conn.go | 0 .../transport}/v2rayhttp/force_close.go | 0 .../transport}/v2rayhttp/pool.go | 0 .../transport}/v2rayhttp/server.go | 0 .../transport}/v2rayhttpupgrade/client.go | 0 .../transport}/v2rayhttpupgrade/server.go | 0 .../transport}/v2raykcp/config.go | 0 .../transport}/v2raykcp/connection.go | 0 .../transport}/v2raykcp/crypt.go | 0 .../transport}/v2raykcp/dialer.go | 0 .../transport}/v2raykcp/errors.go | 0 .../transport}/v2raykcp/header.go | 0 .../transport}/v2raykcp/listener.go | 0 .../transport}/v2raykcp/multi_buffer.go | 0 .../transport}/v2raykcp/output.go | 0 .../transport}/v2raykcp/receiving.go | 0 .../transport}/v2raykcp/segment.go | 0 .../transport}/v2raykcp/sending.go | 0 .../transport}/v2raykcp/updater.go | 0 .../transport}/v2rayquic/client.go | 0 .../transport}/v2rayquic/init.go | 0 .../transport}/v2rayquic/server.go | 0 .../transport}/v2rayquic/stream.go | 0 .../transport}/v2raywebsocket/client.go | 0 .../transport}/v2raywebsocket/conn.go | 0 .../transport}/v2raywebsocket/server.go | 0 .../transport}/v2raywebsocket/writer.go | 0 .../transport}/v2rayxhttp/client.go | 0 .../transport}/v2rayxhttp/conn.go | 0 .../transport}/v2rayxhttp/dialer.go | 0 .../transport}/v2rayxhttp/http.go | 0 .../transport}/v2rayxhttp/mux.go | 0 .../transport}/v2rayxhttp/server.go | 0 .../transport}/v2rayxhttp/upload_queue.go | 0 .../transport}/v2rayxhttp/utils.go | 0 .../transport}/v2rayxhttp/writer.go | 0 .../transport}/v2rayxhttp/xpadding.go | 0 .../transport}/wireguard/client_bind.go | 0 .../transport}/wireguard/device.go | 0 .../transport}/wireguard/device_nat.go | 0 .../transport}/wireguard/device_stack.go | 0 .../wireguard/device_stack_gonet.go | 0 .../transport}/wireguard/device_stack_stub.go | 0 .../transport}/wireguard/device_system.go | 0 .../wireguard/device_system_stack.go | 0 .../transport}/wireguard/endpoint.go | 0 .../transport}/wireguard/endpoint_options.go | 0 1388 files changed, 1092 insertions(+), 137 deletions(-) create mode 100644 SOURCE_DATE_EPOCH create mode 100644 VERSION create mode 100755 build-apk.sh create mode 100755 build-ipk.sh delete mode 160000 clients/android delete mode 160000 clients/apple delete mode 100644 cmd/internal/build/main.go delete mode 100644 release/DEFAULT_BUILD_TAGS delete mode 100644 release/DEFAULT_BUILD_TAGS_OTHERS delete mode 100644 release/DEFAULT_BUILD_TAGS_WINDOWS rename .fpm_openwrt => sing-box-rr/.fpm_openwrt (100%) rename .fpm_pacman => sing-box-rr/.fpm_pacman (100%) rename .fpm_systemd => sing-box-rr/.fpm_systemd (100%) rename {.github => sing-box-rr/.github}/CRONET_GO_VERSION (100%) rename {.github => sing-box-rr/.github}/FUNDING.yml (100%) rename {.github => sing-box-rr/.github}/ISSUE_TEMPLATE/bug_report.yml (100%) rename {.github => sing-box-rr/.github}/ISSUE_TEMPLATE/bug_report_zh.yml (100%) rename {.github => sing-box-rr/.github}/build_alpine_apk.sh (100%) rename {.github => sing-box-rr/.github}/build_openwrt_apk.sh (100%) rename {.github => sing-box-rr/.github}/deb2ipk.sh (100%) rename {.github => sing-box-rr/.github}/detect_track.sh (100%) rename {.github => sing-box-rr/.github}/renovate.json (100%) rename {.github => sing-box-rr/.github}/setup_go_for_macos1013.sh (100%) rename {.github => sing-box-rr/.github}/setup_go_for_windows7.sh (100%) rename {.github => sing-box-rr/.github}/update_clients.sh (100%) rename {.github => sing-box-rr/.github}/update_cronet.sh (100%) rename {.github => sing-box-rr/.github}/update_cronet_dev.sh (100%) rename {.github => sing-box-rr/.github}/update_dependencies.sh (100%) rename {.github => sing-box-rr/.github}/workflows/build.yml (100%) rename {.github => sing-box-rr/.github}/workflows/docker.yml (100%) rename {.github => sing-box-rr/.github}/workflows/lint.yml (100%) rename {.github => sing-box-rr/.github}/workflows/linux.yml (100%) rename {.github => sing-box-rr/.github}/workflows/stale.yml (100%) create mode 100644 sing-box-rr/.gitignore rename .gitmodules => sing-box-rr/.gitmodules (100%) rename .golangci.yml => sing-box-rr/.golangci.yml (100%) rename .goreleaser.yaml => sing-box-rr/.goreleaser.yaml (100%) create mode 100644 sing-box-rr/BUILD.md rename DONATE.md => sing-box-rr/DONATE.md (100%) rename Dockerfile => sing-box-rr/Dockerfile (100%) rename Dockerfile.binary => sing-box-rr/Dockerfile.binary (100%) rename LICENSE => sing-box-rr/LICENSE (100%) create mode 100644 sing-box-rr/Makefile rename Makefile => sing-box-rr/Makefile.sing-box (100%) rename README.md => sing-box-rr/README.md (65%) rename {adapter => sing-box-rr/adapter}/certificate.go (100%) rename {adapter => sing-box-rr/adapter}/connections.go (100%) rename {adapter => sing-box-rr/adapter}/dns.go (100%) rename {adapter => sing-box-rr/adapter}/endpoint.go (100%) rename {adapter => sing-box-rr/adapter}/endpoint/adapter.go (100%) rename {adapter => sing-box-rr/adapter}/endpoint/manager.go (100%) rename {adapter => sing-box-rr/adapter}/endpoint/registry.go (100%) rename {adapter => sing-box-rr/adapter}/experimental.go (100%) rename {adapter => sing-box-rr/adapter}/fakeip.go (100%) rename {adapter => sing-box-rr/adapter}/fakeip_metadata.go (100%) rename {adapter => sing-box-rr/adapter}/handler.go (100%) rename {adapter => sing-box-rr/adapter}/inbound.go (100%) rename {adapter => sing-box-rr/adapter}/inbound/adapter.go (100%) rename {adapter => sing-box-rr/adapter}/inbound/manager.go (100%) rename {adapter => sing-box-rr/adapter}/inbound/registry.go (100%) rename {adapter => sing-box-rr/adapter}/lifecycle.go (100%) rename {adapter => sing-box-rr/adapter}/lifecycle_legacy.go (100%) rename {adapter => sing-box-rr/adapter}/network.go (100%) rename {adapter => sing-box-rr/adapter}/outbound.go (100%) rename {adapter => sing-box-rr/adapter}/outbound/adapter.go (100%) rename {adapter => sing-box-rr/adapter}/outbound/manager.go (100%) rename {adapter => sing-box-rr/adapter}/outbound/registry.go (100%) rename {adapter => sing-box-rr/adapter}/platform.go (100%) rename {adapter => sing-box-rr/adapter}/prestart.go (100%) rename {adapter => sing-box-rr/adapter}/provider.go (100%) rename {adapter => sing-box-rr/adapter}/provider/adapter.go (100%) rename {adapter => sing-box-rr/adapter}/provider/manager.go (100%) rename {adapter => sing-box-rr/adapter}/provider/registry.go (100%) rename {adapter => sing-box-rr/adapter}/router.go (100%) rename {adapter => sing-box-rr/adapter}/rule.go (100%) rename {adapter => sing-box-rr/adapter}/service.go (100%) rename {adapter => sing-box-rr/adapter}/service/adapter.go (100%) rename {adapter => sing-box-rr/adapter}/service/manager.go (100%) rename {adapter => sing-box-rr/adapter}/service/registry.go (100%) rename {adapter => sing-box-rr/adapter}/ssm.go (100%) rename {adapter => sing-box-rr/adapter}/time.go (100%) rename {adapter => sing-box-rr/adapter}/upstream.go (100%) rename {adapter => sing-box-rr/adapter}/upstream_legacy.go (100%) rename {adapter => sing-box-rr/adapter}/v2ray.go (100%) rename box.go => sing-box-rr/box.go (98%) rename {cmd => sing-box-rr/cmd}/internal/admin_panel_pack/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/app_store_connect/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/build_libbox/main.go (92%) rename {cmd => sing-box-rr/cmd}/internal/build_shared/sdk.go (100%) rename {cmd => sing-box-rr/cmd}/internal/build_shared/tag.go (100%) rename {cmd => sing-box-rr/cmd}/internal/format_docs/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/protogen/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/read_tag/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/tun_bench/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/update_android_version/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/update_apple_version/main.go (100%) rename {cmd => sing-box-rr/cmd}/internal/update_certificates/main.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cache.db (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_check.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_format.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_generate.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_generate_ech.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_generate_tls.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_generate_vapid.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_generate_wireguard.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geoip.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geoip_export.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geoip_list.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geoip_lookup.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geosite.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geosite_export.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geosite_list.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geosite_lookup.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_geosite_matcher.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_merge.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set_compile.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set_convert.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set_decompile.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set_format.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set_match.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set_merge.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_rule_set_upgrade.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_run.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_tools.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_tools_connect.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_tools_fetch.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_tools_fetch_http3.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_tools_fetch_http3_stub.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_tools_synctime.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/cmd_version.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/generate_completions.go (100%) rename {cmd => sing-box-rr/cmd}/sing-box/main.go (100%) rename {common => sing-box-rr/common}/badtls/raw_conn.go (100%) rename {common => sing-box-rr/common}/badtls/raw_half_conn.go (100%) rename {common => sing-box-rr/common}/badtls/read_wait.go (100%) rename {common => sing-box-rr/common}/badtls/read_wait_stub.go (100%) rename {common => sing-box-rr/common}/badtls/registry.go (100%) rename {common => sing-box-rr/common}/badtls/registry_utls.go (100%) rename {common => sing-box-rr/common}/badversion/version.go (100%) rename {common => sing-box-rr/common}/badversion/version_json.go (100%) rename {common => sing-box-rr/common}/badversion/version_test.go (100%) rename {common => sing-box-rr/common}/byteformats/formats.go (100%) rename {common => sing-box-rr/common}/byteformats/json.go (100%) rename {common => sing-box-rr/common}/byteformats/json_test.go (100%) rename {common => sing-box-rr/common}/certificate/chrome.go (100%) rename {common => sing-box-rr/common}/certificate/mozilla.go (100%) rename {common => sing-box-rr/common}/certificate/store.go (100%) rename {common => sing-box-rr/common}/cloudflare/api.go (100%) rename {common => sing-box-rr/common}/cloudflare/constant.go (100%) rename {common => sing-box-rr/common}/cloudflare/models.go (100%) rename {common => sing-box-rr/common}/cloudflare/option.go (100%) rename {common => sing-box-rr/common}/cloudflare/utils.go (100%) rename {common => sing-box-rr/common}/compatible/map.go (100%) rename {common => sing-box-rr/common}/convertor/adguard/convertor.go (100%) rename {common => sing-box-rr/common}/convertor/adguard/convertor_test.go (100%) rename {common => sing-box-rr/common}/dialer/default.go (100%) rename {common => sing-box-rr/common}/dialer/default_parallel_interface.go (100%) rename {common => sing-box-rr/common}/dialer/default_parallel_network.go (100%) rename {common => sing-box-rr/common}/dialer/detour.go (100%) rename {common => sing-box-rr/common}/dialer/dialer.go (100%) rename {common => sing-box-rr/common}/dialer/resolve.go (100%) rename {common => sing-box-rr/common}/dialer/router.go (100%) rename {common => sing-box-rr/common}/dialer/tfo.go (100%) rename {common => sing-box-rr/common}/dialer/wireguard.go (100%) rename {common => sing-box-rr/common}/geoip/reader.go (100%) rename {common => sing-box-rr/common}/geosite/compat_test.go (100%) rename {common => sing-box-rr/common}/geosite/geosite_test.go (100%) rename {common => sing-box-rr/common}/geosite/reader.go (100%) rename {common => sing-box-rr/common}/geosite/rule.go (100%) rename {common => sing-box-rr/common}/geosite/writer.go (100%) rename {common => sing-box-rr/common}/interrupt/conn.go (100%) rename {common => sing-box-rr/common}/interrupt/context.go (100%) rename {common => sing-box-rr/common}/interrupt/group.go (100%) rename {common => sing-box-rr/common}/ja3/LICENSE (100%) rename {common => sing-box-rr/common}/ja3/README.md (100%) rename {common => sing-box-rr/common}/ja3/error.go (100%) rename {common => sing-box-rr/common}/ja3/ja3.go (100%) rename {common => sing-box-rr/common}/ja3/parser.go (100%) rename {common => sing-box-rr/common}/kmutex/mutex.go (100%) rename {common => sing-box-rr/common}/kmutex/mutex_test.go (100%) rename {common => sing-box-rr/common}/ktls/ktls.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_alert.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_cipher_suites_linux.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_close.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_const.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_handshake_messages.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_key_update.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_linux.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_prf.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_read.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_read_wait.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_stub_nolinkname.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_stub_nonlinux.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_stub_oldgo.go (100%) rename {common => sing-box-rr/common}/ktls/ktls_write.go (100%) rename {common => sing-box-rr/common}/listener/listener.go (100%) rename {common => sing-box-rr/common}/listener/listener_tcp.go (100%) rename {common => sing-box-rr/common}/listener/listener_udp.go (100%) rename {common => sing-box-rr/common}/migrate/source/raw.go (100%) rename {common => sing-box-rr/common}/mux/client.go (100%) rename {common => sing-box-rr/common}/mux/router.go (100%) rename {common => sing-box-rr/common}/pipelistener/listener.go (100%) rename {common => sing-box-rr/common}/process/searcher.go (100%) rename {common => sing-box-rr/common}/process/searcher_android.go (100%) rename {common => sing-box-rr/common}/process/searcher_darwin.go (100%) rename {common => sing-box-rr/common}/process/searcher_darwin_shared.go (100%) rename {common => sing-box-rr/common}/process/searcher_linux.go (100%) rename {common => sing-box-rr/common}/process/searcher_linux_shared.go (100%) rename {common => sing-box-rr/common}/process/searcher_linux_shared_test.go (100%) rename {common => sing-box-rr/common}/process/searcher_stub.go (100%) rename {common => sing-box-rr/common}/process/searcher_windows.go (100%) rename {common => sing-box-rr/common}/redir/redir_darwin.go (100%) rename {common => sing-box-rr/common}/redir/redir_linux.go (100%) rename {common => sing-box-rr/common}/redir/redir_other.go (100%) rename {common => sing-box-rr/common}/redir/tproxy_linux.go (100%) rename {common => sing-box-rr/common}/redir/tproxy_other.go (100%) rename {common => sing-box-rr/common}/settings/proxy_android.go (100%) rename {common => sing-box-rr/common}/settings/proxy_darwin.go (100%) rename {common => sing-box-rr/common}/settings/proxy_linux.go (100%) rename {common => sing-box-rr/common}/settings/proxy_stub.go (100%) rename {common => sing-box-rr/common}/settings/proxy_windows.go (100%) rename {common => sing-box-rr/common}/settings/system_proxy.go (100%) rename {common => sing-box-rr/common}/settings/wifi.go (100%) rename {common => sing-box-rr/common}/settings/wifi_linux.go (100%) rename {common => sing-box-rr/common}/settings/wifi_linux_connman.go (100%) rename {common => sing-box-rr/common}/settings/wifi_linux_iwd.go (100%) rename {common => sing-box-rr/common}/settings/wifi_linux_nm.go (100%) rename {common => sing-box-rr/common}/settings/wifi_linux_wpa.go (100%) rename {common => sing-box-rr/common}/settings/wifi_stub.go (100%) rename {common => sing-box-rr/common}/settings/wifi_windows.go (100%) rename {common => sing-box-rr/common}/sniff/bittorrent.go (100%) rename {common => sing-box-rr/common}/sniff/bittorrent_test.go (100%) rename {common => sing-box-rr/common}/sniff/dns.go (100%) rename {common => sing-box-rr/common}/sniff/dns_test.go (100%) rename {common => sing-box-rr/common}/sniff/dtls.go (100%) rename {common => sing-box-rr/common}/sniff/dtls_test.go (100%) rename {common => sing-box-rr/common}/sniff/http.go (100%) rename {common => sing-box-rr/common}/sniff/http_test.go (100%) rename {common => sing-box-rr/common}/sniff/internal/qtls/qtls.go (100%) rename {common => sing-box-rr/common}/sniff/ntp.go (100%) rename {common => sing-box-rr/common}/sniff/ntp_test.go (100%) rename {common => sing-box-rr/common}/sniff/quic.go (100%) rename {common => sing-box-rr/common}/sniff/quic_blacklist.go (100%) rename {common => sing-box-rr/common}/sniff/quic_capture_test.go (100%) rename {common => sing-box-rr/common}/sniff/quic_test.go (100%) rename {common => sing-box-rr/common}/sniff/rdp.go (100%) rename {common => sing-box-rr/common}/sniff/rdp_test.go (100%) rename {common => sing-box-rr/common}/sniff/sniff.go (100%) rename {common => sing-box-rr/common}/sniff/ssh.go (100%) rename {common => sing-box-rr/common}/sniff/ssh_test.go (100%) rename {common => sing-box-rr/common}/sniff/stun.go (100%) rename {common => sing-box-rr/common}/sniff/stun_test.go (100%) rename {common => sing-box-rr/common}/sniff/tls.go (100%) rename {common => sing-box-rr/common}/srs/binary.go (100%) rename {common => sing-box-rr/common}/srs/compat_test.go (100%) rename {common => sing-box-rr/common}/srs/ip_cidr.go (100%) rename {common => sing-box-rr/common}/srs/ip_set.go (100%) rename {common => sing-box-rr/common}/taskmonitor/monitor.go (100%) rename {common => sing-box-rr/common}/tls/acme.go (100%) rename {common => sing-box-rr/common}/tls/acme_contstant.go (100%) rename {common => sing-box-rr/common}/tls/acme_stub.go (100%) rename {common => sing-box-rr/common}/tls/client.go (100%) rename {common => sing-box-rr/common}/tls/common.go (100%) rename {common => sing-box-rr/common}/tls/config.go (100%) rename {common => sing-box-rr/common}/tls/ech.go (100%) rename {common => sing-box-rr/common}/tls/ech_shared.go (100%) rename {common => sing-box-rr/common}/tls/ech_tag_stub.go (100%) rename {common => sing-box-rr/common}/tls/ktls.go (100%) rename {common => sing-box-rr/common}/tls/masque_client.go (100%) rename {common => sing-box-rr/common}/tls/mkcert.go (100%) rename {common => sing-box-rr/common}/tls/reality_client.go (100%) rename {common => sing-box-rr/common}/tls/reality_server.go (100%) rename {common => sing-box-rr/common}/tls/reality_stub.go (100%) rename {common => sing-box-rr/common}/tls/server.go (100%) rename {common => sing-box-rr/common}/tls/std_client.go (100%) rename {common => sing-box-rr/common}/tls/std_server.go (100%) rename {common => sing-box-rr/common}/tls/time_wrapper.go (100%) rename {common => sing-box-rr/common}/tls/utls_client.go (100%) rename {common => sing-box-rr/common}/tls/utls_stub.go (100%) rename {common => sing-box-rr/common}/tlsfragment/conn.go (100%) rename {common => sing-box-rr/common}/tlsfragment/conn_test.go (100%) rename {common => sing-box-rr/common}/tlsfragment/index.go (100%) rename {common => sing-box-rr/common}/tlsfragment/index_test.go (100%) rename {common => sing-box-rr/common}/tlsfragment/wait_darwin.go (100%) rename {common => sing-box-rr/common}/tlsfragment/wait_linux.go (100%) rename {common => sing-box-rr/common}/tlsfragment/wait_stub.go (100%) rename {common => sing-box-rr/common}/tlsfragment/wait_windows.go (100%) rename {common => sing-box-rr/common}/uot/router.go (100%) rename {common => sing-box-rr/common}/urltest/context.go (100%) rename {common => sing-box-rr/common}/urltest/urltest.go (100%) rename {common => sing-box-rr/common}/utils.go (100%) rename {common => sing-box-rr/common}/vision/hook.go (100%) rename {common => sing-box-rr/common}/xray/buf/buffer.go (100%) rename {common => sing-box-rr/common}/xray/buf/copy.go (100%) rename {common => sing-box-rr/common}/xray/buf/io.go (100%) rename {common => sing-box-rr/common}/xray/buf/multi_buffer.go (100%) rename {common => sing-box-rr/common}/xray/buf/override.go (100%) rename {common => sing-box-rr/common}/xray/buf/reader.go (100%) rename {common => sing-box-rr/common}/xray/buf/writer.go (100%) rename {common => sing-box-rr/common}/xray/bytespool/pool.go (100%) rename {common => sing-box-rr/common}/xray/common.go (100%) rename {common => sing-box-rr/common}/xray/cpuid/cpuid.go (100%) rename {common => sing-box-rr/common}/xray/crypto/crypto.go (100%) rename {common => sing-box-rr/common}/xray/errors/errors.go (100%) rename {common => sing-box-rr/common}/xray/interfaces.go (100%) rename {common => sing-box-rr/common}/xray/json/badoption/range.go (100%) rename {common => sing-box-rr/common}/xray/net/address.go (100%) rename {common => sing-box-rr/common}/xray/net/destination.go (100%) rename {common => sing-box-rr/common}/xray/net/net.go (100%) rename {common => sing-box-rr/common}/xray/net/network.go (100%) rename {common => sing-box-rr/common}/xray/net/port.go (100%) rename {common => sing-box-rr/common}/xray/net/system.go (100%) rename {common => sing-box-rr/common}/xray/pipe/impl.go (100%) rename {common => sing-box-rr/common}/xray/pipe/pipe.go (100%) rename {common => sing-box-rr/common}/xray/pipe/reader.go (100%) rename {common => sing-box-rr/common}/xray/pipe/writer.go (100%) rename {common => sing-box-rr/common}/xray/serial/serial.go (100%) rename {common => sing-box-rr/common}/xray/serial/string.go (100%) rename {common => sing-box-rr/common}/xray/signal/done/done.go (100%) rename {common => sing-box-rr/common}/xray/signal/notifier.go (100%) rename {common => sing-box-rr/common}/xray/signal/pubsub/pubsub.go (100%) rename {common => sing-box-rr/common}/xray/signal/semaphore/semaphore.go (100%) rename {common => sing-box-rr/common}/xray/signal/timer.go (100%) rename {common => sing-box-rr/common}/xray/stat/connection.go (100%) rename {common => sing-box-rr/common}/xray/stats/stats.go (100%) rename {common => sing-box-rr/common}/xray/task/common.go (100%) rename {common => sing-box-rr/common}/xray/task/periodic.go (100%) rename {common => sing-box-rr/common}/xray/task/task.go (100%) rename {common => sing-box-rr/common}/xray/utils/browser.go (100%) rename {common => sing-box-rr/common}/xray/utils/padding.go (100%) rename {common => sing-box-rr/common}/xray/uuid/uuid.go (100%) rename {constant => sing-box-rr/constant}/certificate.go (100%) rename {constant => sing-box-rr/constant}/cgo.go (100%) rename {constant => sing-box-rr/constant}/cgo_disabled.go (100%) rename {constant => sing-box-rr/constant}/dhcp.go (100%) rename {constant => sing-box-rr/constant}/dns.go (100%) rename {constant => sing-box-rr/constant}/err.go (100%) rename {constant => sing-box-rr/constant}/goos/gengoos.go (100%) rename {constant => sing-box-rr/constant}/goos/goos.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_aix.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_android.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_darwin.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_dragonfly.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_freebsd.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_hurd.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_illumos.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_ios.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_js.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_linux.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_netbsd.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_openbsd.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_plan9.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_solaris.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_windows.go (100%) rename {constant => sing-box-rr/constant}/goos/zgoos_zos.go (100%) rename {constant => sing-box-rr/constant}/hysteria2.go (100%) rename {constant => sing-box-rr/constant}/manager_api.go (100%) rename {constant => sing-box-rr/constant}/network.go (100%) rename {constant => sing-box-rr/constant}/node_manager_api.go (100%) rename {constant => sing-box-rr/constant}/os.go (100%) rename {constant => sing-box-rr/constant}/path.go (100%) rename {constant => sing-box-rr/constant}/path_unix.go (100%) rename {constant => sing-box-rr/constant}/protocol.go (100%) rename {constant => sing-box-rr/constant}/provider.go (100%) rename {constant => sing-box-rr/constant}/proxy.go (100%) rename {constant => sing-box-rr/constant}/quic.go (100%) rename {constant => sing-box-rr/constant}/quic_stub.go (100%) rename {constant => sing-box-rr/constant}/rule.go (100%) rename {constant => sing-box-rr/constant}/speed.go (100%) rename {constant => sing-box-rr/constant}/time.go (100%) rename {constant => sing-box-rr/constant}/timeout.go (100%) rename {constant => sing-box-rr/constant}/v2ray.go (100%) rename {constant => sing-box-rr/constant}/version.go (100%) rename {daemon => sing-box-rr/daemon}/deprecated.go (100%) rename {daemon => sing-box-rr/daemon}/instance.go (100%) rename {daemon => sing-box-rr/daemon}/platform.go (100%) rename {daemon => sing-box-rr/daemon}/started_service.go (100%) rename {daemon => sing-box-rr/daemon}/started_service.pb.go (100%) rename {daemon => sing-box-rr/daemon}/started_service.proto (100%) rename {daemon => sing-box-rr/daemon}/started_service_grpc.pb.go (100%) rename debug.go => sing-box-rr/debug.go (100%) rename debug_http.go => sing-box-rr/debug_http.go (100%) rename debug_stub.go => sing-box-rr/debug_stub.go (100%) rename debug_unix.go => sing-box-rr/debug_unix.go (100%) rename {dns => sing-box-rr/dns}/client.go (100%) rename {dns => sing-box-rr/dns}/client_log.go (100%) rename {dns => sing-box-rr/dns}/client_truncate.go (100%) rename {dns => sing-box-rr/dns}/extension_edns0_subnet.go (100%) rename {dns => sing-box-rr/dns}/rcode.go (100%) rename {dns => sing-box-rr/dns}/router.go (100%) rename {dns => sing-box-rr/dns}/transport/conn_pool.go (100%) rename {dns => sing-box-rr/dns}/transport/dhcp/dhcp.go (100%) rename {dns => sing-box-rr/dns}/transport/dhcp/dhcp_shared.go (100%) rename {dns => sing-box-rr/dns}/transport/fakeip/fakeip.go (100%) rename {dns => sing-box-rr/dns}/transport/fakeip/memory.go (100%) rename {dns => sing-box-rr/dns}/transport/fakeip/store.go (100%) rename {dns => sing-box-rr/dns}/transport/fallback/fallback.go (100%) rename {dns => sing-box-rr/dns}/transport/fallback/strategy.go (100%) rename {dns => sing-box-rr/dns}/transport/hosts/hosts.go (100%) rename {dns => sing-box-rr/dns}/transport/hosts/hosts_file.go (100%) rename {dns => sing-box-rr/dns}/transport/hosts/hosts_test.go (100%) rename {dns => sing-box-rr/dns}/transport/hosts/hosts_unix.go (100%) rename {dns => sing-box-rr/dns}/transport/hosts/hosts_windows.go (100%) rename {dns => sing-box-rr/dns}/transport/hosts/testdata/hosts (100%) rename {dns => sing-box-rr/dns}/transport/https.go (100%) rename {dns => sing-box-rr/dns}/transport/https_transport.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local_darwin.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local_darwin_dhcp.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local_darwin_nodhcp.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local_resolved.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local_resolved_linux.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local_resolved_stub.go (100%) rename {dns => sing-box-rr/dns}/transport/local/local_shared.go (100%) rename {dns => sing-box-rr/dns}/transport/local/resolv.go (100%) rename {dns => sing-box-rr/dns}/transport/local/resolv_default.go (100%) rename {dns => sing-box-rr/dns}/transport/local/resolv_test.go (100%) rename {dns => sing-box-rr/dns}/transport/local/resolv_unix.go (100%) rename {dns => sing-box-rr/dns}/transport/local/resolv_windows.go (100%) rename {dns => sing-box-rr/dns}/transport/quic/http3.go (100%) rename {dns => sing-box-rr/dns}/transport/quic/quic.go (100%) rename {dns => sing-box-rr/dns}/transport/sdns.go (100%) rename {dns => sing-box-rr/dns}/transport/tcp.go (100%) rename {dns => sing-box-rr/dns}/transport/tls.go (100%) rename {dns => sing-box-rr/dns}/transport/udp.go (100%) rename {dns => sing-box-rr/dns}/transport_adapter.go (100%) rename {dns => sing-box-rr/dns}/transport_dialer.go (100%) rename {dns => sing-box-rr/dns}/transport_manager.go (100%) rename {dns => sing-box-rr/dns}/transport_registry.go (100%) rename {docs => sing-box-rr/docs}/CNAME (100%) rename {docs => sing-box-rr/docs}/assets/icon.svg (100%) rename {docs => sing-box-rr/docs}/changelog.md (100%) rename {docs => sing-box-rr/docs}/clients/android/features.md (100%) rename {docs => sing-box-rr/docs}/clients/android/index.md (100%) rename {docs => sing-box-rr/docs}/clients/apple/features.md (100%) rename {docs => sing-box-rr/docs}/clients/apple/index.md (100%) rename {docs => sing-box-rr/docs}/clients/general.md (100%) rename {docs => sing-box-rr/docs}/clients/index.md (100%) rename {docs => sing-box-rr/docs}/clients/index.zh.md (100%) rename {docs => sing-box-rr/docs}/clients/privacy.md (100%) rename {docs => sing-box-rr/docs}/configuration/certificate/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/certificate/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/fakeip.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/fakeip.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/rule.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/rule.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/rule_action.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/rule_action.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/dhcp.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/dhcp.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/fakeip.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/fakeip.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/hosts.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/hosts.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/http3.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/http3.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/https.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/https.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/legacy.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/legacy.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/local.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/local.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/quic.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/quic.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/resolved.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/resolved.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/tailscale.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/tailscale.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/tcp.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/tcp.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/tls.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/tls.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/udp.md (100%) rename {docs => sing-box-rr/docs}/configuration/dns/server/udp.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/endpoint/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/endpoint/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/endpoint/tailscale.md (100%) rename {docs => sing-box-rr/docs}/configuration/endpoint/tailscale.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/endpoint/wireguard.md (100%) rename {docs => sing-box-rr/docs}/configuration/endpoint/wireguard.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/cache-file.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/cache-file.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/clash-api.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/clash-api.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/v2ray-api.md (100%) rename {docs => sing-box-rr/docs}/configuration/experimental/v2ray-api.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/anytls.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/anytls.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/direct.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/direct.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/http.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/http.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/hysteria.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/hysteria.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/hysteria2.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/hysteria2.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/mixed.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/mixed.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/naive.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/naive.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/redirect.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/redirect.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/shadowsocks.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/shadowsocks.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/shadowtls.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/shadowtls.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/socks.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/socks.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/tproxy.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/tproxy.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/trojan.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/trojan.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/tuic.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/tuic.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/tun.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/tun.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/vless.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/vless.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/vmess.md (100%) rename {docs => sing-box-rr/docs}/configuration/inbound/vmess.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/log/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/log/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/ntp/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/ntp/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/anytls.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/anytls.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/block.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/block.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/direct.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/direct.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/dns.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/dns.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/http.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/http.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/hysteria.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/hysteria.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/hysteria2.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/hysteria2.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/mieru.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/mieru.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/naive.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/naive.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/selector.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/selector.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/shadowsocks.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/shadowsocks.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/shadowtls.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/shadowtls.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/socks.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/socks.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/ssh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/ssh.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/tor.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/tor.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/trojan.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/trojan.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/tuic.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/tuic.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/urltest.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/urltest.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/vless.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/vless.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/vmess.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/vmess.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/wireguard.md (100%) rename {docs => sing-box-rr/docs}/configuration/outbound/wireguard.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/geoip.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/geoip.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/geosite.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/geosite.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/rule.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/rule.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/rule_action.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/rule_action.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/sniff.md (100%) rename {docs => sing-box-rr/docs}/configuration/route/sniff.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/adguard.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/adguard.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/headless-rule.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/headless-rule.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/source-format.md (100%) rename {docs => sing-box-rr/docs}/configuration/rule-set/source-format.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/ccm.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/ccm.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/derp.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/derp.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/index.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/index.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/ocm.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/ocm.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/resolved.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/resolved.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/ssm-api.md (100%) rename {docs => sing-box-rr/docs}/configuration/service/ssm-api.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/dial.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/dial.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/dns01_challenge.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/dns01_challenge.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/listen.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/listen.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/multiplex.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/multiplex.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/pre-match.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/pre-match.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/tcp-brutal.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/tcp-brutal.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/tls.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/tls.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/udp-over-tcp.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/udp-over-tcp.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/v2ray-transport.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/v2ray-transport.zh.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/wifi-state.md (100%) rename {docs => sing-box-rr/docs}/configuration/shared/wifi-state.zh.md (100%) rename {docs => sing-box-rr/docs}/deprecated.md (100%) rename {docs => sing-box-rr/docs}/deprecated.zh.md (100%) rename {docs => sing-box-rr/docs}/index.md (100%) rename {docs => sing-box-rr/docs}/index.zh.md (100%) rename {docs => sing-box-rr/docs}/installation/build-from-source.md (87%) rename {docs => sing-box-rr/docs}/installation/build-from-source.zh.md (89%) rename {docs => sing-box-rr/docs}/installation/docker.md (100%) rename {docs => sing-box-rr/docs}/installation/docker.zh.md (100%) rename {docs => sing-box-rr/docs}/installation/package-manager.md (100%) rename {docs => sing-box-rr/docs}/installation/package-manager.zh.md (100%) rename {docs => sing-box-rr/docs}/installation/tools/arch-install.sh (100%) rename {docs => sing-box-rr/docs}/installation/tools/deb-install.sh (100%) rename {docs => sing-box-rr/docs}/installation/tools/install.sh (100%) rename {docs => sing-box-rr/docs}/installation/tools/rpm-install.sh (100%) rename {docs => sing-box-rr/docs}/installation/tools/sing-box.repo (100%) rename {docs => sing-box-rr/docs}/manual/misc/tunnelvision.md (100%) rename {docs => sing-box-rr/docs}/manual/proxy-protocol/hysteria2.md (100%) rename {docs => sing-box-rr/docs}/manual/proxy-protocol/shadowsocks.md (100%) rename {docs => sing-box-rr/docs}/manual/proxy-protocol/trojan.md (100%) rename {docs => sing-box-rr/docs}/manual/proxy/client.md (100%) rename {docs => sing-box-rr/docs}/manual/proxy/server.md (100%) rename {docs => sing-box-rr/docs}/migration.md (100%) rename {docs => sing-box-rr/docs}/migration.zh.md (100%) rename {docs => sing-box-rr/docs}/sponsors.md (100%) rename {docs => sing-box-rr/docs}/support.md (100%) rename {docs => sing-box-rr/docs}/support.zh.md (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/client.json (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/manager.json (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/node.json (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/00-login.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/01-dashboard.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/02-squads.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/03-nodes.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/04-users.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/05-bandwidth-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/06-traffic-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/07-connection-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/desktop/08-rate-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/00-login.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/01-dashboard.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/02-squads.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/03-nodes.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/04-users.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/05-bandwidth-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/06-traffic-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/07-connection-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/08-rate-limiters.png (100%) rename {examples => sing-box-rr/examples}/admin_panel-manager-node/screens/mobile/09-nav-open.png (100%) rename {examples => sing-box-rr/examples}/amnezia/client.json (100%) rename {examples => sing-box-rr/examples}/bond/client.json (100%) rename {examples => sing-box-rr/examples}/bond/client_multi.json (100%) rename {examples => sing-box-rr/examples}/bond/client_split.json (100%) rename {examples => sing-box-rr/examples}/bond/server.json (100%) rename {examples => sing-box-rr/examples}/dns_fallback/client.json (100%) rename {examples => sing-box-rr/examples}/failover/client.json (100%) rename {examples => sing-box-rr/examples}/failover/server.json (100%) rename {examples => sing-box-rr/examples}/fallback/client.json (100%) rename {examples => sing-box-rr/examples}/limiters/bandwidth/connection.json (100%) rename {examples => sing-box-rr/examples}/limiters/bandwidth/global.json (100%) rename {examples => sing-box-rr/examples}/limiters/bandwidth/manager.json (100%) rename {examples => sing-box-rr/examples}/limiters/bandwidth/multi.json (100%) rename {examples => sing-box-rr/examples}/limiters/bandwidth/users.json (100%) rename {examples => sing-box-rr/examples}/limiters/connection/connection.json (100%) rename {examples => sing-box-rr/examples}/limiters/connection/manager.json (100%) rename {examples => sing-box-rr/examples}/limiters/connection/users.json (100%) rename {examples => sing-box-rr/examples}/limiters/rate/connection.json (100%) rename {examples => sing-box-rr/examples}/limiters/rate/global.json (100%) rename {examples => sing-box-rr/examples}/limiters/rate/manager.json (100%) rename {examples => sing-box-rr/examples}/limiters/rate/users.json (100%) rename {examples => sing-box-rr/examples}/limiters/traffic/global.json (100%) rename {examples => sing-box-rr/examples}/limiters/traffic/manager.json (100%) rename {examples => sing-box-rr/examples}/limiters/traffic/users.json (100%) rename {examples => sing-box-rr/examples}/masque/client.json (100%) rename {examples => sing-box-rr/examples}/mieru/client.json (100%) rename {examples => sing-box-rr/examples}/mkcp/client.json (100%) rename {examples => sing-box-rr/examples}/mkcp/server.json (100%) rename {examples => sing-box-rr/examples}/mtproxy/server.json (100%) rename {examples => sing-box-rr/examples}/parser/client.json (100%) rename {examples => sing-box-rr/examples}/provider/inline.json (100%) rename {examples => sing-box-rr/examples}/provider/local.json (100%) rename {examples => sing-box-rr/examples}/provider/remote.json (100%) rename {examples => sing-box-rr/examples}/sdns/client.json (100%) rename {examples => sing-box-rr/examples}/unified_delay/client.json (100%) rename {examples => sing-box-rr/examples}/vless_encryption/client.json (100%) rename {examples => sing-box-rr/examples}/vless_encryption/server.json (100%) rename {examples => sing-box-rr/examples}/vpn/client-server/client.json (100%) rename {examples => sing-box-rr/examples}/vpn/client-server/server.json (100%) rename {examples => sing-box-rr/examples}/vpn/client1-server-client2/client1.json (100%) rename {examples => sing-box-rr/examples}/vpn/client1-server-client2/client2.json (100%) rename {examples => sing-box-rr/examples}/vpn/client1-server-client2/server.json (100%) rename {examples => sing-box-rr/examples}/vpn/proxy_client-server-vpn_client/proxy_client.json (100%) rename {examples => sing-box-rr/examples}/vpn/proxy_client-server-vpn_client/server.json (100%) rename {examples => sing-box-rr/examples}/vpn/proxy_client-server-vpn_client/vpn_client.json (100%) rename {examples => sing-box-rr/examples}/vpn/server-client/client.json (100%) rename {examples => sing-box-rr/examples}/vpn/server-client/server.json (100%) rename {examples => sing-box-rr/examples}/warp/client.json (100%) rename {examples => sing-box-rr/examples}/wireguard/client.json (100%) rename {examples => sing-box-rr/examples}/xhttp/client.json (100%) rename {examples => sing-box-rr/examples}/xhttp/server.json (100%) rename {experimental => sing-box-rr/experimental}/cachefile/cache.go (100%) rename {experimental => sing-box-rr/experimental}/cachefile/fakeip.go (100%) rename {experimental => sing-box-rr/experimental}/cachefile/rdrc.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/api_meta.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/api_meta_group.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/api_meta_upgrade.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/cache.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/common.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/configs.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/connections.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/ctxkeys.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/dns.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/errors.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/profile.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/provider.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/proxies.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/ruleprovider.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/rules.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/script.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/server.go (99%) rename {experimental => sing-box-rr/experimental}/clashapi/server_fs.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/server_resources.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/trafficontrol/manager.go (100%) rename {experimental => sing-box-rr/experimental}/clashapi/trafficontrol/tracker.go (100%) rename {experimental => sing-box-rr/experimental}/deprecated/constants.go (100%) rename {experimental => sing-box-rr/experimental}/deprecated/manager.go (100%) rename {experimental => sing-box-rr/experimental}/deprecated/stderr.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/build_info.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/command.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/command_client.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/command_server.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/command_types.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/config.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/connection_owner_darwin.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/deprecated.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/dns.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/fdroid.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/fdroid_mirrors.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/ffi.json (100%) rename {experimental => sing-box-rr/experimental}/libbox/http.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/internal/procfs/procfs.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/iterator.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/link_flags_stub.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/link_flags_unix.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/log.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/memory.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/monitor.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/panic.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/pidfd_android.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/platform.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/pprof.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/profile_import.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/remote_profile.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/semver.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/semver_test.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/service.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/service_other.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/service_windows.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/setup.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/tun.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/tun_darwin.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/tun_name_darwin.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/tun_name_linux.go (100%) rename {experimental => sing-box-rr/experimental}/libbox/tun_name_other.go (100%) rename {experimental => sing-box-rr/experimental}/locale/locale.go (100%) rename {experimental => sing-box-rr/experimental}/locale/locale_zh_CN.go (100%) rename {experimental => sing-box-rr/experimental}/v2rayapi.go (100%) rename {experimental => sing-box-rr/experimental}/v2rayapi/server.go (100%) rename {experimental => sing-box-rr/experimental}/v2rayapi/stats.go (100%) rename {experimental => sing-box-rr/experimental}/v2rayapi/stats.pb.go (100%) rename {experimental => sing-box-rr/experimental}/v2rayapi/stats.proto (100%) rename {experimental => sing-box-rr/experimental}/v2rayapi/stats_grpc.pb.go (100%) rename go.mod => sing-box-rr/go.mod (100%) rename go.sum => sing-box-rr/go.sum (100%) rename {include => sing-box-rr/include}/ccm.go (100%) rename {include => sing-box-rr/include}/ccm_stub.go (100%) rename {include => sing-box-rr/include}/ccm_stub_darwin.go (100%) rename {include => sing-box-rr/include}/clashapi.go (100%) rename {include => sing-box-rr/include}/clashapi_stub.go (100%) rename {include => sing-box-rr/include}/dhcp.go (100%) rename {include => sing-box-rr/include}/dhcp_stub.go (100%) rename {include => sing-box-rr/include}/masque.go (100%) rename {include => sing-box-rr/include}/masque_stub.go (100%) rename {include => sing-box-rr/include}/mtproxy.go (100%) rename {include => sing-box-rr/include}/mtproxy_stub.go (100%) rename {include => sing-box-rr/include}/naive_outbound.go (100%) rename {include => sing-box-rr/include}/naive_outbound_stub.go (100%) rename {include => sing-box-rr/include}/ocm.go (100%) rename {include => sing-box-rr/include}/ocm_stub.go (100%) rename {include => sing-box-rr/include}/oom_killer.go (100%) rename {include => sing-box-rr/include}/profiler.go (100%) rename {include => sing-box-rr/include}/profiler_stub.go (100%) rename {include => sing-box-rr/include}/quic.go (100%) rename {include => sing-box-rr/include}/quic_stub.go (100%) rename {include => sing-box-rr/include}/registry.go (75%) rename {include => sing-box-rr/include}/tailscale.go (100%) rename {include => sing-box-rr/include}/tailscale_stub.go (100%) rename {include => sing-box-rr/include}/tz_android.go (100%) rename {include => sing-box-rr/include}/tz_ios.go (100%) rename {include => sing-box-rr/include}/v2rayapi.go (100%) rename {include => sing-box-rr/include}/v2rayapi_stub.go (100%) rename {include => sing-box-rr/include}/wireguard.go (100%) rename {include => sing-box-rr/include}/wireguard_stub.go (100%) rename {log => sing-box-rr/log}/export.go (100%) rename {log => sing-box-rr/log}/factory.go (100%) rename {log => sing-box-rr/log}/format.go (100%) rename {log => sing-box-rr/log}/id.go (100%) rename {log => sing-box-rr/log}/level.go (100%) rename {log => sing-box-rr/log}/log.go (100%) rename {log => sing-box-rr/log}/nop.go (100%) rename {log => sing-box-rr/log}/observable.go (100%) rename {log => sing-box-rr/log}/override.go (100%) rename {log => sing-box-rr/log}/platform.go (100%) rename mkdocs.yml => sing-box-rr/mkdocs.yml (100%) rename {option => sing-box-rr/option}/admin_panel.go (100%) rename {option => sing-box-rr/option}/anytls.go (100%) rename {option => sing-box-rr/option}/bond.go (100%) rename {option => sing-box-rr/option}/ccm.go (100%) rename {option => sing-box-rr/option}/certificate.go (100%) rename {option => sing-box-rr/option}/cloudflare.go (100%) rename {option => sing-box-rr/option}/debug.go (100%) rename {option => sing-box-rr/option}/direct.go (100%) rename {option => sing-box-rr/option}/dns.go (100%) rename {option => sing-box-rr/option}/dns_record.go (100%) rename {option => sing-box-rr/option}/endpoint.go (100%) rename {option => sing-box-rr/option}/experimental.go (100%) rename {option => sing-box-rr/option}/failover.go (100%) rename {option => sing-box-rr/option}/group.go (100%) rename {option => sing-box-rr/option}/hysteria.go (100%) rename {option => sing-box-rr/option}/hysteria2.go (100%) rename {option => sing-box-rr/option}/inbound.go (100%) rename {option => sing-box-rr/option}/limiter.go (100%) rename {option => sing-box-rr/option}/manager.go (100%) rename {option => sing-box-rr/option}/manager_api.go (100%) rename {option => sing-box-rr/option}/masque.go (100%) rename {option => sing-box-rr/option}/mieru.go (100%) rename {option => sing-box-rr/option}/mtproxy.go (100%) rename {option => sing-box-rr/option}/multiplex.go (100%) rename {option => sing-box-rr/option}/naive.go (100%) rename {option => sing-box-rr/option}/node.go (100%) rename {option => sing-box-rr/option}/node_manager_api.go (100%) rename {option => sing-box-rr/option}/ntp.go (100%) rename {option => sing-box-rr/option}/ocm.go (100%) rename {option => sing-box-rr/option}/oom_killer.go (100%) rename {option => sing-box-rr/option}/options.go (97%) rename {option => sing-box-rr/option}/outbound.go (100%) rename {option => sing-box-rr/option}/parser.go (100%) rename {option => sing-box-rr/option}/platform.go (100%) rename {option => sing-box-rr/option}/profiler.go (100%) rename {option => sing-box-rr/option}/provider.go (100%) rename {option => sing-box-rr/option}/redir.go (100%) rename {option => sing-box-rr/option}/resolved.go (100%) rename {option => sing-box-rr/option}/route.go (100%) rename {option => sing-box-rr/option}/rule.go (100%) rename {option => sing-box-rr/option}/rule_action.go (100%) rename {option => sing-box-rr/option}/rule_dns.go (100%) rename {option => sing-box-rr/option}/rule_set.go (100%) rename {option => sing-box-rr/option}/service.go (100%) rename {option => sing-box-rr/option}/shadowsocks.go (100%) rename {option => sing-box-rr/option}/shadowsocksr.go (100%) rename {option => sing-box-rr/option}/shadowtls.go (100%) rename {option => sing-box-rr/option}/simple.go (100%) rename {option => sing-box-rr/option}/ssh.go (100%) rename {option => sing-box-rr/option}/ssmapi.go (100%) rename {option => sing-box-rr/option}/tailscale.go (100%) rename {option => sing-box-rr/option}/tls.go (100%) rename {option => sing-box-rr/option}/tls_acme.go (100%) rename {option => sing-box-rr/option}/tor.go (100%) rename {option => sing-box-rr/option}/trojan.go (100%) rename {option => sing-box-rr/option}/tuic.go (100%) rename {option => sing-box-rr/option}/tun.go (100%) rename {option => sing-box-rr/option}/tun_platform.go (100%) rename {option => sing-box-rr/option}/types.go (100%) rename {option => sing-box-rr/option}/udp_over_tcp.go (100%) rename {option => sing-box-rr/option}/v2ray.go (100%) rename {option => sing-box-rr/option}/v2ray_transport.go (100%) rename {option => sing-box-rr/option}/vless.go (100%) rename {option => sing-box-rr/option}/vmess.go (100%) rename {option => sing-box-rr/option}/vpn.go (100%) rename {option => sing-box-rr/option}/warp.go (100%) rename {option => sing-box-rr/option}/wireguard.go (100%) rename {parser => sing-box-rr/parser}/clash/anytls.go (100%) rename {parser => sing-box-rr/parser}/clash/base.go (100%) rename {parser => sing-box-rr/parser}/clash/http.go (100%) rename {parser => sing-box-rr/parser}/clash/hysteria.go (100%) rename {parser => sing-box-rr/parser}/clash/hysteria2.go (100%) rename {parser => sing-box-rr/parser}/clash/parser.go (100%) rename {parser => sing-box-rr/parser}/clash/shadowsocks.go (100%) rename {parser => sing-box-rr/parser}/clash/socks5.go (100%) rename {parser => sing-box-rr/parser}/clash/ssh.go (100%) rename {parser => sing-box-rr/parser}/clash/trojan.go (100%) rename {parser => sing-box-rr/parser}/clash/tuic.go (100%) rename {parser => sing-box-rr/parser}/clash/utils.go (100%) rename {parser => sing-box-rr/parser}/clash/vless.go (100%) rename {parser => sing-box-rr/parser}/clash/vmess.go (100%) rename {parser => sing-box-rr/parser}/link/hysteria.go (100%) rename {parser => sing-box-rr/parser}/link/hysteria2.go (100%) rename {parser => sing-box-rr/parser}/link/parser.go (100%) rename {parser => sing-box-rr/parser}/link/shadowsocks.go (100%) rename {parser => sing-box-rr/parser}/link/trojan.go (100%) rename {parser => sing-box-rr/parser}/link/tuic.go (100%) rename {parser => sing-box-rr/parser}/link/utils.go (100%) rename {parser => sing-box-rr/parser}/link/vless.go (100%) rename {parser => sing-box-rr/parser}/link/vmess.go (100%) rename {parser => sing-box-rr/parser}/parser.go (100%) rename {parser => sing-box-rr/parser}/raw/parser.go (100%) rename {parser => sing-box-rr/parser}/singbox/parser.go (100%) rename {parser => sing-box-rr/parser}/sip008/parser.go (100%) rename {protocol => sing-box-rr/protocol}/anytls/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/anytls/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/block/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/bond/conn.go (100%) rename {protocol => sing-box-rr/protocol}/bond/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/bond/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/bond/protocol.go (100%) rename {protocol => sing-box-rr/protocol}/bond/router.go (100%) rename {protocol => sing-box-rr/protocol}/direct/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/direct/loopback_detect.go (100%) rename {protocol => sing-box-rr/protocol}/direct/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/dns/handle.go (100%) rename {protocol => sing-box-rr/protocol}/dns/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/failover/conn.go (100%) rename {protocol => sing-box-rr/protocol}/failover/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/failover/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/failover/protocol.go (100%) rename {protocol => sing-box-rr/protocol}/failover/router.go (100%) rename {protocol => sing-box-rr/protocol}/failover/strategy.go (100%) rename {protocol => sing-box-rr/protocol}/group/fallback.go (100%) rename {protocol => sing-box-rr/protocol}/group/selector.go (100%) rename {protocol => sing-box-rr/protocol}/group/urltest.go (100%) rename {protocol => sing-box-rr/protocol}/http/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/http/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/hysteria/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/hysteria/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/hysteria2/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/hysteria2/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/bandwidth/conn.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/bandwidth/limiter.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/bandwidth/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/bandwidth/strategy.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/connection/lock.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/connection/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/connection/strategy.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/rate/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/rate/strategy.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/traffic/conn.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/traffic/limiter.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/traffic/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/limiter/traffic/strategy.go (100%) rename {protocol => sing-box-rr/protocol}/masque/config.go (100%) rename {protocol => sing-box-rr/protocol}/masque/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/mieru/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/mixed/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/mtproxy/dialer.go (100%) rename {protocol => sing-box-rr/protocol}/mtproxy/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/mtproxy/logger.go (100%) rename {protocol => sing-box-rr/protocol}/mtproxy/network.go (100%) rename {protocol => sing-box-rr/protocol}/naive/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/naive/inbound_conn.go (100%) rename {protocol => sing-box-rr/protocol}/naive/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/naive/quic/inbound_init.go (100%) rename {protocol => sing-box-rr/protocol}/parser/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/redirect/redirect.go (100%) rename {protocol => sing-box-rr/protocol}/redirect/tproxy.go (100%) rename {protocol => sing-box-rr/protocol}/shadowsocks/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/shadowsocks/inbound_multi.go (100%) rename {protocol => sing-box-rr/protocol}/shadowsocks/inbound_relay.go (100%) rename {protocol => sing-box-rr/protocol}/shadowsocks/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/shadowtls/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/shadowtls/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/socks/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/socks/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/ssh/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/tailscale/dns_transport.go (100%) rename {protocol => sing-box-rr/protocol}/tailscale/endpoint.go (100%) rename {protocol => sing-box-rr/protocol}/tailscale/tun_device_unix.go (100%) rename {protocol => sing-box-rr/protocol}/tailscale/tun_device_windows.go (100%) rename {protocol => sing-box-rr/protocol}/tor/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/tor/proxy.go (100%) rename {protocol => sing-box-rr/protocol}/trojan/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/trojan/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/tuic/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/tuic/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/tun/hook.go (100%) rename {protocol => sing-box-rr/protocol}/tun/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/vless/encryption/client.go (100%) rename {protocol => sing-box-rr/protocol}/vless/encryption/common.go (100%) rename {protocol => sing-box-rr/protocol}/vless/encryption/server.go (100%) rename {protocol => sing-box-rr/protocol}/vless/encryption/xor.go (100%) rename {protocol => sing-box-rr/protocol}/vless/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/vless/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/vmess/inbound.go (100%) rename {protocol => sing-box-rr/protocol}/vmess/outbound.go (100%) rename {protocol => sing-box-rr/protocol}/vpn/client.go (100%) rename {protocol => sing-box-rr/protocol}/vpn/protocol.go (100%) rename {protocol => sing-box-rr/protocol}/vpn/router.go (100%) rename {protocol => sing-box-rr/protocol}/vpn/server.go (100%) rename {protocol => sing-box-rr/protocol}/warp/config.go (100%) rename {protocol => sing-box-rr/protocol}/warp/endpoint.go (100%) rename {protocol => sing-box-rr/protocol}/wireguard/endpoint.go (100%) rename {provider => sing-box-rr/provider}/local/provider.go (100%) rename {provider => sing-box-rr/provider}/remote/provider.go (100%) create mode 100644 sing-box-rr/release/DEFAULT_BUILD_TAGS create mode 100644 sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS create mode 100644 sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS rename {release => sing-box-rr/release}/LDFLAGS (100%) rename {release => sing-box-rr/release}/completions/sing-box.bash (100%) rename {release => sing-box-rr/release}/completions/sing-box.fish (100%) rename {release => sing-box-rr/release}/completions/sing-box.zsh (100%) rename {release => sing-box-rr/release}/config/config.json (100%) rename {release => sing-box-rr/release}/config/openwrt.conf (100%) rename {release => sing-box-rr/release}/config/openwrt.init (100%) rename {release => sing-box-rr/release}/config/openwrt.keep (100%) rename {release => sing-box-rr/release}/config/openwrt.prerm (100%) rename {release => sing-box-rr/release}/config/sing-box-split-dns.xml (100%) rename {release => sing-box-rr/release}/config/sing-box.confd (100%) rename {release => sing-box-rr/release}/config/sing-box.initd (100%) rename {release => sing-box-rr/release}/config/sing-box.postinst (100%) rename {release => sing-box-rr/release}/config/sing-box.rules (100%) rename {release => sing-box-rr/release}/config/sing-box.service (100%) rename {release => sing-box-rr/release}/config/sing-box.sysusers (100%) rename {release => sing-box-rr/release}/config/sing-box@.service (100%) rename {release => sing-box-rr/release}/local/common.sh (100%) rename {release => sing-box-rr/release}/local/debug.sh (100%) rename {release => sing-box-rr/release}/local/enable.sh (100%) rename {release => sing-box-rr/release}/local/install.sh (100%) rename {release => sing-box-rr/release}/local/install_go.sh (100%) rename {release => sing-box-rr/release}/local/reinstall.sh (100%) rename {release => sing-box-rr/release}/local/sing-box.service (100%) rename {release => sing-box-rr/release}/local/uninstall.sh (100%) rename {release => sing-box-rr/release}/local/update.sh (100%) rename {route => sing-box-rr/route}/conn.go (100%) rename {route => sing-box-rr/route}/dns.go (100%) rename {route => sing-box-rr/route}/network.go (100%) rename {route => sing-box-rr/route}/platform_searcher.go (100%) rename {route => sing-box-rr/route}/process_cache.go (100%) rename {route => sing-box-rr/route}/route.go (100%) rename {route => sing-box-rr/route}/router.go (100%) rename {route => sing-box-rr/route}/rule/match_state.go (100%) rename {route => sing-box-rr/route}/rule/rule_abstract.go (100%) rename {route => sing-box-rr/route}/rule/rule_abstract_test.go (100%) rename {route => sing-box-rr/route}/rule/rule_action.go (100%) rename {route => sing-box-rr/route}/rule/rule_default.go (100%) rename {route => sing-box-rr/route}/rule/rule_default_interface_address.go (100%) rename {route => sing-box-rr/route}/rule/rule_dns.go (100%) rename {route => sing-box-rr/route}/rule/rule_headless.go (100%) rename {route => sing-box-rr/route}/rule/rule_interface_address.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_adguard.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_auth_user.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_cidr.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_clash_mode.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_client.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_domain.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_domain_keyword.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_domain_regex.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_inbound.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_ip_accept_any.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_ip_is_private.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_ipversion.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_network.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_network_is_constrained.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_network_is_expensive.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_network_type.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_outbound.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_package_name.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_port.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_port_range.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_preferred_by.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_process_name.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_process_path.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_process_path_regex.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_protocol.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_query_type.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_rule_set.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_user.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_user_id.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_wifi_bssid.go (100%) rename {route => sing-box-rr/route}/rule/rule_item_wifi_ssid.go (100%) rename {route => sing-box-rr/route}/rule/rule_network_interface_address.go (100%) rename {route => sing-box-rr/route}/rule/rule_set.go (100%) rename {route => sing-box-rr/route}/rule/rule_set_local.go (100%) rename {route => sing-box-rr/route}/rule/rule_set_remote.go (100%) rename {route => sing-box-rr/route}/rule/rule_set_semantics_test.go (100%) rename {route => sing-box-rr/route}/rule_conds.go (100%) rename {service => sing-box-rr/service}/admin_panel/README.md (100%) rename {service => sing-box-rr/service}/admin_panel/service.go (100%) rename {service => sing-box-rr/service}/admin_panel/service_stub.go (100%) rename {service => sing-box-rr/service}/admin_panel/service_test.go (100%) rename {service => sing-box-rr/service}/admin_panel/web/.gitignore (100%) rename {service => sing-box-rr/service}/admin_panel/web/index.html (100%) rename {service => sing-box-rr/service}/admin_panel/web/package-lock.json (100%) rename {service => sing-box-rr/service}/admin_panel/web/package.json (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/App.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/api/client.ts (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/api/types.ts (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/assets/icon.svg (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/auth/AuthContext.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/components/ColorPickerButton.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/components/CopyableId.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/components/CrudPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/components/Layout.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/components/LoginBackdropMesh.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/components/LoginThemeControls.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/components/PageHeader.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/main.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/notifications/NotificationsProvider.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/BandwidthLimitersPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/ConnectionLimitersPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/DashboardPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/LoginPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/NodesPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/RateLimitersPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/SquadsPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/TrafficLimitersPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/UsersPage.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/pages/squadField.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/theme.ts (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/theme/AppThemeProvider.tsx (100%) rename {service => sing-box-rr/service}/admin_panel/web/src/vite-env.d.ts (100%) rename {service => sing-box-rr/service}/admin_panel/web/tsconfig.json (100%) rename {service => sing-box-rr/service}/admin_panel/web/tsconfig.tsbuildinfo (100%) rename {service => sing-box-rr/service}/admin_panel/web/vite.config.ts (100%) rename {service => sing-box-rr/service}/ccm/credential.go (100%) rename {service => sing-box-rr/service}/ccm/credential_darwin.go (100%) rename {service => sing-box-rr/service}/ccm/credential_other.go (100%) rename {service => sing-box-rr/service}/ccm/service.go (100%) rename {service => sing-box-rr/service}/ccm/service_usage.go (100%) rename {service => sing-box-rr/service}/ccm/service_user.go (100%) rename {service => sing-box-rr/service}/derp/service.go (100%) rename {service => sing-box-rr/service}/manager/constant/dto.go (100%) rename {service => sing-box-rr/service}/manager/constant/error.go (100%) rename {service => sing-box-rr/service}/manager/constant/manager.go (100%) rename {service => sing-box-rr/service}/manager/constant/node.go (100%) rename {service => sing-box-rr/service}/manager/constant/repository.go (100%) rename {service => sing-box-rr/service}/manager/repository/postgresql/filter.go (100%) rename {service => sing-box-rr/service}/manager/repository/postgresql/migration.go (100%) rename {service => sing-box-rr/service}/manager/repository/postgresql/repository.go (100%) rename {service => sing-box-rr/service}/manager/repository/postgresql/utils.go (100%) rename {service => sing-box-rr/service}/manager/repository/sqlite/filter.go (100%) rename {service => sing-box-rr/service}/manager/repository/sqlite/migration.go (100%) rename {service => sing-box-rr/service}/manager/repository/sqlite/repository.go (100%) rename {service => sing-box-rr/service}/manager/repository/sqlite/utils.go (100%) rename {service => sing-box-rr/service}/manager/service.go (100%) rename {service => sing-box-rr/service}/manager/service_stub.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/client/client.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/client/converter.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/client/manager.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/client/tls.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/manager/manager.pb.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/manager/manager.proto (100%) rename {service => sing-box-rr/service}/manager_api/grpc/manager/manager_grpc.pb.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/server/converter.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/server/rpc.go (100%) rename {service => sing-box-rr/service}/manager_api/grpc/server/server.go (100%) rename {service => sing-box-rr/service}/manager_api/http/client/client.go (100%) rename {service => sing-box-rr/service}/manager_api/http/client/manager.go (100%) rename {service => sing-box-rr/service}/manager_api/http/server/openapi.yaml (100%) rename {service => sing-box-rr/service}/manager_api/http/server/server.go (100%) rename {service => sing-box-rr/service}/manager_api/http/server/server_test.go (100%) rename {service => sing-box-rr/service}/manager_api/http/server/swagger.go (100%) rename {service => sing-box-rr/service}/manager_api/service.go (100%) rename {service => sing-box-rr/service}/node/constant/bandwidth.go (100%) rename {service => sing-box-rr/service}/node/constant/connection.go (100%) rename {service => sing-box-rr/service}/node/constant/inbound.go (100%) rename {service => sing-box-rr/service}/node/constant/rate.go (100%) rename {service => sing-box-rr/service}/node/constant/traffic.go (100%) rename {service => sing-box-rr/service}/node/inbound/hysteria.go (100%) rename {service => sing-box-rr/service}/node/inbound/hysteria2.go (100%) rename {service => sing-box-rr/service}/node/inbound/mtproxy.go (100%) rename {service => sing-box-rr/service}/node/inbound/trojan.go (100%) rename {service => sing-box-rr/service}/node/inbound/tuic.go (100%) rename {service => sing-box-rr/service}/node/inbound/vless.go (100%) rename {service => sing-box-rr/service}/node/inbound/vmess.go (100%) rename {service => sing-box-rr/service}/node/limiter/bandwidth.go (100%) rename {service => sing-box-rr/service}/node/limiter/connection.go (100%) rename {service => sing-box-rr/service}/node/limiter/rate.go (100%) rename {service => sing-box-rr/service}/node/limiter/traffic.go (100%) rename {service => sing-box-rr/service}/node/service.go (100%) rename {service => sing-box-rr/service}/node_manager_api/client/client.go (100%) rename {service => sing-box-rr/service}/node_manager_api/client/tls.go (100%) rename {service => sing-box-rr/service}/node_manager_api/manager/manager.pb.go (100%) rename {service => sing-box-rr/service}/node_manager_api/manager/manager.proto (100%) rename {service => sing-box-rr/service}/node_manager_api/manager/manager_grpc.pb.go (100%) rename {service => sing-box-rr/service}/node_manager_api/server/node.go (100%) rename {service => sing-box-rr/service}/node_manager_api/server/server.go (100%) rename {service => sing-box-rr/service}/node_manager_api/service.go (100%) rename {service => sing-box-rr/service}/ocm/credential.go (100%) rename {service => sing-box-rr/service}/ocm/credential_darwin.go (100%) rename {service => sing-box-rr/service}/ocm/credential_other.go (100%) rename {service => sing-box-rr/service}/ocm/service.go (100%) rename {service => sing-box-rr/service}/ocm/service_usage.go (100%) rename {service => sing-box-rr/service}/ocm/service_user.go (100%) rename {service => sing-box-rr/service}/ocm/service_websocket.go (100%) rename {service => sing-box-rr/service}/oomkiller/config.go (100%) rename {service => sing-box-rr/service}/oomkiller/service.go (100%) rename {service => sing-box-rr/service}/oomkiller/service_stub.go (100%) rename {service => sing-box-rr/service}/oomkiller/service_timer.go (100%) rename {service => sing-box-rr/service}/profiler/service.go (100%) rename {service => sing-box-rr/service}/resolved/resolve1.go (100%) rename {service => sing-box-rr/service}/resolved/service.go (100%) rename {service => sing-box-rr/service}/resolved/stub.go (100%) rename {service => sing-box-rr/service}/resolved/transport.go (100%) rename {service => sing-box-rr/service}/ssmapi/api.go (100%) rename {service => sing-box-rr/service}/ssmapi/cache.go (100%) rename {service => sing-box-rr/service}/ssmapi/server.go (100%) rename {service => sing-box-rr/service}/ssmapi/traffic.go (100%) rename {service => sing-box-rr/service}/ssmapi/user.go (100%) rename {test => sing-box-rr/test}/box_test.go (100%) rename {test => sing-box-rr/test}/brutal_test.go (100%) rename {test => sing-box-rr/test}/clash_darwin_test.go (100%) rename {test => sing-box-rr/test}/clash_other_test.go (100%) rename {test => sing-box-rr/test}/clash_test.go (100%) rename {test => sing-box-rr/test}/config/hysteria-client.json (100%) rename {test => sing-box-rr/test}/config/hysteria-server.json (100%) rename {test => sing-box-rr/test}/config/hysteria2-client.yml (100%) rename {test => sing-box-rr/test}/config/hysteria2-server.yml (100%) rename {test => sing-box-rr/test}/config/naive-nginx.conf (100%) rename {test => sing-box-rr/test}/config/naive-quic.json (100%) rename {test => sing-box-rr/test}/config/naive.json (100%) rename {test => sing-box-rr/test}/config/nginx.conf (100%) rename {test => sing-box-rr/test}/config/shadowsocksr.json (100%) rename {test => sing-box-rr/test}/config/trojan.json (100%) rename {test => sing-box-rr/test}/config/tuic-client.json (100%) rename {test => sing-box-rr/test}/config/tuic-server.json (100%) rename {test => sing-box-rr/test}/config/vless-server.json (100%) rename {test => sing-box-rr/test}/config/vless-tls-client.json (100%) rename {test => sing-box-rr/test}/config/vless-tls-server.json (100%) rename {test => sing-box-rr/test}/config/vmess-client.json (100%) rename {test => sing-box-rr/test}/config/vmess-grpc-client.json (100%) rename {test => sing-box-rr/test}/config/vmess-grpc-server.json (100%) rename {test => sing-box-rr/test}/config/vmess-mux-client.json (100%) rename {test => sing-box-rr/test}/config/vmess-server.json (100%) rename {test => sing-box-rr/test}/config/vmess-ws-client.json (100%) rename {test => sing-box-rr/test}/config/vmess-ws-server.json (100%) rename {test => sing-box-rr/test}/config/wireguard.conf (100%) rename {test => sing-box-rr/test}/direct_test.go (100%) rename {test => sing-box-rr/test}/docker_test.go (100%) rename {test => sing-box-rr/test}/domain_inbound_test.go (100%) rename {test => sing-box-rr/test}/ech_test.go (100%) rename {test => sing-box-rr/test}/go.mod (100%) rename {test => sing-box-rr/test}/go.sum (100%) rename {test => sing-box-rr/test}/http_test.go (100%) rename {test => sing-box-rr/test}/hysteria2_test.go (100%) rename {test => sing-box-rr/test}/hysteria_test.go (100%) rename {test => sing-box-rr/test}/inbound_detour_test.go (100%) rename {test => sing-box-rr/test}/ktls_test.go (100%) rename {test => sing-box-rr/test}/mkcert.go (100%) rename {test => sing-box-rr/test}/mux_cool_test.go (100%) rename {test => sing-box-rr/test}/mux_test.go (100%) rename {test => sing-box-rr/test}/naive_self_test.go (100%) rename {test => sing-box-rr/test}/naive_test.go (100%) rename {test => sing-box-rr/test}/reality_test.go (100%) rename {test => sing-box-rr/test}/shadowsocks_legacy_test.go (100%) rename {test => sing-box-rr/test}/shadowsocks_test.go (100%) rename {test => sing-box-rr/test}/shadowtls_test.go (100%) rename {test => sing-box-rr/test}/socks_test.go (100%) rename {test => sing-box-rr/test}/ss_plugin_test.go (100%) rename {test => sing-box-rr/test}/tfo_test.go (100%) rename {test => sing-box-rr/test}/tls_test.go (100%) rename {test => sing-box-rr/test}/trojan_test.go (100%) rename {test => sing-box-rr/test}/tuic_test.go (100%) rename {test => sing-box-rr/test}/v2ray_api_test.go (100%) rename {test => sing-box-rr/test}/v2ray_grpc_test.go (100%) rename {test => sing-box-rr/test}/v2ray_httpupgrade_test.go (100%) rename {test => sing-box-rr/test}/v2ray_transport_test.go (100%) rename {test => sing-box-rr/test}/v2ray_ws_test.go (100%) rename {test => sing-box-rr/test}/vmess_test.go (100%) rename {test => sing-box-rr/test}/wrapper_test.go (100%) rename {transport => sing-box-rr/transport}/masque/adapter.go (100%) rename {transport => sing-box-rr/transport}/masque/buffer.go (100%) rename {transport => sing-box-rr/transport}/masque/device.go (100%) rename {transport => sing-box-rr/transport}/masque/device_stack.go (100%) rename {transport => sing-box-rr/transport}/masque/masque.go (100%) rename {transport => sing-box-rr/transport}/masque/options.go (100%) rename {transport => sing-box-rr/transport}/masque/tunnel.go (100%) rename {transport => sing-box-rr/transport}/masque/utils.go (100%) rename {transport => sing-box-rr/transport}/simple-obfs/README.md (100%) rename {transport => sing-box-rr/transport}/simple-obfs/http.go (100%) rename {transport => sing-box-rr/transport}/simple-obfs/tls.go (100%) rename {transport => sing-box-rr/transport}/sip003/args.go (100%) rename {transport => sing-box-rr/transport}/sip003/obfs.go (100%) rename {transport => sing-box-rr/transport}/sip003/plugin.go (100%) rename {transport => sing-box-rr/transport}/sip003/v2ray.go (100%) rename {transport => sing-box-rr/transport}/trojan/mux.go (100%) rename {transport => sing-box-rr/transport}/trojan/protocol.go (100%) rename {transport => sing-box-rr/transport}/trojan/protocol_wait.go (100%) rename {transport => sing-box-rr/transport}/trojan/service.go (100%) rename {transport => sing-box-rr/transport}/trojan/service_wait.go (100%) rename {transport => sing-box-rr/transport}/v2ray/grpc.go (100%) rename {transport => sing-box-rr/transport}/v2ray/grpc_lite.go (100%) rename {transport => sing-box-rr/transport}/v2ray/quic.go (100%) rename {transport => sing-box-rr/transport}/v2ray/transport.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/client.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/conn.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/credentials/credentials.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/credentials/spiffe.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/credentials/syscallconn.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/credentials/util.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/custom_name.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/server.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/stream.pb.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/stream.proto (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/stream_grpc.pb.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpc/tls_credentials.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpclite/client.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpclite/conn.go (100%) rename {transport => sing-box-rr/transport}/v2raygrpclite/server.go (100%) rename {transport => sing-box-rr/transport}/v2rayhttp/client.go (100%) rename {transport => sing-box-rr/transport}/v2rayhttp/conn.go (100%) rename {transport => sing-box-rr/transport}/v2rayhttp/force_close.go (100%) rename {transport => sing-box-rr/transport}/v2rayhttp/pool.go (100%) rename {transport => sing-box-rr/transport}/v2rayhttp/server.go (100%) rename {transport => sing-box-rr/transport}/v2rayhttpupgrade/client.go (100%) rename {transport => sing-box-rr/transport}/v2rayhttpupgrade/server.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/config.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/connection.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/crypt.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/dialer.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/errors.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/header.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/listener.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/multi_buffer.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/output.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/receiving.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/segment.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/sending.go (100%) rename {transport => sing-box-rr/transport}/v2raykcp/updater.go (100%) rename {transport => sing-box-rr/transport}/v2rayquic/client.go (100%) rename {transport => sing-box-rr/transport}/v2rayquic/init.go (100%) rename {transport => sing-box-rr/transport}/v2rayquic/server.go (100%) rename {transport => sing-box-rr/transport}/v2rayquic/stream.go (100%) rename {transport => sing-box-rr/transport}/v2raywebsocket/client.go (100%) rename {transport => sing-box-rr/transport}/v2raywebsocket/conn.go (100%) rename {transport => sing-box-rr/transport}/v2raywebsocket/server.go (100%) rename {transport => sing-box-rr/transport}/v2raywebsocket/writer.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/client.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/conn.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/dialer.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/http.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/mux.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/server.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/upload_queue.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/utils.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/writer.go (100%) rename {transport => sing-box-rr/transport}/v2rayxhttp/xpadding.go (100%) rename {transport => sing-box-rr/transport}/wireguard/client_bind.go (100%) rename {transport => sing-box-rr/transport}/wireguard/device.go (100%) rename {transport => sing-box-rr/transport}/wireguard/device_nat.go (100%) rename {transport => sing-box-rr/transport}/wireguard/device_stack.go (100%) rename {transport => sing-box-rr/transport}/wireguard/device_stack_gonet.go (100%) rename {transport => sing-box-rr/transport}/wireguard/device_stack_stub.go (100%) rename {transport => sing-box-rr/transport}/wireguard/device_system.go (100%) rename {transport => sing-box-rr/transport}/wireguard/device_system_stack.go (100%) rename {transport => sing-box-rr/transport}/wireguard/endpoint.go (100%) rename {transport => sing-box-rr/transport}/wireguard/endpoint_options.go (100%) diff --git a/.gitignore b/.gitignore index e36b4dc6..37f9c424 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,12 @@ /.idea/ /vendor/ +packages/ +build-logs/ +*.ipk +*.apk +build-ipk.sh +build-apk.sh +.codex /*.json /*.srs /*.db @@ -22,4 +29,4 @@ CLAUDE.md AGENTS.md /.claude/ dist -logs \ No newline at end of file +logs diff --git a/SOURCE_DATE_EPOCH b/SOURCE_DATE_EPOCH new file mode 100644 index 00000000..2122c738 --- /dev/null +++ b/SOURCE_DATE_EPOCH @@ -0,0 +1 @@ +1778450375 diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..7ffe045e --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.13.11-extended-2.1.0-dirty diff --git a/build-apk.sh b/build-apk.sh new file mode 100755 index 00000000..480dda2b --- /dev/null +++ b/build-apk.sh @@ -0,0 +1,287 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_DIR="$SCRIPT_DIR/sing-box-rr" +GO_BIN="${GO_BIN:-/usr/local/go/bin/go}" +GO_CACHE_DIR="${GO_CACHE_DIR:-/tmp/sing-box-rr-go-build}" +GO_MODCACHE_DIR="${GO_MODCACHE_DIR:-/tmp/sing-box-rr-go-mod}" +SDK_ARM64="/home/fresa/sdk/openwrt-sdk-25.12.0-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64" +SDK_X86="/home/fresa/sdk/openwrt-sdk-25.12.0-x86-64_gcc-14.3.0_musl.Linux-x86_64" +PACKAGES_DIR="$SCRIPT_DIR/packages/25.12" +PKG_NAME="sing-box-rr" +PKG_RELEASE="1" +FORCE_REBUILD=0 + +LOG_DIR="$SCRIPT_DIR/build-logs" +mkdir -p "$LOG_DIR" +LOG_FILE="$LOG_DIR/build-apk-$(date +%Y%m%d-%H%M%S).log" +LOG_LATEST="$LOG_DIR/build-apk-latest.log" +: > "$LOG_FILE" +ln -sf "$(basename "$LOG_FILE")" "$LOG_LATEST" +ls -1t "$LOG_DIR"/build-apk-*.log 2>/dev/null | tail -n +11 | xargs -r rm -f + +echo "=== Logging to $LOG_FILE ===" + +run() { "$@" 2>&1 | tee -a "$LOG_FILE"; return "${PIPESTATUS[0]}"; } + +project_version() { + if [ -f "$SCRIPT_DIR/VERSION" ]; then + cat "$SCRIPT_DIR/VERSION" + else + echo "0.0.0-unknown" + fi +} + +project_source_date_epoch() { + if [ -f "$SCRIPT_DIR/SOURCE_DATE_EPOCH" ]; then + cat "$SCRIPT_DIR/SOURCE_DATE_EPOCH" + else + date +%s + fi +} + +apk_version() { + local version + version="$(project_version | sed -nE 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')" + [ -n "$version" ] || version="0.0.0" + echo "${version}-r${PKG_RELEASE}" +} + +build_tags() { + tr -d '\n' < "$PROJECT_DIR/release/DEFAULT_BUILD_TAGS_OTHERS" +} + +build_ldflags() { + local base_ldflags + base_ldflags="$(tr -d '\n' < "$PROJECT_DIR/release/LDFLAGS")" + echo "${base_ldflags} -X github.com/sagernet/sing-box/constant.Version=$(project_version) -s -w" +} + +require_tools() { + [ -x "$GO_BIN" ] || { echo "go not found at $GO_BIN" | tee -a "$LOG_FILE"; exit 1; } +} + +reset_go_cache_if_needed() { + if [ "$FORCE_REBUILD" = 1 ]; then + rm -rf "$GO_CACHE_DIR" "$GO_MODCACHE_DIR" + fi + mkdir -p "$GO_CACHE_DIR" "$GO_MODCACHE_DIR" +} + +build_binary() { + local goarch="$1" output="$2" + local tags ldflags + local -a env_cmd + + tags="$(build_tags)" + ldflags="$(build_ldflags)" + env_cmd=( + env + "PATH=$(dirname "$GO_BIN"):$PATH" + "GOTOOLCHAIN=local" + "GOCACHE=$GO_CACHE_DIR" + "GOMODCACHE=$GO_MODCACHE_DIR" + "CGO_ENABLED=0" + "GOOS=linux" + "GOARCH=$goarch" + ) + if [ "$goarch" = "amd64" ]; then + env_cmd+=("GOAMD64=v1") + fi + + echo "=== Building sing-box for GOARCH=$goarch ===" | tee -a "$LOG_FILE" + run "${env_cmd[@]}" "$GO_BIN" build \ + -buildvcs=false \ + -trimpath \ + -tags "$tags" \ + -ldflags "$ldflags" \ + -o "$output" \ + ./cmd/sing-box +} + +stage_common_tree() { + local root_dir="$1" binary_path="$2" + + install -d "$root_dir/usr/bin" \ + "$root_dir/usr/share/sing-box" \ + "$root_dir/etc/sing-box" \ + "$root_dir/etc/config" \ + "$root_dir/etc/init.d" \ + "$root_dir/lib/upgrade/keep.d" \ + "$root_dir/lib/apk/packages" + install -m755 "$binary_path" "$root_dir/usr/bin/sing-box" + install -m644 "$PROJECT_DIR/release/config/config.json" "$root_dir/etc/sing-box/config.json" + install -m644 "$PROJECT_DIR/release/config/openwrt.conf" "$root_dir/etc/config/sing-box" + install -m755 "$PROJECT_DIR/release/config/openwrt.init" "$root_dir/etc/init.d/sing-box" + install -m644 "$PROJECT_DIR/release/config/openwrt.keep" "$root_dir/lib/upgrade/keep.d/sing-box" +} + +stage_apk_metadata() { + local root_dir="$1" + local packages_meta="$root_dir/lib/apk/packages" + local list_file="$packages_meta/${PKG_NAME}.list" + local tmp_list_file + local conffiles_file="$packages_meta/${PKG_NAME}.conffiles" + local conffiles_static_file="$packages_meta/${PKG_NAME}.conffiles_static" + + echo "sing-box=5566:sing-box=5566" > "$packages_meta/${PKG_NAME}.rusers" + tmp_list_file="$(mktemp /tmp/sing-box-rr-apk-list.XXXXXX)" + ( + cd "$root_dir" + find . \( -type f -o -type l \) | sed 's|^\./|/|' | sort > "$tmp_list_file" + ) + mv "$tmp_list_file" "$list_file" + cat > "$conffiles_file" <<'EOF' +/etc/config/sing-box +/etc/sing-box/config.json +EOF + while IFS= read -r conffile; do + [ -f "$root_dir$conffile" ] || continue + printf '%s %s\n' "$conffile" "$(sha256sum "$root_dir$conffile" | cut -d' ' -f1)" + done < "$conffiles_file" > "$conffiles_static_file" +} + +prepare_apk_root() { + local apk_root_dir="$1" + + mkdir -p "$apk_root_dir/etc" + cat > "$apk_root_dir/etc/passwd" <<'EOF' +root:x:0:0:root:/root:/sbin/nologin +EOF + cat > "$apk_root_dir/etc/group" <<'EOF' +root:x:0:root +EOF +} + +package_apk() { + local pkg_root="$1" sdk_dir="$2" pkg_arch="$3" out_dir="$4" + local apk_bin apk_root_dir fakeroot_bin output_file source_epoch + + apk_bin="$sdk_dir/staging_dir/host/bin/apk" + fakeroot_bin="$sdk_dir/staging_dir/host/bin/fakeroot" + [ -x "$apk_bin" ] || { + echo "apk host tool not found at $apk_bin" | tee -a "$LOG_FILE" + exit 1 + } + [ -x "$fakeroot_bin" ] || { + echo "fakeroot host tool not found at $fakeroot_bin" | tee -a "$LOG_FILE" + exit 1 + } + + mkdir -p "$out_dir" + rm -f "$out_dir"/${PKG_NAME}-*.apk + apk_root_dir="$(mktemp -d /tmp/sing-box-rr-apk-root.XXXXXX)" + output_file="$out_dir/${PKG_NAME}-$(apk_version).apk" + source_epoch="$(project_source_date_epoch)" + prepare_apk_root "$apk_root_dir" + + run env \ + "SOURCE_DATE_EPOCH=$source_epoch" \ + "STAGING_DIR_HOST=$sdk_dir/staging_dir/host" \ + "$fakeroot_bin" sh -c ' + set -e + pkg_dir="$1" + apk_root="$2" + apk_tool="$3" + output="$4" + arch="$5" + version="$6" + script="$7" + chown -R 0:0 "$pkg_dir" + "$apk_tool" --root "$apk_root" mkpkg \ + --info "name:sing-box-rr" \ + --info "version:$version" \ + --info "description:Trimmed network-only sing-box fork for OpenWrt." \ + --info "arch:$arch" \ + --info "license:GPL-3.0-or-later" \ + --info "origin:sing-box-rr" \ + --info "url:https://github.com/shtorm-7/sing-box-extended" \ + --info "maintainer:RR Edition" \ + --info "provides:sing-box sing-box-tiny" \ + --info "depends:ca-bundle kmod-inet-diag kmod-tun" \ + --script "pre-deinstall:$script" \ + --files "$pkg_dir" \ + --output "$output" + ' sh "$pkg_root" "$apk_root_dir" "$apk_bin" "$output_file" "$pkg_arch" "$(apk_version)" "$PROJECT_DIR/release/config/openwrt.prerm" + + rm -rf "$apk_root_dir" +} + +build_target() { + local label="$1" goarch="$2" pkg_arch="$3" sdk_dir="$4" out_dir="$5" + local temp_dir binary_path pkg_root + + temp_dir="$(mktemp -d /tmp/sing-box-rr-apk.XXXXXX)" + trap 'rm -rf "$temp_dir"' RETURN + binary_path="$temp_dir/sing-box" + pkg_root="$temp_dir/pkg" + + echo "=== Building $PKG_NAME $label for OpenWrt 25.12 ===" | tee -a "$LOG_FILE" + build_binary "$goarch" "$binary_path" + stage_common_tree "$pkg_root" "$binary_path" + stage_apk_metadata "$pkg_root" + package_apk "$pkg_root" "$sdk_dir" "$pkg_arch" "$out_dir" + run ls -lh "$out_dir"/${PKG_NAME}-*.apk + + trap - RETURN + rm -rf "$temp_dir" +} + +build_arm64() { + [ -d "$SDK_ARM64" ] || { echo "arm64 SDK not found at $SDK_ARM64" | tee -a "$LOG_FILE"; exit 1; } + build_target "arm64" "arm64" "aarch64_cortex-a53" "$SDK_ARM64" "$PACKAGES_DIR/arm64" +} + +build_x86() { + [ -d "$SDK_X86" ] || { echo "x86_64 SDK not found at $SDK_X86" | tee -a "$LOG_FILE"; exit 1; } + build_target "x86_64" "amd64" "x86_64" "$SDK_X86" "$PACKAGES_DIR/x86_64" +} + +for arg in "$@"; do + [ "$arg" = "--force" ] || [ "$arg" = "-f" ] && FORCE_REBUILD=1 +done +args=() +for arg in "$@"; do + [ "$arg" != "--force" ] && [ "$arg" != "-f" ] && args+=("$arg") +done +set -- "${args[@]}" + +require_tools +reset_go_cache_if_needed + +case "${1:-all}" in + arm64) + build_arm64 + ;; + x86|x86_64) + build_x86 + ;; + all) + rm -rf "$PACKAGES_DIR/arm64" "$PACKAGES_DIR/x86_64" 2>/dev/null || true + build_arm64 + build_x86 + ;; + *) + echo "Usage: $0 [arm64|x86|all] [--force|-f]" + echo " all - build APK packages for arm64 and x86_64 (default)" + echo " arm64 - build APK package for arm64" + echo " x86 - build APK package for x86_64" + echo "" + echo " --force|-f Rebuild with a clean Go cache" + exit 1 + ;; +esac + +echo "" +echo "=== $PKG_NAME $(apk_version) ===" +ls -la "$PACKAGES_DIR"/arm64/*.apk "$PACKAGES_DIR"/x86_64/*.apk 2>/dev/null || true + +echo "" +echo "=== Full log: $LOG_FILE ===" +ERRS=$(grep -E "error:|undefined reference|No such file|failed to build" "$LOG_FILE" \ + | grep -v "ignored)" | head -20 || true) +if [ -n "$ERRS" ]; then + echo "=== Errors detected: ===" + echo "$ERRS" +fi diff --git a/build-ipk.sh b/build-ipk.sh new file mode 100755 index 00000000..26b1403e --- /dev/null +++ b/build-ipk.sh @@ -0,0 +1,245 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_DIR="$SCRIPT_DIR/sing-box-rr" +GO_BIN="${GO_BIN:-/usr/local/go/bin/go}" +GO_CACHE_DIR="${GO_CACHE_DIR:-/tmp/sing-box-rr-go-build}" +GO_MODCACHE_DIR="${GO_MODCACHE_DIR:-/tmp/sing-box-rr-go-mod}" +SDK_ARM64="/home/fresa/sdk/openwrt-sdk-24.10.4-mediatek-filogic_gcc-13.3.0_musl.Linux-x86_64" +SDK_X86="/home/fresa/sdk/openwrt-sdk-24.10.4-x86-64_gcc-13.3.0_musl.Linux-x86_64" +PACKAGES_DIR="$SCRIPT_DIR/packages/24.10" +PKG_NAME="sing-box-rr" +PKG_RELEASE="1" +FORCE_REBUILD=0 + +LOG_DIR="$SCRIPT_DIR/build-logs" +mkdir -p "$LOG_DIR" +LOG_FILE="$LOG_DIR/build-ipk-$(date +%Y%m%d-%H%M%S).log" +LOG_LATEST="$LOG_DIR/build-ipk-latest.log" +: > "$LOG_FILE" +ln -sf "$(basename "$LOG_FILE")" "$LOG_LATEST" +ls -1t "$LOG_DIR"/build-ipk-*.log 2>/dev/null | tail -n +11 | xargs -r rm -f + +echo "=== Logging to $LOG_FILE ===" + +run() { "$@" 2>&1 | tee -a "$LOG_FILE"; return "${PIPESTATUS[0]}"; } + +project_version() { + if [ -f "$SCRIPT_DIR/VERSION" ]; then + cat "$SCRIPT_DIR/VERSION" + else + echo "0.0.0-unknown" + fi +} + +project_source_date_epoch() { + if [ -f "$SCRIPT_DIR/SOURCE_DATE_EPOCH" ]; then + cat "$SCRIPT_DIR/SOURCE_DATE_EPOCH" + else + date +%s + fi +} + +ipk_version() { + echo "$(project_version)-r${PKG_RELEASE}" +} + +build_tags() { + tr -d '\n' < "$PROJECT_DIR/release/DEFAULT_BUILD_TAGS_OTHERS" +} + +build_ldflags() { + local base_ldflags + base_ldflags="$(tr -d '\n' < "$PROJECT_DIR/release/LDFLAGS")" + echo "${base_ldflags} -X github.com/sagernet/sing-box/constant.Version=$(project_version) -s -w" +} + +require_tools() { + [ -x "$GO_BIN" ] || { echo "go not found at $GO_BIN" | tee -a "$LOG_FILE"; exit 1; } + command -v fakeroot >/dev/null || { echo "fakeroot not found in PATH" | tee -a "$LOG_FILE"; exit 1; } +} + +reset_go_cache_if_needed() { + if [ "$FORCE_REBUILD" = 1 ]; then + rm -rf "$GO_CACHE_DIR" "$GO_MODCACHE_DIR" + fi + mkdir -p "$GO_CACHE_DIR" "$GO_MODCACHE_DIR" +} + +build_binary() { + local goarch="$1" output="$2" + local tags ldflags + local -a env_cmd + + tags="$(build_tags)" + ldflags="$(build_ldflags)" + env_cmd=( + env + "PATH=$(dirname "$GO_BIN"):$PATH" + "GOTOOLCHAIN=local" + "GOCACHE=$GO_CACHE_DIR" + "GOMODCACHE=$GO_MODCACHE_DIR" + "CGO_ENABLED=0" + "GOOS=linux" + "GOARCH=$goarch" + ) + if [ "$goarch" = "amd64" ]; then + env_cmd+=("GOAMD64=v1") + fi + + echo "=== Building sing-box for GOARCH=$goarch ===" | tee -a "$LOG_FILE" + run "${env_cmd[@]}" "$GO_BIN" build \ + -buildvcs=false \ + -trimpath \ + -tags "$tags" \ + -ldflags "$ldflags" \ + -o "$output" \ + ./cmd/sing-box +} + +stage_common_tree() { + local root_dir="$1" binary_path="$2" + + install -d "$root_dir/usr/bin" \ + "$root_dir/usr/share/sing-box" \ + "$root_dir/etc/sing-box" \ + "$root_dir/etc/config" \ + "$root_dir/etc/init.d" \ + "$root_dir/lib/upgrade/keep.d" + install -m755 "$binary_path" "$root_dir/usr/bin/sing-box" + install -m644 "$PROJECT_DIR/release/config/config.json" "$root_dir/etc/sing-box/config.json" + install -m644 "$PROJECT_DIR/release/config/openwrt.conf" "$root_dir/etc/config/sing-box" + install -m755 "$PROJECT_DIR/release/config/openwrt.init" "$root_dir/etc/init.d/sing-box" + install -m644 "$PROJECT_DIR/release/config/openwrt.keep" "$root_dir/lib/upgrade/keep.d/sing-box" +} + +stage_ipk_metadata() { + local root_dir="$1" pkg_arch="$2" + local control_dir="$root_dir/CONTROL" + + mkdir -p "$control_dir" + cat > "$control_dir/control" < "$control_dir/conffiles" <<'EOF' +/etc/config/sing-box +/etc/sing-box/config.json +EOF + install -m755 "$PROJECT_DIR/release/config/openwrt.prerm" "$control_dir/prerm" +} + +package_ipk() { + local pkg_root="$1" sdk_dir="$2" out_dir="$3" + local source_epoch + + source_epoch="$(project_source_date_epoch)" + mkdir -p "$out_dir" + rm -f "$out_dir"/${PKG_NAME}_*.ipk + + run env "PKG_SOURCE_DATE_EPOCH=$source_epoch" fakeroot sh -c ' + set -e + pkg_dir="$1" + packer="$2" + dest_dir="$3" + chown -R 0:0 "$pkg_dir" + "$packer" "$pkg_dir" "$dest_dir" + ' sh "$pkg_root" "$sdk_dir/scripts/ipkg-build" "$out_dir" +} + +build_target() { + local label="$1" goarch="$2" pkg_arch="$3" sdk_dir="$4" out_dir="$5" + local temp_dir binary_path pkg_root + + [ -x "$sdk_dir/scripts/ipkg-build" ] || { + echo "$label SDK ipkg-build not found at $sdk_dir/scripts/ipkg-build" | tee -a "$LOG_FILE" + exit 1 + } + + temp_dir="$(mktemp -d /tmp/sing-box-rr-ipk.XXXXXX)" + trap 'rm -rf "$temp_dir"' RETURN + binary_path="$temp_dir/sing-box" + pkg_root="$temp_dir/pkg" + + echo "=== Building $PKG_NAME $label for OpenWrt 24.10 ===" | tee -a "$LOG_FILE" + build_binary "$goarch" "$binary_path" + stage_common_tree "$pkg_root" "$binary_path" + stage_ipk_metadata "$pkg_root" "$pkg_arch" + package_ipk "$pkg_root" "$sdk_dir" "$out_dir" + run ls -lh "$out_dir"/${PKG_NAME}_*.ipk + + trap - RETURN + rm -rf "$temp_dir" +} + +build_arm64() { + [ -d "$SDK_ARM64" ] || { echo "arm64 SDK not found at $SDK_ARM64" | tee -a "$LOG_FILE"; exit 1; } + build_target "arm64" "arm64" "aarch64_cortex-a53" "$SDK_ARM64" "$PACKAGES_DIR/arm64" +} + +build_x86() { + [ -d "$SDK_X86" ] || { echo "x86_64 SDK not found at $SDK_X86" | tee -a "$LOG_FILE"; exit 1; } + build_target "x86_64" "amd64" "x86_64" "$SDK_X86" "$PACKAGES_DIR/x86_64" +} + +for arg in "$@"; do + [ "$arg" = "--force" ] || [ "$arg" = "-f" ] && FORCE_REBUILD=1 +done +args=() +for arg in "$@"; do + [ "$arg" != "--force" ] && [ "$arg" != "-f" ] && args+=("$arg") +done +set -- "${args[@]}" + +require_tools +reset_go_cache_if_needed + +case "${1:-all}" in + arm64) + build_arm64 + ;; + x86|x86_64) + build_x86 + ;; + all) + rm -rf "$PACKAGES_DIR/arm64" "$PACKAGES_DIR/x86_64" 2>/dev/null || true + build_arm64 + build_x86 + ;; + *) + echo "Usage: $0 [arm64|x86|all] [--force|-f]" + echo " all - build IPK packages for arm64 and x86_64 (default)" + echo " arm64 - build IPK package for arm64" + echo " x86 - build IPK package for x86_64" + echo "" + echo " --force|-f Rebuild with a clean Go cache" + exit 1 + ;; +esac + +echo "" +echo "=== $PKG_NAME $(ipk_version) ===" +ls -la "$PACKAGES_DIR"/arm64/*.ipk "$PACKAGES_DIR"/x86_64/*.ipk 2>/dev/null || true + +echo "" +echo "=== Full log: $LOG_FILE ===" +ERRS=$(grep -E "error:|undefined reference|No such file|failed to build" "$LOG_FILE" \ + | grep -v "ignored)" | head -20 || true) +if [ -n "$ERRS" ]; then + echo "=== Errors detected: ===" + echo "$ERRS" +fi diff --git a/clients/android b/clients/android deleted file mode 160000 index eb872169..00000000 --- a/clients/android +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eb87216961321de1802e1355c470242f2ed5faa8 diff --git a/clients/apple b/clients/apple deleted file mode 160000 index c19945f6..00000000 --- a/clients/apple +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c19945f65be76ae5d16fc684a166079877802641 diff --git a/cmd/internal/build/main.go b/cmd/internal/build/main.go deleted file mode 100644 index cae67ba4..00000000 --- a/cmd/internal/build/main.go +++ /dev/null @@ -1,26 +0,0 @@ -package main - -import ( - "go/build" - "os" - "os/exec" - - "github.com/sagernet/sing-box/cmd/internal/build_shared" - "github.com/sagernet/sing-box/log" -) - -func main() { - build_shared.FindSDK() - - if os.Getenv("GOPATH") == "" { - os.Setenv("GOPATH", build.Default.GOPATH) - } - - command := exec.Command(os.Args[1], os.Args[2:]...) - command.Stdout = os.Stdout - command.Stderr = os.Stderr - err := command.Run() - if err != nil { - log.Fatal(err) - } -} diff --git a/release/DEFAULT_BUILD_TAGS b/release/DEFAULT_BUILD_TAGS deleted file mode 100644 index 4374ea93..00000000 --- a/release/DEFAULT_BUILD_TAGS +++ /dev/null @@ -1 +0,0 @@ -with_gvisor,with_quic,with_dhcp,with_wireguard,with_utls,with_acme,with_clash_api,with_tailscale,with_ccm,with_ocm,with_naive_outbound,badlinkname,tfogo_checklinkname0 \ No newline at end of file diff --git a/release/DEFAULT_BUILD_TAGS_OTHERS b/release/DEFAULT_BUILD_TAGS_OTHERS deleted file mode 100644 index a06e6c8b..00000000 --- a/release/DEFAULT_BUILD_TAGS_OTHERS +++ /dev/null @@ -1 +0,0 @@ -with_gvisor,with_quic,with_dhcp,with_wireguard,with_utls,with_acme,with_clash_api,with_tailscale,with_manager,with_admin_panel,with_ccm,with_ocm,badlinkname,tfogo_checklinkname0 diff --git a/release/DEFAULT_BUILD_TAGS_WINDOWS b/release/DEFAULT_BUILD_TAGS_WINDOWS deleted file mode 100644 index 746827a7..00000000 --- a/release/DEFAULT_BUILD_TAGS_WINDOWS +++ /dev/null @@ -1 +0,0 @@ -with_gvisor,with_quic,with_dhcp,with_wireguard,with_utls,with_acme,with_clash_api,with_tailscale,with_ccm,with_ocm,with_naive_outbound,with_purego,badlinkname,tfogo_checklinkname0 \ No newline at end of file diff --git a/.fpm_openwrt b/sing-box-rr/.fpm_openwrt similarity index 100% rename from .fpm_openwrt rename to sing-box-rr/.fpm_openwrt diff --git a/.fpm_pacman b/sing-box-rr/.fpm_pacman similarity index 100% rename from .fpm_pacman rename to sing-box-rr/.fpm_pacman diff --git a/.fpm_systemd b/sing-box-rr/.fpm_systemd similarity index 100% rename from .fpm_systemd rename to sing-box-rr/.fpm_systemd diff --git a/.github/CRONET_GO_VERSION b/sing-box-rr/.github/CRONET_GO_VERSION similarity index 100% rename from .github/CRONET_GO_VERSION rename to sing-box-rr/.github/CRONET_GO_VERSION diff --git a/.github/FUNDING.yml b/sing-box-rr/.github/FUNDING.yml similarity index 100% rename from .github/FUNDING.yml rename to sing-box-rr/.github/FUNDING.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/sing-box-rr/.github/ISSUE_TEMPLATE/bug_report.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report.yml rename to sing-box-rr/.github/ISSUE_TEMPLATE/bug_report.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report_zh.yml b/sing-box-rr/.github/ISSUE_TEMPLATE/bug_report_zh.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report_zh.yml rename to sing-box-rr/.github/ISSUE_TEMPLATE/bug_report_zh.yml diff --git a/.github/build_alpine_apk.sh b/sing-box-rr/.github/build_alpine_apk.sh similarity index 100% rename from .github/build_alpine_apk.sh rename to sing-box-rr/.github/build_alpine_apk.sh diff --git a/.github/build_openwrt_apk.sh b/sing-box-rr/.github/build_openwrt_apk.sh similarity index 100% rename from .github/build_openwrt_apk.sh rename to sing-box-rr/.github/build_openwrt_apk.sh diff --git a/.github/deb2ipk.sh b/sing-box-rr/.github/deb2ipk.sh similarity index 100% rename from .github/deb2ipk.sh rename to sing-box-rr/.github/deb2ipk.sh diff --git a/.github/detect_track.sh b/sing-box-rr/.github/detect_track.sh similarity index 100% rename from .github/detect_track.sh rename to sing-box-rr/.github/detect_track.sh diff --git a/.github/renovate.json b/sing-box-rr/.github/renovate.json similarity index 100% rename from .github/renovate.json rename to sing-box-rr/.github/renovate.json diff --git a/.github/setup_go_for_macos1013.sh b/sing-box-rr/.github/setup_go_for_macos1013.sh similarity index 100% rename from .github/setup_go_for_macos1013.sh rename to sing-box-rr/.github/setup_go_for_macos1013.sh diff --git a/.github/setup_go_for_windows7.sh b/sing-box-rr/.github/setup_go_for_windows7.sh similarity index 100% rename from .github/setup_go_for_windows7.sh rename to sing-box-rr/.github/setup_go_for_windows7.sh diff --git a/.github/update_clients.sh b/sing-box-rr/.github/update_clients.sh similarity index 100% rename from .github/update_clients.sh rename to sing-box-rr/.github/update_clients.sh diff --git a/.github/update_cronet.sh b/sing-box-rr/.github/update_cronet.sh similarity index 100% rename from .github/update_cronet.sh rename to sing-box-rr/.github/update_cronet.sh diff --git a/.github/update_cronet_dev.sh b/sing-box-rr/.github/update_cronet_dev.sh similarity index 100% rename from .github/update_cronet_dev.sh rename to sing-box-rr/.github/update_cronet_dev.sh diff --git a/.github/update_dependencies.sh b/sing-box-rr/.github/update_dependencies.sh similarity index 100% rename from .github/update_dependencies.sh rename to sing-box-rr/.github/update_dependencies.sh diff --git a/.github/workflows/build.yml b/sing-box-rr/.github/workflows/build.yml similarity index 100% rename from .github/workflows/build.yml rename to sing-box-rr/.github/workflows/build.yml diff --git a/.github/workflows/docker.yml b/sing-box-rr/.github/workflows/docker.yml similarity index 100% rename from .github/workflows/docker.yml rename to sing-box-rr/.github/workflows/docker.yml diff --git a/.github/workflows/lint.yml b/sing-box-rr/.github/workflows/lint.yml similarity index 100% rename from .github/workflows/lint.yml rename to sing-box-rr/.github/workflows/lint.yml diff --git a/.github/workflows/linux.yml b/sing-box-rr/.github/workflows/linux.yml similarity index 100% rename from .github/workflows/linux.yml rename to sing-box-rr/.github/workflows/linux.yml diff --git a/.github/workflows/stale.yml b/sing-box-rr/.github/workflows/stale.yml similarity index 100% rename from .github/workflows/stale.yml rename to sing-box-rr/.github/workflows/stale.yml diff --git a/sing-box-rr/.gitignore b/sing-box-rr/.gitignore new file mode 100644 index 00000000..7dee452c --- /dev/null +++ b/sing-box-rr/.gitignore @@ -0,0 +1,25 @@ +/.idea/ +/vendor/ +/*.json +/*.srs +/*.db +/site/ +/bin/ +/dist/ +/sing-box +/sing-box.exe +/build/ +/*.jar +/*.aar +/*.xcframework/ +/experimental/libbox/*.aar +/experimental/libbox/*.xcframework/ +/experimental/libbox/*.nupkg +.DS_Store +/config.d/ +/venv/ +CLAUDE.md +AGENTS.md +/.claude/ +dist +logs diff --git a/.gitmodules b/sing-box-rr/.gitmodules similarity index 100% rename from .gitmodules rename to sing-box-rr/.gitmodules diff --git a/.golangci.yml b/sing-box-rr/.golangci.yml similarity index 100% rename from .golangci.yml rename to sing-box-rr/.golangci.yml diff --git a/.goreleaser.yaml b/sing-box-rr/.goreleaser.yaml similarity index 100% rename from .goreleaser.yaml rename to sing-box-rr/.goreleaser.yaml diff --git a/sing-box-rr/BUILD.md b/sing-box-rr/BUILD.md new file mode 100644 index 00000000..504ae04f --- /dev/null +++ b/sing-box-rr/BUILD.md @@ -0,0 +1,384 @@ +# RR Edition: как отключать ненужный функционал + +Этот документ описывает, как дальше урезать текущий форк `sing-box-extended`. + +Он написан под текущее состояние репозитория, где дефолтная OpenWrt-сборка уже сведена к `network-only` профилю. + +## 1. Что уже отключено + +В текущем форке уже убраны из runtime-поверхности или из дефолтной сборки: + +- `WARP` +- `MASQUE` +- `MTProxy` +- `SSH` +- `Tor` +- `Bandwidth limiter` +- `Connection limiter` +- `Traffic limiter` +- `Rate limiter` +- `bond` +- `parser` +- `providers` +- старый `WireGuard` outbound +- `tailscale` +- `dhcp` +- `acme` +- `manager` +- `manager_api` +- `node` +- `node_manager_api` +- `admin_panel` +- `ccm` +- `ocm` + +Основные точки, где это уже вырезано: + +- [include/registry.go](./include/registry.go) +- [option/options.go](./option/options.go) +- [box.go](./box.go) +- [experimental/clashapi/server.go](./experimental/clashapi/server.go) +- [release/DEFAULT_BUILD_TAGS_OTHERS](./release/DEFAULT_BUILD_TAGS_OTHERS) + +## 2. Что сейчас входит в дефолтную сборку + +### OpenWrt package builds + +Скрипты [build-ipk.sh](/home/fresa/sing-box-rr-edition/build-ipk.sh) и [build-apk.sh](/home/fresa/sing-box-rr-edition/build-apk.sh) читают теги из: + +- [release/DEFAULT_BUILD_TAGS_OTHERS](./release/DEFAULT_BUILD_TAGS_OTHERS) + +Текущее значение: + +```text +with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0 +``` + +### Обычные non-package builds + +Дефолтные теги для обычных сборок лежат в: + +- [release/DEFAULT_BUILD_TAGS](./release/DEFAULT_BUILD_TAGS) +- [release/DEFAULT_BUILD_TAGS_WINDOWS](./release/DEFAULT_BUILD_TAGS_WINDOWS) + +Там по-прежнему включён `with_naive_outbound` для non-OpenWrt сборок. + +### Libbox builds + +Отдельные дефолты для libbox управляются в: + +- [cmd/internal/build_libbox/main.go](./cmd/internal/build_libbox/main.go) + +Если режешь дефолтные теги, держи этот файл синхронным с остальными. + +## 3. Самый безопасный способ: резать через build tags + +Это лучший первый шаг, если нужно уменьшить бинарник без немедленного перепила registry. + +### `with_quic` + +Убирай `with_quic`, если не нужны: + +- `Hysteria` +- `Hysteria2` +- `TUIC` +- DNS over `QUIC` +- DNS over `HTTP3` +- QUIC transport для V2Ray QUIC +- HTTP/3 путь у `naive` + +Связанные файлы: + +- [include/quic.go](./include/quic.go) +- [include/quic_stub.go](./include/quic_stub.go) + +После отключения парсер всё ещё знает эти типы, но runtime возвращает понятную ошибку "not included in this build". + +### `with_clash_api` + +Убирай `with_clash_api`, если не нужен Clash-совместимый API/UI слой. + +Связанные файлы: + +- [include/clashapi.go](./include/clashapi.go) +- [include/clashapi_stub.go](./include/clashapi_stub.go) + +### `with_utls` + +Убирай `with_utls`, если не нужны uTLS fingerprints для TLS outbounds. + +Это хороший чистый срез размера, если хватает обычного TLS. + +### `with_gvisor` + +Убирай `with_gvisor`, если не нужен gVisor-based stack. + +Делать это нужно аккуратно, если на роутере используются TUN-сценарии, которые на него опираются. + +### `with_naive_outbound` + +Этот тег важен для обычных сборок и libbox, но не для текущих OpenWrt package scripts, потому что они используют `DEFAULT_BUILD_TAGS_OTHERS`. + +Связанные файлы: + +- [include/naive_outbound.go](./include/naive_outbound.go) +- [include/naive_outbound_stub.go](./include/naive_outbound_stub.go) + +Если нужен OpenWrt package build без `naive`, есть два пути: + +1. Оставить `DEFAULT_BUILD_TAGS_OTHERS` как есть и убрать `naive` вручную из registry. +2. Или перевести package scripts на другой источник тегов и уже там управлять `with_naive_outbound`. + +## 4. Следующий уровень: вырезать типы из registry + +Если build tags уже не хватает, режь runtime-регистрацию прямо в: + +- [include/registry.go](./include/registry.go) + +Именно этот файл определяет, что бинарник реально экспонирует во время работы. + +### Inbounds, которые можно убрать + +- `socks` +- `http` +- `mixed` +- `shadowsocks` +- `vmess` +- `trojan` +- `naive` +- `shadowtls` +- `vless` +- `anytls` +- `failover` +- `tun` +- `redirect` +- `tproxy` + +### Outbounds, которые можно убрать + +- `selector` +- `urltest` +- `fallback` +- `socks` +- `http` +- `shadowsocks` +- `vmess` +- `trojan` +- `naive` +- `shadowtls` +- `vless` +- `mieru` +- `anytls` +- `failover` + +### DNS transports, которые можно убрать + +- `tcp` +- `udp` +- `tls` +- `https` +- `sdns` +- `hosts` +- `local` +- `fakeip` +- `fallback` +- `resolved` + +### Services, которые можно убрать + +- `resolved` +- `ssmapi` +- `oom-killer` +- `profiler` + +### Endpoints, которые можно убрать + +- `vpn-server` +- `vpn-client` + +Практическое правило: + +- Если фича должна остаться распознаваемой, но с понятной ошибкой, лучше build-tag stub. +- Если фича должна исчезнуть из поддерживаемых config types совсем, убирай её из registry. + +## 5. Глубокий срез: чистка config surface + +Если нужно, чтобы форк вообще перестал "обещать" удалённые секции, чисти ещё и конфигурационный слой. + +### Providers + +Providers уже отключены в текущем форке. Ключевые точки среза: + +- [option/options.go](./option/options.go) +- [box.go](./box.go) +- [experimental/clashapi/server.go](./experimental/clashapi/server.go) + +Тот же паттерн можно использовать, если позже будешь убирать другие top-level config sections. + +### Старые feature-specific options + +Если фича удаляется окончательно, проверь, не остались ли на неё ссылки в: + +- `option/*.go` +- `constant/*.go` +- `include/*_stub.go` + +Безопасный порядок такой: + +1. Сначала убрать из build tags или registry. +2. Потом проверить, что валидные конфиги больше на неё не опираются. +3. И только после этого удалять option/constant references. + +## 6. Рекомендуемый порядок урезания + +Для этого форка самый безопасный порядок такой: + +1. Резать build tags в [release/DEFAULT_BUILD_TAGS_OTHERS](./release/DEFAULT_BUILD_TAGS_OTHERS). +2. Если нужно, синхронизировать ту же политику в [release/DEFAULT_BUILD_TAGS](./release/DEFAULT_BUILD_TAGS), [release/DEFAULT_BUILD_TAGS_WINDOWS](./release/DEFAULT_BUILD_TAGS_WINDOWS) и [cmd/internal/build_libbox/main.go](./cmd/internal/build_libbox/main.go). +3. Потом убирать лишнюю runtime-регистрацию в [include/registry.go](./include/registry.go). +4. Только после стабилизации сборки резать config surface. +5. Физически удалять старые каталоги с исходниками только в самом конце. + +## 7. Примеры профилей урезания + +### Профиль A: оставить XHTTP и mKCP, убрать только admin/API хвост + +Оставить: + +- `with_quic` +- `with_utls` +- `with_gvisor` + +Убрать: + +- `with_clash_api` + +Это самый безопасный следующий срез, если не используешь Clash-compatible API endpoints. + +### Профиль B: более компактная router build + +Убрать теги: + +- `with_clash_api` +- `with_utls` +- `with_quic` + +Потом дополнительно убрать из registry: + +- `naive` +- `mieru` +- `shadowtls` +- `anytls` + +Это даёт заметно меньший бинарник, но сохраняет базовые SOCKS/HTTP/VMess/VLESS/Trojan/Shadowsocks сценарии. + +### Профиль C: минимальное network core + +Убрать теги: + +- `with_clash_api` +- `with_utls` +- `with_quic` +- `with_gvisor` + +Потом ужать registry до минимума: + +- `tun` или `redirect/tproxy` +- `direct` +- `block` +- один-два реально используемых outbound-протокола +- только те DNS transports, которые реально используются + +Это самый агрессивный сценарий для маленьких OpenWrt-таргетов. + +## 8. Что важно для пакетизации + +В проекте сейчас есть два пути пакетизации: + +- локальные helper scripts: [build-ipk.sh](/home/fresa/sing-box-rr-edition/build-ipk.sh) и [build-apk.sh](/home/fresa/sing-box-rr-edition/build-apk.sh) +- обычная OpenWrt feed-сборка через [sing-box-rr/Makefile](./Makefile) + +Оба пути специально выставляют: + +- `Provides: sing-box` +- `Provides: sing-box-tiny` + +Это важно, если downstream-пакет зависит именно от `sing-box-tiny`, например `zeroblock`. + +Связанные файлы: + +- [build-ipk.sh](/home/fresa/sing-box-rr-edition/build-ipk.sh) +- [build-apk.sh](/home/fresa/sing-box-rr-edition/build-apk.sh) +- [sing-box-rr/Makefile](./Makefile) + +Если меняешь package name или `Provides`, сначала проверь зависимости downstream-пакетов. + +### OpenWrt feeds build + +Для `24.10.x SDK` пакет нельзя собирать через стандартный `golang-package.mk`, потому что в этой ветке OpenWrt `golang/host` всё ещё `1.23.x`, а текущий форк требует `go 1.26.1`. + +Поэтому feed-пакет в [sing-box-rr/Makefile](./Makefile): + +- не зависит от `golang/host` +- берет исходники прямо из корня этого форка +- собирает бинарь внешним `go`, по умолчанию через `/usr/local/go/bin/go` +- сейчас рассчитан на `aarch64` и `x86_64`, но для роутерного профиля нам важен именно `aarch64` + +Если `go` лежит не в дефолтном пути, передай его явно: + +```bash +make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/путь/к/go +``` + +## 9. Команды пересборки + +### OpenWrt feed package build + +```bash +echo 'src-link singboxrr /home/fresa/sing-box-rr-edition' >> feeds.conf +./scripts/feeds update singboxrr +./scripts/feeds install -f sing-box-rr +make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/usr/local/go/bin/go +``` + +### OpenWrt 24.10 IPK + +```bash +../build-ipk.sh arm64 +../build-ipk.sh x86_64 +``` + +### OpenWrt 25.12 APK + +```bash +../build-apk.sh arm64 +../build-apk.sh x86_64 +``` + +### Принудительная чистая пересборка Go cache + +```bash +../build-ipk.sh arm64 --force +../build-apk.sh arm64 --force +``` + +## 10. Что проверять после каждого среза + +После любого отключения функционала нужно проверять: + +1. Бинарник всё ещё собирается. +2. Package metadata всё ещё совпадает с ожиданиями downstream-пакетов. +3. Удалённые config types либо: + - полностью исчезли из registry; + - либо дают понятную stub-ошибку. +4. На роутере `sing-box` всё ещё стартует через штатный OpenWrt init script. + +Полезные быстрые проверки: + +```bash +git status --short +../build-ipk.sh arm64 +../build-apk.sh arm64 +``` + +Если режешь сборку для роутера, на котором уже стоит `zeroblock`, отдельно проверь совместимость package dependency перед изменением `Provides`, `Conflicts` и имени пакета. diff --git a/DONATE.md b/sing-box-rr/DONATE.md similarity index 100% rename from DONATE.md rename to sing-box-rr/DONATE.md diff --git a/Dockerfile b/sing-box-rr/Dockerfile similarity index 100% rename from Dockerfile rename to sing-box-rr/Dockerfile diff --git a/Dockerfile.binary b/sing-box-rr/Dockerfile.binary similarity index 100% rename from Dockerfile.binary rename to sing-box-rr/Dockerfile.binary diff --git a/LICENSE b/sing-box-rr/LICENSE similarity index 100% rename from LICENSE rename to sing-box-rr/LICENSE diff --git a/sing-box-rr/Makefile b/sing-box-rr/Makefile new file mode 100644 index 00000000..7d2655d9 --- /dev/null +++ b/sing-box-rr/Makefile @@ -0,0 +1,120 @@ +include $(TOPDIR)/rules.mk + +PROJECT_DIR:=$(CURDIR) +PKG_NAME:=sing-box-rr +PKG_VERSION:=$(shell cat $(CURDIR)/../VERSION 2>/dev/null || echo 0.0.0-unknown) +PKG_RELEASE:=1 +PKG_SOURCE_DATE_EPOCH:=$(shell cat $(CURDIR)/../SOURCE_DATE_EPOCH 2>/dev/null || date +%s) + +PKG_LICENSE:=GPL-3.0-or-later +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=RR Edition + +PKG_BUILD_PARALLEL:=1 +PKG_BUILD_FLAGS:=no-mips16 + +GO_BIN?=/usr/local/go/bin/go +SINGBOX_RR_BUILT_BINARY:=$(PKG_BUILD_DIR)/sing-box +SINGBOX_RR_GOCACHE?=$(TMP_DIR)/sing-box-rr-go-build +SINGBOX_RR_GOMODCACHE?=$(DL_DIR)/sing-box-rr-go-mod +SINGBOX_RR_TAGS:=$(shell tr -d '\n' < $(PROJECT_DIR)/release/DEFAULT_BUILD_TAGS_OTHERS 2>/dev/null) +SINGBOX_RR_BASE_LDFLAGS:=$(shell tr -d '\n' < $(PROJECT_DIR)/release/LDFLAGS 2>/dev/null) +SINGBOX_RR_LDFLAGS:=$(strip $(SINGBOX_RR_BASE_LDFLAGS) -X github.com/sagernet/sing-box/constant.Version=$(PKG_VERSION) -s -w) + +ifeq ($(ARCH),aarch64) + SINGBOX_RR_GOARCH:=arm64 +endif + +ifeq ($(ARCH),x86_64) + SINGBOX_RR_GOARCH:=amd64 + SINGBOX_RR_GOENV_EXTRA:=GOAMD64=v1 +endif + +include $(INCLUDE_DIR)/package.mk + +define Package/sing-box-rr + TITLE:=Sing-box RR edition + SECTION:=net + CATEGORY:=Network + URL:=https://github.com/shtorm-7/sing-box-extended + DEPENDS:=@(aarch64||x86_64) +ca-bundle +kmod-inet-diag +kmod-tun + PROVIDES:=sing-box sing-box-tiny + CONFLICTS:=sing-box + USERID:=sing-box=5566:sing-box=5566 +endef + +define Package/sing-box-rr/description + Trimmed OpenWrt build of the RR/extended sing-box fork. + Keeps the network-oriented runtime and preserves XHTTP and mKCP. +endef + +define Build/Prepare + rm -rf $(PKG_BUILD_DIR) + mkdir -p $(PKG_BUILD_DIR) + ( \ + cd "$(PROJECT_DIR)" && \ + tar \ + --exclude=.git \ + --exclude=.codex \ + --exclude=BUILD.md \ + --exclude=Makefile \ + --exclude=Makefile.sing-box \ + -cf - . \ + ) | (cd "$(PKG_BUILD_DIR)" && tar -xf -) +endef + +define Build/Compile + [ -x "$(GO_BIN)" ] || { echo "external Go not found at $(GO_BIN)"; exit 1; } + [ -n "$(SINGBOX_RR_GOARCH)" ] || { echo "unsupported OpenWrt ARCH: $(ARCH)"; exit 1; } + mkdir -p "$(SINGBOX_RR_GOCACHE)" "$(SINGBOX_RR_GOMODCACHE)" + ( \ + cd "$(PKG_BUILD_DIR)" && \ + PATH="$(dir $(GO_BIN)):$$$$PATH" \ + GOTOOLCHAIN=local \ + GOCACHE="$(SINGBOX_RR_GOCACHE)" \ + GOMODCACHE="$(SINGBOX_RR_GOMODCACHE)" \ + CGO_ENABLED=0 \ + GOOS=linux \ + GOARCH="$(SINGBOX_RR_GOARCH)" \ + $(SINGBOX_RR_GOENV_EXTRA) \ + "$(GO_BIN)" build \ + -buildvcs=false \ + -trimpath \ + -tags "$(SINGBOX_RR_TAGS)" \ + -ldflags "$(SINGBOX_RR_LDFLAGS)" \ + -o "$(SINGBOX_RR_BUILT_BINARY)" \ + ./cmd/sing-box \ + ) +endef + +define Package/sing-box-rr/conffiles +/etc/config/sing-box +/etc/sing-box/config.json +endef + +define Package/sing-box-rr/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(SINGBOX_RR_BUILT_BINARY) $(1)/usr/bin/sing-box + + $(INSTALL_DIR) $(1)/etc/sing-box + $(INSTALL_DATA) $(PKG_BUILD_DIR)/release/config/config.json $(1)/etc/sing-box/config.json + + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) $(PKG_BUILD_DIR)/release/config/openwrt.conf $(1)/etc/config/sing-box + + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) $(PKG_BUILD_DIR)/release/config/openwrt.init $(1)/etc/init.d/sing-box + + $(INSTALL_DIR) $(1)/lib/upgrade/keep.d + $(INSTALL_DATA) $(PKG_BUILD_DIR)/release/config/openwrt.keep $(1)/lib/upgrade/keep.d/sing-box +endef + +define Package/sing-box-rr/prerm +#!/bin/sh +[ -n "$${IPKG_INSTROOT}" ] && exit 0 +[ "$$PKG_UPGRADE" = "1" ] && exit 0 +/etc/init.d/sing-box stop 2>/dev/null || true +exit 0 +endef + +$(eval $(call BuildPackage,sing-box-rr)) diff --git a/Makefile b/sing-box-rr/Makefile.sing-box similarity index 100% rename from Makefile rename to sing-box-rr/Makefile.sing-box diff --git a/README.md b/sing-box-rr/README.md similarity index 65% rename from README.md rename to sing-box-rr/README.md index c94953a9..e2093913 100644 --- a/README.md +++ b/sing-box-rr/README.md @@ -1,16 +1,12 @@ # sing-box-extended -Sing-box with extended features. +Sing-box network-focused fork with a trimmed feature set. ## 🔥 Features ### Outbounds -- **WARP** — Cloudflare WARP integration through WireGuard -- **MASQUE** — Cloudflare MASQUE proxy over QUIC / HTTP-2 -- **MTProxy** — Telegram MTProxy server with FakeTLS and domain fronting - **Mieru** — Secure, hard to classify, hard to probe network protocol - **VPN** — Routed tunnel over any TCP sing-box protocol -- **Bond** — Link aggregation for increasing throughput - **Fallback** — Outbound group with priority-based switching - **Failover** — Automatic outbound switching with session recovery for high availability @@ -18,14 +14,7 @@ Sing-box with extended features. - **SDNS (DNSCrypt)** — Encrypted DNS queries for enhanced privacy - **DNS Fallback** — Sequential / parallel queries across upstream resolvers -### Limiters -- **Bandwidth Limiter** — Upload / download / bidirectional rate limiting -- **Connection Limiter** — Concurrent connection control -- **Traffic Limiter** — Per-user traffic quotas -- **Rate Limiter** — Request rate limiting - ### Encryption & Obfuscation -- **Amnezia 2.0** — WireGuard traffic obfuscation - **VLESS encryption** — XRAY encryption for VLESS protocol ### Transports @@ -33,15 +22,10 @@ Sing-box with extended features. - **XHTTP** — Modern XRAY transport ### Services -- **Admin Panel** — Web-based management interface -- **Manager** — Management service for configuring users, nodes, limiters -- **Manager API (HTTP/gRPC)** — HTTP and gRPC API for the Manager -- **Node Manager API** — Service for connecting nodes to remote manager +- **SSM API** — Service API retained in the trimmed runtime +- **Resolved** — Linux resolved integration ### Miscellaneous -- **Providers** — Outbound subscriptions from local files, inline lists, or remote URLs (sing-box JSON, Clash YAML, SIP008, share links) -- **Link Parser** — Outbound configured from a share link (VLESS, VMess, Shadowsocks, Trojan, Hysteria, Hysteria2, TUIC) -- **Extended WireGuard options** — Advanced configuration capabilities - **Unified Delay** — Unified latency measurement ## 📚 Examples diff --git a/adapter/certificate.go b/sing-box-rr/adapter/certificate.go similarity index 100% rename from adapter/certificate.go rename to sing-box-rr/adapter/certificate.go diff --git a/adapter/connections.go b/sing-box-rr/adapter/connections.go similarity index 100% rename from adapter/connections.go rename to sing-box-rr/adapter/connections.go diff --git a/adapter/dns.go b/sing-box-rr/adapter/dns.go similarity index 100% rename from adapter/dns.go rename to sing-box-rr/adapter/dns.go diff --git a/adapter/endpoint.go b/sing-box-rr/adapter/endpoint.go similarity index 100% rename from adapter/endpoint.go rename to sing-box-rr/adapter/endpoint.go diff --git a/adapter/endpoint/adapter.go b/sing-box-rr/adapter/endpoint/adapter.go similarity index 100% rename from adapter/endpoint/adapter.go rename to sing-box-rr/adapter/endpoint/adapter.go diff --git a/adapter/endpoint/manager.go b/sing-box-rr/adapter/endpoint/manager.go similarity index 100% rename from adapter/endpoint/manager.go rename to sing-box-rr/adapter/endpoint/manager.go diff --git a/adapter/endpoint/registry.go b/sing-box-rr/adapter/endpoint/registry.go similarity index 100% rename from adapter/endpoint/registry.go rename to sing-box-rr/adapter/endpoint/registry.go diff --git a/adapter/experimental.go b/sing-box-rr/adapter/experimental.go similarity index 100% rename from adapter/experimental.go rename to sing-box-rr/adapter/experimental.go diff --git a/adapter/fakeip.go b/sing-box-rr/adapter/fakeip.go similarity index 100% rename from adapter/fakeip.go rename to sing-box-rr/adapter/fakeip.go diff --git a/adapter/fakeip_metadata.go b/sing-box-rr/adapter/fakeip_metadata.go similarity index 100% rename from adapter/fakeip_metadata.go rename to sing-box-rr/adapter/fakeip_metadata.go diff --git a/adapter/handler.go b/sing-box-rr/adapter/handler.go similarity index 100% rename from adapter/handler.go rename to sing-box-rr/adapter/handler.go diff --git a/adapter/inbound.go b/sing-box-rr/adapter/inbound.go similarity index 100% rename from adapter/inbound.go rename to sing-box-rr/adapter/inbound.go diff --git a/adapter/inbound/adapter.go b/sing-box-rr/adapter/inbound/adapter.go similarity index 100% rename from adapter/inbound/adapter.go rename to sing-box-rr/adapter/inbound/adapter.go diff --git a/adapter/inbound/manager.go b/sing-box-rr/adapter/inbound/manager.go similarity index 100% rename from adapter/inbound/manager.go rename to sing-box-rr/adapter/inbound/manager.go diff --git a/adapter/inbound/registry.go b/sing-box-rr/adapter/inbound/registry.go similarity index 100% rename from adapter/inbound/registry.go rename to sing-box-rr/adapter/inbound/registry.go diff --git a/adapter/lifecycle.go b/sing-box-rr/adapter/lifecycle.go similarity index 100% rename from adapter/lifecycle.go rename to sing-box-rr/adapter/lifecycle.go diff --git a/adapter/lifecycle_legacy.go b/sing-box-rr/adapter/lifecycle_legacy.go similarity index 100% rename from adapter/lifecycle_legacy.go rename to sing-box-rr/adapter/lifecycle_legacy.go diff --git a/adapter/network.go b/sing-box-rr/adapter/network.go similarity index 100% rename from adapter/network.go rename to sing-box-rr/adapter/network.go diff --git a/adapter/outbound.go b/sing-box-rr/adapter/outbound.go similarity index 100% rename from adapter/outbound.go rename to sing-box-rr/adapter/outbound.go diff --git a/adapter/outbound/adapter.go b/sing-box-rr/adapter/outbound/adapter.go similarity index 100% rename from adapter/outbound/adapter.go rename to sing-box-rr/adapter/outbound/adapter.go diff --git a/adapter/outbound/manager.go b/sing-box-rr/adapter/outbound/manager.go similarity index 100% rename from adapter/outbound/manager.go rename to sing-box-rr/adapter/outbound/manager.go diff --git a/adapter/outbound/registry.go b/sing-box-rr/adapter/outbound/registry.go similarity index 100% rename from adapter/outbound/registry.go rename to sing-box-rr/adapter/outbound/registry.go diff --git a/adapter/platform.go b/sing-box-rr/adapter/platform.go similarity index 100% rename from adapter/platform.go rename to sing-box-rr/adapter/platform.go diff --git a/adapter/prestart.go b/sing-box-rr/adapter/prestart.go similarity index 100% rename from adapter/prestart.go rename to sing-box-rr/adapter/prestart.go diff --git a/adapter/provider.go b/sing-box-rr/adapter/provider.go similarity index 100% rename from adapter/provider.go rename to sing-box-rr/adapter/provider.go diff --git a/adapter/provider/adapter.go b/sing-box-rr/adapter/provider/adapter.go similarity index 100% rename from adapter/provider/adapter.go rename to sing-box-rr/adapter/provider/adapter.go diff --git a/adapter/provider/manager.go b/sing-box-rr/adapter/provider/manager.go similarity index 100% rename from adapter/provider/manager.go rename to sing-box-rr/adapter/provider/manager.go diff --git a/adapter/provider/registry.go b/sing-box-rr/adapter/provider/registry.go similarity index 100% rename from adapter/provider/registry.go rename to sing-box-rr/adapter/provider/registry.go diff --git a/adapter/router.go b/sing-box-rr/adapter/router.go similarity index 100% rename from adapter/router.go rename to sing-box-rr/adapter/router.go diff --git a/adapter/rule.go b/sing-box-rr/adapter/rule.go similarity index 100% rename from adapter/rule.go rename to sing-box-rr/adapter/rule.go diff --git a/adapter/service.go b/sing-box-rr/adapter/service.go similarity index 100% rename from adapter/service.go rename to sing-box-rr/adapter/service.go diff --git a/adapter/service/adapter.go b/sing-box-rr/adapter/service/adapter.go similarity index 100% rename from adapter/service/adapter.go rename to sing-box-rr/adapter/service/adapter.go diff --git a/adapter/service/manager.go b/sing-box-rr/adapter/service/manager.go similarity index 100% rename from adapter/service/manager.go rename to sing-box-rr/adapter/service/manager.go diff --git a/adapter/service/registry.go b/sing-box-rr/adapter/service/registry.go similarity index 100% rename from adapter/service/registry.go rename to sing-box-rr/adapter/service/registry.go diff --git a/adapter/ssm.go b/sing-box-rr/adapter/ssm.go similarity index 100% rename from adapter/ssm.go rename to sing-box-rr/adapter/ssm.go diff --git a/adapter/time.go b/sing-box-rr/adapter/time.go similarity index 100% rename from adapter/time.go rename to sing-box-rr/adapter/time.go diff --git a/adapter/upstream.go b/sing-box-rr/adapter/upstream.go similarity index 100% rename from adapter/upstream.go rename to sing-box-rr/adapter/upstream.go diff --git a/adapter/upstream_legacy.go b/sing-box-rr/adapter/upstream_legacy.go similarity index 100% rename from adapter/upstream_legacy.go rename to sing-box-rr/adapter/upstream_legacy.go diff --git a/adapter/v2ray.go b/sing-box-rr/adapter/v2ray.go similarity index 100% rename from adapter/v2ray.go rename to sing-box-rr/adapter/v2ray.go diff --git a/box.go b/sing-box-rr/box.go similarity index 98% rename from box.go rename to sing-box-rr/box.go index f99dbdb2..e588b9d9 100644 --- a/box.go +++ b/sing-box-rr/box.go @@ -320,25 +320,6 @@ func New(options Options) (*Box, error) { return nil, E.Cause(err, "initialize outbound[", i, "]") } } - for i, providerOptions := range options.Providers { - var tag string - if providerOptions.Tag != "" { - tag = providerOptions.Tag - } else { - tag = F.ToString(i) - } - err = providerManager.Create( - ctx, - router, - logFactory, - tag, - providerOptions.Type, - providerOptions.Options, - ) - if err != nil { - return nil, E.Cause(err, "initialize provider[", i, "]") - } - } for i, serviceOptions := range options.Services { var tag string if serviceOptions.Tag != "" { diff --git a/cmd/internal/admin_panel_pack/main.go b/sing-box-rr/cmd/internal/admin_panel_pack/main.go similarity index 100% rename from cmd/internal/admin_panel_pack/main.go rename to sing-box-rr/cmd/internal/admin_panel_pack/main.go diff --git a/cmd/internal/app_store_connect/main.go b/sing-box-rr/cmd/internal/app_store_connect/main.go similarity index 100% rename from cmd/internal/app_store_connect/main.go rename to sing-box-rr/cmd/internal/app_store_connect/main.go diff --git a/cmd/internal/build_libbox/main.go b/sing-box-rr/cmd/internal/build_libbox/main.go similarity index 92% rename from cmd/internal/build_libbox/main.go rename to sing-box-rr/cmd/internal/build_libbox/main.go index c49232ee..f604f43d 100644 --- a/cmd/internal/build_libbox/main.go +++ b/sing-box-rr/cmd/internal/build_libbox/main.go @@ -63,10 +63,8 @@ func init() { sharedFlags = append(sharedFlags, "-ldflags", "-X github.com/sagernet/sing-box/constant.Version="+currentTag+" -X internal/godebug.defaultGODEBUG=multipathtcp=0 -s -w -buildid= -checklinkname=0") debugFlags = append(debugFlags, "-ldflags", "-X github.com/sagernet/sing-box/constant.Version="+currentTag+" -X internal/godebug.defaultGODEBUG=multipathtcp=0 -checklinkname=0") - sharedTags = append(sharedTags, "with_gvisor", "with_quic", "with_wireguard", "with_masque", "with_mtproxy", "with_utls", "with_naive_outbound", "with_clash_api", "badlinkname", "tfogo_checklinkname0") - darwinTags = append(darwinTags, "with_dhcp", "grpcnotrace") - // memcTags = append(memcTags, "with_tailscale") - sharedTags = append(sharedTags, "with_tailscale", "ts_omit_logtail", "ts_omit_ssh", "ts_omit_drive", "ts_omit_taildrop", "ts_omit_webclient", "ts_omit_doctor", "ts_omit_capture", "ts_omit_kube", "ts_omit_aws", "ts_omit_synology", "ts_omit_bird") + sharedTags = append(sharedTags, "with_gvisor", "with_quic", "with_utls", "with_naive_outbound", "with_clash_api", "badlinkname", "tfogo_checklinkname0") + darwinTags = append(darwinTags, "grpcnotrace") notMemcTags = append(notMemcTags, "with_low_memory") debugTags = append(debugTags, "debug") } diff --git a/cmd/internal/build_shared/sdk.go b/sing-box-rr/cmd/internal/build_shared/sdk.go similarity index 100% rename from cmd/internal/build_shared/sdk.go rename to sing-box-rr/cmd/internal/build_shared/sdk.go diff --git a/cmd/internal/build_shared/tag.go b/sing-box-rr/cmd/internal/build_shared/tag.go similarity index 100% rename from cmd/internal/build_shared/tag.go rename to sing-box-rr/cmd/internal/build_shared/tag.go diff --git a/cmd/internal/format_docs/main.go b/sing-box-rr/cmd/internal/format_docs/main.go similarity index 100% rename from cmd/internal/format_docs/main.go rename to sing-box-rr/cmd/internal/format_docs/main.go diff --git a/cmd/internal/protogen/main.go b/sing-box-rr/cmd/internal/protogen/main.go similarity index 100% rename from cmd/internal/protogen/main.go rename to sing-box-rr/cmd/internal/protogen/main.go diff --git a/cmd/internal/read_tag/main.go b/sing-box-rr/cmd/internal/read_tag/main.go similarity index 100% rename from cmd/internal/read_tag/main.go rename to sing-box-rr/cmd/internal/read_tag/main.go diff --git a/cmd/internal/tun_bench/main.go b/sing-box-rr/cmd/internal/tun_bench/main.go similarity index 100% rename from cmd/internal/tun_bench/main.go rename to sing-box-rr/cmd/internal/tun_bench/main.go diff --git a/cmd/internal/update_android_version/main.go b/sing-box-rr/cmd/internal/update_android_version/main.go similarity index 100% rename from cmd/internal/update_android_version/main.go rename to sing-box-rr/cmd/internal/update_android_version/main.go diff --git a/cmd/internal/update_apple_version/main.go b/sing-box-rr/cmd/internal/update_apple_version/main.go similarity index 100% rename from cmd/internal/update_apple_version/main.go rename to sing-box-rr/cmd/internal/update_apple_version/main.go diff --git a/cmd/internal/update_certificates/main.go b/sing-box-rr/cmd/internal/update_certificates/main.go similarity index 100% rename from cmd/internal/update_certificates/main.go rename to sing-box-rr/cmd/internal/update_certificates/main.go diff --git a/cmd/sing-box/cache.db b/sing-box-rr/cmd/sing-box/cache.db similarity index 100% rename from cmd/sing-box/cache.db rename to sing-box-rr/cmd/sing-box/cache.db diff --git a/cmd/sing-box/cmd.go b/sing-box-rr/cmd/sing-box/cmd.go similarity index 100% rename from cmd/sing-box/cmd.go rename to sing-box-rr/cmd/sing-box/cmd.go diff --git a/cmd/sing-box/cmd_check.go b/sing-box-rr/cmd/sing-box/cmd_check.go similarity index 100% rename from cmd/sing-box/cmd_check.go rename to sing-box-rr/cmd/sing-box/cmd_check.go diff --git a/cmd/sing-box/cmd_format.go b/sing-box-rr/cmd/sing-box/cmd_format.go similarity index 100% rename from cmd/sing-box/cmd_format.go rename to sing-box-rr/cmd/sing-box/cmd_format.go diff --git a/cmd/sing-box/cmd_generate.go b/sing-box-rr/cmd/sing-box/cmd_generate.go similarity index 100% rename from cmd/sing-box/cmd_generate.go rename to sing-box-rr/cmd/sing-box/cmd_generate.go diff --git a/cmd/sing-box/cmd_generate_ech.go b/sing-box-rr/cmd/sing-box/cmd_generate_ech.go similarity index 100% rename from cmd/sing-box/cmd_generate_ech.go rename to sing-box-rr/cmd/sing-box/cmd_generate_ech.go diff --git a/cmd/sing-box/cmd_generate_tls.go b/sing-box-rr/cmd/sing-box/cmd_generate_tls.go similarity index 100% rename from cmd/sing-box/cmd_generate_tls.go rename to sing-box-rr/cmd/sing-box/cmd_generate_tls.go diff --git a/cmd/sing-box/cmd_generate_vapid.go b/sing-box-rr/cmd/sing-box/cmd_generate_vapid.go similarity index 100% rename from cmd/sing-box/cmd_generate_vapid.go rename to sing-box-rr/cmd/sing-box/cmd_generate_vapid.go diff --git a/cmd/sing-box/cmd_generate_wireguard.go b/sing-box-rr/cmd/sing-box/cmd_generate_wireguard.go similarity index 100% rename from cmd/sing-box/cmd_generate_wireguard.go rename to sing-box-rr/cmd/sing-box/cmd_generate_wireguard.go diff --git a/cmd/sing-box/cmd_geoip.go b/sing-box-rr/cmd/sing-box/cmd_geoip.go similarity index 100% rename from cmd/sing-box/cmd_geoip.go rename to sing-box-rr/cmd/sing-box/cmd_geoip.go diff --git a/cmd/sing-box/cmd_geoip_export.go b/sing-box-rr/cmd/sing-box/cmd_geoip_export.go similarity index 100% rename from cmd/sing-box/cmd_geoip_export.go rename to sing-box-rr/cmd/sing-box/cmd_geoip_export.go diff --git a/cmd/sing-box/cmd_geoip_list.go b/sing-box-rr/cmd/sing-box/cmd_geoip_list.go similarity index 100% rename from cmd/sing-box/cmd_geoip_list.go rename to sing-box-rr/cmd/sing-box/cmd_geoip_list.go diff --git a/cmd/sing-box/cmd_geoip_lookup.go b/sing-box-rr/cmd/sing-box/cmd_geoip_lookup.go similarity index 100% rename from cmd/sing-box/cmd_geoip_lookup.go rename to sing-box-rr/cmd/sing-box/cmd_geoip_lookup.go diff --git a/cmd/sing-box/cmd_geosite.go b/sing-box-rr/cmd/sing-box/cmd_geosite.go similarity index 100% rename from cmd/sing-box/cmd_geosite.go rename to sing-box-rr/cmd/sing-box/cmd_geosite.go diff --git a/cmd/sing-box/cmd_geosite_export.go b/sing-box-rr/cmd/sing-box/cmd_geosite_export.go similarity index 100% rename from cmd/sing-box/cmd_geosite_export.go rename to sing-box-rr/cmd/sing-box/cmd_geosite_export.go diff --git a/cmd/sing-box/cmd_geosite_list.go b/sing-box-rr/cmd/sing-box/cmd_geosite_list.go similarity index 100% rename from cmd/sing-box/cmd_geosite_list.go rename to sing-box-rr/cmd/sing-box/cmd_geosite_list.go diff --git a/cmd/sing-box/cmd_geosite_lookup.go b/sing-box-rr/cmd/sing-box/cmd_geosite_lookup.go similarity index 100% rename from cmd/sing-box/cmd_geosite_lookup.go rename to sing-box-rr/cmd/sing-box/cmd_geosite_lookup.go diff --git a/cmd/sing-box/cmd_geosite_matcher.go b/sing-box-rr/cmd/sing-box/cmd_geosite_matcher.go similarity index 100% rename from cmd/sing-box/cmd_geosite_matcher.go rename to sing-box-rr/cmd/sing-box/cmd_geosite_matcher.go diff --git a/cmd/sing-box/cmd_merge.go b/sing-box-rr/cmd/sing-box/cmd_merge.go similarity index 100% rename from cmd/sing-box/cmd_merge.go rename to sing-box-rr/cmd/sing-box/cmd_merge.go diff --git a/cmd/sing-box/cmd_rule_set.go b/sing-box-rr/cmd/sing-box/cmd_rule_set.go similarity index 100% rename from cmd/sing-box/cmd_rule_set.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set.go diff --git a/cmd/sing-box/cmd_rule_set_compile.go b/sing-box-rr/cmd/sing-box/cmd_rule_set_compile.go similarity index 100% rename from cmd/sing-box/cmd_rule_set_compile.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set_compile.go diff --git a/cmd/sing-box/cmd_rule_set_convert.go b/sing-box-rr/cmd/sing-box/cmd_rule_set_convert.go similarity index 100% rename from cmd/sing-box/cmd_rule_set_convert.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set_convert.go diff --git a/cmd/sing-box/cmd_rule_set_decompile.go b/sing-box-rr/cmd/sing-box/cmd_rule_set_decompile.go similarity index 100% rename from cmd/sing-box/cmd_rule_set_decompile.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set_decompile.go diff --git a/cmd/sing-box/cmd_rule_set_format.go b/sing-box-rr/cmd/sing-box/cmd_rule_set_format.go similarity index 100% rename from cmd/sing-box/cmd_rule_set_format.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set_format.go diff --git a/cmd/sing-box/cmd_rule_set_match.go b/sing-box-rr/cmd/sing-box/cmd_rule_set_match.go similarity index 100% rename from cmd/sing-box/cmd_rule_set_match.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set_match.go diff --git a/cmd/sing-box/cmd_rule_set_merge.go b/sing-box-rr/cmd/sing-box/cmd_rule_set_merge.go similarity index 100% rename from cmd/sing-box/cmd_rule_set_merge.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set_merge.go diff --git a/cmd/sing-box/cmd_rule_set_upgrade.go b/sing-box-rr/cmd/sing-box/cmd_rule_set_upgrade.go similarity index 100% rename from cmd/sing-box/cmd_rule_set_upgrade.go rename to sing-box-rr/cmd/sing-box/cmd_rule_set_upgrade.go diff --git a/cmd/sing-box/cmd_run.go b/sing-box-rr/cmd/sing-box/cmd_run.go similarity index 100% rename from cmd/sing-box/cmd_run.go rename to sing-box-rr/cmd/sing-box/cmd_run.go diff --git a/cmd/sing-box/cmd_tools.go b/sing-box-rr/cmd/sing-box/cmd_tools.go similarity index 100% rename from cmd/sing-box/cmd_tools.go rename to sing-box-rr/cmd/sing-box/cmd_tools.go diff --git a/cmd/sing-box/cmd_tools_connect.go b/sing-box-rr/cmd/sing-box/cmd_tools_connect.go similarity index 100% rename from cmd/sing-box/cmd_tools_connect.go rename to sing-box-rr/cmd/sing-box/cmd_tools_connect.go diff --git a/cmd/sing-box/cmd_tools_fetch.go b/sing-box-rr/cmd/sing-box/cmd_tools_fetch.go similarity index 100% rename from cmd/sing-box/cmd_tools_fetch.go rename to sing-box-rr/cmd/sing-box/cmd_tools_fetch.go diff --git a/cmd/sing-box/cmd_tools_fetch_http3.go b/sing-box-rr/cmd/sing-box/cmd_tools_fetch_http3.go similarity index 100% rename from cmd/sing-box/cmd_tools_fetch_http3.go rename to sing-box-rr/cmd/sing-box/cmd_tools_fetch_http3.go diff --git a/cmd/sing-box/cmd_tools_fetch_http3_stub.go b/sing-box-rr/cmd/sing-box/cmd_tools_fetch_http3_stub.go similarity index 100% rename from cmd/sing-box/cmd_tools_fetch_http3_stub.go rename to sing-box-rr/cmd/sing-box/cmd_tools_fetch_http3_stub.go diff --git a/cmd/sing-box/cmd_tools_synctime.go b/sing-box-rr/cmd/sing-box/cmd_tools_synctime.go similarity index 100% rename from cmd/sing-box/cmd_tools_synctime.go rename to sing-box-rr/cmd/sing-box/cmd_tools_synctime.go diff --git a/cmd/sing-box/cmd_version.go b/sing-box-rr/cmd/sing-box/cmd_version.go similarity index 100% rename from cmd/sing-box/cmd_version.go rename to sing-box-rr/cmd/sing-box/cmd_version.go diff --git a/cmd/sing-box/generate_completions.go b/sing-box-rr/cmd/sing-box/generate_completions.go similarity index 100% rename from cmd/sing-box/generate_completions.go rename to sing-box-rr/cmd/sing-box/generate_completions.go diff --git a/cmd/sing-box/main.go b/sing-box-rr/cmd/sing-box/main.go similarity index 100% rename from cmd/sing-box/main.go rename to sing-box-rr/cmd/sing-box/main.go diff --git a/common/badtls/raw_conn.go b/sing-box-rr/common/badtls/raw_conn.go similarity index 100% rename from common/badtls/raw_conn.go rename to sing-box-rr/common/badtls/raw_conn.go diff --git a/common/badtls/raw_half_conn.go b/sing-box-rr/common/badtls/raw_half_conn.go similarity index 100% rename from common/badtls/raw_half_conn.go rename to sing-box-rr/common/badtls/raw_half_conn.go diff --git a/common/badtls/read_wait.go b/sing-box-rr/common/badtls/read_wait.go similarity index 100% rename from common/badtls/read_wait.go rename to sing-box-rr/common/badtls/read_wait.go diff --git a/common/badtls/read_wait_stub.go b/sing-box-rr/common/badtls/read_wait_stub.go similarity index 100% rename from common/badtls/read_wait_stub.go rename to sing-box-rr/common/badtls/read_wait_stub.go diff --git a/common/badtls/registry.go b/sing-box-rr/common/badtls/registry.go similarity index 100% rename from common/badtls/registry.go rename to sing-box-rr/common/badtls/registry.go diff --git a/common/badtls/registry_utls.go b/sing-box-rr/common/badtls/registry_utls.go similarity index 100% rename from common/badtls/registry_utls.go rename to sing-box-rr/common/badtls/registry_utls.go diff --git a/common/badversion/version.go b/sing-box-rr/common/badversion/version.go similarity index 100% rename from common/badversion/version.go rename to sing-box-rr/common/badversion/version.go diff --git a/common/badversion/version_json.go b/sing-box-rr/common/badversion/version_json.go similarity index 100% rename from common/badversion/version_json.go rename to sing-box-rr/common/badversion/version_json.go diff --git a/common/badversion/version_test.go b/sing-box-rr/common/badversion/version_test.go similarity index 100% rename from common/badversion/version_test.go rename to sing-box-rr/common/badversion/version_test.go diff --git a/common/byteformats/formats.go b/sing-box-rr/common/byteformats/formats.go similarity index 100% rename from common/byteformats/formats.go rename to sing-box-rr/common/byteformats/formats.go diff --git a/common/byteformats/json.go b/sing-box-rr/common/byteformats/json.go similarity index 100% rename from common/byteformats/json.go rename to sing-box-rr/common/byteformats/json.go diff --git a/common/byteformats/json_test.go b/sing-box-rr/common/byteformats/json_test.go similarity index 100% rename from common/byteformats/json_test.go rename to sing-box-rr/common/byteformats/json_test.go diff --git a/common/certificate/chrome.go b/sing-box-rr/common/certificate/chrome.go similarity index 100% rename from common/certificate/chrome.go rename to sing-box-rr/common/certificate/chrome.go diff --git a/common/certificate/mozilla.go b/sing-box-rr/common/certificate/mozilla.go similarity index 100% rename from common/certificate/mozilla.go rename to sing-box-rr/common/certificate/mozilla.go diff --git a/common/certificate/store.go b/sing-box-rr/common/certificate/store.go similarity index 100% rename from common/certificate/store.go rename to sing-box-rr/common/certificate/store.go diff --git a/common/cloudflare/api.go b/sing-box-rr/common/cloudflare/api.go similarity index 100% rename from common/cloudflare/api.go rename to sing-box-rr/common/cloudflare/api.go diff --git a/common/cloudflare/constant.go b/sing-box-rr/common/cloudflare/constant.go similarity index 100% rename from common/cloudflare/constant.go rename to sing-box-rr/common/cloudflare/constant.go diff --git a/common/cloudflare/models.go b/sing-box-rr/common/cloudflare/models.go similarity index 100% rename from common/cloudflare/models.go rename to sing-box-rr/common/cloudflare/models.go diff --git a/common/cloudflare/option.go b/sing-box-rr/common/cloudflare/option.go similarity index 100% rename from common/cloudflare/option.go rename to sing-box-rr/common/cloudflare/option.go diff --git a/common/cloudflare/utils.go b/sing-box-rr/common/cloudflare/utils.go similarity index 100% rename from common/cloudflare/utils.go rename to sing-box-rr/common/cloudflare/utils.go diff --git a/common/compatible/map.go b/sing-box-rr/common/compatible/map.go similarity index 100% rename from common/compatible/map.go rename to sing-box-rr/common/compatible/map.go diff --git a/common/convertor/adguard/convertor.go b/sing-box-rr/common/convertor/adguard/convertor.go similarity index 100% rename from common/convertor/adguard/convertor.go rename to sing-box-rr/common/convertor/adguard/convertor.go diff --git a/common/convertor/adguard/convertor_test.go b/sing-box-rr/common/convertor/adguard/convertor_test.go similarity index 100% rename from common/convertor/adguard/convertor_test.go rename to sing-box-rr/common/convertor/adguard/convertor_test.go diff --git a/common/dialer/default.go b/sing-box-rr/common/dialer/default.go similarity index 100% rename from common/dialer/default.go rename to sing-box-rr/common/dialer/default.go diff --git a/common/dialer/default_parallel_interface.go b/sing-box-rr/common/dialer/default_parallel_interface.go similarity index 100% rename from common/dialer/default_parallel_interface.go rename to sing-box-rr/common/dialer/default_parallel_interface.go diff --git a/common/dialer/default_parallel_network.go b/sing-box-rr/common/dialer/default_parallel_network.go similarity index 100% rename from common/dialer/default_parallel_network.go rename to sing-box-rr/common/dialer/default_parallel_network.go diff --git a/common/dialer/detour.go b/sing-box-rr/common/dialer/detour.go similarity index 100% rename from common/dialer/detour.go rename to sing-box-rr/common/dialer/detour.go diff --git a/common/dialer/dialer.go b/sing-box-rr/common/dialer/dialer.go similarity index 100% rename from common/dialer/dialer.go rename to sing-box-rr/common/dialer/dialer.go diff --git a/common/dialer/resolve.go b/sing-box-rr/common/dialer/resolve.go similarity index 100% rename from common/dialer/resolve.go rename to sing-box-rr/common/dialer/resolve.go diff --git a/common/dialer/router.go b/sing-box-rr/common/dialer/router.go similarity index 100% rename from common/dialer/router.go rename to sing-box-rr/common/dialer/router.go diff --git a/common/dialer/tfo.go b/sing-box-rr/common/dialer/tfo.go similarity index 100% rename from common/dialer/tfo.go rename to sing-box-rr/common/dialer/tfo.go diff --git a/common/dialer/wireguard.go b/sing-box-rr/common/dialer/wireguard.go similarity index 100% rename from common/dialer/wireguard.go rename to sing-box-rr/common/dialer/wireguard.go diff --git a/common/geoip/reader.go b/sing-box-rr/common/geoip/reader.go similarity index 100% rename from common/geoip/reader.go rename to sing-box-rr/common/geoip/reader.go diff --git a/common/geosite/compat_test.go b/sing-box-rr/common/geosite/compat_test.go similarity index 100% rename from common/geosite/compat_test.go rename to sing-box-rr/common/geosite/compat_test.go diff --git a/common/geosite/geosite_test.go b/sing-box-rr/common/geosite/geosite_test.go similarity index 100% rename from common/geosite/geosite_test.go rename to sing-box-rr/common/geosite/geosite_test.go diff --git a/common/geosite/reader.go b/sing-box-rr/common/geosite/reader.go similarity index 100% rename from common/geosite/reader.go rename to sing-box-rr/common/geosite/reader.go diff --git a/common/geosite/rule.go b/sing-box-rr/common/geosite/rule.go similarity index 100% rename from common/geosite/rule.go rename to sing-box-rr/common/geosite/rule.go diff --git a/common/geosite/writer.go b/sing-box-rr/common/geosite/writer.go similarity index 100% rename from common/geosite/writer.go rename to sing-box-rr/common/geosite/writer.go diff --git a/common/interrupt/conn.go b/sing-box-rr/common/interrupt/conn.go similarity index 100% rename from common/interrupt/conn.go rename to sing-box-rr/common/interrupt/conn.go diff --git a/common/interrupt/context.go b/sing-box-rr/common/interrupt/context.go similarity index 100% rename from common/interrupt/context.go rename to sing-box-rr/common/interrupt/context.go diff --git a/common/interrupt/group.go b/sing-box-rr/common/interrupt/group.go similarity index 100% rename from common/interrupt/group.go rename to sing-box-rr/common/interrupt/group.go diff --git a/common/ja3/LICENSE b/sing-box-rr/common/ja3/LICENSE similarity index 100% rename from common/ja3/LICENSE rename to sing-box-rr/common/ja3/LICENSE diff --git a/common/ja3/README.md b/sing-box-rr/common/ja3/README.md similarity index 100% rename from common/ja3/README.md rename to sing-box-rr/common/ja3/README.md diff --git a/common/ja3/error.go b/sing-box-rr/common/ja3/error.go similarity index 100% rename from common/ja3/error.go rename to sing-box-rr/common/ja3/error.go diff --git a/common/ja3/ja3.go b/sing-box-rr/common/ja3/ja3.go similarity index 100% rename from common/ja3/ja3.go rename to sing-box-rr/common/ja3/ja3.go diff --git a/common/ja3/parser.go b/sing-box-rr/common/ja3/parser.go similarity index 100% rename from common/ja3/parser.go rename to sing-box-rr/common/ja3/parser.go diff --git a/common/kmutex/mutex.go b/sing-box-rr/common/kmutex/mutex.go similarity index 100% rename from common/kmutex/mutex.go rename to sing-box-rr/common/kmutex/mutex.go diff --git a/common/kmutex/mutex_test.go b/sing-box-rr/common/kmutex/mutex_test.go similarity index 100% rename from common/kmutex/mutex_test.go rename to sing-box-rr/common/kmutex/mutex_test.go diff --git a/common/ktls/ktls.go b/sing-box-rr/common/ktls/ktls.go similarity index 100% rename from common/ktls/ktls.go rename to sing-box-rr/common/ktls/ktls.go diff --git a/common/ktls/ktls_alert.go b/sing-box-rr/common/ktls/ktls_alert.go similarity index 100% rename from common/ktls/ktls_alert.go rename to sing-box-rr/common/ktls/ktls_alert.go diff --git a/common/ktls/ktls_cipher_suites_linux.go b/sing-box-rr/common/ktls/ktls_cipher_suites_linux.go similarity index 100% rename from common/ktls/ktls_cipher_suites_linux.go rename to sing-box-rr/common/ktls/ktls_cipher_suites_linux.go diff --git a/common/ktls/ktls_close.go b/sing-box-rr/common/ktls/ktls_close.go similarity index 100% rename from common/ktls/ktls_close.go rename to sing-box-rr/common/ktls/ktls_close.go diff --git a/common/ktls/ktls_const.go b/sing-box-rr/common/ktls/ktls_const.go similarity index 100% rename from common/ktls/ktls_const.go rename to sing-box-rr/common/ktls/ktls_const.go diff --git a/common/ktls/ktls_handshake_messages.go b/sing-box-rr/common/ktls/ktls_handshake_messages.go similarity index 100% rename from common/ktls/ktls_handshake_messages.go rename to sing-box-rr/common/ktls/ktls_handshake_messages.go diff --git a/common/ktls/ktls_key_update.go b/sing-box-rr/common/ktls/ktls_key_update.go similarity index 100% rename from common/ktls/ktls_key_update.go rename to sing-box-rr/common/ktls/ktls_key_update.go diff --git a/common/ktls/ktls_linux.go b/sing-box-rr/common/ktls/ktls_linux.go similarity index 100% rename from common/ktls/ktls_linux.go rename to sing-box-rr/common/ktls/ktls_linux.go diff --git a/common/ktls/ktls_prf.go b/sing-box-rr/common/ktls/ktls_prf.go similarity index 100% rename from common/ktls/ktls_prf.go rename to sing-box-rr/common/ktls/ktls_prf.go diff --git a/common/ktls/ktls_read.go b/sing-box-rr/common/ktls/ktls_read.go similarity index 100% rename from common/ktls/ktls_read.go rename to sing-box-rr/common/ktls/ktls_read.go diff --git a/common/ktls/ktls_read_wait.go b/sing-box-rr/common/ktls/ktls_read_wait.go similarity index 100% rename from common/ktls/ktls_read_wait.go rename to sing-box-rr/common/ktls/ktls_read_wait.go diff --git a/common/ktls/ktls_stub_nolinkname.go b/sing-box-rr/common/ktls/ktls_stub_nolinkname.go similarity index 100% rename from common/ktls/ktls_stub_nolinkname.go rename to sing-box-rr/common/ktls/ktls_stub_nolinkname.go diff --git a/common/ktls/ktls_stub_nonlinux.go b/sing-box-rr/common/ktls/ktls_stub_nonlinux.go similarity index 100% rename from common/ktls/ktls_stub_nonlinux.go rename to sing-box-rr/common/ktls/ktls_stub_nonlinux.go diff --git a/common/ktls/ktls_stub_oldgo.go b/sing-box-rr/common/ktls/ktls_stub_oldgo.go similarity index 100% rename from common/ktls/ktls_stub_oldgo.go rename to sing-box-rr/common/ktls/ktls_stub_oldgo.go diff --git a/common/ktls/ktls_write.go b/sing-box-rr/common/ktls/ktls_write.go similarity index 100% rename from common/ktls/ktls_write.go rename to sing-box-rr/common/ktls/ktls_write.go diff --git a/common/listener/listener.go b/sing-box-rr/common/listener/listener.go similarity index 100% rename from common/listener/listener.go rename to sing-box-rr/common/listener/listener.go diff --git a/common/listener/listener_tcp.go b/sing-box-rr/common/listener/listener_tcp.go similarity index 100% rename from common/listener/listener_tcp.go rename to sing-box-rr/common/listener/listener_tcp.go diff --git a/common/listener/listener_udp.go b/sing-box-rr/common/listener/listener_udp.go similarity index 100% rename from common/listener/listener_udp.go rename to sing-box-rr/common/listener/listener_udp.go diff --git a/common/migrate/source/raw.go b/sing-box-rr/common/migrate/source/raw.go similarity index 100% rename from common/migrate/source/raw.go rename to sing-box-rr/common/migrate/source/raw.go diff --git a/common/mux/client.go b/sing-box-rr/common/mux/client.go similarity index 100% rename from common/mux/client.go rename to sing-box-rr/common/mux/client.go diff --git a/common/mux/router.go b/sing-box-rr/common/mux/router.go similarity index 100% rename from common/mux/router.go rename to sing-box-rr/common/mux/router.go diff --git a/common/pipelistener/listener.go b/sing-box-rr/common/pipelistener/listener.go similarity index 100% rename from common/pipelistener/listener.go rename to sing-box-rr/common/pipelistener/listener.go diff --git a/common/process/searcher.go b/sing-box-rr/common/process/searcher.go similarity index 100% rename from common/process/searcher.go rename to sing-box-rr/common/process/searcher.go diff --git a/common/process/searcher_android.go b/sing-box-rr/common/process/searcher_android.go similarity index 100% rename from common/process/searcher_android.go rename to sing-box-rr/common/process/searcher_android.go diff --git a/common/process/searcher_darwin.go b/sing-box-rr/common/process/searcher_darwin.go similarity index 100% rename from common/process/searcher_darwin.go rename to sing-box-rr/common/process/searcher_darwin.go diff --git a/common/process/searcher_darwin_shared.go b/sing-box-rr/common/process/searcher_darwin_shared.go similarity index 100% rename from common/process/searcher_darwin_shared.go rename to sing-box-rr/common/process/searcher_darwin_shared.go diff --git a/common/process/searcher_linux.go b/sing-box-rr/common/process/searcher_linux.go similarity index 100% rename from common/process/searcher_linux.go rename to sing-box-rr/common/process/searcher_linux.go diff --git a/common/process/searcher_linux_shared.go b/sing-box-rr/common/process/searcher_linux_shared.go similarity index 100% rename from common/process/searcher_linux_shared.go rename to sing-box-rr/common/process/searcher_linux_shared.go diff --git a/common/process/searcher_linux_shared_test.go b/sing-box-rr/common/process/searcher_linux_shared_test.go similarity index 100% rename from common/process/searcher_linux_shared_test.go rename to sing-box-rr/common/process/searcher_linux_shared_test.go diff --git a/common/process/searcher_stub.go b/sing-box-rr/common/process/searcher_stub.go similarity index 100% rename from common/process/searcher_stub.go rename to sing-box-rr/common/process/searcher_stub.go diff --git a/common/process/searcher_windows.go b/sing-box-rr/common/process/searcher_windows.go similarity index 100% rename from common/process/searcher_windows.go rename to sing-box-rr/common/process/searcher_windows.go diff --git a/common/redir/redir_darwin.go b/sing-box-rr/common/redir/redir_darwin.go similarity index 100% rename from common/redir/redir_darwin.go rename to sing-box-rr/common/redir/redir_darwin.go diff --git a/common/redir/redir_linux.go b/sing-box-rr/common/redir/redir_linux.go similarity index 100% rename from common/redir/redir_linux.go rename to sing-box-rr/common/redir/redir_linux.go diff --git a/common/redir/redir_other.go b/sing-box-rr/common/redir/redir_other.go similarity index 100% rename from common/redir/redir_other.go rename to sing-box-rr/common/redir/redir_other.go diff --git a/common/redir/tproxy_linux.go b/sing-box-rr/common/redir/tproxy_linux.go similarity index 100% rename from common/redir/tproxy_linux.go rename to sing-box-rr/common/redir/tproxy_linux.go diff --git a/common/redir/tproxy_other.go b/sing-box-rr/common/redir/tproxy_other.go similarity index 100% rename from common/redir/tproxy_other.go rename to sing-box-rr/common/redir/tproxy_other.go diff --git a/common/settings/proxy_android.go b/sing-box-rr/common/settings/proxy_android.go similarity index 100% rename from common/settings/proxy_android.go rename to sing-box-rr/common/settings/proxy_android.go diff --git a/common/settings/proxy_darwin.go b/sing-box-rr/common/settings/proxy_darwin.go similarity index 100% rename from common/settings/proxy_darwin.go rename to sing-box-rr/common/settings/proxy_darwin.go diff --git a/common/settings/proxy_linux.go b/sing-box-rr/common/settings/proxy_linux.go similarity index 100% rename from common/settings/proxy_linux.go rename to sing-box-rr/common/settings/proxy_linux.go diff --git a/common/settings/proxy_stub.go b/sing-box-rr/common/settings/proxy_stub.go similarity index 100% rename from common/settings/proxy_stub.go rename to sing-box-rr/common/settings/proxy_stub.go diff --git a/common/settings/proxy_windows.go b/sing-box-rr/common/settings/proxy_windows.go similarity index 100% rename from common/settings/proxy_windows.go rename to sing-box-rr/common/settings/proxy_windows.go diff --git a/common/settings/system_proxy.go b/sing-box-rr/common/settings/system_proxy.go similarity index 100% rename from common/settings/system_proxy.go rename to sing-box-rr/common/settings/system_proxy.go diff --git a/common/settings/wifi.go b/sing-box-rr/common/settings/wifi.go similarity index 100% rename from common/settings/wifi.go rename to sing-box-rr/common/settings/wifi.go diff --git a/common/settings/wifi_linux.go b/sing-box-rr/common/settings/wifi_linux.go similarity index 100% rename from common/settings/wifi_linux.go rename to sing-box-rr/common/settings/wifi_linux.go diff --git a/common/settings/wifi_linux_connman.go b/sing-box-rr/common/settings/wifi_linux_connman.go similarity index 100% rename from common/settings/wifi_linux_connman.go rename to sing-box-rr/common/settings/wifi_linux_connman.go diff --git a/common/settings/wifi_linux_iwd.go b/sing-box-rr/common/settings/wifi_linux_iwd.go similarity index 100% rename from common/settings/wifi_linux_iwd.go rename to sing-box-rr/common/settings/wifi_linux_iwd.go diff --git a/common/settings/wifi_linux_nm.go b/sing-box-rr/common/settings/wifi_linux_nm.go similarity index 100% rename from common/settings/wifi_linux_nm.go rename to sing-box-rr/common/settings/wifi_linux_nm.go diff --git a/common/settings/wifi_linux_wpa.go b/sing-box-rr/common/settings/wifi_linux_wpa.go similarity index 100% rename from common/settings/wifi_linux_wpa.go rename to sing-box-rr/common/settings/wifi_linux_wpa.go diff --git a/common/settings/wifi_stub.go b/sing-box-rr/common/settings/wifi_stub.go similarity index 100% rename from common/settings/wifi_stub.go rename to sing-box-rr/common/settings/wifi_stub.go diff --git a/common/settings/wifi_windows.go b/sing-box-rr/common/settings/wifi_windows.go similarity index 100% rename from common/settings/wifi_windows.go rename to sing-box-rr/common/settings/wifi_windows.go diff --git a/common/sniff/bittorrent.go b/sing-box-rr/common/sniff/bittorrent.go similarity index 100% rename from common/sniff/bittorrent.go rename to sing-box-rr/common/sniff/bittorrent.go diff --git a/common/sniff/bittorrent_test.go b/sing-box-rr/common/sniff/bittorrent_test.go similarity index 100% rename from common/sniff/bittorrent_test.go rename to sing-box-rr/common/sniff/bittorrent_test.go diff --git a/common/sniff/dns.go b/sing-box-rr/common/sniff/dns.go similarity index 100% rename from common/sniff/dns.go rename to sing-box-rr/common/sniff/dns.go diff --git a/common/sniff/dns_test.go b/sing-box-rr/common/sniff/dns_test.go similarity index 100% rename from common/sniff/dns_test.go rename to sing-box-rr/common/sniff/dns_test.go diff --git a/common/sniff/dtls.go b/sing-box-rr/common/sniff/dtls.go similarity index 100% rename from common/sniff/dtls.go rename to sing-box-rr/common/sniff/dtls.go diff --git a/common/sniff/dtls_test.go b/sing-box-rr/common/sniff/dtls_test.go similarity index 100% rename from common/sniff/dtls_test.go rename to sing-box-rr/common/sniff/dtls_test.go diff --git a/common/sniff/http.go b/sing-box-rr/common/sniff/http.go similarity index 100% rename from common/sniff/http.go rename to sing-box-rr/common/sniff/http.go diff --git a/common/sniff/http_test.go b/sing-box-rr/common/sniff/http_test.go similarity index 100% rename from common/sniff/http_test.go rename to sing-box-rr/common/sniff/http_test.go diff --git a/common/sniff/internal/qtls/qtls.go b/sing-box-rr/common/sniff/internal/qtls/qtls.go similarity index 100% rename from common/sniff/internal/qtls/qtls.go rename to sing-box-rr/common/sniff/internal/qtls/qtls.go diff --git a/common/sniff/ntp.go b/sing-box-rr/common/sniff/ntp.go similarity index 100% rename from common/sniff/ntp.go rename to sing-box-rr/common/sniff/ntp.go diff --git a/common/sniff/ntp_test.go b/sing-box-rr/common/sniff/ntp_test.go similarity index 100% rename from common/sniff/ntp_test.go rename to sing-box-rr/common/sniff/ntp_test.go diff --git a/common/sniff/quic.go b/sing-box-rr/common/sniff/quic.go similarity index 100% rename from common/sniff/quic.go rename to sing-box-rr/common/sniff/quic.go diff --git a/common/sniff/quic_blacklist.go b/sing-box-rr/common/sniff/quic_blacklist.go similarity index 100% rename from common/sniff/quic_blacklist.go rename to sing-box-rr/common/sniff/quic_blacklist.go diff --git a/common/sniff/quic_capture_test.go b/sing-box-rr/common/sniff/quic_capture_test.go similarity index 100% rename from common/sniff/quic_capture_test.go rename to sing-box-rr/common/sniff/quic_capture_test.go diff --git a/common/sniff/quic_test.go b/sing-box-rr/common/sniff/quic_test.go similarity index 100% rename from common/sniff/quic_test.go rename to sing-box-rr/common/sniff/quic_test.go diff --git a/common/sniff/rdp.go b/sing-box-rr/common/sniff/rdp.go similarity index 100% rename from common/sniff/rdp.go rename to sing-box-rr/common/sniff/rdp.go diff --git a/common/sniff/rdp_test.go b/sing-box-rr/common/sniff/rdp_test.go similarity index 100% rename from common/sniff/rdp_test.go rename to sing-box-rr/common/sniff/rdp_test.go diff --git a/common/sniff/sniff.go b/sing-box-rr/common/sniff/sniff.go similarity index 100% rename from common/sniff/sniff.go rename to sing-box-rr/common/sniff/sniff.go diff --git a/common/sniff/ssh.go b/sing-box-rr/common/sniff/ssh.go similarity index 100% rename from common/sniff/ssh.go rename to sing-box-rr/common/sniff/ssh.go diff --git a/common/sniff/ssh_test.go b/sing-box-rr/common/sniff/ssh_test.go similarity index 100% rename from common/sniff/ssh_test.go rename to sing-box-rr/common/sniff/ssh_test.go diff --git a/common/sniff/stun.go b/sing-box-rr/common/sniff/stun.go similarity index 100% rename from common/sniff/stun.go rename to sing-box-rr/common/sniff/stun.go diff --git a/common/sniff/stun_test.go b/sing-box-rr/common/sniff/stun_test.go similarity index 100% rename from common/sniff/stun_test.go rename to sing-box-rr/common/sniff/stun_test.go diff --git a/common/sniff/tls.go b/sing-box-rr/common/sniff/tls.go similarity index 100% rename from common/sniff/tls.go rename to sing-box-rr/common/sniff/tls.go diff --git a/common/srs/binary.go b/sing-box-rr/common/srs/binary.go similarity index 100% rename from common/srs/binary.go rename to sing-box-rr/common/srs/binary.go diff --git a/common/srs/compat_test.go b/sing-box-rr/common/srs/compat_test.go similarity index 100% rename from common/srs/compat_test.go rename to sing-box-rr/common/srs/compat_test.go diff --git a/common/srs/ip_cidr.go b/sing-box-rr/common/srs/ip_cidr.go similarity index 100% rename from common/srs/ip_cidr.go rename to sing-box-rr/common/srs/ip_cidr.go diff --git a/common/srs/ip_set.go b/sing-box-rr/common/srs/ip_set.go similarity index 100% rename from common/srs/ip_set.go rename to sing-box-rr/common/srs/ip_set.go diff --git a/common/taskmonitor/monitor.go b/sing-box-rr/common/taskmonitor/monitor.go similarity index 100% rename from common/taskmonitor/monitor.go rename to sing-box-rr/common/taskmonitor/monitor.go diff --git a/common/tls/acme.go b/sing-box-rr/common/tls/acme.go similarity index 100% rename from common/tls/acme.go rename to sing-box-rr/common/tls/acme.go diff --git a/common/tls/acme_contstant.go b/sing-box-rr/common/tls/acme_contstant.go similarity index 100% rename from common/tls/acme_contstant.go rename to sing-box-rr/common/tls/acme_contstant.go diff --git a/common/tls/acme_stub.go b/sing-box-rr/common/tls/acme_stub.go similarity index 100% rename from common/tls/acme_stub.go rename to sing-box-rr/common/tls/acme_stub.go diff --git a/common/tls/client.go b/sing-box-rr/common/tls/client.go similarity index 100% rename from common/tls/client.go rename to sing-box-rr/common/tls/client.go diff --git a/common/tls/common.go b/sing-box-rr/common/tls/common.go similarity index 100% rename from common/tls/common.go rename to sing-box-rr/common/tls/common.go diff --git a/common/tls/config.go b/sing-box-rr/common/tls/config.go similarity index 100% rename from common/tls/config.go rename to sing-box-rr/common/tls/config.go diff --git a/common/tls/ech.go b/sing-box-rr/common/tls/ech.go similarity index 100% rename from common/tls/ech.go rename to sing-box-rr/common/tls/ech.go diff --git a/common/tls/ech_shared.go b/sing-box-rr/common/tls/ech_shared.go similarity index 100% rename from common/tls/ech_shared.go rename to sing-box-rr/common/tls/ech_shared.go diff --git a/common/tls/ech_tag_stub.go b/sing-box-rr/common/tls/ech_tag_stub.go similarity index 100% rename from common/tls/ech_tag_stub.go rename to sing-box-rr/common/tls/ech_tag_stub.go diff --git a/common/tls/ktls.go b/sing-box-rr/common/tls/ktls.go similarity index 100% rename from common/tls/ktls.go rename to sing-box-rr/common/tls/ktls.go diff --git a/common/tls/masque_client.go b/sing-box-rr/common/tls/masque_client.go similarity index 100% rename from common/tls/masque_client.go rename to sing-box-rr/common/tls/masque_client.go diff --git a/common/tls/mkcert.go b/sing-box-rr/common/tls/mkcert.go similarity index 100% rename from common/tls/mkcert.go rename to sing-box-rr/common/tls/mkcert.go diff --git a/common/tls/reality_client.go b/sing-box-rr/common/tls/reality_client.go similarity index 100% rename from common/tls/reality_client.go rename to sing-box-rr/common/tls/reality_client.go diff --git a/common/tls/reality_server.go b/sing-box-rr/common/tls/reality_server.go similarity index 100% rename from common/tls/reality_server.go rename to sing-box-rr/common/tls/reality_server.go diff --git a/common/tls/reality_stub.go b/sing-box-rr/common/tls/reality_stub.go similarity index 100% rename from common/tls/reality_stub.go rename to sing-box-rr/common/tls/reality_stub.go diff --git a/common/tls/server.go b/sing-box-rr/common/tls/server.go similarity index 100% rename from common/tls/server.go rename to sing-box-rr/common/tls/server.go diff --git a/common/tls/std_client.go b/sing-box-rr/common/tls/std_client.go similarity index 100% rename from common/tls/std_client.go rename to sing-box-rr/common/tls/std_client.go diff --git a/common/tls/std_server.go b/sing-box-rr/common/tls/std_server.go similarity index 100% rename from common/tls/std_server.go rename to sing-box-rr/common/tls/std_server.go diff --git a/common/tls/time_wrapper.go b/sing-box-rr/common/tls/time_wrapper.go similarity index 100% rename from common/tls/time_wrapper.go rename to sing-box-rr/common/tls/time_wrapper.go diff --git a/common/tls/utls_client.go b/sing-box-rr/common/tls/utls_client.go similarity index 100% rename from common/tls/utls_client.go rename to sing-box-rr/common/tls/utls_client.go diff --git a/common/tls/utls_stub.go b/sing-box-rr/common/tls/utls_stub.go similarity index 100% rename from common/tls/utls_stub.go rename to sing-box-rr/common/tls/utls_stub.go diff --git a/common/tlsfragment/conn.go b/sing-box-rr/common/tlsfragment/conn.go similarity index 100% rename from common/tlsfragment/conn.go rename to sing-box-rr/common/tlsfragment/conn.go diff --git a/common/tlsfragment/conn_test.go b/sing-box-rr/common/tlsfragment/conn_test.go similarity index 100% rename from common/tlsfragment/conn_test.go rename to sing-box-rr/common/tlsfragment/conn_test.go diff --git a/common/tlsfragment/index.go b/sing-box-rr/common/tlsfragment/index.go similarity index 100% rename from common/tlsfragment/index.go rename to sing-box-rr/common/tlsfragment/index.go diff --git a/common/tlsfragment/index_test.go b/sing-box-rr/common/tlsfragment/index_test.go similarity index 100% rename from common/tlsfragment/index_test.go rename to sing-box-rr/common/tlsfragment/index_test.go diff --git a/common/tlsfragment/wait_darwin.go b/sing-box-rr/common/tlsfragment/wait_darwin.go similarity index 100% rename from common/tlsfragment/wait_darwin.go rename to sing-box-rr/common/tlsfragment/wait_darwin.go diff --git a/common/tlsfragment/wait_linux.go b/sing-box-rr/common/tlsfragment/wait_linux.go similarity index 100% rename from common/tlsfragment/wait_linux.go rename to sing-box-rr/common/tlsfragment/wait_linux.go diff --git a/common/tlsfragment/wait_stub.go b/sing-box-rr/common/tlsfragment/wait_stub.go similarity index 100% rename from common/tlsfragment/wait_stub.go rename to sing-box-rr/common/tlsfragment/wait_stub.go diff --git a/common/tlsfragment/wait_windows.go b/sing-box-rr/common/tlsfragment/wait_windows.go similarity index 100% rename from common/tlsfragment/wait_windows.go rename to sing-box-rr/common/tlsfragment/wait_windows.go diff --git a/common/uot/router.go b/sing-box-rr/common/uot/router.go similarity index 100% rename from common/uot/router.go rename to sing-box-rr/common/uot/router.go diff --git a/common/urltest/context.go b/sing-box-rr/common/urltest/context.go similarity index 100% rename from common/urltest/context.go rename to sing-box-rr/common/urltest/context.go diff --git a/common/urltest/urltest.go b/sing-box-rr/common/urltest/urltest.go similarity index 100% rename from common/urltest/urltest.go rename to sing-box-rr/common/urltest/urltest.go diff --git a/common/utils.go b/sing-box-rr/common/utils.go similarity index 100% rename from common/utils.go rename to sing-box-rr/common/utils.go diff --git a/common/vision/hook.go b/sing-box-rr/common/vision/hook.go similarity index 100% rename from common/vision/hook.go rename to sing-box-rr/common/vision/hook.go diff --git a/common/xray/buf/buffer.go b/sing-box-rr/common/xray/buf/buffer.go similarity index 100% rename from common/xray/buf/buffer.go rename to sing-box-rr/common/xray/buf/buffer.go diff --git a/common/xray/buf/copy.go b/sing-box-rr/common/xray/buf/copy.go similarity index 100% rename from common/xray/buf/copy.go rename to sing-box-rr/common/xray/buf/copy.go diff --git a/common/xray/buf/io.go b/sing-box-rr/common/xray/buf/io.go similarity index 100% rename from common/xray/buf/io.go rename to sing-box-rr/common/xray/buf/io.go diff --git a/common/xray/buf/multi_buffer.go b/sing-box-rr/common/xray/buf/multi_buffer.go similarity index 100% rename from common/xray/buf/multi_buffer.go rename to sing-box-rr/common/xray/buf/multi_buffer.go diff --git a/common/xray/buf/override.go b/sing-box-rr/common/xray/buf/override.go similarity index 100% rename from common/xray/buf/override.go rename to sing-box-rr/common/xray/buf/override.go diff --git a/common/xray/buf/reader.go b/sing-box-rr/common/xray/buf/reader.go similarity index 100% rename from common/xray/buf/reader.go rename to sing-box-rr/common/xray/buf/reader.go diff --git a/common/xray/buf/writer.go b/sing-box-rr/common/xray/buf/writer.go similarity index 100% rename from common/xray/buf/writer.go rename to sing-box-rr/common/xray/buf/writer.go diff --git a/common/xray/bytespool/pool.go b/sing-box-rr/common/xray/bytespool/pool.go similarity index 100% rename from common/xray/bytespool/pool.go rename to sing-box-rr/common/xray/bytespool/pool.go diff --git a/common/xray/common.go b/sing-box-rr/common/xray/common.go similarity index 100% rename from common/xray/common.go rename to sing-box-rr/common/xray/common.go diff --git a/common/xray/cpuid/cpuid.go b/sing-box-rr/common/xray/cpuid/cpuid.go similarity index 100% rename from common/xray/cpuid/cpuid.go rename to sing-box-rr/common/xray/cpuid/cpuid.go diff --git a/common/xray/crypto/crypto.go b/sing-box-rr/common/xray/crypto/crypto.go similarity index 100% rename from common/xray/crypto/crypto.go rename to sing-box-rr/common/xray/crypto/crypto.go diff --git a/common/xray/errors/errors.go b/sing-box-rr/common/xray/errors/errors.go similarity index 100% rename from common/xray/errors/errors.go rename to sing-box-rr/common/xray/errors/errors.go diff --git a/common/xray/interfaces.go b/sing-box-rr/common/xray/interfaces.go similarity index 100% rename from common/xray/interfaces.go rename to sing-box-rr/common/xray/interfaces.go diff --git a/common/xray/json/badoption/range.go b/sing-box-rr/common/xray/json/badoption/range.go similarity index 100% rename from common/xray/json/badoption/range.go rename to sing-box-rr/common/xray/json/badoption/range.go diff --git a/common/xray/net/address.go b/sing-box-rr/common/xray/net/address.go similarity index 100% rename from common/xray/net/address.go rename to sing-box-rr/common/xray/net/address.go diff --git a/common/xray/net/destination.go b/sing-box-rr/common/xray/net/destination.go similarity index 100% rename from common/xray/net/destination.go rename to sing-box-rr/common/xray/net/destination.go diff --git a/common/xray/net/net.go b/sing-box-rr/common/xray/net/net.go similarity index 100% rename from common/xray/net/net.go rename to sing-box-rr/common/xray/net/net.go diff --git a/common/xray/net/network.go b/sing-box-rr/common/xray/net/network.go similarity index 100% rename from common/xray/net/network.go rename to sing-box-rr/common/xray/net/network.go diff --git a/common/xray/net/port.go b/sing-box-rr/common/xray/net/port.go similarity index 100% rename from common/xray/net/port.go rename to sing-box-rr/common/xray/net/port.go diff --git a/common/xray/net/system.go b/sing-box-rr/common/xray/net/system.go similarity index 100% rename from common/xray/net/system.go rename to sing-box-rr/common/xray/net/system.go diff --git a/common/xray/pipe/impl.go b/sing-box-rr/common/xray/pipe/impl.go similarity index 100% rename from common/xray/pipe/impl.go rename to sing-box-rr/common/xray/pipe/impl.go diff --git a/common/xray/pipe/pipe.go b/sing-box-rr/common/xray/pipe/pipe.go similarity index 100% rename from common/xray/pipe/pipe.go rename to sing-box-rr/common/xray/pipe/pipe.go diff --git a/common/xray/pipe/reader.go b/sing-box-rr/common/xray/pipe/reader.go similarity index 100% rename from common/xray/pipe/reader.go rename to sing-box-rr/common/xray/pipe/reader.go diff --git a/common/xray/pipe/writer.go b/sing-box-rr/common/xray/pipe/writer.go similarity index 100% rename from common/xray/pipe/writer.go rename to sing-box-rr/common/xray/pipe/writer.go diff --git a/common/xray/serial/serial.go b/sing-box-rr/common/xray/serial/serial.go similarity index 100% rename from common/xray/serial/serial.go rename to sing-box-rr/common/xray/serial/serial.go diff --git a/common/xray/serial/string.go b/sing-box-rr/common/xray/serial/string.go similarity index 100% rename from common/xray/serial/string.go rename to sing-box-rr/common/xray/serial/string.go diff --git a/common/xray/signal/done/done.go b/sing-box-rr/common/xray/signal/done/done.go similarity index 100% rename from common/xray/signal/done/done.go rename to sing-box-rr/common/xray/signal/done/done.go diff --git a/common/xray/signal/notifier.go b/sing-box-rr/common/xray/signal/notifier.go similarity index 100% rename from common/xray/signal/notifier.go rename to sing-box-rr/common/xray/signal/notifier.go diff --git a/common/xray/signal/pubsub/pubsub.go b/sing-box-rr/common/xray/signal/pubsub/pubsub.go similarity index 100% rename from common/xray/signal/pubsub/pubsub.go rename to sing-box-rr/common/xray/signal/pubsub/pubsub.go diff --git a/common/xray/signal/semaphore/semaphore.go b/sing-box-rr/common/xray/signal/semaphore/semaphore.go similarity index 100% rename from common/xray/signal/semaphore/semaphore.go rename to sing-box-rr/common/xray/signal/semaphore/semaphore.go diff --git a/common/xray/signal/timer.go b/sing-box-rr/common/xray/signal/timer.go similarity index 100% rename from common/xray/signal/timer.go rename to sing-box-rr/common/xray/signal/timer.go diff --git a/common/xray/stat/connection.go b/sing-box-rr/common/xray/stat/connection.go similarity index 100% rename from common/xray/stat/connection.go rename to sing-box-rr/common/xray/stat/connection.go diff --git a/common/xray/stats/stats.go b/sing-box-rr/common/xray/stats/stats.go similarity index 100% rename from common/xray/stats/stats.go rename to sing-box-rr/common/xray/stats/stats.go diff --git a/common/xray/task/common.go b/sing-box-rr/common/xray/task/common.go similarity index 100% rename from common/xray/task/common.go rename to sing-box-rr/common/xray/task/common.go diff --git a/common/xray/task/periodic.go b/sing-box-rr/common/xray/task/periodic.go similarity index 100% rename from common/xray/task/periodic.go rename to sing-box-rr/common/xray/task/periodic.go diff --git a/common/xray/task/task.go b/sing-box-rr/common/xray/task/task.go similarity index 100% rename from common/xray/task/task.go rename to sing-box-rr/common/xray/task/task.go diff --git a/common/xray/utils/browser.go b/sing-box-rr/common/xray/utils/browser.go similarity index 100% rename from common/xray/utils/browser.go rename to sing-box-rr/common/xray/utils/browser.go diff --git a/common/xray/utils/padding.go b/sing-box-rr/common/xray/utils/padding.go similarity index 100% rename from common/xray/utils/padding.go rename to sing-box-rr/common/xray/utils/padding.go diff --git a/common/xray/uuid/uuid.go b/sing-box-rr/common/xray/uuid/uuid.go similarity index 100% rename from common/xray/uuid/uuid.go rename to sing-box-rr/common/xray/uuid/uuid.go diff --git a/constant/certificate.go b/sing-box-rr/constant/certificate.go similarity index 100% rename from constant/certificate.go rename to sing-box-rr/constant/certificate.go diff --git a/constant/cgo.go b/sing-box-rr/constant/cgo.go similarity index 100% rename from constant/cgo.go rename to sing-box-rr/constant/cgo.go diff --git a/constant/cgo_disabled.go b/sing-box-rr/constant/cgo_disabled.go similarity index 100% rename from constant/cgo_disabled.go rename to sing-box-rr/constant/cgo_disabled.go diff --git a/constant/dhcp.go b/sing-box-rr/constant/dhcp.go similarity index 100% rename from constant/dhcp.go rename to sing-box-rr/constant/dhcp.go diff --git a/constant/dns.go b/sing-box-rr/constant/dns.go similarity index 100% rename from constant/dns.go rename to sing-box-rr/constant/dns.go diff --git a/constant/err.go b/sing-box-rr/constant/err.go similarity index 100% rename from constant/err.go rename to sing-box-rr/constant/err.go diff --git a/constant/goos/gengoos.go b/sing-box-rr/constant/goos/gengoos.go similarity index 100% rename from constant/goos/gengoos.go rename to sing-box-rr/constant/goos/gengoos.go diff --git a/constant/goos/goos.go b/sing-box-rr/constant/goos/goos.go similarity index 100% rename from constant/goos/goos.go rename to sing-box-rr/constant/goos/goos.go diff --git a/constant/goos/zgoos_aix.go b/sing-box-rr/constant/goos/zgoos_aix.go similarity index 100% rename from constant/goos/zgoos_aix.go rename to sing-box-rr/constant/goos/zgoos_aix.go diff --git a/constant/goos/zgoos_android.go b/sing-box-rr/constant/goos/zgoos_android.go similarity index 100% rename from constant/goos/zgoos_android.go rename to sing-box-rr/constant/goos/zgoos_android.go diff --git a/constant/goos/zgoos_darwin.go b/sing-box-rr/constant/goos/zgoos_darwin.go similarity index 100% rename from constant/goos/zgoos_darwin.go rename to sing-box-rr/constant/goos/zgoos_darwin.go diff --git a/constant/goos/zgoos_dragonfly.go b/sing-box-rr/constant/goos/zgoos_dragonfly.go similarity index 100% rename from constant/goos/zgoos_dragonfly.go rename to sing-box-rr/constant/goos/zgoos_dragonfly.go diff --git a/constant/goos/zgoos_freebsd.go b/sing-box-rr/constant/goos/zgoos_freebsd.go similarity index 100% rename from constant/goos/zgoos_freebsd.go rename to sing-box-rr/constant/goos/zgoos_freebsd.go diff --git a/constant/goos/zgoos_hurd.go b/sing-box-rr/constant/goos/zgoos_hurd.go similarity index 100% rename from constant/goos/zgoos_hurd.go rename to sing-box-rr/constant/goos/zgoos_hurd.go diff --git a/constant/goos/zgoos_illumos.go b/sing-box-rr/constant/goos/zgoos_illumos.go similarity index 100% rename from constant/goos/zgoos_illumos.go rename to sing-box-rr/constant/goos/zgoos_illumos.go diff --git a/constant/goos/zgoos_ios.go b/sing-box-rr/constant/goos/zgoos_ios.go similarity index 100% rename from constant/goos/zgoos_ios.go rename to sing-box-rr/constant/goos/zgoos_ios.go diff --git a/constant/goos/zgoos_js.go b/sing-box-rr/constant/goos/zgoos_js.go similarity index 100% rename from constant/goos/zgoos_js.go rename to sing-box-rr/constant/goos/zgoos_js.go diff --git a/constant/goos/zgoos_linux.go b/sing-box-rr/constant/goos/zgoos_linux.go similarity index 100% rename from constant/goos/zgoos_linux.go rename to sing-box-rr/constant/goos/zgoos_linux.go diff --git a/constant/goos/zgoos_netbsd.go b/sing-box-rr/constant/goos/zgoos_netbsd.go similarity index 100% rename from constant/goos/zgoos_netbsd.go rename to sing-box-rr/constant/goos/zgoos_netbsd.go diff --git a/constant/goos/zgoos_openbsd.go b/sing-box-rr/constant/goos/zgoos_openbsd.go similarity index 100% rename from constant/goos/zgoos_openbsd.go rename to sing-box-rr/constant/goos/zgoos_openbsd.go diff --git a/constant/goos/zgoos_plan9.go b/sing-box-rr/constant/goos/zgoos_plan9.go similarity index 100% rename from constant/goos/zgoos_plan9.go rename to sing-box-rr/constant/goos/zgoos_plan9.go diff --git a/constant/goos/zgoos_solaris.go b/sing-box-rr/constant/goos/zgoos_solaris.go similarity index 100% rename from constant/goos/zgoos_solaris.go rename to sing-box-rr/constant/goos/zgoos_solaris.go diff --git a/constant/goos/zgoos_windows.go b/sing-box-rr/constant/goos/zgoos_windows.go similarity index 100% rename from constant/goos/zgoos_windows.go rename to sing-box-rr/constant/goos/zgoos_windows.go diff --git a/constant/goos/zgoos_zos.go b/sing-box-rr/constant/goos/zgoos_zos.go similarity index 100% rename from constant/goos/zgoos_zos.go rename to sing-box-rr/constant/goos/zgoos_zos.go diff --git a/constant/hysteria2.go b/sing-box-rr/constant/hysteria2.go similarity index 100% rename from constant/hysteria2.go rename to sing-box-rr/constant/hysteria2.go diff --git a/constant/manager_api.go b/sing-box-rr/constant/manager_api.go similarity index 100% rename from constant/manager_api.go rename to sing-box-rr/constant/manager_api.go diff --git a/constant/network.go b/sing-box-rr/constant/network.go similarity index 100% rename from constant/network.go rename to sing-box-rr/constant/network.go diff --git a/constant/node_manager_api.go b/sing-box-rr/constant/node_manager_api.go similarity index 100% rename from constant/node_manager_api.go rename to sing-box-rr/constant/node_manager_api.go diff --git a/constant/os.go b/sing-box-rr/constant/os.go similarity index 100% rename from constant/os.go rename to sing-box-rr/constant/os.go diff --git a/constant/path.go b/sing-box-rr/constant/path.go similarity index 100% rename from constant/path.go rename to sing-box-rr/constant/path.go diff --git a/constant/path_unix.go b/sing-box-rr/constant/path_unix.go similarity index 100% rename from constant/path_unix.go rename to sing-box-rr/constant/path_unix.go diff --git a/constant/protocol.go b/sing-box-rr/constant/protocol.go similarity index 100% rename from constant/protocol.go rename to sing-box-rr/constant/protocol.go diff --git a/constant/provider.go b/sing-box-rr/constant/provider.go similarity index 100% rename from constant/provider.go rename to sing-box-rr/constant/provider.go diff --git a/constant/proxy.go b/sing-box-rr/constant/proxy.go similarity index 100% rename from constant/proxy.go rename to sing-box-rr/constant/proxy.go diff --git a/constant/quic.go b/sing-box-rr/constant/quic.go similarity index 100% rename from constant/quic.go rename to sing-box-rr/constant/quic.go diff --git a/constant/quic_stub.go b/sing-box-rr/constant/quic_stub.go similarity index 100% rename from constant/quic_stub.go rename to sing-box-rr/constant/quic_stub.go diff --git a/constant/rule.go b/sing-box-rr/constant/rule.go similarity index 100% rename from constant/rule.go rename to sing-box-rr/constant/rule.go diff --git a/constant/speed.go b/sing-box-rr/constant/speed.go similarity index 100% rename from constant/speed.go rename to sing-box-rr/constant/speed.go diff --git a/constant/time.go b/sing-box-rr/constant/time.go similarity index 100% rename from constant/time.go rename to sing-box-rr/constant/time.go diff --git a/constant/timeout.go b/sing-box-rr/constant/timeout.go similarity index 100% rename from constant/timeout.go rename to sing-box-rr/constant/timeout.go diff --git a/constant/v2ray.go b/sing-box-rr/constant/v2ray.go similarity index 100% rename from constant/v2ray.go rename to sing-box-rr/constant/v2ray.go diff --git a/constant/version.go b/sing-box-rr/constant/version.go similarity index 100% rename from constant/version.go rename to sing-box-rr/constant/version.go diff --git a/daemon/deprecated.go b/sing-box-rr/daemon/deprecated.go similarity index 100% rename from daemon/deprecated.go rename to sing-box-rr/daemon/deprecated.go diff --git a/daemon/instance.go b/sing-box-rr/daemon/instance.go similarity index 100% rename from daemon/instance.go rename to sing-box-rr/daemon/instance.go diff --git a/daemon/platform.go b/sing-box-rr/daemon/platform.go similarity index 100% rename from daemon/platform.go rename to sing-box-rr/daemon/platform.go diff --git a/daemon/started_service.go b/sing-box-rr/daemon/started_service.go similarity index 100% rename from daemon/started_service.go rename to sing-box-rr/daemon/started_service.go diff --git a/daemon/started_service.pb.go b/sing-box-rr/daemon/started_service.pb.go similarity index 100% rename from daemon/started_service.pb.go rename to sing-box-rr/daemon/started_service.pb.go diff --git a/daemon/started_service.proto b/sing-box-rr/daemon/started_service.proto similarity index 100% rename from daemon/started_service.proto rename to sing-box-rr/daemon/started_service.proto diff --git a/daemon/started_service_grpc.pb.go b/sing-box-rr/daemon/started_service_grpc.pb.go similarity index 100% rename from daemon/started_service_grpc.pb.go rename to sing-box-rr/daemon/started_service_grpc.pb.go diff --git a/debug.go b/sing-box-rr/debug.go similarity index 100% rename from debug.go rename to sing-box-rr/debug.go diff --git a/debug_http.go b/sing-box-rr/debug_http.go similarity index 100% rename from debug_http.go rename to sing-box-rr/debug_http.go diff --git a/debug_stub.go b/sing-box-rr/debug_stub.go similarity index 100% rename from debug_stub.go rename to sing-box-rr/debug_stub.go diff --git a/debug_unix.go b/sing-box-rr/debug_unix.go similarity index 100% rename from debug_unix.go rename to sing-box-rr/debug_unix.go diff --git a/dns/client.go b/sing-box-rr/dns/client.go similarity index 100% rename from dns/client.go rename to sing-box-rr/dns/client.go diff --git a/dns/client_log.go b/sing-box-rr/dns/client_log.go similarity index 100% rename from dns/client_log.go rename to sing-box-rr/dns/client_log.go diff --git a/dns/client_truncate.go b/sing-box-rr/dns/client_truncate.go similarity index 100% rename from dns/client_truncate.go rename to sing-box-rr/dns/client_truncate.go diff --git a/dns/extension_edns0_subnet.go b/sing-box-rr/dns/extension_edns0_subnet.go similarity index 100% rename from dns/extension_edns0_subnet.go rename to sing-box-rr/dns/extension_edns0_subnet.go diff --git a/dns/rcode.go b/sing-box-rr/dns/rcode.go similarity index 100% rename from dns/rcode.go rename to sing-box-rr/dns/rcode.go diff --git a/dns/router.go b/sing-box-rr/dns/router.go similarity index 100% rename from dns/router.go rename to sing-box-rr/dns/router.go diff --git a/dns/transport/conn_pool.go b/sing-box-rr/dns/transport/conn_pool.go similarity index 100% rename from dns/transport/conn_pool.go rename to sing-box-rr/dns/transport/conn_pool.go diff --git a/dns/transport/dhcp/dhcp.go b/sing-box-rr/dns/transport/dhcp/dhcp.go similarity index 100% rename from dns/transport/dhcp/dhcp.go rename to sing-box-rr/dns/transport/dhcp/dhcp.go diff --git a/dns/transport/dhcp/dhcp_shared.go b/sing-box-rr/dns/transport/dhcp/dhcp_shared.go similarity index 100% rename from dns/transport/dhcp/dhcp_shared.go rename to sing-box-rr/dns/transport/dhcp/dhcp_shared.go diff --git a/dns/transport/fakeip/fakeip.go b/sing-box-rr/dns/transport/fakeip/fakeip.go similarity index 100% rename from dns/transport/fakeip/fakeip.go rename to sing-box-rr/dns/transport/fakeip/fakeip.go diff --git a/dns/transport/fakeip/memory.go b/sing-box-rr/dns/transport/fakeip/memory.go similarity index 100% rename from dns/transport/fakeip/memory.go rename to sing-box-rr/dns/transport/fakeip/memory.go diff --git a/dns/transport/fakeip/store.go b/sing-box-rr/dns/transport/fakeip/store.go similarity index 100% rename from dns/transport/fakeip/store.go rename to sing-box-rr/dns/transport/fakeip/store.go diff --git a/dns/transport/fallback/fallback.go b/sing-box-rr/dns/transport/fallback/fallback.go similarity index 100% rename from dns/transport/fallback/fallback.go rename to sing-box-rr/dns/transport/fallback/fallback.go diff --git a/dns/transport/fallback/strategy.go b/sing-box-rr/dns/transport/fallback/strategy.go similarity index 100% rename from dns/transport/fallback/strategy.go rename to sing-box-rr/dns/transport/fallback/strategy.go diff --git a/dns/transport/hosts/hosts.go b/sing-box-rr/dns/transport/hosts/hosts.go similarity index 100% rename from dns/transport/hosts/hosts.go rename to sing-box-rr/dns/transport/hosts/hosts.go diff --git a/dns/transport/hosts/hosts_file.go b/sing-box-rr/dns/transport/hosts/hosts_file.go similarity index 100% rename from dns/transport/hosts/hosts_file.go rename to sing-box-rr/dns/transport/hosts/hosts_file.go diff --git a/dns/transport/hosts/hosts_test.go b/sing-box-rr/dns/transport/hosts/hosts_test.go similarity index 100% rename from dns/transport/hosts/hosts_test.go rename to sing-box-rr/dns/transport/hosts/hosts_test.go diff --git a/dns/transport/hosts/hosts_unix.go b/sing-box-rr/dns/transport/hosts/hosts_unix.go similarity index 100% rename from dns/transport/hosts/hosts_unix.go rename to sing-box-rr/dns/transport/hosts/hosts_unix.go diff --git a/dns/transport/hosts/hosts_windows.go b/sing-box-rr/dns/transport/hosts/hosts_windows.go similarity index 100% rename from dns/transport/hosts/hosts_windows.go rename to sing-box-rr/dns/transport/hosts/hosts_windows.go diff --git a/dns/transport/hosts/testdata/hosts b/sing-box-rr/dns/transport/hosts/testdata/hosts similarity index 100% rename from dns/transport/hosts/testdata/hosts rename to sing-box-rr/dns/transport/hosts/testdata/hosts diff --git a/dns/transport/https.go b/sing-box-rr/dns/transport/https.go similarity index 100% rename from dns/transport/https.go rename to sing-box-rr/dns/transport/https.go diff --git a/dns/transport/https_transport.go b/sing-box-rr/dns/transport/https_transport.go similarity index 100% rename from dns/transport/https_transport.go rename to sing-box-rr/dns/transport/https_transport.go diff --git a/dns/transport/local/local.go b/sing-box-rr/dns/transport/local/local.go similarity index 100% rename from dns/transport/local/local.go rename to sing-box-rr/dns/transport/local/local.go diff --git a/dns/transport/local/local_darwin.go b/sing-box-rr/dns/transport/local/local_darwin.go similarity index 100% rename from dns/transport/local/local_darwin.go rename to sing-box-rr/dns/transport/local/local_darwin.go diff --git a/dns/transport/local/local_darwin_dhcp.go b/sing-box-rr/dns/transport/local/local_darwin_dhcp.go similarity index 100% rename from dns/transport/local/local_darwin_dhcp.go rename to sing-box-rr/dns/transport/local/local_darwin_dhcp.go diff --git a/dns/transport/local/local_darwin_nodhcp.go b/sing-box-rr/dns/transport/local/local_darwin_nodhcp.go similarity index 100% rename from dns/transport/local/local_darwin_nodhcp.go rename to sing-box-rr/dns/transport/local/local_darwin_nodhcp.go diff --git a/dns/transport/local/local_resolved.go b/sing-box-rr/dns/transport/local/local_resolved.go similarity index 100% rename from dns/transport/local/local_resolved.go rename to sing-box-rr/dns/transport/local/local_resolved.go diff --git a/dns/transport/local/local_resolved_linux.go b/sing-box-rr/dns/transport/local/local_resolved_linux.go similarity index 100% rename from dns/transport/local/local_resolved_linux.go rename to sing-box-rr/dns/transport/local/local_resolved_linux.go diff --git a/dns/transport/local/local_resolved_stub.go b/sing-box-rr/dns/transport/local/local_resolved_stub.go similarity index 100% rename from dns/transport/local/local_resolved_stub.go rename to sing-box-rr/dns/transport/local/local_resolved_stub.go diff --git a/dns/transport/local/local_shared.go b/sing-box-rr/dns/transport/local/local_shared.go similarity index 100% rename from dns/transport/local/local_shared.go rename to sing-box-rr/dns/transport/local/local_shared.go diff --git a/dns/transport/local/resolv.go b/sing-box-rr/dns/transport/local/resolv.go similarity index 100% rename from dns/transport/local/resolv.go rename to sing-box-rr/dns/transport/local/resolv.go diff --git a/dns/transport/local/resolv_default.go b/sing-box-rr/dns/transport/local/resolv_default.go similarity index 100% rename from dns/transport/local/resolv_default.go rename to sing-box-rr/dns/transport/local/resolv_default.go diff --git a/dns/transport/local/resolv_test.go b/sing-box-rr/dns/transport/local/resolv_test.go similarity index 100% rename from dns/transport/local/resolv_test.go rename to sing-box-rr/dns/transport/local/resolv_test.go diff --git a/dns/transport/local/resolv_unix.go b/sing-box-rr/dns/transport/local/resolv_unix.go similarity index 100% rename from dns/transport/local/resolv_unix.go rename to sing-box-rr/dns/transport/local/resolv_unix.go diff --git a/dns/transport/local/resolv_windows.go b/sing-box-rr/dns/transport/local/resolv_windows.go similarity index 100% rename from dns/transport/local/resolv_windows.go rename to sing-box-rr/dns/transport/local/resolv_windows.go diff --git a/dns/transport/quic/http3.go b/sing-box-rr/dns/transport/quic/http3.go similarity index 100% rename from dns/transport/quic/http3.go rename to sing-box-rr/dns/transport/quic/http3.go diff --git a/dns/transport/quic/quic.go b/sing-box-rr/dns/transport/quic/quic.go similarity index 100% rename from dns/transport/quic/quic.go rename to sing-box-rr/dns/transport/quic/quic.go diff --git a/dns/transport/sdns.go b/sing-box-rr/dns/transport/sdns.go similarity index 100% rename from dns/transport/sdns.go rename to sing-box-rr/dns/transport/sdns.go diff --git a/dns/transport/tcp.go b/sing-box-rr/dns/transport/tcp.go similarity index 100% rename from dns/transport/tcp.go rename to sing-box-rr/dns/transport/tcp.go diff --git a/dns/transport/tls.go b/sing-box-rr/dns/transport/tls.go similarity index 100% rename from dns/transport/tls.go rename to sing-box-rr/dns/transport/tls.go diff --git a/dns/transport/udp.go b/sing-box-rr/dns/transport/udp.go similarity index 100% rename from dns/transport/udp.go rename to sing-box-rr/dns/transport/udp.go diff --git a/dns/transport_adapter.go b/sing-box-rr/dns/transport_adapter.go similarity index 100% rename from dns/transport_adapter.go rename to sing-box-rr/dns/transport_adapter.go diff --git a/dns/transport_dialer.go b/sing-box-rr/dns/transport_dialer.go similarity index 100% rename from dns/transport_dialer.go rename to sing-box-rr/dns/transport_dialer.go diff --git a/dns/transport_manager.go b/sing-box-rr/dns/transport_manager.go similarity index 100% rename from dns/transport_manager.go rename to sing-box-rr/dns/transport_manager.go diff --git a/dns/transport_registry.go b/sing-box-rr/dns/transport_registry.go similarity index 100% rename from dns/transport_registry.go rename to sing-box-rr/dns/transport_registry.go diff --git a/docs/CNAME b/sing-box-rr/docs/CNAME similarity index 100% rename from docs/CNAME rename to sing-box-rr/docs/CNAME diff --git a/docs/assets/icon.svg b/sing-box-rr/docs/assets/icon.svg similarity index 100% rename from docs/assets/icon.svg rename to sing-box-rr/docs/assets/icon.svg diff --git a/docs/changelog.md b/sing-box-rr/docs/changelog.md similarity index 100% rename from docs/changelog.md rename to sing-box-rr/docs/changelog.md diff --git a/docs/clients/android/features.md b/sing-box-rr/docs/clients/android/features.md similarity index 100% rename from docs/clients/android/features.md rename to sing-box-rr/docs/clients/android/features.md diff --git a/docs/clients/android/index.md b/sing-box-rr/docs/clients/android/index.md similarity index 100% rename from docs/clients/android/index.md rename to sing-box-rr/docs/clients/android/index.md diff --git a/docs/clients/apple/features.md b/sing-box-rr/docs/clients/apple/features.md similarity index 100% rename from docs/clients/apple/features.md rename to sing-box-rr/docs/clients/apple/features.md diff --git a/docs/clients/apple/index.md b/sing-box-rr/docs/clients/apple/index.md similarity index 100% rename from docs/clients/apple/index.md rename to sing-box-rr/docs/clients/apple/index.md diff --git a/docs/clients/general.md b/sing-box-rr/docs/clients/general.md similarity index 100% rename from docs/clients/general.md rename to sing-box-rr/docs/clients/general.md diff --git a/docs/clients/index.md b/sing-box-rr/docs/clients/index.md similarity index 100% rename from docs/clients/index.md rename to sing-box-rr/docs/clients/index.md diff --git a/docs/clients/index.zh.md b/sing-box-rr/docs/clients/index.zh.md similarity index 100% rename from docs/clients/index.zh.md rename to sing-box-rr/docs/clients/index.zh.md diff --git a/docs/clients/privacy.md b/sing-box-rr/docs/clients/privacy.md similarity index 100% rename from docs/clients/privacy.md rename to sing-box-rr/docs/clients/privacy.md diff --git a/docs/configuration/certificate/index.md b/sing-box-rr/docs/configuration/certificate/index.md similarity index 100% rename from docs/configuration/certificate/index.md rename to sing-box-rr/docs/configuration/certificate/index.md diff --git a/docs/configuration/certificate/index.zh.md b/sing-box-rr/docs/configuration/certificate/index.zh.md similarity index 100% rename from docs/configuration/certificate/index.zh.md rename to sing-box-rr/docs/configuration/certificate/index.zh.md diff --git a/docs/configuration/dns/fakeip.md b/sing-box-rr/docs/configuration/dns/fakeip.md similarity index 100% rename from docs/configuration/dns/fakeip.md rename to sing-box-rr/docs/configuration/dns/fakeip.md diff --git a/docs/configuration/dns/fakeip.zh.md b/sing-box-rr/docs/configuration/dns/fakeip.zh.md similarity index 100% rename from docs/configuration/dns/fakeip.zh.md rename to sing-box-rr/docs/configuration/dns/fakeip.zh.md diff --git a/docs/configuration/dns/index.md b/sing-box-rr/docs/configuration/dns/index.md similarity index 100% rename from docs/configuration/dns/index.md rename to sing-box-rr/docs/configuration/dns/index.md diff --git a/docs/configuration/dns/index.zh.md b/sing-box-rr/docs/configuration/dns/index.zh.md similarity index 100% rename from docs/configuration/dns/index.zh.md rename to sing-box-rr/docs/configuration/dns/index.zh.md diff --git a/docs/configuration/dns/rule.md b/sing-box-rr/docs/configuration/dns/rule.md similarity index 100% rename from docs/configuration/dns/rule.md rename to sing-box-rr/docs/configuration/dns/rule.md diff --git a/docs/configuration/dns/rule.zh.md b/sing-box-rr/docs/configuration/dns/rule.zh.md similarity index 100% rename from docs/configuration/dns/rule.zh.md rename to sing-box-rr/docs/configuration/dns/rule.zh.md diff --git a/docs/configuration/dns/rule_action.md b/sing-box-rr/docs/configuration/dns/rule_action.md similarity index 100% rename from docs/configuration/dns/rule_action.md rename to sing-box-rr/docs/configuration/dns/rule_action.md diff --git a/docs/configuration/dns/rule_action.zh.md b/sing-box-rr/docs/configuration/dns/rule_action.zh.md similarity index 100% rename from docs/configuration/dns/rule_action.zh.md rename to sing-box-rr/docs/configuration/dns/rule_action.zh.md diff --git a/docs/configuration/dns/server/dhcp.md b/sing-box-rr/docs/configuration/dns/server/dhcp.md similarity index 100% rename from docs/configuration/dns/server/dhcp.md rename to sing-box-rr/docs/configuration/dns/server/dhcp.md diff --git a/docs/configuration/dns/server/dhcp.zh.md b/sing-box-rr/docs/configuration/dns/server/dhcp.zh.md similarity index 100% rename from docs/configuration/dns/server/dhcp.zh.md rename to sing-box-rr/docs/configuration/dns/server/dhcp.zh.md diff --git a/docs/configuration/dns/server/fakeip.md b/sing-box-rr/docs/configuration/dns/server/fakeip.md similarity index 100% rename from docs/configuration/dns/server/fakeip.md rename to sing-box-rr/docs/configuration/dns/server/fakeip.md diff --git a/docs/configuration/dns/server/fakeip.zh.md b/sing-box-rr/docs/configuration/dns/server/fakeip.zh.md similarity index 100% rename from docs/configuration/dns/server/fakeip.zh.md rename to sing-box-rr/docs/configuration/dns/server/fakeip.zh.md diff --git a/docs/configuration/dns/server/hosts.md b/sing-box-rr/docs/configuration/dns/server/hosts.md similarity index 100% rename from docs/configuration/dns/server/hosts.md rename to sing-box-rr/docs/configuration/dns/server/hosts.md diff --git a/docs/configuration/dns/server/hosts.zh.md b/sing-box-rr/docs/configuration/dns/server/hosts.zh.md similarity index 100% rename from docs/configuration/dns/server/hosts.zh.md rename to sing-box-rr/docs/configuration/dns/server/hosts.zh.md diff --git a/docs/configuration/dns/server/http3.md b/sing-box-rr/docs/configuration/dns/server/http3.md similarity index 100% rename from docs/configuration/dns/server/http3.md rename to sing-box-rr/docs/configuration/dns/server/http3.md diff --git a/docs/configuration/dns/server/http3.zh.md b/sing-box-rr/docs/configuration/dns/server/http3.zh.md similarity index 100% rename from docs/configuration/dns/server/http3.zh.md rename to sing-box-rr/docs/configuration/dns/server/http3.zh.md diff --git a/docs/configuration/dns/server/https.md b/sing-box-rr/docs/configuration/dns/server/https.md similarity index 100% rename from docs/configuration/dns/server/https.md rename to sing-box-rr/docs/configuration/dns/server/https.md diff --git a/docs/configuration/dns/server/https.zh.md b/sing-box-rr/docs/configuration/dns/server/https.zh.md similarity index 100% rename from docs/configuration/dns/server/https.zh.md rename to sing-box-rr/docs/configuration/dns/server/https.zh.md diff --git a/docs/configuration/dns/server/index.md b/sing-box-rr/docs/configuration/dns/server/index.md similarity index 100% rename from docs/configuration/dns/server/index.md rename to sing-box-rr/docs/configuration/dns/server/index.md diff --git a/docs/configuration/dns/server/index.zh.md b/sing-box-rr/docs/configuration/dns/server/index.zh.md similarity index 100% rename from docs/configuration/dns/server/index.zh.md rename to sing-box-rr/docs/configuration/dns/server/index.zh.md diff --git a/docs/configuration/dns/server/legacy.md b/sing-box-rr/docs/configuration/dns/server/legacy.md similarity index 100% rename from docs/configuration/dns/server/legacy.md rename to sing-box-rr/docs/configuration/dns/server/legacy.md diff --git a/docs/configuration/dns/server/legacy.zh.md b/sing-box-rr/docs/configuration/dns/server/legacy.zh.md similarity index 100% rename from docs/configuration/dns/server/legacy.zh.md rename to sing-box-rr/docs/configuration/dns/server/legacy.zh.md diff --git a/docs/configuration/dns/server/local.md b/sing-box-rr/docs/configuration/dns/server/local.md similarity index 100% rename from docs/configuration/dns/server/local.md rename to sing-box-rr/docs/configuration/dns/server/local.md diff --git a/docs/configuration/dns/server/local.zh.md b/sing-box-rr/docs/configuration/dns/server/local.zh.md similarity index 100% rename from docs/configuration/dns/server/local.zh.md rename to sing-box-rr/docs/configuration/dns/server/local.zh.md diff --git a/docs/configuration/dns/server/quic.md b/sing-box-rr/docs/configuration/dns/server/quic.md similarity index 100% rename from docs/configuration/dns/server/quic.md rename to sing-box-rr/docs/configuration/dns/server/quic.md diff --git a/docs/configuration/dns/server/quic.zh.md b/sing-box-rr/docs/configuration/dns/server/quic.zh.md similarity index 100% rename from docs/configuration/dns/server/quic.zh.md rename to sing-box-rr/docs/configuration/dns/server/quic.zh.md diff --git a/docs/configuration/dns/server/resolved.md b/sing-box-rr/docs/configuration/dns/server/resolved.md similarity index 100% rename from docs/configuration/dns/server/resolved.md rename to sing-box-rr/docs/configuration/dns/server/resolved.md diff --git a/docs/configuration/dns/server/resolved.zh.md b/sing-box-rr/docs/configuration/dns/server/resolved.zh.md similarity index 100% rename from docs/configuration/dns/server/resolved.zh.md rename to sing-box-rr/docs/configuration/dns/server/resolved.zh.md diff --git a/docs/configuration/dns/server/tailscale.md b/sing-box-rr/docs/configuration/dns/server/tailscale.md similarity index 100% rename from docs/configuration/dns/server/tailscale.md rename to sing-box-rr/docs/configuration/dns/server/tailscale.md diff --git a/docs/configuration/dns/server/tailscale.zh.md b/sing-box-rr/docs/configuration/dns/server/tailscale.zh.md similarity index 100% rename from docs/configuration/dns/server/tailscale.zh.md rename to sing-box-rr/docs/configuration/dns/server/tailscale.zh.md diff --git a/docs/configuration/dns/server/tcp.md b/sing-box-rr/docs/configuration/dns/server/tcp.md similarity index 100% rename from docs/configuration/dns/server/tcp.md rename to sing-box-rr/docs/configuration/dns/server/tcp.md diff --git a/docs/configuration/dns/server/tcp.zh.md b/sing-box-rr/docs/configuration/dns/server/tcp.zh.md similarity index 100% rename from docs/configuration/dns/server/tcp.zh.md rename to sing-box-rr/docs/configuration/dns/server/tcp.zh.md diff --git a/docs/configuration/dns/server/tls.md b/sing-box-rr/docs/configuration/dns/server/tls.md similarity index 100% rename from docs/configuration/dns/server/tls.md rename to sing-box-rr/docs/configuration/dns/server/tls.md diff --git a/docs/configuration/dns/server/tls.zh.md b/sing-box-rr/docs/configuration/dns/server/tls.zh.md similarity index 100% rename from docs/configuration/dns/server/tls.zh.md rename to sing-box-rr/docs/configuration/dns/server/tls.zh.md diff --git a/docs/configuration/dns/server/udp.md b/sing-box-rr/docs/configuration/dns/server/udp.md similarity index 100% rename from docs/configuration/dns/server/udp.md rename to sing-box-rr/docs/configuration/dns/server/udp.md diff --git a/docs/configuration/dns/server/udp.zh.md b/sing-box-rr/docs/configuration/dns/server/udp.zh.md similarity index 100% rename from docs/configuration/dns/server/udp.zh.md rename to sing-box-rr/docs/configuration/dns/server/udp.zh.md diff --git a/docs/configuration/endpoint/index.md b/sing-box-rr/docs/configuration/endpoint/index.md similarity index 100% rename from docs/configuration/endpoint/index.md rename to sing-box-rr/docs/configuration/endpoint/index.md diff --git a/docs/configuration/endpoint/index.zh.md b/sing-box-rr/docs/configuration/endpoint/index.zh.md similarity index 100% rename from docs/configuration/endpoint/index.zh.md rename to sing-box-rr/docs/configuration/endpoint/index.zh.md diff --git a/docs/configuration/endpoint/tailscale.md b/sing-box-rr/docs/configuration/endpoint/tailscale.md similarity index 100% rename from docs/configuration/endpoint/tailscale.md rename to sing-box-rr/docs/configuration/endpoint/tailscale.md diff --git a/docs/configuration/endpoint/tailscale.zh.md b/sing-box-rr/docs/configuration/endpoint/tailscale.zh.md similarity index 100% rename from docs/configuration/endpoint/tailscale.zh.md rename to sing-box-rr/docs/configuration/endpoint/tailscale.zh.md diff --git a/docs/configuration/endpoint/wireguard.md b/sing-box-rr/docs/configuration/endpoint/wireguard.md similarity index 100% rename from docs/configuration/endpoint/wireguard.md rename to sing-box-rr/docs/configuration/endpoint/wireguard.md diff --git a/docs/configuration/endpoint/wireguard.zh.md b/sing-box-rr/docs/configuration/endpoint/wireguard.zh.md similarity index 100% rename from docs/configuration/endpoint/wireguard.zh.md rename to sing-box-rr/docs/configuration/endpoint/wireguard.zh.md diff --git a/docs/configuration/experimental/cache-file.md b/sing-box-rr/docs/configuration/experimental/cache-file.md similarity index 100% rename from docs/configuration/experimental/cache-file.md rename to sing-box-rr/docs/configuration/experimental/cache-file.md diff --git a/docs/configuration/experimental/cache-file.zh.md b/sing-box-rr/docs/configuration/experimental/cache-file.zh.md similarity index 100% rename from docs/configuration/experimental/cache-file.zh.md rename to sing-box-rr/docs/configuration/experimental/cache-file.zh.md diff --git a/docs/configuration/experimental/clash-api.md b/sing-box-rr/docs/configuration/experimental/clash-api.md similarity index 100% rename from docs/configuration/experimental/clash-api.md rename to sing-box-rr/docs/configuration/experimental/clash-api.md diff --git a/docs/configuration/experimental/clash-api.zh.md b/sing-box-rr/docs/configuration/experimental/clash-api.zh.md similarity index 100% rename from docs/configuration/experimental/clash-api.zh.md rename to sing-box-rr/docs/configuration/experimental/clash-api.zh.md diff --git a/docs/configuration/experimental/index.md b/sing-box-rr/docs/configuration/experimental/index.md similarity index 100% rename from docs/configuration/experimental/index.md rename to sing-box-rr/docs/configuration/experimental/index.md diff --git a/docs/configuration/experimental/index.zh.md b/sing-box-rr/docs/configuration/experimental/index.zh.md similarity index 100% rename from docs/configuration/experimental/index.zh.md rename to sing-box-rr/docs/configuration/experimental/index.zh.md diff --git a/docs/configuration/experimental/v2ray-api.md b/sing-box-rr/docs/configuration/experimental/v2ray-api.md similarity index 100% rename from docs/configuration/experimental/v2ray-api.md rename to sing-box-rr/docs/configuration/experimental/v2ray-api.md diff --git a/docs/configuration/experimental/v2ray-api.zh.md b/sing-box-rr/docs/configuration/experimental/v2ray-api.zh.md similarity index 100% rename from docs/configuration/experimental/v2ray-api.zh.md rename to sing-box-rr/docs/configuration/experimental/v2ray-api.zh.md diff --git a/docs/configuration/inbound/anytls.md b/sing-box-rr/docs/configuration/inbound/anytls.md similarity index 100% rename from docs/configuration/inbound/anytls.md rename to sing-box-rr/docs/configuration/inbound/anytls.md diff --git a/docs/configuration/inbound/anytls.zh.md b/sing-box-rr/docs/configuration/inbound/anytls.zh.md similarity index 100% rename from docs/configuration/inbound/anytls.zh.md rename to sing-box-rr/docs/configuration/inbound/anytls.zh.md diff --git a/docs/configuration/inbound/direct.md b/sing-box-rr/docs/configuration/inbound/direct.md similarity index 100% rename from docs/configuration/inbound/direct.md rename to sing-box-rr/docs/configuration/inbound/direct.md diff --git a/docs/configuration/inbound/direct.zh.md b/sing-box-rr/docs/configuration/inbound/direct.zh.md similarity index 100% rename from docs/configuration/inbound/direct.zh.md rename to sing-box-rr/docs/configuration/inbound/direct.zh.md diff --git a/docs/configuration/inbound/http.md b/sing-box-rr/docs/configuration/inbound/http.md similarity index 100% rename from docs/configuration/inbound/http.md rename to sing-box-rr/docs/configuration/inbound/http.md diff --git a/docs/configuration/inbound/http.zh.md b/sing-box-rr/docs/configuration/inbound/http.zh.md similarity index 100% rename from docs/configuration/inbound/http.zh.md rename to sing-box-rr/docs/configuration/inbound/http.zh.md diff --git a/docs/configuration/inbound/hysteria.md b/sing-box-rr/docs/configuration/inbound/hysteria.md similarity index 100% rename from docs/configuration/inbound/hysteria.md rename to sing-box-rr/docs/configuration/inbound/hysteria.md diff --git a/docs/configuration/inbound/hysteria.zh.md b/sing-box-rr/docs/configuration/inbound/hysteria.zh.md similarity index 100% rename from docs/configuration/inbound/hysteria.zh.md rename to sing-box-rr/docs/configuration/inbound/hysteria.zh.md diff --git a/docs/configuration/inbound/hysteria2.md b/sing-box-rr/docs/configuration/inbound/hysteria2.md similarity index 100% rename from docs/configuration/inbound/hysteria2.md rename to sing-box-rr/docs/configuration/inbound/hysteria2.md diff --git a/docs/configuration/inbound/hysteria2.zh.md b/sing-box-rr/docs/configuration/inbound/hysteria2.zh.md similarity index 100% rename from docs/configuration/inbound/hysteria2.zh.md rename to sing-box-rr/docs/configuration/inbound/hysteria2.zh.md diff --git a/docs/configuration/inbound/index.md b/sing-box-rr/docs/configuration/inbound/index.md similarity index 100% rename from docs/configuration/inbound/index.md rename to sing-box-rr/docs/configuration/inbound/index.md diff --git a/docs/configuration/inbound/index.zh.md b/sing-box-rr/docs/configuration/inbound/index.zh.md similarity index 100% rename from docs/configuration/inbound/index.zh.md rename to sing-box-rr/docs/configuration/inbound/index.zh.md diff --git a/docs/configuration/inbound/mixed.md b/sing-box-rr/docs/configuration/inbound/mixed.md similarity index 100% rename from docs/configuration/inbound/mixed.md rename to sing-box-rr/docs/configuration/inbound/mixed.md diff --git a/docs/configuration/inbound/mixed.zh.md b/sing-box-rr/docs/configuration/inbound/mixed.zh.md similarity index 100% rename from docs/configuration/inbound/mixed.zh.md rename to sing-box-rr/docs/configuration/inbound/mixed.zh.md diff --git a/docs/configuration/inbound/naive.md b/sing-box-rr/docs/configuration/inbound/naive.md similarity index 100% rename from docs/configuration/inbound/naive.md rename to sing-box-rr/docs/configuration/inbound/naive.md diff --git a/docs/configuration/inbound/naive.zh.md b/sing-box-rr/docs/configuration/inbound/naive.zh.md similarity index 100% rename from docs/configuration/inbound/naive.zh.md rename to sing-box-rr/docs/configuration/inbound/naive.zh.md diff --git a/docs/configuration/inbound/redirect.md b/sing-box-rr/docs/configuration/inbound/redirect.md similarity index 100% rename from docs/configuration/inbound/redirect.md rename to sing-box-rr/docs/configuration/inbound/redirect.md diff --git a/docs/configuration/inbound/redirect.zh.md b/sing-box-rr/docs/configuration/inbound/redirect.zh.md similarity index 100% rename from docs/configuration/inbound/redirect.zh.md rename to sing-box-rr/docs/configuration/inbound/redirect.zh.md diff --git a/docs/configuration/inbound/shadowsocks.md b/sing-box-rr/docs/configuration/inbound/shadowsocks.md similarity index 100% rename from docs/configuration/inbound/shadowsocks.md rename to sing-box-rr/docs/configuration/inbound/shadowsocks.md diff --git a/docs/configuration/inbound/shadowsocks.zh.md b/sing-box-rr/docs/configuration/inbound/shadowsocks.zh.md similarity index 100% rename from docs/configuration/inbound/shadowsocks.zh.md rename to sing-box-rr/docs/configuration/inbound/shadowsocks.zh.md diff --git a/docs/configuration/inbound/shadowtls.md b/sing-box-rr/docs/configuration/inbound/shadowtls.md similarity index 100% rename from docs/configuration/inbound/shadowtls.md rename to sing-box-rr/docs/configuration/inbound/shadowtls.md diff --git a/docs/configuration/inbound/shadowtls.zh.md b/sing-box-rr/docs/configuration/inbound/shadowtls.zh.md similarity index 100% rename from docs/configuration/inbound/shadowtls.zh.md rename to sing-box-rr/docs/configuration/inbound/shadowtls.zh.md diff --git a/docs/configuration/inbound/socks.md b/sing-box-rr/docs/configuration/inbound/socks.md similarity index 100% rename from docs/configuration/inbound/socks.md rename to sing-box-rr/docs/configuration/inbound/socks.md diff --git a/docs/configuration/inbound/socks.zh.md b/sing-box-rr/docs/configuration/inbound/socks.zh.md similarity index 100% rename from docs/configuration/inbound/socks.zh.md rename to sing-box-rr/docs/configuration/inbound/socks.zh.md diff --git a/docs/configuration/inbound/tproxy.md b/sing-box-rr/docs/configuration/inbound/tproxy.md similarity index 100% rename from docs/configuration/inbound/tproxy.md rename to sing-box-rr/docs/configuration/inbound/tproxy.md diff --git a/docs/configuration/inbound/tproxy.zh.md b/sing-box-rr/docs/configuration/inbound/tproxy.zh.md similarity index 100% rename from docs/configuration/inbound/tproxy.zh.md rename to sing-box-rr/docs/configuration/inbound/tproxy.zh.md diff --git a/docs/configuration/inbound/trojan.md b/sing-box-rr/docs/configuration/inbound/trojan.md similarity index 100% rename from docs/configuration/inbound/trojan.md rename to sing-box-rr/docs/configuration/inbound/trojan.md diff --git a/docs/configuration/inbound/trojan.zh.md b/sing-box-rr/docs/configuration/inbound/trojan.zh.md similarity index 100% rename from docs/configuration/inbound/trojan.zh.md rename to sing-box-rr/docs/configuration/inbound/trojan.zh.md diff --git a/docs/configuration/inbound/tuic.md b/sing-box-rr/docs/configuration/inbound/tuic.md similarity index 100% rename from docs/configuration/inbound/tuic.md rename to sing-box-rr/docs/configuration/inbound/tuic.md diff --git a/docs/configuration/inbound/tuic.zh.md b/sing-box-rr/docs/configuration/inbound/tuic.zh.md similarity index 100% rename from docs/configuration/inbound/tuic.zh.md rename to sing-box-rr/docs/configuration/inbound/tuic.zh.md diff --git a/docs/configuration/inbound/tun.md b/sing-box-rr/docs/configuration/inbound/tun.md similarity index 100% rename from docs/configuration/inbound/tun.md rename to sing-box-rr/docs/configuration/inbound/tun.md diff --git a/docs/configuration/inbound/tun.zh.md b/sing-box-rr/docs/configuration/inbound/tun.zh.md similarity index 100% rename from docs/configuration/inbound/tun.zh.md rename to sing-box-rr/docs/configuration/inbound/tun.zh.md diff --git a/docs/configuration/inbound/vless.md b/sing-box-rr/docs/configuration/inbound/vless.md similarity index 100% rename from docs/configuration/inbound/vless.md rename to sing-box-rr/docs/configuration/inbound/vless.md diff --git a/docs/configuration/inbound/vless.zh.md b/sing-box-rr/docs/configuration/inbound/vless.zh.md similarity index 100% rename from docs/configuration/inbound/vless.zh.md rename to sing-box-rr/docs/configuration/inbound/vless.zh.md diff --git a/docs/configuration/inbound/vmess.md b/sing-box-rr/docs/configuration/inbound/vmess.md similarity index 100% rename from docs/configuration/inbound/vmess.md rename to sing-box-rr/docs/configuration/inbound/vmess.md diff --git a/docs/configuration/inbound/vmess.zh.md b/sing-box-rr/docs/configuration/inbound/vmess.zh.md similarity index 100% rename from docs/configuration/inbound/vmess.zh.md rename to sing-box-rr/docs/configuration/inbound/vmess.zh.md diff --git a/docs/configuration/index.md b/sing-box-rr/docs/configuration/index.md similarity index 100% rename from docs/configuration/index.md rename to sing-box-rr/docs/configuration/index.md diff --git a/docs/configuration/index.zh.md b/sing-box-rr/docs/configuration/index.zh.md similarity index 100% rename from docs/configuration/index.zh.md rename to sing-box-rr/docs/configuration/index.zh.md diff --git a/docs/configuration/log/index.md b/sing-box-rr/docs/configuration/log/index.md similarity index 100% rename from docs/configuration/log/index.md rename to sing-box-rr/docs/configuration/log/index.md diff --git a/docs/configuration/log/index.zh.md b/sing-box-rr/docs/configuration/log/index.zh.md similarity index 100% rename from docs/configuration/log/index.zh.md rename to sing-box-rr/docs/configuration/log/index.zh.md diff --git a/docs/configuration/ntp/index.md b/sing-box-rr/docs/configuration/ntp/index.md similarity index 100% rename from docs/configuration/ntp/index.md rename to sing-box-rr/docs/configuration/ntp/index.md diff --git a/docs/configuration/ntp/index.zh.md b/sing-box-rr/docs/configuration/ntp/index.zh.md similarity index 100% rename from docs/configuration/ntp/index.zh.md rename to sing-box-rr/docs/configuration/ntp/index.zh.md diff --git a/docs/configuration/outbound/anytls.md b/sing-box-rr/docs/configuration/outbound/anytls.md similarity index 100% rename from docs/configuration/outbound/anytls.md rename to sing-box-rr/docs/configuration/outbound/anytls.md diff --git a/docs/configuration/outbound/anytls.zh.md b/sing-box-rr/docs/configuration/outbound/anytls.zh.md similarity index 100% rename from docs/configuration/outbound/anytls.zh.md rename to sing-box-rr/docs/configuration/outbound/anytls.zh.md diff --git a/docs/configuration/outbound/block.md b/sing-box-rr/docs/configuration/outbound/block.md similarity index 100% rename from docs/configuration/outbound/block.md rename to sing-box-rr/docs/configuration/outbound/block.md diff --git a/docs/configuration/outbound/block.zh.md b/sing-box-rr/docs/configuration/outbound/block.zh.md similarity index 100% rename from docs/configuration/outbound/block.zh.md rename to sing-box-rr/docs/configuration/outbound/block.zh.md diff --git a/docs/configuration/outbound/direct.md b/sing-box-rr/docs/configuration/outbound/direct.md similarity index 100% rename from docs/configuration/outbound/direct.md rename to sing-box-rr/docs/configuration/outbound/direct.md diff --git a/docs/configuration/outbound/direct.zh.md b/sing-box-rr/docs/configuration/outbound/direct.zh.md similarity index 100% rename from docs/configuration/outbound/direct.zh.md rename to sing-box-rr/docs/configuration/outbound/direct.zh.md diff --git a/docs/configuration/outbound/dns.md b/sing-box-rr/docs/configuration/outbound/dns.md similarity index 100% rename from docs/configuration/outbound/dns.md rename to sing-box-rr/docs/configuration/outbound/dns.md diff --git a/docs/configuration/outbound/dns.zh.md b/sing-box-rr/docs/configuration/outbound/dns.zh.md similarity index 100% rename from docs/configuration/outbound/dns.zh.md rename to sing-box-rr/docs/configuration/outbound/dns.zh.md diff --git a/docs/configuration/outbound/http.md b/sing-box-rr/docs/configuration/outbound/http.md similarity index 100% rename from docs/configuration/outbound/http.md rename to sing-box-rr/docs/configuration/outbound/http.md diff --git a/docs/configuration/outbound/http.zh.md b/sing-box-rr/docs/configuration/outbound/http.zh.md similarity index 100% rename from docs/configuration/outbound/http.zh.md rename to sing-box-rr/docs/configuration/outbound/http.zh.md diff --git a/docs/configuration/outbound/hysteria.md b/sing-box-rr/docs/configuration/outbound/hysteria.md similarity index 100% rename from docs/configuration/outbound/hysteria.md rename to sing-box-rr/docs/configuration/outbound/hysteria.md diff --git a/docs/configuration/outbound/hysteria.zh.md b/sing-box-rr/docs/configuration/outbound/hysteria.zh.md similarity index 100% rename from docs/configuration/outbound/hysteria.zh.md rename to sing-box-rr/docs/configuration/outbound/hysteria.zh.md diff --git a/docs/configuration/outbound/hysteria2.md b/sing-box-rr/docs/configuration/outbound/hysteria2.md similarity index 100% rename from docs/configuration/outbound/hysteria2.md rename to sing-box-rr/docs/configuration/outbound/hysteria2.md diff --git a/docs/configuration/outbound/hysteria2.zh.md b/sing-box-rr/docs/configuration/outbound/hysteria2.zh.md similarity index 100% rename from docs/configuration/outbound/hysteria2.zh.md rename to sing-box-rr/docs/configuration/outbound/hysteria2.zh.md diff --git a/docs/configuration/outbound/index.md b/sing-box-rr/docs/configuration/outbound/index.md similarity index 100% rename from docs/configuration/outbound/index.md rename to sing-box-rr/docs/configuration/outbound/index.md diff --git a/docs/configuration/outbound/index.zh.md b/sing-box-rr/docs/configuration/outbound/index.zh.md similarity index 100% rename from docs/configuration/outbound/index.zh.md rename to sing-box-rr/docs/configuration/outbound/index.zh.md diff --git a/docs/configuration/outbound/mieru.md b/sing-box-rr/docs/configuration/outbound/mieru.md similarity index 100% rename from docs/configuration/outbound/mieru.md rename to sing-box-rr/docs/configuration/outbound/mieru.md diff --git a/docs/configuration/outbound/mieru.zh.md b/sing-box-rr/docs/configuration/outbound/mieru.zh.md similarity index 100% rename from docs/configuration/outbound/mieru.zh.md rename to sing-box-rr/docs/configuration/outbound/mieru.zh.md diff --git a/docs/configuration/outbound/naive.md b/sing-box-rr/docs/configuration/outbound/naive.md similarity index 100% rename from docs/configuration/outbound/naive.md rename to sing-box-rr/docs/configuration/outbound/naive.md diff --git a/docs/configuration/outbound/naive.zh.md b/sing-box-rr/docs/configuration/outbound/naive.zh.md similarity index 100% rename from docs/configuration/outbound/naive.zh.md rename to sing-box-rr/docs/configuration/outbound/naive.zh.md diff --git a/docs/configuration/outbound/selector.md b/sing-box-rr/docs/configuration/outbound/selector.md similarity index 100% rename from docs/configuration/outbound/selector.md rename to sing-box-rr/docs/configuration/outbound/selector.md diff --git a/docs/configuration/outbound/selector.zh.md b/sing-box-rr/docs/configuration/outbound/selector.zh.md similarity index 100% rename from docs/configuration/outbound/selector.zh.md rename to sing-box-rr/docs/configuration/outbound/selector.zh.md diff --git a/docs/configuration/outbound/shadowsocks.md b/sing-box-rr/docs/configuration/outbound/shadowsocks.md similarity index 100% rename from docs/configuration/outbound/shadowsocks.md rename to sing-box-rr/docs/configuration/outbound/shadowsocks.md diff --git a/docs/configuration/outbound/shadowsocks.zh.md b/sing-box-rr/docs/configuration/outbound/shadowsocks.zh.md similarity index 100% rename from docs/configuration/outbound/shadowsocks.zh.md rename to sing-box-rr/docs/configuration/outbound/shadowsocks.zh.md diff --git a/docs/configuration/outbound/shadowtls.md b/sing-box-rr/docs/configuration/outbound/shadowtls.md similarity index 100% rename from docs/configuration/outbound/shadowtls.md rename to sing-box-rr/docs/configuration/outbound/shadowtls.md diff --git a/docs/configuration/outbound/shadowtls.zh.md b/sing-box-rr/docs/configuration/outbound/shadowtls.zh.md similarity index 100% rename from docs/configuration/outbound/shadowtls.zh.md rename to sing-box-rr/docs/configuration/outbound/shadowtls.zh.md diff --git a/docs/configuration/outbound/socks.md b/sing-box-rr/docs/configuration/outbound/socks.md similarity index 100% rename from docs/configuration/outbound/socks.md rename to sing-box-rr/docs/configuration/outbound/socks.md diff --git a/docs/configuration/outbound/socks.zh.md b/sing-box-rr/docs/configuration/outbound/socks.zh.md similarity index 100% rename from docs/configuration/outbound/socks.zh.md rename to sing-box-rr/docs/configuration/outbound/socks.zh.md diff --git a/docs/configuration/outbound/ssh.md b/sing-box-rr/docs/configuration/outbound/ssh.md similarity index 100% rename from docs/configuration/outbound/ssh.md rename to sing-box-rr/docs/configuration/outbound/ssh.md diff --git a/docs/configuration/outbound/ssh.zh.md b/sing-box-rr/docs/configuration/outbound/ssh.zh.md similarity index 100% rename from docs/configuration/outbound/ssh.zh.md rename to sing-box-rr/docs/configuration/outbound/ssh.zh.md diff --git a/docs/configuration/outbound/tor.md b/sing-box-rr/docs/configuration/outbound/tor.md similarity index 100% rename from docs/configuration/outbound/tor.md rename to sing-box-rr/docs/configuration/outbound/tor.md diff --git a/docs/configuration/outbound/tor.zh.md b/sing-box-rr/docs/configuration/outbound/tor.zh.md similarity index 100% rename from docs/configuration/outbound/tor.zh.md rename to sing-box-rr/docs/configuration/outbound/tor.zh.md diff --git a/docs/configuration/outbound/trojan.md b/sing-box-rr/docs/configuration/outbound/trojan.md similarity index 100% rename from docs/configuration/outbound/trojan.md rename to sing-box-rr/docs/configuration/outbound/trojan.md diff --git a/docs/configuration/outbound/trojan.zh.md b/sing-box-rr/docs/configuration/outbound/trojan.zh.md similarity index 100% rename from docs/configuration/outbound/trojan.zh.md rename to sing-box-rr/docs/configuration/outbound/trojan.zh.md diff --git a/docs/configuration/outbound/tuic.md b/sing-box-rr/docs/configuration/outbound/tuic.md similarity index 100% rename from docs/configuration/outbound/tuic.md rename to sing-box-rr/docs/configuration/outbound/tuic.md diff --git a/docs/configuration/outbound/tuic.zh.md b/sing-box-rr/docs/configuration/outbound/tuic.zh.md similarity index 100% rename from docs/configuration/outbound/tuic.zh.md rename to sing-box-rr/docs/configuration/outbound/tuic.zh.md diff --git a/docs/configuration/outbound/urltest.md b/sing-box-rr/docs/configuration/outbound/urltest.md similarity index 100% rename from docs/configuration/outbound/urltest.md rename to sing-box-rr/docs/configuration/outbound/urltest.md diff --git a/docs/configuration/outbound/urltest.zh.md b/sing-box-rr/docs/configuration/outbound/urltest.zh.md similarity index 100% rename from docs/configuration/outbound/urltest.zh.md rename to sing-box-rr/docs/configuration/outbound/urltest.zh.md diff --git a/docs/configuration/outbound/vless.md b/sing-box-rr/docs/configuration/outbound/vless.md similarity index 100% rename from docs/configuration/outbound/vless.md rename to sing-box-rr/docs/configuration/outbound/vless.md diff --git a/docs/configuration/outbound/vless.zh.md b/sing-box-rr/docs/configuration/outbound/vless.zh.md similarity index 100% rename from docs/configuration/outbound/vless.zh.md rename to sing-box-rr/docs/configuration/outbound/vless.zh.md diff --git a/docs/configuration/outbound/vmess.md b/sing-box-rr/docs/configuration/outbound/vmess.md similarity index 100% rename from docs/configuration/outbound/vmess.md rename to sing-box-rr/docs/configuration/outbound/vmess.md diff --git a/docs/configuration/outbound/vmess.zh.md b/sing-box-rr/docs/configuration/outbound/vmess.zh.md similarity index 100% rename from docs/configuration/outbound/vmess.zh.md rename to sing-box-rr/docs/configuration/outbound/vmess.zh.md diff --git a/docs/configuration/outbound/wireguard.md b/sing-box-rr/docs/configuration/outbound/wireguard.md similarity index 100% rename from docs/configuration/outbound/wireguard.md rename to sing-box-rr/docs/configuration/outbound/wireguard.md diff --git a/docs/configuration/outbound/wireguard.zh.md b/sing-box-rr/docs/configuration/outbound/wireguard.zh.md similarity index 100% rename from docs/configuration/outbound/wireguard.zh.md rename to sing-box-rr/docs/configuration/outbound/wireguard.zh.md diff --git a/docs/configuration/route/geoip.md b/sing-box-rr/docs/configuration/route/geoip.md similarity index 100% rename from docs/configuration/route/geoip.md rename to sing-box-rr/docs/configuration/route/geoip.md diff --git a/docs/configuration/route/geoip.zh.md b/sing-box-rr/docs/configuration/route/geoip.zh.md similarity index 100% rename from docs/configuration/route/geoip.zh.md rename to sing-box-rr/docs/configuration/route/geoip.zh.md diff --git a/docs/configuration/route/geosite.md b/sing-box-rr/docs/configuration/route/geosite.md similarity index 100% rename from docs/configuration/route/geosite.md rename to sing-box-rr/docs/configuration/route/geosite.md diff --git a/docs/configuration/route/geosite.zh.md b/sing-box-rr/docs/configuration/route/geosite.zh.md similarity index 100% rename from docs/configuration/route/geosite.zh.md rename to sing-box-rr/docs/configuration/route/geosite.zh.md diff --git a/docs/configuration/route/index.md b/sing-box-rr/docs/configuration/route/index.md similarity index 100% rename from docs/configuration/route/index.md rename to sing-box-rr/docs/configuration/route/index.md diff --git a/docs/configuration/route/index.zh.md b/sing-box-rr/docs/configuration/route/index.zh.md similarity index 100% rename from docs/configuration/route/index.zh.md rename to sing-box-rr/docs/configuration/route/index.zh.md diff --git a/docs/configuration/route/rule.md b/sing-box-rr/docs/configuration/route/rule.md similarity index 100% rename from docs/configuration/route/rule.md rename to sing-box-rr/docs/configuration/route/rule.md diff --git a/docs/configuration/route/rule.zh.md b/sing-box-rr/docs/configuration/route/rule.zh.md similarity index 100% rename from docs/configuration/route/rule.zh.md rename to sing-box-rr/docs/configuration/route/rule.zh.md diff --git a/docs/configuration/route/rule_action.md b/sing-box-rr/docs/configuration/route/rule_action.md similarity index 100% rename from docs/configuration/route/rule_action.md rename to sing-box-rr/docs/configuration/route/rule_action.md diff --git a/docs/configuration/route/rule_action.zh.md b/sing-box-rr/docs/configuration/route/rule_action.zh.md similarity index 100% rename from docs/configuration/route/rule_action.zh.md rename to sing-box-rr/docs/configuration/route/rule_action.zh.md diff --git a/docs/configuration/route/sniff.md b/sing-box-rr/docs/configuration/route/sniff.md similarity index 100% rename from docs/configuration/route/sniff.md rename to sing-box-rr/docs/configuration/route/sniff.md diff --git a/docs/configuration/route/sniff.zh.md b/sing-box-rr/docs/configuration/route/sniff.zh.md similarity index 100% rename from docs/configuration/route/sniff.zh.md rename to sing-box-rr/docs/configuration/route/sniff.zh.md diff --git a/docs/configuration/rule-set/adguard.md b/sing-box-rr/docs/configuration/rule-set/adguard.md similarity index 100% rename from docs/configuration/rule-set/adguard.md rename to sing-box-rr/docs/configuration/rule-set/adguard.md diff --git a/docs/configuration/rule-set/adguard.zh.md b/sing-box-rr/docs/configuration/rule-set/adguard.zh.md similarity index 100% rename from docs/configuration/rule-set/adguard.zh.md rename to sing-box-rr/docs/configuration/rule-set/adguard.zh.md diff --git a/docs/configuration/rule-set/headless-rule.md b/sing-box-rr/docs/configuration/rule-set/headless-rule.md similarity index 100% rename from docs/configuration/rule-set/headless-rule.md rename to sing-box-rr/docs/configuration/rule-set/headless-rule.md diff --git a/docs/configuration/rule-set/headless-rule.zh.md b/sing-box-rr/docs/configuration/rule-set/headless-rule.zh.md similarity index 100% rename from docs/configuration/rule-set/headless-rule.zh.md rename to sing-box-rr/docs/configuration/rule-set/headless-rule.zh.md diff --git a/docs/configuration/rule-set/index.md b/sing-box-rr/docs/configuration/rule-set/index.md similarity index 100% rename from docs/configuration/rule-set/index.md rename to sing-box-rr/docs/configuration/rule-set/index.md diff --git a/docs/configuration/rule-set/index.zh.md b/sing-box-rr/docs/configuration/rule-set/index.zh.md similarity index 100% rename from docs/configuration/rule-set/index.zh.md rename to sing-box-rr/docs/configuration/rule-set/index.zh.md diff --git a/docs/configuration/rule-set/source-format.md b/sing-box-rr/docs/configuration/rule-set/source-format.md similarity index 100% rename from docs/configuration/rule-set/source-format.md rename to sing-box-rr/docs/configuration/rule-set/source-format.md diff --git a/docs/configuration/rule-set/source-format.zh.md b/sing-box-rr/docs/configuration/rule-set/source-format.zh.md similarity index 100% rename from docs/configuration/rule-set/source-format.zh.md rename to sing-box-rr/docs/configuration/rule-set/source-format.zh.md diff --git a/docs/configuration/service/ccm.md b/sing-box-rr/docs/configuration/service/ccm.md similarity index 100% rename from docs/configuration/service/ccm.md rename to sing-box-rr/docs/configuration/service/ccm.md diff --git a/docs/configuration/service/ccm.zh.md b/sing-box-rr/docs/configuration/service/ccm.zh.md similarity index 100% rename from docs/configuration/service/ccm.zh.md rename to sing-box-rr/docs/configuration/service/ccm.zh.md diff --git a/docs/configuration/service/derp.md b/sing-box-rr/docs/configuration/service/derp.md similarity index 100% rename from docs/configuration/service/derp.md rename to sing-box-rr/docs/configuration/service/derp.md diff --git a/docs/configuration/service/derp.zh.md b/sing-box-rr/docs/configuration/service/derp.zh.md similarity index 100% rename from docs/configuration/service/derp.zh.md rename to sing-box-rr/docs/configuration/service/derp.zh.md diff --git a/docs/configuration/service/index.md b/sing-box-rr/docs/configuration/service/index.md similarity index 100% rename from docs/configuration/service/index.md rename to sing-box-rr/docs/configuration/service/index.md diff --git a/docs/configuration/service/index.zh.md b/sing-box-rr/docs/configuration/service/index.zh.md similarity index 100% rename from docs/configuration/service/index.zh.md rename to sing-box-rr/docs/configuration/service/index.zh.md diff --git a/docs/configuration/service/ocm.md b/sing-box-rr/docs/configuration/service/ocm.md similarity index 100% rename from docs/configuration/service/ocm.md rename to sing-box-rr/docs/configuration/service/ocm.md diff --git a/docs/configuration/service/ocm.zh.md b/sing-box-rr/docs/configuration/service/ocm.zh.md similarity index 100% rename from docs/configuration/service/ocm.zh.md rename to sing-box-rr/docs/configuration/service/ocm.zh.md diff --git a/docs/configuration/service/resolved.md b/sing-box-rr/docs/configuration/service/resolved.md similarity index 100% rename from docs/configuration/service/resolved.md rename to sing-box-rr/docs/configuration/service/resolved.md diff --git a/docs/configuration/service/resolved.zh.md b/sing-box-rr/docs/configuration/service/resolved.zh.md similarity index 100% rename from docs/configuration/service/resolved.zh.md rename to sing-box-rr/docs/configuration/service/resolved.zh.md diff --git a/docs/configuration/service/ssm-api.md b/sing-box-rr/docs/configuration/service/ssm-api.md similarity index 100% rename from docs/configuration/service/ssm-api.md rename to sing-box-rr/docs/configuration/service/ssm-api.md diff --git a/docs/configuration/service/ssm-api.zh.md b/sing-box-rr/docs/configuration/service/ssm-api.zh.md similarity index 100% rename from docs/configuration/service/ssm-api.zh.md rename to sing-box-rr/docs/configuration/service/ssm-api.zh.md diff --git a/docs/configuration/shared/dial.md b/sing-box-rr/docs/configuration/shared/dial.md similarity index 100% rename from docs/configuration/shared/dial.md rename to sing-box-rr/docs/configuration/shared/dial.md diff --git a/docs/configuration/shared/dial.zh.md b/sing-box-rr/docs/configuration/shared/dial.zh.md similarity index 100% rename from docs/configuration/shared/dial.zh.md rename to sing-box-rr/docs/configuration/shared/dial.zh.md diff --git a/docs/configuration/shared/dns01_challenge.md b/sing-box-rr/docs/configuration/shared/dns01_challenge.md similarity index 100% rename from docs/configuration/shared/dns01_challenge.md rename to sing-box-rr/docs/configuration/shared/dns01_challenge.md diff --git a/docs/configuration/shared/dns01_challenge.zh.md b/sing-box-rr/docs/configuration/shared/dns01_challenge.zh.md similarity index 100% rename from docs/configuration/shared/dns01_challenge.zh.md rename to sing-box-rr/docs/configuration/shared/dns01_challenge.zh.md diff --git a/docs/configuration/shared/listen.md b/sing-box-rr/docs/configuration/shared/listen.md similarity index 100% rename from docs/configuration/shared/listen.md rename to sing-box-rr/docs/configuration/shared/listen.md diff --git a/docs/configuration/shared/listen.zh.md b/sing-box-rr/docs/configuration/shared/listen.zh.md similarity index 100% rename from docs/configuration/shared/listen.zh.md rename to sing-box-rr/docs/configuration/shared/listen.zh.md diff --git a/docs/configuration/shared/multiplex.md b/sing-box-rr/docs/configuration/shared/multiplex.md similarity index 100% rename from docs/configuration/shared/multiplex.md rename to sing-box-rr/docs/configuration/shared/multiplex.md diff --git a/docs/configuration/shared/multiplex.zh.md b/sing-box-rr/docs/configuration/shared/multiplex.zh.md similarity index 100% rename from docs/configuration/shared/multiplex.zh.md rename to sing-box-rr/docs/configuration/shared/multiplex.zh.md diff --git a/docs/configuration/shared/pre-match.md b/sing-box-rr/docs/configuration/shared/pre-match.md similarity index 100% rename from docs/configuration/shared/pre-match.md rename to sing-box-rr/docs/configuration/shared/pre-match.md diff --git a/docs/configuration/shared/pre-match.zh.md b/sing-box-rr/docs/configuration/shared/pre-match.zh.md similarity index 100% rename from docs/configuration/shared/pre-match.zh.md rename to sing-box-rr/docs/configuration/shared/pre-match.zh.md diff --git a/docs/configuration/shared/tcp-brutal.md b/sing-box-rr/docs/configuration/shared/tcp-brutal.md similarity index 100% rename from docs/configuration/shared/tcp-brutal.md rename to sing-box-rr/docs/configuration/shared/tcp-brutal.md diff --git a/docs/configuration/shared/tcp-brutal.zh.md b/sing-box-rr/docs/configuration/shared/tcp-brutal.zh.md similarity index 100% rename from docs/configuration/shared/tcp-brutal.zh.md rename to sing-box-rr/docs/configuration/shared/tcp-brutal.zh.md diff --git a/docs/configuration/shared/tls.md b/sing-box-rr/docs/configuration/shared/tls.md similarity index 100% rename from docs/configuration/shared/tls.md rename to sing-box-rr/docs/configuration/shared/tls.md diff --git a/docs/configuration/shared/tls.zh.md b/sing-box-rr/docs/configuration/shared/tls.zh.md similarity index 100% rename from docs/configuration/shared/tls.zh.md rename to sing-box-rr/docs/configuration/shared/tls.zh.md diff --git a/docs/configuration/shared/udp-over-tcp.md b/sing-box-rr/docs/configuration/shared/udp-over-tcp.md similarity index 100% rename from docs/configuration/shared/udp-over-tcp.md rename to sing-box-rr/docs/configuration/shared/udp-over-tcp.md diff --git a/docs/configuration/shared/udp-over-tcp.zh.md b/sing-box-rr/docs/configuration/shared/udp-over-tcp.zh.md similarity index 100% rename from docs/configuration/shared/udp-over-tcp.zh.md rename to sing-box-rr/docs/configuration/shared/udp-over-tcp.zh.md diff --git a/docs/configuration/shared/v2ray-transport.md b/sing-box-rr/docs/configuration/shared/v2ray-transport.md similarity index 100% rename from docs/configuration/shared/v2ray-transport.md rename to sing-box-rr/docs/configuration/shared/v2ray-transport.md diff --git a/docs/configuration/shared/v2ray-transport.zh.md b/sing-box-rr/docs/configuration/shared/v2ray-transport.zh.md similarity index 100% rename from docs/configuration/shared/v2ray-transport.zh.md rename to sing-box-rr/docs/configuration/shared/v2ray-transport.zh.md diff --git a/docs/configuration/shared/wifi-state.md b/sing-box-rr/docs/configuration/shared/wifi-state.md similarity index 100% rename from docs/configuration/shared/wifi-state.md rename to sing-box-rr/docs/configuration/shared/wifi-state.md diff --git a/docs/configuration/shared/wifi-state.zh.md b/sing-box-rr/docs/configuration/shared/wifi-state.zh.md similarity index 100% rename from docs/configuration/shared/wifi-state.zh.md rename to sing-box-rr/docs/configuration/shared/wifi-state.zh.md diff --git a/docs/deprecated.md b/sing-box-rr/docs/deprecated.md similarity index 100% rename from docs/deprecated.md rename to sing-box-rr/docs/deprecated.md diff --git a/docs/deprecated.zh.md b/sing-box-rr/docs/deprecated.zh.md similarity index 100% rename from docs/deprecated.zh.md rename to sing-box-rr/docs/deprecated.zh.md diff --git a/docs/index.md b/sing-box-rr/docs/index.md similarity index 100% rename from docs/index.md rename to sing-box-rr/docs/index.md diff --git a/docs/index.zh.md b/sing-box-rr/docs/index.zh.md similarity index 100% rename from docs/index.zh.md rename to sing-box-rr/docs/index.zh.md diff --git a/docs/installation/build-from-source.md b/sing-box-rr/docs/installation/build-from-source.md similarity index 87% rename from docs/installation/build-from-source.md rename to sing-box-rr/docs/installation/build-from-source.md index 8152a89e..84cbb1f0 100644 --- a/docs/installation/build-from-source.md +++ b/sing-box-rr/docs/installation/build-from-source.md @@ -49,17 +49,17 @@ go build -tags "tag_a tag_b" ./cmd/sing-box |------------------------------------|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `with_quic` | :material-check: | Build with QUIC support, see [QUIC and HTTP3 DNS transports](/configuration/dns/server/), [Naive inbound](/configuration/inbound/naive/), [Hysteria Inbound](/configuration/inbound/hysteria/), [Hysteria Outbound](/configuration/outbound/hysteria/) and [V2Ray Transport#QUIC](/configuration/shared/v2ray-transport#quic). | | `with_grpc` | :material-close:️ | Build with standard gRPC support, see [V2Ray Transport#gRPC](/configuration/shared/v2ray-transport#grpc). | -| `with_dhcp` | :material-check: | Build with DHCP support, see [DHCP DNS transport](/configuration/dns/server/). | -| `with_wireguard` | :material-check: | Build with WireGuard support, see [WireGuard outbound](/configuration/outbound/wireguard/). | +| `with_dhcp` | :material-close:️ | Build with DHCP support, see [DHCP DNS transport](/configuration/dns/server/). | +| `with_wireguard` | :material-close:️ | Build with WireGuard support, see [WireGuard outbound](/configuration/outbound/wireguard/). | | `with_utls` | :material-check: | Build with [uTLS](https://github.com/refraction-networking/utls) support for TLS outbound, see [TLS](/configuration/shared/tls#utls). | -| `with_acme` | :material-check: | Build with ACME TLS certificate issuer support, see [TLS](/configuration/shared/tls/). | +| `with_acme` | :material-close:️ | Build with ACME TLS certificate issuer support, see [TLS](/configuration/shared/tls/). | | `with_clash_api` | :material-check: | Build with Clash API support, see [Experimental](/configuration/experimental#clash-api-fields). | | `with_v2ray_api` | :material-close:️ | Build with V2Ray API support, see [Experimental](/configuration/experimental#v2ray-api-fields). | | `with_gvisor` | :material-check: | Build with gVisor support, see [Tun inbound](/configuration/inbound/tun#stack) and [WireGuard outbound](/configuration/outbound/wireguard#system_interface). | | `with_embedded_tor` (CGO required) | :material-close:️ | Build with embedded Tor support, see [Tor outbound](/configuration/outbound/tor/). | -| `with_tailscale` | :material-check: | Build with Tailscale support, see [Tailscale endpoint](/configuration/endpoint/tailscale). | -| `with_ccm` | :material-check: | Build with Claude Code Multiplexer service support. | -| `with_ocm` | :material-check: | Build with OpenAI Codex Multiplexer service support. | +| `with_tailscale` | :material-close:️ | Build with Tailscale support, see [Tailscale endpoint](/configuration/endpoint/tailscale). | +| `with_ccm` | :material-close:️ | Build with Claude Code Multiplexer service support. | +| `with_ocm` | :material-close:️ | Build with OpenAI Codex Multiplexer service support. | | `with_naive_outbound` | :material-check: | Build with NaiveProxy outbound support, see [NaiveProxy outbound](/configuration/outbound/naive/). | | `badlinkname` | :material-check: | Enable `go:linkname` access to internal standard library functions. Required because the Go standard library does not expose many low-level APIs needed by this project, and reimplementing them externally is impractical. Used for kTLS (kernel TLS offload) and raw TLS record manipulation. | | `tfogo_checklinkname0` | :material-check: | Companion to `badlinkname`. Go 1.23+ enforces `go:linkname` restrictions via the linker; this tag signals the build uses `-checklinkname=0` to bypass that enforcement. | diff --git a/docs/installation/build-from-source.zh.md b/sing-box-rr/docs/installation/build-from-source.zh.md similarity index 89% rename from docs/installation/build-from-source.zh.md rename to sing-box-rr/docs/installation/build-from-source.zh.md index d6cd03b5..15eb0376 100644 --- a/docs/installation/build-from-source.zh.md +++ b/sing-box-rr/docs/installation/build-from-source.zh.md @@ -53,17 +53,17 @@ go build -tags "tag_a tag_b" ./cmd/sing-box |------------------------------------|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `with_quic` | :material-check: | Build with QUIC support, see [QUIC and HTTP3 DNS transports](/zh/configuration/dns/server/), [Naive inbound](/zh/configuration/inbound/naive/), [Hysteria Inbound](/zh/configuration/inbound/hysteria/), [Hysteria Outbound](/zh/configuration/outbound/hysteria/) and [V2Ray Transport#QUIC](/zh/configuration/shared/v2ray-transport#quic). | | `with_grpc` | :material-close:️ | Build with standard gRPC support, see [V2Ray Transport#gRPC](/zh/configuration/shared/v2ray-transport#grpc). | -| `with_dhcp` | :material-check: | Build with DHCP support, see [DHCP DNS transport](/zh/configuration/dns/server/). | -| `with_wireguard` | :material-check: | Build with WireGuard support, see [WireGuard outbound](/zh/configuration/outbound/wireguard/). | +| `with_dhcp` | :material-close:️ | Build with DHCP support, see [DHCP DNS transport](/zh/configuration/dns/server/). | +| `with_wireguard` | :material-close:️ | Build with WireGuard support, see [WireGuard outbound](/zh/configuration/outbound/wireguard/). | | `with_utls` | :material-check: | Build with [uTLS](https://github.com/refraction-networking/utls) support for TLS outbound, see [TLS](/zh/configuration/shared/tls#utls). | -| `with_acme` | :material-check: | Build with ACME TLS certificate issuer support, see [TLS](/zh/configuration/shared/tls/). | +| `with_acme` | :material-close:️ | Build with ACME TLS certificate issuer support, see [TLS](/zh/configuration/shared/tls/). | | `with_clash_api` | :material-check: | Build with Clash API support, see [Experimental](/zh/configuration/experimental#clash-api-fields). | | `with_v2ray_api` | :material-close:️ | Build with V2Ray API support, see [Experimental](/zh/configuration/experimental#v2ray-api-fields). | | `with_gvisor` | :material-check: | Build with gVisor support, see [Tun inbound](/zh/configuration/inbound/tun#stack) and [WireGuard outbound](/zh/configuration/outbound/wireguard#system_interface). | | `with_embedded_tor` (CGO required) | :material-close:️ | Build with embedded Tor support, see [Tor outbound](/zh/configuration/outbound/tor/). | -| `with_tailscale` | :material-check: | 构建 Tailscale 支持,参阅 [Tailscale 端点](/zh/configuration/endpoint/tailscale)。 | -| `with_ccm` | :material-check: | 构建 Claude Code Multiplexer 服务支持。 | -| `with_ocm` | :material-check: | 构建 OpenAI Codex Multiplexer 服务支持。 | +| `with_tailscale` | :material-close:️ | 构建 Tailscale 支持,参阅 [Tailscale 端点](/zh/configuration/endpoint/tailscale)。 | +| `with_ccm` | :material-close:️ | 构建 Claude Code Multiplexer 服务支持。 | +| `with_ocm` | :material-close:️ | 构建 OpenAI Codex Multiplexer 服务支持。 | | `with_naive_outbound` | :material-check: | 构建 NaiveProxy 出站支持,参阅 [NaiveProxy 出站](/zh/configuration/outbound/naive/)。 | | `badlinkname` | :material-check: | 启用 `go:linkname` 以访问标准库内部函数。Go 标准库未提供本项目需要的许多底层 API,且在外部重新实现不切实际。用于 kTLS(内核 TLS 卸载)和原始 TLS 记录操作。 | | `tfogo_checklinkname0` | :material-check: | `badlinkname` 的伴随标记。Go 1.23+ 链接器强制限制 `go:linkname` 使用;此标记表示构建使用 `-checklinkname=0` 以绕过该限制。 | diff --git a/docs/installation/docker.md b/sing-box-rr/docs/installation/docker.md similarity index 100% rename from docs/installation/docker.md rename to sing-box-rr/docs/installation/docker.md diff --git a/docs/installation/docker.zh.md b/sing-box-rr/docs/installation/docker.zh.md similarity index 100% rename from docs/installation/docker.zh.md rename to sing-box-rr/docs/installation/docker.zh.md diff --git a/docs/installation/package-manager.md b/sing-box-rr/docs/installation/package-manager.md similarity index 100% rename from docs/installation/package-manager.md rename to sing-box-rr/docs/installation/package-manager.md diff --git a/docs/installation/package-manager.zh.md b/sing-box-rr/docs/installation/package-manager.zh.md similarity index 100% rename from docs/installation/package-manager.zh.md rename to sing-box-rr/docs/installation/package-manager.zh.md diff --git a/docs/installation/tools/arch-install.sh b/sing-box-rr/docs/installation/tools/arch-install.sh similarity index 100% rename from docs/installation/tools/arch-install.sh rename to sing-box-rr/docs/installation/tools/arch-install.sh diff --git a/docs/installation/tools/deb-install.sh b/sing-box-rr/docs/installation/tools/deb-install.sh similarity index 100% rename from docs/installation/tools/deb-install.sh rename to sing-box-rr/docs/installation/tools/deb-install.sh diff --git a/docs/installation/tools/install.sh b/sing-box-rr/docs/installation/tools/install.sh similarity index 100% rename from docs/installation/tools/install.sh rename to sing-box-rr/docs/installation/tools/install.sh diff --git a/docs/installation/tools/rpm-install.sh b/sing-box-rr/docs/installation/tools/rpm-install.sh similarity index 100% rename from docs/installation/tools/rpm-install.sh rename to sing-box-rr/docs/installation/tools/rpm-install.sh diff --git a/docs/installation/tools/sing-box.repo b/sing-box-rr/docs/installation/tools/sing-box.repo similarity index 100% rename from docs/installation/tools/sing-box.repo rename to sing-box-rr/docs/installation/tools/sing-box.repo diff --git a/docs/manual/misc/tunnelvision.md b/sing-box-rr/docs/manual/misc/tunnelvision.md similarity index 100% rename from docs/manual/misc/tunnelvision.md rename to sing-box-rr/docs/manual/misc/tunnelvision.md diff --git a/docs/manual/proxy-protocol/hysteria2.md b/sing-box-rr/docs/manual/proxy-protocol/hysteria2.md similarity index 100% rename from docs/manual/proxy-protocol/hysteria2.md rename to sing-box-rr/docs/manual/proxy-protocol/hysteria2.md diff --git a/docs/manual/proxy-protocol/shadowsocks.md b/sing-box-rr/docs/manual/proxy-protocol/shadowsocks.md similarity index 100% rename from docs/manual/proxy-protocol/shadowsocks.md rename to sing-box-rr/docs/manual/proxy-protocol/shadowsocks.md diff --git a/docs/manual/proxy-protocol/trojan.md b/sing-box-rr/docs/manual/proxy-protocol/trojan.md similarity index 100% rename from docs/manual/proxy-protocol/trojan.md rename to sing-box-rr/docs/manual/proxy-protocol/trojan.md diff --git a/docs/manual/proxy/client.md b/sing-box-rr/docs/manual/proxy/client.md similarity index 100% rename from docs/manual/proxy/client.md rename to sing-box-rr/docs/manual/proxy/client.md diff --git a/docs/manual/proxy/server.md b/sing-box-rr/docs/manual/proxy/server.md similarity index 100% rename from docs/manual/proxy/server.md rename to sing-box-rr/docs/manual/proxy/server.md diff --git a/docs/migration.md b/sing-box-rr/docs/migration.md similarity index 100% rename from docs/migration.md rename to sing-box-rr/docs/migration.md diff --git a/docs/migration.zh.md b/sing-box-rr/docs/migration.zh.md similarity index 100% rename from docs/migration.zh.md rename to sing-box-rr/docs/migration.zh.md diff --git a/docs/sponsors.md b/sing-box-rr/docs/sponsors.md similarity index 100% rename from docs/sponsors.md rename to sing-box-rr/docs/sponsors.md diff --git a/docs/support.md b/sing-box-rr/docs/support.md similarity index 100% rename from docs/support.md rename to sing-box-rr/docs/support.md diff --git a/docs/support.zh.md b/sing-box-rr/docs/support.zh.md similarity index 100% rename from docs/support.zh.md rename to sing-box-rr/docs/support.zh.md diff --git a/examples/admin_panel-manager-node/client.json b/sing-box-rr/examples/admin_panel-manager-node/client.json similarity index 100% rename from examples/admin_panel-manager-node/client.json rename to sing-box-rr/examples/admin_panel-manager-node/client.json diff --git a/examples/admin_panel-manager-node/manager.json b/sing-box-rr/examples/admin_panel-manager-node/manager.json similarity index 100% rename from examples/admin_panel-manager-node/manager.json rename to sing-box-rr/examples/admin_panel-manager-node/manager.json diff --git a/examples/admin_panel-manager-node/node.json b/sing-box-rr/examples/admin_panel-manager-node/node.json similarity index 100% rename from examples/admin_panel-manager-node/node.json rename to sing-box-rr/examples/admin_panel-manager-node/node.json diff --git a/examples/admin_panel-manager-node/screens/desktop/00-login.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/00-login.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/00-login.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/00-login.png diff --git a/examples/admin_panel-manager-node/screens/desktop/01-dashboard.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/01-dashboard.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/01-dashboard.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/01-dashboard.png diff --git a/examples/admin_panel-manager-node/screens/desktop/02-squads.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/02-squads.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/02-squads.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/02-squads.png diff --git a/examples/admin_panel-manager-node/screens/desktop/03-nodes.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/03-nodes.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/03-nodes.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/03-nodes.png diff --git a/examples/admin_panel-manager-node/screens/desktop/04-users.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/04-users.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/04-users.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/04-users.png diff --git a/examples/admin_panel-manager-node/screens/desktop/05-bandwidth-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/05-bandwidth-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/05-bandwidth-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/05-bandwidth-limiters.png diff --git a/examples/admin_panel-manager-node/screens/desktop/06-traffic-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/06-traffic-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/06-traffic-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/06-traffic-limiters.png diff --git a/examples/admin_panel-manager-node/screens/desktop/07-connection-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/07-connection-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/07-connection-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/07-connection-limiters.png diff --git a/examples/admin_panel-manager-node/screens/desktop/08-rate-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/desktop/08-rate-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/desktop/08-rate-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/desktop/08-rate-limiters.png diff --git a/examples/admin_panel-manager-node/screens/mobile/00-login.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/00-login.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/00-login.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/00-login.png diff --git a/examples/admin_panel-manager-node/screens/mobile/01-dashboard.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/01-dashboard.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/01-dashboard.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/01-dashboard.png diff --git a/examples/admin_panel-manager-node/screens/mobile/02-squads.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/02-squads.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/02-squads.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/02-squads.png diff --git a/examples/admin_panel-manager-node/screens/mobile/03-nodes.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/03-nodes.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/03-nodes.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/03-nodes.png diff --git a/examples/admin_panel-manager-node/screens/mobile/04-users.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/04-users.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/04-users.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/04-users.png diff --git a/examples/admin_panel-manager-node/screens/mobile/05-bandwidth-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/05-bandwidth-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/05-bandwidth-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/05-bandwidth-limiters.png diff --git a/examples/admin_panel-manager-node/screens/mobile/06-traffic-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/06-traffic-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/06-traffic-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/06-traffic-limiters.png diff --git a/examples/admin_panel-manager-node/screens/mobile/07-connection-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/07-connection-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/07-connection-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/07-connection-limiters.png diff --git a/examples/admin_panel-manager-node/screens/mobile/08-rate-limiters.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/08-rate-limiters.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/08-rate-limiters.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/08-rate-limiters.png diff --git a/examples/admin_panel-manager-node/screens/mobile/09-nav-open.png b/sing-box-rr/examples/admin_panel-manager-node/screens/mobile/09-nav-open.png similarity index 100% rename from examples/admin_panel-manager-node/screens/mobile/09-nav-open.png rename to sing-box-rr/examples/admin_panel-manager-node/screens/mobile/09-nav-open.png diff --git a/examples/amnezia/client.json b/sing-box-rr/examples/amnezia/client.json similarity index 100% rename from examples/amnezia/client.json rename to sing-box-rr/examples/amnezia/client.json diff --git a/examples/bond/client.json b/sing-box-rr/examples/bond/client.json similarity index 100% rename from examples/bond/client.json rename to sing-box-rr/examples/bond/client.json diff --git a/examples/bond/client_multi.json b/sing-box-rr/examples/bond/client_multi.json similarity index 100% rename from examples/bond/client_multi.json rename to sing-box-rr/examples/bond/client_multi.json diff --git a/examples/bond/client_split.json b/sing-box-rr/examples/bond/client_split.json similarity index 100% rename from examples/bond/client_split.json rename to sing-box-rr/examples/bond/client_split.json diff --git a/examples/bond/server.json b/sing-box-rr/examples/bond/server.json similarity index 100% rename from examples/bond/server.json rename to sing-box-rr/examples/bond/server.json diff --git a/examples/dns_fallback/client.json b/sing-box-rr/examples/dns_fallback/client.json similarity index 100% rename from examples/dns_fallback/client.json rename to sing-box-rr/examples/dns_fallback/client.json diff --git a/examples/failover/client.json b/sing-box-rr/examples/failover/client.json similarity index 100% rename from examples/failover/client.json rename to sing-box-rr/examples/failover/client.json diff --git a/examples/failover/server.json b/sing-box-rr/examples/failover/server.json similarity index 100% rename from examples/failover/server.json rename to sing-box-rr/examples/failover/server.json diff --git a/examples/fallback/client.json b/sing-box-rr/examples/fallback/client.json similarity index 100% rename from examples/fallback/client.json rename to sing-box-rr/examples/fallback/client.json diff --git a/examples/limiters/bandwidth/connection.json b/sing-box-rr/examples/limiters/bandwidth/connection.json similarity index 100% rename from examples/limiters/bandwidth/connection.json rename to sing-box-rr/examples/limiters/bandwidth/connection.json diff --git a/examples/limiters/bandwidth/global.json b/sing-box-rr/examples/limiters/bandwidth/global.json similarity index 100% rename from examples/limiters/bandwidth/global.json rename to sing-box-rr/examples/limiters/bandwidth/global.json diff --git a/examples/limiters/bandwidth/manager.json b/sing-box-rr/examples/limiters/bandwidth/manager.json similarity index 100% rename from examples/limiters/bandwidth/manager.json rename to sing-box-rr/examples/limiters/bandwidth/manager.json diff --git a/examples/limiters/bandwidth/multi.json b/sing-box-rr/examples/limiters/bandwidth/multi.json similarity index 100% rename from examples/limiters/bandwidth/multi.json rename to sing-box-rr/examples/limiters/bandwidth/multi.json diff --git a/examples/limiters/bandwidth/users.json b/sing-box-rr/examples/limiters/bandwidth/users.json similarity index 100% rename from examples/limiters/bandwidth/users.json rename to sing-box-rr/examples/limiters/bandwidth/users.json diff --git a/examples/limiters/connection/connection.json b/sing-box-rr/examples/limiters/connection/connection.json similarity index 100% rename from examples/limiters/connection/connection.json rename to sing-box-rr/examples/limiters/connection/connection.json diff --git a/examples/limiters/connection/manager.json b/sing-box-rr/examples/limiters/connection/manager.json similarity index 100% rename from examples/limiters/connection/manager.json rename to sing-box-rr/examples/limiters/connection/manager.json diff --git a/examples/limiters/connection/users.json b/sing-box-rr/examples/limiters/connection/users.json similarity index 100% rename from examples/limiters/connection/users.json rename to sing-box-rr/examples/limiters/connection/users.json diff --git a/examples/limiters/rate/connection.json b/sing-box-rr/examples/limiters/rate/connection.json similarity index 100% rename from examples/limiters/rate/connection.json rename to sing-box-rr/examples/limiters/rate/connection.json diff --git a/examples/limiters/rate/global.json b/sing-box-rr/examples/limiters/rate/global.json similarity index 100% rename from examples/limiters/rate/global.json rename to sing-box-rr/examples/limiters/rate/global.json diff --git a/examples/limiters/rate/manager.json b/sing-box-rr/examples/limiters/rate/manager.json similarity index 100% rename from examples/limiters/rate/manager.json rename to sing-box-rr/examples/limiters/rate/manager.json diff --git a/examples/limiters/rate/users.json b/sing-box-rr/examples/limiters/rate/users.json similarity index 100% rename from examples/limiters/rate/users.json rename to sing-box-rr/examples/limiters/rate/users.json diff --git a/examples/limiters/traffic/global.json b/sing-box-rr/examples/limiters/traffic/global.json similarity index 100% rename from examples/limiters/traffic/global.json rename to sing-box-rr/examples/limiters/traffic/global.json diff --git a/examples/limiters/traffic/manager.json b/sing-box-rr/examples/limiters/traffic/manager.json similarity index 100% rename from examples/limiters/traffic/manager.json rename to sing-box-rr/examples/limiters/traffic/manager.json diff --git a/examples/limiters/traffic/users.json b/sing-box-rr/examples/limiters/traffic/users.json similarity index 100% rename from examples/limiters/traffic/users.json rename to sing-box-rr/examples/limiters/traffic/users.json diff --git a/examples/masque/client.json b/sing-box-rr/examples/masque/client.json similarity index 100% rename from examples/masque/client.json rename to sing-box-rr/examples/masque/client.json diff --git a/examples/mieru/client.json b/sing-box-rr/examples/mieru/client.json similarity index 100% rename from examples/mieru/client.json rename to sing-box-rr/examples/mieru/client.json diff --git a/examples/mkcp/client.json b/sing-box-rr/examples/mkcp/client.json similarity index 100% rename from examples/mkcp/client.json rename to sing-box-rr/examples/mkcp/client.json diff --git a/examples/mkcp/server.json b/sing-box-rr/examples/mkcp/server.json similarity index 100% rename from examples/mkcp/server.json rename to sing-box-rr/examples/mkcp/server.json diff --git a/examples/mtproxy/server.json b/sing-box-rr/examples/mtproxy/server.json similarity index 100% rename from examples/mtproxy/server.json rename to sing-box-rr/examples/mtproxy/server.json diff --git a/examples/parser/client.json b/sing-box-rr/examples/parser/client.json similarity index 100% rename from examples/parser/client.json rename to sing-box-rr/examples/parser/client.json diff --git a/examples/provider/inline.json b/sing-box-rr/examples/provider/inline.json similarity index 100% rename from examples/provider/inline.json rename to sing-box-rr/examples/provider/inline.json diff --git a/examples/provider/local.json b/sing-box-rr/examples/provider/local.json similarity index 100% rename from examples/provider/local.json rename to sing-box-rr/examples/provider/local.json diff --git a/examples/provider/remote.json b/sing-box-rr/examples/provider/remote.json similarity index 100% rename from examples/provider/remote.json rename to sing-box-rr/examples/provider/remote.json diff --git a/examples/sdns/client.json b/sing-box-rr/examples/sdns/client.json similarity index 100% rename from examples/sdns/client.json rename to sing-box-rr/examples/sdns/client.json diff --git a/examples/unified_delay/client.json b/sing-box-rr/examples/unified_delay/client.json similarity index 100% rename from examples/unified_delay/client.json rename to sing-box-rr/examples/unified_delay/client.json diff --git a/examples/vless_encryption/client.json b/sing-box-rr/examples/vless_encryption/client.json similarity index 100% rename from examples/vless_encryption/client.json rename to sing-box-rr/examples/vless_encryption/client.json diff --git a/examples/vless_encryption/server.json b/sing-box-rr/examples/vless_encryption/server.json similarity index 100% rename from examples/vless_encryption/server.json rename to sing-box-rr/examples/vless_encryption/server.json diff --git a/examples/vpn/client-server/client.json b/sing-box-rr/examples/vpn/client-server/client.json similarity index 100% rename from examples/vpn/client-server/client.json rename to sing-box-rr/examples/vpn/client-server/client.json diff --git a/examples/vpn/client-server/server.json b/sing-box-rr/examples/vpn/client-server/server.json similarity index 100% rename from examples/vpn/client-server/server.json rename to sing-box-rr/examples/vpn/client-server/server.json diff --git a/examples/vpn/client1-server-client2/client1.json b/sing-box-rr/examples/vpn/client1-server-client2/client1.json similarity index 100% rename from examples/vpn/client1-server-client2/client1.json rename to sing-box-rr/examples/vpn/client1-server-client2/client1.json diff --git a/examples/vpn/client1-server-client2/client2.json b/sing-box-rr/examples/vpn/client1-server-client2/client2.json similarity index 100% rename from examples/vpn/client1-server-client2/client2.json rename to sing-box-rr/examples/vpn/client1-server-client2/client2.json diff --git a/examples/vpn/client1-server-client2/server.json b/sing-box-rr/examples/vpn/client1-server-client2/server.json similarity index 100% rename from examples/vpn/client1-server-client2/server.json rename to sing-box-rr/examples/vpn/client1-server-client2/server.json diff --git a/examples/vpn/proxy_client-server-vpn_client/proxy_client.json b/sing-box-rr/examples/vpn/proxy_client-server-vpn_client/proxy_client.json similarity index 100% rename from examples/vpn/proxy_client-server-vpn_client/proxy_client.json rename to sing-box-rr/examples/vpn/proxy_client-server-vpn_client/proxy_client.json diff --git a/examples/vpn/proxy_client-server-vpn_client/server.json b/sing-box-rr/examples/vpn/proxy_client-server-vpn_client/server.json similarity index 100% rename from examples/vpn/proxy_client-server-vpn_client/server.json rename to sing-box-rr/examples/vpn/proxy_client-server-vpn_client/server.json diff --git a/examples/vpn/proxy_client-server-vpn_client/vpn_client.json b/sing-box-rr/examples/vpn/proxy_client-server-vpn_client/vpn_client.json similarity index 100% rename from examples/vpn/proxy_client-server-vpn_client/vpn_client.json rename to sing-box-rr/examples/vpn/proxy_client-server-vpn_client/vpn_client.json diff --git a/examples/vpn/server-client/client.json b/sing-box-rr/examples/vpn/server-client/client.json similarity index 100% rename from examples/vpn/server-client/client.json rename to sing-box-rr/examples/vpn/server-client/client.json diff --git a/examples/vpn/server-client/server.json b/sing-box-rr/examples/vpn/server-client/server.json similarity index 100% rename from examples/vpn/server-client/server.json rename to sing-box-rr/examples/vpn/server-client/server.json diff --git a/examples/warp/client.json b/sing-box-rr/examples/warp/client.json similarity index 100% rename from examples/warp/client.json rename to sing-box-rr/examples/warp/client.json diff --git a/examples/wireguard/client.json b/sing-box-rr/examples/wireguard/client.json similarity index 100% rename from examples/wireguard/client.json rename to sing-box-rr/examples/wireguard/client.json diff --git a/examples/xhttp/client.json b/sing-box-rr/examples/xhttp/client.json similarity index 100% rename from examples/xhttp/client.json rename to sing-box-rr/examples/xhttp/client.json diff --git a/examples/xhttp/server.json b/sing-box-rr/examples/xhttp/server.json similarity index 100% rename from examples/xhttp/server.json rename to sing-box-rr/examples/xhttp/server.json diff --git a/experimental/cachefile/cache.go b/sing-box-rr/experimental/cachefile/cache.go similarity index 100% rename from experimental/cachefile/cache.go rename to sing-box-rr/experimental/cachefile/cache.go diff --git a/experimental/cachefile/fakeip.go b/sing-box-rr/experimental/cachefile/fakeip.go similarity index 100% rename from experimental/cachefile/fakeip.go rename to sing-box-rr/experimental/cachefile/fakeip.go diff --git a/experimental/cachefile/rdrc.go b/sing-box-rr/experimental/cachefile/rdrc.go similarity index 100% rename from experimental/cachefile/rdrc.go rename to sing-box-rr/experimental/cachefile/rdrc.go diff --git a/experimental/clashapi.go b/sing-box-rr/experimental/clashapi.go similarity index 100% rename from experimental/clashapi.go rename to sing-box-rr/experimental/clashapi.go diff --git a/experimental/clashapi/api_meta.go b/sing-box-rr/experimental/clashapi/api_meta.go similarity index 100% rename from experimental/clashapi/api_meta.go rename to sing-box-rr/experimental/clashapi/api_meta.go diff --git a/experimental/clashapi/api_meta_group.go b/sing-box-rr/experimental/clashapi/api_meta_group.go similarity index 100% rename from experimental/clashapi/api_meta_group.go rename to sing-box-rr/experimental/clashapi/api_meta_group.go diff --git a/experimental/clashapi/api_meta_upgrade.go b/sing-box-rr/experimental/clashapi/api_meta_upgrade.go similarity index 100% rename from experimental/clashapi/api_meta_upgrade.go rename to sing-box-rr/experimental/clashapi/api_meta_upgrade.go diff --git a/experimental/clashapi/cache.go b/sing-box-rr/experimental/clashapi/cache.go similarity index 100% rename from experimental/clashapi/cache.go rename to sing-box-rr/experimental/clashapi/cache.go diff --git a/experimental/clashapi/common.go b/sing-box-rr/experimental/clashapi/common.go similarity index 100% rename from experimental/clashapi/common.go rename to sing-box-rr/experimental/clashapi/common.go diff --git a/experimental/clashapi/configs.go b/sing-box-rr/experimental/clashapi/configs.go similarity index 100% rename from experimental/clashapi/configs.go rename to sing-box-rr/experimental/clashapi/configs.go diff --git a/experimental/clashapi/connections.go b/sing-box-rr/experimental/clashapi/connections.go similarity index 100% rename from experimental/clashapi/connections.go rename to sing-box-rr/experimental/clashapi/connections.go diff --git a/experimental/clashapi/ctxkeys.go b/sing-box-rr/experimental/clashapi/ctxkeys.go similarity index 100% rename from experimental/clashapi/ctxkeys.go rename to sing-box-rr/experimental/clashapi/ctxkeys.go diff --git a/experimental/clashapi/dns.go b/sing-box-rr/experimental/clashapi/dns.go similarity index 100% rename from experimental/clashapi/dns.go rename to sing-box-rr/experimental/clashapi/dns.go diff --git a/experimental/clashapi/errors.go b/sing-box-rr/experimental/clashapi/errors.go similarity index 100% rename from experimental/clashapi/errors.go rename to sing-box-rr/experimental/clashapi/errors.go diff --git a/experimental/clashapi/profile.go b/sing-box-rr/experimental/clashapi/profile.go similarity index 100% rename from experimental/clashapi/profile.go rename to sing-box-rr/experimental/clashapi/profile.go diff --git a/experimental/clashapi/provider.go b/sing-box-rr/experimental/clashapi/provider.go similarity index 100% rename from experimental/clashapi/provider.go rename to sing-box-rr/experimental/clashapi/provider.go diff --git a/experimental/clashapi/proxies.go b/sing-box-rr/experimental/clashapi/proxies.go similarity index 100% rename from experimental/clashapi/proxies.go rename to sing-box-rr/experimental/clashapi/proxies.go diff --git a/experimental/clashapi/ruleprovider.go b/sing-box-rr/experimental/clashapi/ruleprovider.go similarity index 100% rename from experimental/clashapi/ruleprovider.go rename to sing-box-rr/experimental/clashapi/ruleprovider.go diff --git a/experimental/clashapi/rules.go b/sing-box-rr/experimental/clashapi/rules.go similarity index 100% rename from experimental/clashapi/rules.go rename to sing-box-rr/experimental/clashapi/rules.go diff --git a/experimental/clashapi/script.go b/sing-box-rr/experimental/clashapi/script.go similarity index 100% rename from experimental/clashapi/script.go rename to sing-box-rr/experimental/clashapi/script.go diff --git a/experimental/clashapi/server.go b/sing-box-rr/experimental/clashapi/server.go similarity index 99% rename from experimental/clashapi/server.go rename to sing-box-rr/experimental/clashapi/server.go index c5255314..00fe3415 100644 --- a/experimental/clashapi/server.go +++ b/sing-box-rr/experimental/clashapi/server.go @@ -124,8 +124,6 @@ func NewServer(ctx context.Context, logFactory log.ObservableFactory, options op r.Mount("/proxies", proxyRouter(s, s.router)) r.Mount("/rules", ruleRouter(s.router)) r.Mount("/connections", connectionRouter(s.ctx, s.router, trafficManager)) - r.Mount("/providers/proxies", proxyProviderRouter(s)) - r.Mount("/providers/rules", ruleProviderRouter()) r.Mount("/script", scriptRouter()) r.Mount("/profile", profileRouter()) r.Mount("/cache", cacheRouter(ctx)) diff --git a/experimental/clashapi/server_fs.go b/sing-box-rr/experimental/clashapi/server_fs.go similarity index 100% rename from experimental/clashapi/server_fs.go rename to sing-box-rr/experimental/clashapi/server_fs.go diff --git a/experimental/clashapi/server_resources.go b/sing-box-rr/experimental/clashapi/server_resources.go similarity index 100% rename from experimental/clashapi/server_resources.go rename to sing-box-rr/experimental/clashapi/server_resources.go diff --git a/experimental/clashapi/trafficontrol/manager.go b/sing-box-rr/experimental/clashapi/trafficontrol/manager.go similarity index 100% rename from experimental/clashapi/trafficontrol/manager.go rename to sing-box-rr/experimental/clashapi/trafficontrol/manager.go diff --git a/experimental/clashapi/trafficontrol/tracker.go b/sing-box-rr/experimental/clashapi/trafficontrol/tracker.go similarity index 100% rename from experimental/clashapi/trafficontrol/tracker.go rename to sing-box-rr/experimental/clashapi/trafficontrol/tracker.go diff --git a/experimental/deprecated/constants.go b/sing-box-rr/experimental/deprecated/constants.go similarity index 100% rename from experimental/deprecated/constants.go rename to sing-box-rr/experimental/deprecated/constants.go diff --git a/experimental/deprecated/manager.go b/sing-box-rr/experimental/deprecated/manager.go similarity index 100% rename from experimental/deprecated/manager.go rename to sing-box-rr/experimental/deprecated/manager.go diff --git a/experimental/deprecated/stderr.go b/sing-box-rr/experimental/deprecated/stderr.go similarity index 100% rename from experimental/deprecated/stderr.go rename to sing-box-rr/experimental/deprecated/stderr.go diff --git a/experimental/libbox/build_info.go b/sing-box-rr/experimental/libbox/build_info.go similarity index 100% rename from experimental/libbox/build_info.go rename to sing-box-rr/experimental/libbox/build_info.go diff --git a/experimental/libbox/command.go b/sing-box-rr/experimental/libbox/command.go similarity index 100% rename from experimental/libbox/command.go rename to sing-box-rr/experimental/libbox/command.go diff --git a/experimental/libbox/command_client.go b/sing-box-rr/experimental/libbox/command_client.go similarity index 100% rename from experimental/libbox/command_client.go rename to sing-box-rr/experimental/libbox/command_client.go diff --git a/experimental/libbox/command_server.go b/sing-box-rr/experimental/libbox/command_server.go similarity index 100% rename from experimental/libbox/command_server.go rename to sing-box-rr/experimental/libbox/command_server.go diff --git a/experimental/libbox/command_types.go b/sing-box-rr/experimental/libbox/command_types.go similarity index 100% rename from experimental/libbox/command_types.go rename to sing-box-rr/experimental/libbox/command_types.go diff --git a/experimental/libbox/config.go b/sing-box-rr/experimental/libbox/config.go similarity index 100% rename from experimental/libbox/config.go rename to sing-box-rr/experimental/libbox/config.go diff --git a/experimental/libbox/connection_owner_darwin.go b/sing-box-rr/experimental/libbox/connection_owner_darwin.go similarity index 100% rename from experimental/libbox/connection_owner_darwin.go rename to sing-box-rr/experimental/libbox/connection_owner_darwin.go diff --git a/experimental/libbox/deprecated.go b/sing-box-rr/experimental/libbox/deprecated.go similarity index 100% rename from experimental/libbox/deprecated.go rename to sing-box-rr/experimental/libbox/deprecated.go diff --git a/experimental/libbox/dns.go b/sing-box-rr/experimental/libbox/dns.go similarity index 100% rename from experimental/libbox/dns.go rename to sing-box-rr/experimental/libbox/dns.go diff --git a/experimental/libbox/fdroid.go b/sing-box-rr/experimental/libbox/fdroid.go similarity index 100% rename from experimental/libbox/fdroid.go rename to sing-box-rr/experimental/libbox/fdroid.go diff --git a/experimental/libbox/fdroid_mirrors.go b/sing-box-rr/experimental/libbox/fdroid_mirrors.go similarity index 100% rename from experimental/libbox/fdroid_mirrors.go rename to sing-box-rr/experimental/libbox/fdroid_mirrors.go diff --git a/experimental/libbox/ffi.json b/sing-box-rr/experimental/libbox/ffi.json similarity index 100% rename from experimental/libbox/ffi.json rename to sing-box-rr/experimental/libbox/ffi.json diff --git a/experimental/libbox/http.go b/sing-box-rr/experimental/libbox/http.go similarity index 100% rename from experimental/libbox/http.go rename to sing-box-rr/experimental/libbox/http.go diff --git a/experimental/libbox/internal/procfs/procfs.go b/sing-box-rr/experimental/libbox/internal/procfs/procfs.go similarity index 100% rename from experimental/libbox/internal/procfs/procfs.go rename to sing-box-rr/experimental/libbox/internal/procfs/procfs.go diff --git a/experimental/libbox/iterator.go b/sing-box-rr/experimental/libbox/iterator.go similarity index 100% rename from experimental/libbox/iterator.go rename to sing-box-rr/experimental/libbox/iterator.go diff --git a/experimental/libbox/link_flags_stub.go b/sing-box-rr/experimental/libbox/link_flags_stub.go similarity index 100% rename from experimental/libbox/link_flags_stub.go rename to sing-box-rr/experimental/libbox/link_flags_stub.go diff --git a/experimental/libbox/link_flags_unix.go b/sing-box-rr/experimental/libbox/link_flags_unix.go similarity index 100% rename from experimental/libbox/link_flags_unix.go rename to sing-box-rr/experimental/libbox/link_flags_unix.go diff --git a/experimental/libbox/log.go b/sing-box-rr/experimental/libbox/log.go similarity index 100% rename from experimental/libbox/log.go rename to sing-box-rr/experimental/libbox/log.go diff --git a/experimental/libbox/memory.go b/sing-box-rr/experimental/libbox/memory.go similarity index 100% rename from experimental/libbox/memory.go rename to sing-box-rr/experimental/libbox/memory.go diff --git a/experimental/libbox/monitor.go b/sing-box-rr/experimental/libbox/monitor.go similarity index 100% rename from experimental/libbox/monitor.go rename to sing-box-rr/experimental/libbox/monitor.go diff --git a/experimental/libbox/panic.go b/sing-box-rr/experimental/libbox/panic.go similarity index 100% rename from experimental/libbox/panic.go rename to sing-box-rr/experimental/libbox/panic.go diff --git a/experimental/libbox/pidfd_android.go b/sing-box-rr/experimental/libbox/pidfd_android.go similarity index 100% rename from experimental/libbox/pidfd_android.go rename to sing-box-rr/experimental/libbox/pidfd_android.go diff --git a/experimental/libbox/platform.go b/sing-box-rr/experimental/libbox/platform.go similarity index 100% rename from experimental/libbox/platform.go rename to sing-box-rr/experimental/libbox/platform.go diff --git a/experimental/libbox/pprof.go b/sing-box-rr/experimental/libbox/pprof.go similarity index 100% rename from experimental/libbox/pprof.go rename to sing-box-rr/experimental/libbox/pprof.go diff --git a/experimental/libbox/profile_import.go b/sing-box-rr/experimental/libbox/profile_import.go similarity index 100% rename from experimental/libbox/profile_import.go rename to sing-box-rr/experimental/libbox/profile_import.go diff --git a/experimental/libbox/remote_profile.go b/sing-box-rr/experimental/libbox/remote_profile.go similarity index 100% rename from experimental/libbox/remote_profile.go rename to sing-box-rr/experimental/libbox/remote_profile.go diff --git a/experimental/libbox/semver.go b/sing-box-rr/experimental/libbox/semver.go similarity index 100% rename from experimental/libbox/semver.go rename to sing-box-rr/experimental/libbox/semver.go diff --git a/experimental/libbox/semver_test.go b/sing-box-rr/experimental/libbox/semver_test.go similarity index 100% rename from experimental/libbox/semver_test.go rename to sing-box-rr/experimental/libbox/semver_test.go diff --git a/experimental/libbox/service.go b/sing-box-rr/experimental/libbox/service.go similarity index 100% rename from experimental/libbox/service.go rename to sing-box-rr/experimental/libbox/service.go diff --git a/experimental/libbox/service_other.go b/sing-box-rr/experimental/libbox/service_other.go similarity index 100% rename from experimental/libbox/service_other.go rename to sing-box-rr/experimental/libbox/service_other.go diff --git a/experimental/libbox/service_windows.go b/sing-box-rr/experimental/libbox/service_windows.go similarity index 100% rename from experimental/libbox/service_windows.go rename to sing-box-rr/experimental/libbox/service_windows.go diff --git a/experimental/libbox/setup.go b/sing-box-rr/experimental/libbox/setup.go similarity index 100% rename from experimental/libbox/setup.go rename to sing-box-rr/experimental/libbox/setup.go diff --git a/experimental/libbox/tun.go b/sing-box-rr/experimental/libbox/tun.go similarity index 100% rename from experimental/libbox/tun.go rename to sing-box-rr/experimental/libbox/tun.go diff --git a/experimental/libbox/tun_darwin.go b/sing-box-rr/experimental/libbox/tun_darwin.go similarity index 100% rename from experimental/libbox/tun_darwin.go rename to sing-box-rr/experimental/libbox/tun_darwin.go diff --git a/experimental/libbox/tun_name_darwin.go b/sing-box-rr/experimental/libbox/tun_name_darwin.go similarity index 100% rename from experimental/libbox/tun_name_darwin.go rename to sing-box-rr/experimental/libbox/tun_name_darwin.go diff --git a/experimental/libbox/tun_name_linux.go b/sing-box-rr/experimental/libbox/tun_name_linux.go similarity index 100% rename from experimental/libbox/tun_name_linux.go rename to sing-box-rr/experimental/libbox/tun_name_linux.go diff --git a/experimental/libbox/tun_name_other.go b/sing-box-rr/experimental/libbox/tun_name_other.go similarity index 100% rename from experimental/libbox/tun_name_other.go rename to sing-box-rr/experimental/libbox/tun_name_other.go diff --git a/experimental/locale/locale.go b/sing-box-rr/experimental/locale/locale.go similarity index 100% rename from experimental/locale/locale.go rename to sing-box-rr/experimental/locale/locale.go diff --git a/experimental/locale/locale_zh_CN.go b/sing-box-rr/experimental/locale/locale_zh_CN.go similarity index 100% rename from experimental/locale/locale_zh_CN.go rename to sing-box-rr/experimental/locale/locale_zh_CN.go diff --git a/experimental/v2rayapi.go b/sing-box-rr/experimental/v2rayapi.go similarity index 100% rename from experimental/v2rayapi.go rename to sing-box-rr/experimental/v2rayapi.go diff --git a/experimental/v2rayapi/server.go b/sing-box-rr/experimental/v2rayapi/server.go similarity index 100% rename from experimental/v2rayapi/server.go rename to sing-box-rr/experimental/v2rayapi/server.go diff --git a/experimental/v2rayapi/stats.go b/sing-box-rr/experimental/v2rayapi/stats.go similarity index 100% rename from experimental/v2rayapi/stats.go rename to sing-box-rr/experimental/v2rayapi/stats.go diff --git a/experimental/v2rayapi/stats.pb.go b/sing-box-rr/experimental/v2rayapi/stats.pb.go similarity index 100% rename from experimental/v2rayapi/stats.pb.go rename to sing-box-rr/experimental/v2rayapi/stats.pb.go diff --git a/experimental/v2rayapi/stats.proto b/sing-box-rr/experimental/v2rayapi/stats.proto similarity index 100% rename from experimental/v2rayapi/stats.proto rename to sing-box-rr/experimental/v2rayapi/stats.proto diff --git a/experimental/v2rayapi/stats_grpc.pb.go b/sing-box-rr/experimental/v2rayapi/stats_grpc.pb.go similarity index 100% rename from experimental/v2rayapi/stats_grpc.pb.go rename to sing-box-rr/experimental/v2rayapi/stats_grpc.pb.go diff --git a/go.mod b/sing-box-rr/go.mod similarity index 100% rename from go.mod rename to sing-box-rr/go.mod diff --git a/go.sum b/sing-box-rr/go.sum similarity index 100% rename from go.sum rename to sing-box-rr/go.sum diff --git a/include/ccm.go b/sing-box-rr/include/ccm.go similarity index 100% rename from include/ccm.go rename to sing-box-rr/include/ccm.go diff --git a/include/ccm_stub.go b/sing-box-rr/include/ccm_stub.go similarity index 100% rename from include/ccm_stub.go rename to sing-box-rr/include/ccm_stub.go diff --git a/include/ccm_stub_darwin.go b/sing-box-rr/include/ccm_stub_darwin.go similarity index 100% rename from include/ccm_stub_darwin.go rename to sing-box-rr/include/ccm_stub_darwin.go diff --git a/include/clashapi.go b/sing-box-rr/include/clashapi.go similarity index 100% rename from include/clashapi.go rename to sing-box-rr/include/clashapi.go diff --git a/include/clashapi_stub.go b/sing-box-rr/include/clashapi_stub.go similarity index 100% rename from include/clashapi_stub.go rename to sing-box-rr/include/clashapi_stub.go diff --git a/include/dhcp.go b/sing-box-rr/include/dhcp.go similarity index 100% rename from include/dhcp.go rename to sing-box-rr/include/dhcp.go diff --git a/include/dhcp_stub.go b/sing-box-rr/include/dhcp_stub.go similarity index 100% rename from include/dhcp_stub.go rename to sing-box-rr/include/dhcp_stub.go diff --git a/include/masque.go b/sing-box-rr/include/masque.go similarity index 100% rename from include/masque.go rename to sing-box-rr/include/masque.go diff --git a/include/masque_stub.go b/sing-box-rr/include/masque_stub.go similarity index 100% rename from include/masque_stub.go rename to sing-box-rr/include/masque_stub.go diff --git a/include/mtproxy.go b/sing-box-rr/include/mtproxy.go similarity index 100% rename from include/mtproxy.go rename to sing-box-rr/include/mtproxy.go diff --git a/include/mtproxy_stub.go b/sing-box-rr/include/mtproxy_stub.go similarity index 100% rename from include/mtproxy_stub.go rename to sing-box-rr/include/mtproxy_stub.go diff --git a/include/naive_outbound.go b/sing-box-rr/include/naive_outbound.go similarity index 100% rename from include/naive_outbound.go rename to sing-box-rr/include/naive_outbound.go diff --git a/include/naive_outbound_stub.go b/sing-box-rr/include/naive_outbound_stub.go similarity index 100% rename from include/naive_outbound_stub.go rename to sing-box-rr/include/naive_outbound_stub.go diff --git a/include/ocm.go b/sing-box-rr/include/ocm.go similarity index 100% rename from include/ocm.go rename to sing-box-rr/include/ocm.go diff --git a/include/ocm_stub.go b/sing-box-rr/include/ocm_stub.go similarity index 100% rename from include/ocm_stub.go rename to sing-box-rr/include/ocm_stub.go diff --git a/include/oom_killer.go b/sing-box-rr/include/oom_killer.go similarity index 100% rename from include/oom_killer.go rename to sing-box-rr/include/oom_killer.go diff --git a/include/profiler.go b/sing-box-rr/include/profiler.go similarity index 100% rename from include/profiler.go rename to sing-box-rr/include/profiler.go diff --git a/include/profiler_stub.go b/sing-box-rr/include/profiler_stub.go similarity index 100% rename from include/profiler_stub.go rename to sing-box-rr/include/profiler_stub.go diff --git a/include/quic.go b/sing-box-rr/include/quic.go similarity index 100% rename from include/quic.go rename to sing-box-rr/include/quic.go diff --git a/include/quic_stub.go b/sing-box-rr/include/quic_stub.go similarity index 100% rename from include/quic_stub.go rename to sing-box-rr/include/quic_stub.go diff --git a/include/registry.go b/sing-box-rr/include/registry.go similarity index 75% rename from include/registry.go rename to sing-box-rr/include/registry.go index cabbb4c5..c38e8af6 100644 --- a/include/registry.go +++ b/sing-box-rr/include/registry.go @@ -21,37 +21,22 @@ import ( "github.com/sagernet/sing-box/option" "github.com/sagernet/sing-box/protocol/anytls" "github.com/sagernet/sing-box/protocol/block" - "github.com/sagernet/sing-box/protocol/bond" "github.com/sagernet/sing-box/protocol/direct" "github.com/sagernet/sing-box/protocol/failover" "github.com/sagernet/sing-box/protocol/group" "github.com/sagernet/sing-box/protocol/http" - "github.com/sagernet/sing-box/protocol/limiter/bandwidth" - "github.com/sagernet/sing-box/protocol/limiter/connection" - "github.com/sagernet/sing-box/protocol/limiter/rate" - "github.com/sagernet/sing-box/protocol/limiter/traffic" "github.com/sagernet/sing-box/protocol/mieru" "github.com/sagernet/sing-box/protocol/mixed" "github.com/sagernet/sing-box/protocol/naive" - "github.com/sagernet/sing-box/protocol/parser" "github.com/sagernet/sing-box/protocol/redirect" "github.com/sagernet/sing-box/protocol/shadowsocks" "github.com/sagernet/sing-box/protocol/shadowtls" "github.com/sagernet/sing-box/protocol/socks" - "github.com/sagernet/sing-box/protocol/ssh" - "github.com/sagernet/sing-box/protocol/tor" "github.com/sagernet/sing-box/protocol/trojan" "github.com/sagernet/sing-box/protocol/tun" "github.com/sagernet/sing-box/protocol/vless" "github.com/sagernet/sing-box/protocol/vmess" "github.com/sagernet/sing-box/protocol/vpn" - localProvider "github.com/sagernet/sing-box/provider/local" - remoteProvider "github.com/sagernet/sing-box/provider/remote" - "github.com/sagernet/sing-box/service/admin_panel" - "github.com/sagernet/sing-box/service/manager" - "github.com/sagernet/sing-box/service/manager_api" - "github.com/sagernet/sing-box/service/node" - "github.com/sagernet/sing-box/service/node_manager_api" "github.com/sagernet/sing-box/service/resolved" "github.com/sagernet/sing-box/service/ssmapi" E "github.com/sagernet/sing/common/exceptions" @@ -81,12 +66,10 @@ func InboundRegistry() *inbound.Registry { vless.RegisterInbound(registry) anytls.RegisterInbound(registry) - bond.RegisterInbound(registry) failover.RegisterInbound(registry) registerQUICInbounds(registry) registerStubForRemovedInbounds(registry) - registerMTProxyInbound(registry) return registry } @@ -108,24 +91,13 @@ func OutboundRegistry() *outbound.Registry { vmess.RegisterOutbound(registry) trojan.RegisterOutbound(registry) registerNaiveOutbound(registry) - tor.RegisterOutbound(registry) - ssh.RegisterOutbound(registry) shadowtls.RegisterOutbound(registry) vless.RegisterOutbound(registry) mieru.RegisterOutbound(registry) anytls.RegisterOutbound(registry) - registerMASQUEOutbound(registry) - bond.RegisterOutbound(registry) failover.RegisterOutbound(registry) - bandwidth.RegisterOutbound(registry) - connection.RegisterOutbound(registry) - traffic.RegisterOutbound(registry) - rate.RegisterOutbound(registry) - - parser.RegisterOutbound(registry) - registerQUICOutbounds(registry) registerStubForRemovedOutbounds(registry) @@ -138,20 +110,11 @@ func EndpointRegistry() *endpoint.Registry { vpn.RegisterServerEndpoint(registry) vpn.RegisterClientEndpoint(registry) - registerWireGuardEndpoint(registry) - registerTailscaleEndpoint(registry) - return registry } func ProviderRegistry() *provider.Registry { - registry := provider.NewRegistry() - - localProvider.RegisterProviderInline(registry) - localProvider.RegisterProviderLocal(registry) - remoteProvider.RegisterProvider(registry) - - return registry + return provider.NewRegistry() } func DNSTransportRegistry() *dns.TransportRegistry { @@ -169,8 +132,6 @@ func DNSTransportRegistry() *dns.TransportRegistry { resolved.RegisterTransport(registry) registerQUICTransports(registry) - registerDHCPTransport(registry) - registerTailscaleTransport(registry) return registry } @@ -178,17 +139,9 @@ func DNSTransportRegistry() *dns.TransportRegistry { func ServiceRegistry() *service.Registry { registry := service.NewRegistry() - admin_panel.RegisterService(registry) - manager.RegisterService(registry) - manager_api.RegisterService(registry) - node.RegisterService(registry) - node_manager_api.RegisterService(registry) resolved.RegisterService(registry) ssmapi.RegisterService(registry) - registerDERPService(registry) - registerCCMService(registry) - registerOCMService(registry) registerOOMKillerService(registry) registerProfilerService(registry) diff --git a/include/tailscale.go b/sing-box-rr/include/tailscale.go similarity index 100% rename from include/tailscale.go rename to sing-box-rr/include/tailscale.go diff --git a/include/tailscale_stub.go b/sing-box-rr/include/tailscale_stub.go similarity index 100% rename from include/tailscale_stub.go rename to sing-box-rr/include/tailscale_stub.go diff --git a/include/tz_android.go b/sing-box-rr/include/tz_android.go similarity index 100% rename from include/tz_android.go rename to sing-box-rr/include/tz_android.go diff --git a/include/tz_ios.go b/sing-box-rr/include/tz_ios.go similarity index 100% rename from include/tz_ios.go rename to sing-box-rr/include/tz_ios.go diff --git a/include/v2rayapi.go b/sing-box-rr/include/v2rayapi.go similarity index 100% rename from include/v2rayapi.go rename to sing-box-rr/include/v2rayapi.go diff --git a/include/v2rayapi_stub.go b/sing-box-rr/include/v2rayapi_stub.go similarity index 100% rename from include/v2rayapi_stub.go rename to sing-box-rr/include/v2rayapi_stub.go diff --git a/include/wireguard.go b/sing-box-rr/include/wireguard.go similarity index 100% rename from include/wireguard.go rename to sing-box-rr/include/wireguard.go diff --git a/include/wireguard_stub.go b/sing-box-rr/include/wireguard_stub.go similarity index 100% rename from include/wireguard_stub.go rename to sing-box-rr/include/wireguard_stub.go diff --git a/log/export.go b/sing-box-rr/log/export.go similarity index 100% rename from log/export.go rename to sing-box-rr/log/export.go diff --git a/log/factory.go b/sing-box-rr/log/factory.go similarity index 100% rename from log/factory.go rename to sing-box-rr/log/factory.go diff --git a/log/format.go b/sing-box-rr/log/format.go similarity index 100% rename from log/format.go rename to sing-box-rr/log/format.go diff --git a/log/id.go b/sing-box-rr/log/id.go similarity index 100% rename from log/id.go rename to sing-box-rr/log/id.go diff --git a/log/level.go b/sing-box-rr/log/level.go similarity index 100% rename from log/level.go rename to sing-box-rr/log/level.go diff --git a/log/log.go b/sing-box-rr/log/log.go similarity index 100% rename from log/log.go rename to sing-box-rr/log/log.go diff --git a/log/nop.go b/sing-box-rr/log/nop.go similarity index 100% rename from log/nop.go rename to sing-box-rr/log/nop.go diff --git a/log/observable.go b/sing-box-rr/log/observable.go similarity index 100% rename from log/observable.go rename to sing-box-rr/log/observable.go diff --git a/log/override.go b/sing-box-rr/log/override.go similarity index 100% rename from log/override.go rename to sing-box-rr/log/override.go diff --git a/log/platform.go b/sing-box-rr/log/platform.go similarity index 100% rename from log/platform.go rename to sing-box-rr/log/platform.go diff --git a/mkdocs.yml b/sing-box-rr/mkdocs.yml similarity index 100% rename from mkdocs.yml rename to sing-box-rr/mkdocs.yml diff --git a/option/admin_panel.go b/sing-box-rr/option/admin_panel.go similarity index 100% rename from option/admin_panel.go rename to sing-box-rr/option/admin_panel.go diff --git a/option/anytls.go b/sing-box-rr/option/anytls.go similarity index 100% rename from option/anytls.go rename to sing-box-rr/option/anytls.go diff --git a/option/bond.go b/sing-box-rr/option/bond.go similarity index 100% rename from option/bond.go rename to sing-box-rr/option/bond.go diff --git a/option/ccm.go b/sing-box-rr/option/ccm.go similarity index 100% rename from option/ccm.go rename to sing-box-rr/option/ccm.go diff --git a/option/certificate.go b/sing-box-rr/option/certificate.go similarity index 100% rename from option/certificate.go rename to sing-box-rr/option/certificate.go diff --git a/option/cloudflare.go b/sing-box-rr/option/cloudflare.go similarity index 100% rename from option/cloudflare.go rename to sing-box-rr/option/cloudflare.go diff --git a/option/debug.go b/sing-box-rr/option/debug.go similarity index 100% rename from option/debug.go rename to sing-box-rr/option/debug.go diff --git a/option/direct.go b/sing-box-rr/option/direct.go similarity index 100% rename from option/direct.go rename to sing-box-rr/option/direct.go diff --git a/option/dns.go b/sing-box-rr/option/dns.go similarity index 100% rename from option/dns.go rename to sing-box-rr/option/dns.go diff --git a/option/dns_record.go b/sing-box-rr/option/dns_record.go similarity index 100% rename from option/dns_record.go rename to sing-box-rr/option/dns_record.go diff --git a/option/endpoint.go b/sing-box-rr/option/endpoint.go similarity index 100% rename from option/endpoint.go rename to sing-box-rr/option/endpoint.go diff --git a/option/experimental.go b/sing-box-rr/option/experimental.go similarity index 100% rename from option/experimental.go rename to sing-box-rr/option/experimental.go diff --git a/option/failover.go b/sing-box-rr/option/failover.go similarity index 100% rename from option/failover.go rename to sing-box-rr/option/failover.go diff --git a/option/group.go b/sing-box-rr/option/group.go similarity index 100% rename from option/group.go rename to sing-box-rr/option/group.go diff --git a/option/hysteria.go b/sing-box-rr/option/hysteria.go similarity index 100% rename from option/hysteria.go rename to sing-box-rr/option/hysteria.go diff --git a/option/hysteria2.go b/sing-box-rr/option/hysteria2.go similarity index 100% rename from option/hysteria2.go rename to sing-box-rr/option/hysteria2.go diff --git a/option/inbound.go b/sing-box-rr/option/inbound.go similarity index 100% rename from option/inbound.go rename to sing-box-rr/option/inbound.go diff --git a/option/limiter.go b/sing-box-rr/option/limiter.go similarity index 100% rename from option/limiter.go rename to sing-box-rr/option/limiter.go diff --git a/option/manager.go b/sing-box-rr/option/manager.go similarity index 100% rename from option/manager.go rename to sing-box-rr/option/manager.go diff --git a/option/manager_api.go b/sing-box-rr/option/manager_api.go similarity index 100% rename from option/manager_api.go rename to sing-box-rr/option/manager_api.go diff --git a/option/masque.go b/sing-box-rr/option/masque.go similarity index 100% rename from option/masque.go rename to sing-box-rr/option/masque.go diff --git a/option/mieru.go b/sing-box-rr/option/mieru.go similarity index 100% rename from option/mieru.go rename to sing-box-rr/option/mieru.go diff --git a/option/mtproxy.go b/sing-box-rr/option/mtproxy.go similarity index 100% rename from option/mtproxy.go rename to sing-box-rr/option/mtproxy.go diff --git a/option/multiplex.go b/sing-box-rr/option/multiplex.go similarity index 100% rename from option/multiplex.go rename to sing-box-rr/option/multiplex.go diff --git a/option/naive.go b/sing-box-rr/option/naive.go similarity index 100% rename from option/naive.go rename to sing-box-rr/option/naive.go diff --git a/option/node.go b/sing-box-rr/option/node.go similarity index 100% rename from option/node.go rename to sing-box-rr/option/node.go diff --git a/option/node_manager_api.go b/sing-box-rr/option/node_manager_api.go similarity index 100% rename from option/node_manager_api.go rename to sing-box-rr/option/node_manager_api.go diff --git a/option/ntp.go b/sing-box-rr/option/ntp.go similarity index 100% rename from option/ntp.go rename to sing-box-rr/option/ntp.go diff --git a/option/ocm.go b/sing-box-rr/option/ocm.go similarity index 100% rename from option/ocm.go rename to sing-box-rr/option/ocm.go diff --git a/option/oom_killer.go b/sing-box-rr/option/oom_killer.go similarity index 100% rename from option/oom_killer.go rename to sing-box-rr/option/oom_killer.go diff --git a/option/options.go b/sing-box-rr/option/options.go similarity index 97% rename from option/options.go rename to sing-box-rr/option/options.go index fcca94c3..8bebd48f 100644 --- a/option/options.go +++ b/sing-box-rr/option/options.go @@ -19,7 +19,6 @@ type _Options struct { Endpoints []Endpoint `json:"endpoints,omitempty"` Inbounds []Inbound `json:"inbounds,omitempty"` Outbounds []Outbound `json:"outbounds,omitempty"` - Providers []Provider `json:"providers,omitempty"` Route *RouteOptions `json:"route,omitempty"` Services []Service `json:"services,omitempty"` Experimental *ExperimentalOptions `json:"experimental,omitempty"` diff --git a/option/outbound.go b/sing-box-rr/option/outbound.go similarity index 100% rename from option/outbound.go rename to sing-box-rr/option/outbound.go diff --git a/option/parser.go b/sing-box-rr/option/parser.go similarity index 100% rename from option/parser.go rename to sing-box-rr/option/parser.go diff --git a/option/platform.go b/sing-box-rr/option/platform.go similarity index 100% rename from option/platform.go rename to sing-box-rr/option/platform.go diff --git a/option/profiler.go b/sing-box-rr/option/profiler.go similarity index 100% rename from option/profiler.go rename to sing-box-rr/option/profiler.go diff --git a/option/provider.go b/sing-box-rr/option/provider.go similarity index 100% rename from option/provider.go rename to sing-box-rr/option/provider.go diff --git a/option/redir.go b/sing-box-rr/option/redir.go similarity index 100% rename from option/redir.go rename to sing-box-rr/option/redir.go diff --git a/option/resolved.go b/sing-box-rr/option/resolved.go similarity index 100% rename from option/resolved.go rename to sing-box-rr/option/resolved.go diff --git a/option/route.go b/sing-box-rr/option/route.go similarity index 100% rename from option/route.go rename to sing-box-rr/option/route.go diff --git a/option/rule.go b/sing-box-rr/option/rule.go similarity index 100% rename from option/rule.go rename to sing-box-rr/option/rule.go diff --git a/option/rule_action.go b/sing-box-rr/option/rule_action.go similarity index 100% rename from option/rule_action.go rename to sing-box-rr/option/rule_action.go diff --git a/option/rule_dns.go b/sing-box-rr/option/rule_dns.go similarity index 100% rename from option/rule_dns.go rename to sing-box-rr/option/rule_dns.go diff --git a/option/rule_set.go b/sing-box-rr/option/rule_set.go similarity index 100% rename from option/rule_set.go rename to sing-box-rr/option/rule_set.go diff --git a/option/service.go b/sing-box-rr/option/service.go similarity index 100% rename from option/service.go rename to sing-box-rr/option/service.go diff --git a/option/shadowsocks.go b/sing-box-rr/option/shadowsocks.go similarity index 100% rename from option/shadowsocks.go rename to sing-box-rr/option/shadowsocks.go diff --git a/option/shadowsocksr.go b/sing-box-rr/option/shadowsocksr.go similarity index 100% rename from option/shadowsocksr.go rename to sing-box-rr/option/shadowsocksr.go diff --git a/option/shadowtls.go b/sing-box-rr/option/shadowtls.go similarity index 100% rename from option/shadowtls.go rename to sing-box-rr/option/shadowtls.go diff --git a/option/simple.go b/sing-box-rr/option/simple.go similarity index 100% rename from option/simple.go rename to sing-box-rr/option/simple.go diff --git a/option/ssh.go b/sing-box-rr/option/ssh.go similarity index 100% rename from option/ssh.go rename to sing-box-rr/option/ssh.go diff --git a/option/ssmapi.go b/sing-box-rr/option/ssmapi.go similarity index 100% rename from option/ssmapi.go rename to sing-box-rr/option/ssmapi.go diff --git a/option/tailscale.go b/sing-box-rr/option/tailscale.go similarity index 100% rename from option/tailscale.go rename to sing-box-rr/option/tailscale.go diff --git a/option/tls.go b/sing-box-rr/option/tls.go similarity index 100% rename from option/tls.go rename to sing-box-rr/option/tls.go diff --git a/option/tls_acme.go b/sing-box-rr/option/tls_acme.go similarity index 100% rename from option/tls_acme.go rename to sing-box-rr/option/tls_acme.go diff --git a/option/tor.go b/sing-box-rr/option/tor.go similarity index 100% rename from option/tor.go rename to sing-box-rr/option/tor.go diff --git a/option/trojan.go b/sing-box-rr/option/trojan.go similarity index 100% rename from option/trojan.go rename to sing-box-rr/option/trojan.go diff --git a/option/tuic.go b/sing-box-rr/option/tuic.go similarity index 100% rename from option/tuic.go rename to sing-box-rr/option/tuic.go diff --git a/option/tun.go b/sing-box-rr/option/tun.go similarity index 100% rename from option/tun.go rename to sing-box-rr/option/tun.go diff --git a/option/tun_platform.go b/sing-box-rr/option/tun_platform.go similarity index 100% rename from option/tun_platform.go rename to sing-box-rr/option/tun_platform.go diff --git a/option/types.go b/sing-box-rr/option/types.go similarity index 100% rename from option/types.go rename to sing-box-rr/option/types.go diff --git a/option/udp_over_tcp.go b/sing-box-rr/option/udp_over_tcp.go similarity index 100% rename from option/udp_over_tcp.go rename to sing-box-rr/option/udp_over_tcp.go diff --git a/option/v2ray.go b/sing-box-rr/option/v2ray.go similarity index 100% rename from option/v2ray.go rename to sing-box-rr/option/v2ray.go diff --git a/option/v2ray_transport.go b/sing-box-rr/option/v2ray_transport.go similarity index 100% rename from option/v2ray_transport.go rename to sing-box-rr/option/v2ray_transport.go diff --git a/option/vless.go b/sing-box-rr/option/vless.go similarity index 100% rename from option/vless.go rename to sing-box-rr/option/vless.go diff --git a/option/vmess.go b/sing-box-rr/option/vmess.go similarity index 100% rename from option/vmess.go rename to sing-box-rr/option/vmess.go diff --git a/option/vpn.go b/sing-box-rr/option/vpn.go similarity index 100% rename from option/vpn.go rename to sing-box-rr/option/vpn.go diff --git a/option/warp.go b/sing-box-rr/option/warp.go similarity index 100% rename from option/warp.go rename to sing-box-rr/option/warp.go diff --git a/option/wireguard.go b/sing-box-rr/option/wireguard.go similarity index 100% rename from option/wireguard.go rename to sing-box-rr/option/wireguard.go diff --git a/parser/clash/anytls.go b/sing-box-rr/parser/clash/anytls.go similarity index 100% rename from parser/clash/anytls.go rename to sing-box-rr/parser/clash/anytls.go diff --git a/parser/clash/base.go b/sing-box-rr/parser/clash/base.go similarity index 100% rename from parser/clash/base.go rename to sing-box-rr/parser/clash/base.go diff --git a/parser/clash/http.go b/sing-box-rr/parser/clash/http.go similarity index 100% rename from parser/clash/http.go rename to sing-box-rr/parser/clash/http.go diff --git a/parser/clash/hysteria.go b/sing-box-rr/parser/clash/hysteria.go similarity index 100% rename from parser/clash/hysteria.go rename to sing-box-rr/parser/clash/hysteria.go diff --git a/parser/clash/hysteria2.go b/sing-box-rr/parser/clash/hysteria2.go similarity index 100% rename from parser/clash/hysteria2.go rename to sing-box-rr/parser/clash/hysteria2.go diff --git a/parser/clash/parser.go b/sing-box-rr/parser/clash/parser.go similarity index 100% rename from parser/clash/parser.go rename to sing-box-rr/parser/clash/parser.go diff --git a/parser/clash/shadowsocks.go b/sing-box-rr/parser/clash/shadowsocks.go similarity index 100% rename from parser/clash/shadowsocks.go rename to sing-box-rr/parser/clash/shadowsocks.go diff --git a/parser/clash/socks5.go b/sing-box-rr/parser/clash/socks5.go similarity index 100% rename from parser/clash/socks5.go rename to sing-box-rr/parser/clash/socks5.go diff --git a/parser/clash/ssh.go b/sing-box-rr/parser/clash/ssh.go similarity index 100% rename from parser/clash/ssh.go rename to sing-box-rr/parser/clash/ssh.go diff --git a/parser/clash/trojan.go b/sing-box-rr/parser/clash/trojan.go similarity index 100% rename from parser/clash/trojan.go rename to sing-box-rr/parser/clash/trojan.go diff --git a/parser/clash/tuic.go b/sing-box-rr/parser/clash/tuic.go similarity index 100% rename from parser/clash/tuic.go rename to sing-box-rr/parser/clash/tuic.go diff --git a/parser/clash/utils.go b/sing-box-rr/parser/clash/utils.go similarity index 100% rename from parser/clash/utils.go rename to sing-box-rr/parser/clash/utils.go diff --git a/parser/clash/vless.go b/sing-box-rr/parser/clash/vless.go similarity index 100% rename from parser/clash/vless.go rename to sing-box-rr/parser/clash/vless.go diff --git a/parser/clash/vmess.go b/sing-box-rr/parser/clash/vmess.go similarity index 100% rename from parser/clash/vmess.go rename to sing-box-rr/parser/clash/vmess.go diff --git a/parser/link/hysteria.go b/sing-box-rr/parser/link/hysteria.go similarity index 100% rename from parser/link/hysteria.go rename to sing-box-rr/parser/link/hysteria.go diff --git a/parser/link/hysteria2.go b/sing-box-rr/parser/link/hysteria2.go similarity index 100% rename from parser/link/hysteria2.go rename to sing-box-rr/parser/link/hysteria2.go diff --git a/parser/link/parser.go b/sing-box-rr/parser/link/parser.go similarity index 100% rename from parser/link/parser.go rename to sing-box-rr/parser/link/parser.go diff --git a/parser/link/shadowsocks.go b/sing-box-rr/parser/link/shadowsocks.go similarity index 100% rename from parser/link/shadowsocks.go rename to sing-box-rr/parser/link/shadowsocks.go diff --git a/parser/link/trojan.go b/sing-box-rr/parser/link/trojan.go similarity index 100% rename from parser/link/trojan.go rename to sing-box-rr/parser/link/trojan.go diff --git a/parser/link/tuic.go b/sing-box-rr/parser/link/tuic.go similarity index 100% rename from parser/link/tuic.go rename to sing-box-rr/parser/link/tuic.go diff --git a/parser/link/utils.go b/sing-box-rr/parser/link/utils.go similarity index 100% rename from parser/link/utils.go rename to sing-box-rr/parser/link/utils.go diff --git a/parser/link/vless.go b/sing-box-rr/parser/link/vless.go similarity index 100% rename from parser/link/vless.go rename to sing-box-rr/parser/link/vless.go diff --git a/parser/link/vmess.go b/sing-box-rr/parser/link/vmess.go similarity index 100% rename from parser/link/vmess.go rename to sing-box-rr/parser/link/vmess.go diff --git a/parser/parser.go b/sing-box-rr/parser/parser.go similarity index 100% rename from parser/parser.go rename to sing-box-rr/parser/parser.go diff --git a/parser/raw/parser.go b/sing-box-rr/parser/raw/parser.go similarity index 100% rename from parser/raw/parser.go rename to sing-box-rr/parser/raw/parser.go diff --git a/parser/singbox/parser.go b/sing-box-rr/parser/singbox/parser.go similarity index 100% rename from parser/singbox/parser.go rename to sing-box-rr/parser/singbox/parser.go diff --git a/parser/sip008/parser.go b/sing-box-rr/parser/sip008/parser.go similarity index 100% rename from parser/sip008/parser.go rename to sing-box-rr/parser/sip008/parser.go diff --git a/protocol/anytls/inbound.go b/sing-box-rr/protocol/anytls/inbound.go similarity index 100% rename from protocol/anytls/inbound.go rename to sing-box-rr/protocol/anytls/inbound.go diff --git a/protocol/anytls/outbound.go b/sing-box-rr/protocol/anytls/outbound.go similarity index 100% rename from protocol/anytls/outbound.go rename to sing-box-rr/protocol/anytls/outbound.go diff --git a/protocol/block/outbound.go b/sing-box-rr/protocol/block/outbound.go similarity index 100% rename from protocol/block/outbound.go rename to sing-box-rr/protocol/block/outbound.go diff --git a/protocol/bond/conn.go b/sing-box-rr/protocol/bond/conn.go similarity index 100% rename from protocol/bond/conn.go rename to sing-box-rr/protocol/bond/conn.go diff --git a/protocol/bond/inbound.go b/sing-box-rr/protocol/bond/inbound.go similarity index 100% rename from protocol/bond/inbound.go rename to sing-box-rr/protocol/bond/inbound.go diff --git a/protocol/bond/outbound.go b/sing-box-rr/protocol/bond/outbound.go similarity index 100% rename from protocol/bond/outbound.go rename to sing-box-rr/protocol/bond/outbound.go diff --git a/protocol/bond/protocol.go b/sing-box-rr/protocol/bond/protocol.go similarity index 100% rename from protocol/bond/protocol.go rename to sing-box-rr/protocol/bond/protocol.go diff --git a/protocol/bond/router.go b/sing-box-rr/protocol/bond/router.go similarity index 100% rename from protocol/bond/router.go rename to sing-box-rr/protocol/bond/router.go diff --git a/protocol/direct/inbound.go b/sing-box-rr/protocol/direct/inbound.go similarity index 100% rename from protocol/direct/inbound.go rename to sing-box-rr/protocol/direct/inbound.go diff --git a/protocol/direct/loopback_detect.go b/sing-box-rr/protocol/direct/loopback_detect.go similarity index 100% rename from protocol/direct/loopback_detect.go rename to sing-box-rr/protocol/direct/loopback_detect.go diff --git a/protocol/direct/outbound.go b/sing-box-rr/protocol/direct/outbound.go similarity index 100% rename from protocol/direct/outbound.go rename to sing-box-rr/protocol/direct/outbound.go diff --git a/protocol/dns/handle.go b/sing-box-rr/protocol/dns/handle.go similarity index 100% rename from protocol/dns/handle.go rename to sing-box-rr/protocol/dns/handle.go diff --git a/protocol/dns/outbound.go b/sing-box-rr/protocol/dns/outbound.go similarity index 100% rename from protocol/dns/outbound.go rename to sing-box-rr/protocol/dns/outbound.go diff --git a/protocol/failover/conn.go b/sing-box-rr/protocol/failover/conn.go similarity index 100% rename from protocol/failover/conn.go rename to sing-box-rr/protocol/failover/conn.go diff --git a/protocol/failover/inbound.go b/sing-box-rr/protocol/failover/inbound.go similarity index 100% rename from protocol/failover/inbound.go rename to sing-box-rr/protocol/failover/inbound.go diff --git a/protocol/failover/outbound.go b/sing-box-rr/protocol/failover/outbound.go similarity index 100% rename from protocol/failover/outbound.go rename to sing-box-rr/protocol/failover/outbound.go diff --git a/protocol/failover/protocol.go b/sing-box-rr/protocol/failover/protocol.go similarity index 100% rename from protocol/failover/protocol.go rename to sing-box-rr/protocol/failover/protocol.go diff --git a/protocol/failover/router.go b/sing-box-rr/protocol/failover/router.go similarity index 100% rename from protocol/failover/router.go rename to sing-box-rr/protocol/failover/router.go diff --git a/protocol/failover/strategy.go b/sing-box-rr/protocol/failover/strategy.go similarity index 100% rename from protocol/failover/strategy.go rename to sing-box-rr/protocol/failover/strategy.go diff --git a/protocol/group/fallback.go b/sing-box-rr/protocol/group/fallback.go similarity index 100% rename from protocol/group/fallback.go rename to sing-box-rr/protocol/group/fallback.go diff --git a/protocol/group/selector.go b/sing-box-rr/protocol/group/selector.go similarity index 100% rename from protocol/group/selector.go rename to sing-box-rr/protocol/group/selector.go diff --git a/protocol/group/urltest.go b/sing-box-rr/protocol/group/urltest.go similarity index 100% rename from protocol/group/urltest.go rename to sing-box-rr/protocol/group/urltest.go diff --git a/protocol/http/inbound.go b/sing-box-rr/protocol/http/inbound.go similarity index 100% rename from protocol/http/inbound.go rename to sing-box-rr/protocol/http/inbound.go diff --git a/protocol/http/outbound.go b/sing-box-rr/protocol/http/outbound.go similarity index 100% rename from protocol/http/outbound.go rename to sing-box-rr/protocol/http/outbound.go diff --git a/protocol/hysteria/inbound.go b/sing-box-rr/protocol/hysteria/inbound.go similarity index 100% rename from protocol/hysteria/inbound.go rename to sing-box-rr/protocol/hysteria/inbound.go diff --git a/protocol/hysteria/outbound.go b/sing-box-rr/protocol/hysteria/outbound.go similarity index 100% rename from protocol/hysteria/outbound.go rename to sing-box-rr/protocol/hysteria/outbound.go diff --git a/protocol/hysteria2/inbound.go b/sing-box-rr/protocol/hysteria2/inbound.go similarity index 100% rename from protocol/hysteria2/inbound.go rename to sing-box-rr/protocol/hysteria2/inbound.go diff --git a/protocol/hysteria2/outbound.go b/sing-box-rr/protocol/hysteria2/outbound.go similarity index 100% rename from protocol/hysteria2/outbound.go rename to sing-box-rr/protocol/hysteria2/outbound.go diff --git a/protocol/limiter/bandwidth/conn.go b/sing-box-rr/protocol/limiter/bandwidth/conn.go similarity index 100% rename from protocol/limiter/bandwidth/conn.go rename to sing-box-rr/protocol/limiter/bandwidth/conn.go diff --git a/protocol/limiter/bandwidth/limiter.go b/sing-box-rr/protocol/limiter/bandwidth/limiter.go similarity index 100% rename from protocol/limiter/bandwidth/limiter.go rename to sing-box-rr/protocol/limiter/bandwidth/limiter.go diff --git a/protocol/limiter/bandwidth/outbound.go b/sing-box-rr/protocol/limiter/bandwidth/outbound.go similarity index 100% rename from protocol/limiter/bandwidth/outbound.go rename to sing-box-rr/protocol/limiter/bandwidth/outbound.go diff --git a/protocol/limiter/bandwidth/strategy.go b/sing-box-rr/protocol/limiter/bandwidth/strategy.go similarity index 100% rename from protocol/limiter/bandwidth/strategy.go rename to sing-box-rr/protocol/limiter/bandwidth/strategy.go diff --git a/protocol/limiter/connection/lock.go b/sing-box-rr/protocol/limiter/connection/lock.go similarity index 100% rename from protocol/limiter/connection/lock.go rename to sing-box-rr/protocol/limiter/connection/lock.go diff --git a/protocol/limiter/connection/outbound.go b/sing-box-rr/protocol/limiter/connection/outbound.go similarity index 100% rename from protocol/limiter/connection/outbound.go rename to sing-box-rr/protocol/limiter/connection/outbound.go diff --git a/protocol/limiter/connection/strategy.go b/sing-box-rr/protocol/limiter/connection/strategy.go similarity index 100% rename from protocol/limiter/connection/strategy.go rename to sing-box-rr/protocol/limiter/connection/strategy.go diff --git a/protocol/limiter/rate/outbound.go b/sing-box-rr/protocol/limiter/rate/outbound.go similarity index 100% rename from protocol/limiter/rate/outbound.go rename to sing-box-rr/protocol/limiter/rate/outbound.go diff --git a/protocol/limiter/rate/strategy.go b/sing-box-rr/protocol/limiter/rate/strategy.go similarity index 100% rename from protocol/limiter/rate/strategy.go rename to sing-box-rr/protocol/limiter/rate/strategy.go diff --git a/protocol/limiter/traffic/conn.go b/sing-box-rr/protocol/limiter/traffic/conn.go similarity index 100% rename from protocol/limiter/traffic/conn.go rename to sing-box-rr/protocol/limiter/traffic/conn.go diff --git a/protocol/limiter/traffic/limiter.go b/sing-box-rr/protocol/limiter/traffic/limiter.go similarity index 100% rename from protocol/limiter/traffic/limiter.go rename to sing-box-rr/protocol/limiter/traffic/limiter.go diff --git a/protocol/limiter/traffic/outbound.go b/sing-box-rr/protocol/limiter/traffic/outbound.go similarity index 100% rename from protocol/limiter/traffic/outbound.go rename to sing-box-rr/protocol/limiter/traffic/outbound.go diff --git a/protocol/limiter/traffic/strategy.go b/sing-box-rr/protocol/limiter/traffic/strategy.go similarity index 100% rename from protocol/limiter/traffic/strategy.go rename to sing-box-rr/protocol/limiter/traffic/strategy.go diff --git a/protocol/masque/config.go b/sing-box-rr/protocol/masque/config.go similarity index 100% rename from protocol/masque/config.go rename to sing-box-rr/protocol/masque/config.go diff --git a/protocol/masque/outbound.go b/sing-box-rr/protocol/masque/outbound.go similarity index 100% rename from protocol/masque/outbound.go rename to sing-box-rr/protocol/masque/outbound.go diff --git a/protocol/mieru/outbound.go b/sing-box-rr/protocol/mieru/outbound.go similarity index 100% rename from protocol/mieru/outbound.go rename to sing-box-rr/protocol/mieru/outbound.go diff --git a/protocol/mixed/inbound.go b/sing-box-rr/protocol/mixed/inbound.go similarity index 100% rename from protocol/mixed/inbound.go rename to sing-box-rr/protocol/mixed/inbound.go diff --git a/protocol/mtproxy/dialer.go b/sing-box-rr/protocol/mtproxy/dialer.go similarity index 100% rename from protocol/mtproxy/dialer.go rename to sing-box-rr/protocol/mtproxy/dialer.go diff --git a/protocol/mtproxy/inbound.go b/sing-box-rr/protocol/mtproxy/inbound.go similarity index 100% rename from protocol/mtproxy/inbound.go rename to sing-box-rr/protocol/mtproxy/inbound.go diff --git a/protocol/mtproxy/logger.go b/sing-box-rr/protocol/mtproxy/logger.go similarity index 100% rename from protocol/mtproxy/logger.go rename to sing-box-rr/protocol/mtproxy/logger.go diff --git a/protocol/mtproxy/network.go b/sing-box-rr/protocol/mtproxy/network.go similarity index 100% rename from protocol/mtproxy/network.go rename to sing-box-rr/protocol/mtproxy/network.go diff --git a/protocol/naive/inbound.go b/sing-box-rr/protocol/naive/inbound.go similarity index 100% rename from protocol/naive/inbound.go rename to sing-box-rr/protocol/naive/inbound.go diff --git a/protocol/naive/inbound_conn.go b/sing-box-rr/protocol/naive/inbound_conn.go similarity index 100% rename from protocol/naive/inbound_conn.go rename to sing-box-rr/protocol/naive/inbound_conn.go diff --git a/protocol/naive/outbound.go b/sing-box-rr/protocol/naive/outbound.go similarity index 100% rename from protocol/naive/outbound.go rename to sing-box-rr/protocol/naive/outbound.go diff --git a/protocol/naive/quic/inbound_init.go b/sing-box-rr/protocol/naive/quic/inbound_init.go similarity index 100% rename from protocol/naive/quic/inbound_init.go rename to sing-box-rr/protocol/naive/quic/inbound_init.go diff --git a/protocol/parser/outbound.go b/sing-box-rr/protocol/parser/outbound.go similarity index 100% rename from protocol/parser/outbound.go rename to sing-box-rr/protocol/parser/outbound.go diff --git a/protocol/redirect/redirect.go b/sing-box-rr/protocol/redirect/redirect.go similarity index 100% rename from protocol/redirect/redirect.go rename to sing-box-rr/protocol/redirect/redirect.go diff --git a/protocol/redirect/tproxy.go b/sing-box-rr/protocol/redirect/tproxy.go similarity index 100% rename from protocol/redirect/tproxy.go rename to sing-box-rr/protocol/redirect/tproxy.go diff --git a/protocol/shadowsocks/inbound.go b/sing-box-rr/protocol/shadowsocks/inbound.go similarity index 100% rename from protocol/shadowsocks/inbound.go rename to sing-box-rr/protocol/shadowsocks/inbound.go diff --git a/protocol/shadowsocks/inbound_multi.go b/sing-box-rr/protocol/shadowsocks/inbound_multi.go similarity index 100% rename from protocol/shadowsocks/inbound_multi.go rename to sing-box-rr/protocol/shadowsocks/inbound_multi.go diff --git a/protocol/shadowsocks/inbound_relay.go b/sing-box-rr/protocol/shadowsocks/inbound_relay.go similarity index 100% rename from protocol/shadowsocks/inbound_relay.go rename to sing-box-rr/protocol/shadowsocks/inbound_relay.go diff --git a/protocol/shadowsocks/outbound.go b/sing-box-rr/protocol/shadowsocks/outbound.go similarity index 100% rename from protocol/shadowsocks/outbound.go rename to sing-box-rr/protocol/shadowsocks/outbound.go diff --git a/protocol/shadowtls/inbound.go b/sing-box-rr/protocol/shadowtls/inbound.go similarity index 100% rename from protocol/shadowtls/inbound.go rename to sing-box-rr/protocol/shadowtls/inbound.go diff --git a/protocol/shadowtls/outbound.go b/sing-box-rr/protocol/shadowtls/outbound.go similarity index 100% rename from protocol/shadowtls/outbound.go rename to sing-box-rr/protocol/shadowtls/outbound.go diff --git a/protocol/socks/inbound.go b/sing-box-rr/protocol/socks/inbound.go similarity index 100% rename from protocol/socks/inbound.go rename to sing-box-rr/protocol/socks/inbound.go diff --git a/protocol/socks/outbound.go b/sing-box-rr/protocol/socks/outbound.go similarity index 100% rename from protocol/socks/outbound.go rename to sing-box-rr/protocol/socks/outbound.go diff --git a/protocol/ssh/outbound.go b/sing-box-rr/protocol/ssh/outbound.go similarity index 100% rename from protocol/ssh/outbound.go rename to sing-box-rr/protocol/ssh/outbound.go diff --git a/protocol/tailscale/dns_transport.go b/sing-box-rr/protocol/tailscale/dns_transport.go similarity index 100% rename from protocol/tailscale/dns_transport.go rename to sing-box-rr/protocol/tailscale/dns_transport.go diff --git a/protocol/tailscale/endpoint.go b/sing-box-rr/protocol/tailscale/endpoint.go similarity index 100% rename from protocol/tailscale/endpoint.go rename to sing-box-rr/protocol/tailscale/endpoint.go diff --git a/protocol/tailscale/tun_device_unix.go b/sing-box-rr/protocol/tailscale/tun_device_unix.go similarity index 100% rename from protocol/tailscale/tun_device_unix.go rename to sing-box-rr/protocol/tailscale/tun_device_unix.go diff --git a/protocol/tailscale/tun_device_windows.go b/sing-box-rr/protocol/tailscale/tun_device_windows.go similarity index 100% rename from protocol/tailscale/tun_device_windows.go rename to sing-box-rr/protocol/tailscale/tun_device_windows.go diff --git a/protocol/tor/outbound.go b/sing-box-rr/protocol/tor/outbound.go similarity index 100% rename from protocol/tor/outbound.go rename to sing-box-rr/protocol/tor/outbound.go diff --git a/protocol/tor/proxy.go b/sing-box-rr/protocol/tor/proxy.go similarity index 100% rename from protocol/tor/proxy.go rename to sing-box-rr/protocol/tor/proxy.go diff --git a/protocol/trojan/inbound.go b/sing-box-rr/protocol/trojan/inbound.go similarity index 100% rename from protocol/trojan/inbound.go rename to sing-box-rr/protocol/trojan/inbound.go diff --git a/protocol/trojan/outbound.go b/sing-box-rr/protocol/trojan/outbound.go similarity index 100% rename from protocol/trojan/outbound.go rename to sing-box-rr/protocol/trojan/outbound.go diff --git a/protocol/tuic/inbound.go b/sing-box-rr/protocol/tuic/inbound.go similarity index 100% rename from protocol/tuic/inbound.go rename to sing-box-rr/protocol/tuic/inbound.go diff --git a/protocol/tuic/outbound.go b/sing-box-rr/protocol/tuic/outbound.go similarity index 100% rename from protocol/tuic/outbound.go rename to sing-box-rr/protocol/tuic/outbound.go diff --git a/protocol/tun/hook.go b/sing-box-rr/protocol/tun/hook.go similarity index 100% rename from protocol/tun/hook.go rename to sing-box-rr/protocol/tun/hook.go diff --git a/protocol/tun/inbound.go b/sing-box-rr/protocol/tun/inbound.go similarity index 100% rename from protocol/tun/inbound.go rename to sing-box-rr/protocol/tun/inbound.go diff --git a/protocol/vless/encryption/client.go b/sing-box-rr/protocol/vless/encryption/client.go similarity index 100% rename from protocol/vless/encryption/client.go rename to sing-box-rr/protocol/vless/encryption/client.go diff --git a/protocol/vless/encryption/common.go b/sing-box-rr/protocol/vless/encryption/common.go similarity index 100% rename from protocol/vless/encryption/common.go rename to sing-box-rr/protocol/vless/encryption/common.go diff --git a/protocol/vless/encryption/server.go b/sing-box-rr/protocol/vless/encryption/server.go similarity index 100% rename from protocol/vless/encryption/server.go rename to sing-box-rr/protocol/vless/encryption/server.go diff --git a/protocol/vless/encryption/xor.go b/sing-box-rr/protocol/vless/encryption/xor.go similarity index 100% rename from protocol/vless/encryption/xor.go rename to sing-box-rr/protocol/vless/encryption/xor.go diff --git a/protocol/vless/inbound.go b/sing-box-rr/protocol/vless/inbound.go similarity index 100% rename from protocol/vless/inbound.go rename to sing-box-rr/protocol/vless/inbound.go diff --git a/protocol/vless/outbound.go b/sing-box-rr/protocol/vless/outbound.go similarity index 100% rename from protocol/vless/outbound.go rename to sing-box-rr/protocol/vless/outbound.go diff --git a/protocol/vmess/inbound.go b/sing-box-rr/protocol/vmess/inbound.go similarity index 100% rename from protocol/vmess/inbound.go rename to sing-box-rr/protocol/vmess/inbound.go diff --git a/protocol/vmess/outbound.go b/sing-box-rr/protocol/vmess/outbound.go similarity index 100% rename from protocol/vmess/outbound.go rename to sing-box-rr/protocol/vmess/outbound.go diff --git a/protocol/vpn/client.go b/sing-box-rr/protocol/vpn/client.go similarity index 100% rename from protocol/vpn/client.go rename to sing-box-rr/protocol/vpn/client.go diff --git a/protocol/vpn/protocol.go b/sing-box-rr/protocol/vpn/protocol.go similarity index 100% rename from protocol/vpn/protocol.go rename to sing-box-rr/protocol/vpn/protocol.go diff --git a/protocol/vpn/router.go b/sing-box-rr/protocol/vpn/router.go similarity index 100% rename from protocol/vpn/router.go rename to sing-box-rr/protocol/vpn/router.go diff --git a/protocol/vpn/server.go b/sing-box-rr/protocol/vpn/server.go similarity index 100% rename from protocol/vpn/server.go rename to sing-box-rr/protocol/vpn/server.go diff --git a/protocol/warp/config.go b/sing-box-rr/protocol/warp/config.go similarity index 100% rename from protocol/warp/config.go rename to sing-box-rr/protocol/warp/config.go diff --git a/protocol/warp/endpoint.go b/sing-box-rr/protocol/warp/endpoint.go similarity index 100% rename from protocol/warp/endpoint.go rename to sing-box-rr/protocol/warp/endpoint.go diff --git a/protocol/wireguard/endpoint.go b/sing-box-rr/protocol/wireguard/endpoint.go similarity index 100% rename from protocol/wireguard/endpoint.go rename to sing-box-rr/protocol/wireguard/endpoint.go diff --git a/provider/local/provider.go b/sing-box-rr/provider/local/provider.go similarity index 100% rename from provider/local/provider.go rename to sing-box-rr/provider/local/provider.go diff --git a/provider/remote/provider.go b/sing-box-rr/provider/remote/provider.go similarity index 100% rename from provider/remote/provider.go rename to sing-box-rr/provider/remote/provider.go diff --git a/sing-box-rr/release/DEFAULT_BUILD_TAGS b/sing-box-rr/release/DEFAULT_BUILD_TAGS new file mode 100644 index 00000000..def439af --- /dev/null +++ b/sing-box-rr/release/DEFAULT_BUILD_TAGS @@ -0,0 +1 @@ +with_gvisor,with_quic,with_utls,with_clash_api,with_naive_outbound,badlinkname,tfogo_checklinkname0 diff --git a/sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS b/sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS new file mode 100644 index 00000000..e6be69c2 --- /dev/null +++ b/sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS @@ -0,0 +1 @@ +with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0 diff --git a/sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS b/sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS new file mode 100644 index 00000000..ab41c62e --- /dev/null +++ b/sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS @@ -0,0 +1 @@ +with_gvisor,with_quic,with_utls,with_clash_api,with_naive_outbound,with_purego,badlinkname,tfogo_checklinkname0 diff --git a/release/LDFLAGS b/sing-box-rr/release/LDFLAGS similarity index 100% rename from release/LDFLAGS rename to sing-box-rr/release/LDFLAGS diff --git a/release/completions/sing-box.bash b/sing-box-rr/release/completions/sing-box.bash similarity index 100% rename from release/completions/sing-box.bash rename to sing-box-rr/release/completions/sing-box.bash diff --git a/release/completions/sing-box.fish b/sing-box-rr/release/completions/sing-box.fish similarity index 100% rename from release/completions/sing-box.fish rename to sing-box-rr/release/completions/sing-box.fish diff --git a/release/completions/sing-box.zsh b/sing-box-rr/release/completions/sing-box.zsh similarity index 100% rename from release/completions/sing-box.zsh rename to sing-box-rr/release/completions/sing-box.zsh diff --git a/release/config/config.json b/sing-box-rr/release/config/config.json similarity index 100% rename from release/config/config.json rename to sing-box-rr/release/config/config.json diff --git a/release/config/openwrt.conf b/sing-box-rr/release/config/openwrt.conf similarity index 100% rename from release/config/openwrt.conf rename to sing-box-rr/release/config/openwrt.conf diff --git a/release/config/openwrt.init b/sing-box-rr/release/config/openwrt.init similarity index 100% rename from release/config/openwrt.init rename to sing-box-rr/release/config/openwrt.init diff --git a/release/config/openwrt.keep b/sing-box-rr/release/config/openwrt.keep similarity index 100% rename from release/config/openwrt.keep rename to sing-box-rr/release/config/openwrt.keep diff --git a/release/config/openwrt.prerm b/sing-box-rr/release/config/openwrt.prerm similarity index 100% rename from release/config/openwrt.prerm rename to sing-box-rr/release/config/openwrt.prerm diff --git a/release/config/sing-box-split-dns.xml b/sing-box-rr/release/config/sing-box-split-dns.xml similarity index 100% rename from release/config/sing-box-split-dns.xml rename to sing-box-rr/release/config/sing-box-split-dns.xml diff --git a/release/config/sing-box.confd b/sing-box-rr/release/config/sing-box.confd similarity index 100% rename from release/config/sing-box.confd rename to sing-box-rr/release/config/sing-box.confd diff --git a/release/config/sing-box.initd b/sing-box-rr/release/config/sing-box.initd similarity index 100% rename from release/config/sing-box.initd rename to sing-box-rr/release/config/sing-box.initd diff --git a/release/config/sing-box.postinst b/sing-box-rr/release/config/sing-box.postinst similarity index 100% rename from release/config/sing-box.postinst rename to sing-box-rr/release/config/sing-box.postinst diff --git a/release/config/sing-box.rules b/sing-box-rr/release/config/sing-box.rules similarity index 100% rename from release/config/sing-box.rules rename to sing-box-rr/release/config/sing-box.rules diff --git a/release/config/sing-box.service b/sing-box-rr/release/config/sing-box.service similarity index 100% rename from release/config/sing-box.service rename to sing-box-rr/release/config/sing-box.service diff --git a/release/config/sing-box.sysusers b/sing-box-rr/release/config/sing-box.sysusers similarity index 100% rename from release/config/sing-box.sysusers rename to sing-box-rr/release/config/sing-box.sysusers diff --git a/release/config/sing-box@.service b/sing-box-rr/release/config/sing-box@.service similarity index 100% rename from release/config/sing-box@.service rename to sing-box-rr/release/config/sing-box@.service diff --git a/release/local/common.sh b/sing-box-rr/release/local/common.sh similarity index 100% rename from release/local/common.sh rename to sing-box-rr/release/local/common.sh diff --git a/release/local/debug.sh b/sing-box-rr/release/local/debug.sh similarity index 100% rename from release/local/debug.sh rename to sing-box-rr/release/local/debug.sh diff --git a/release/local/enable.sh b/sing-box-rr/release/local/enable.sh similarity index 100% rename from release/local/enable.sh rename to sing-box-rr/release/local/enable.sh diff --git a/release/local/install.sh b/sing-box-rr/release/local/install.sh similarity index 100% rename from release/local/install.sh rename to sing-box-rr/release/local/install.sh diff --git a/release/local/install_go.sh b/sing-box-rr/release/local/install_go.sh similarity index 100% rename from release/local/install_go.sh rename to sing-box-rr/release/local/install_go.sh diff --git a/release/local/reinstall.sh b/sing-box-rr/release/local/reinstall.sh similarity index 100% rename from release/local/reinstall.sh rename to sing-box-rr/release/local/reinstall.sh diff --git a/release/local/sing-box.service b/sing-box-rr/release/local/sing-box.service similarity index 100% rename from release/local/sing-box.service rename to sing-box-rr/release/local/sing-box.service diff --git a/release/local/uninstall.sh b/sing-box-rr/release/local/uninstall.sh similarity index 100% rename from release/local/uninstall.sh rename to sing-box-rr/release/local/uninstall.sh diff --git a/release/local/update.sh b/sing-box-rr/release/local/update.sh similarity index 100% rename from release/local/update.sh rename to sing-box-rr/release/local/update.sh diff --git a/route/conn.go b/sing-box-rr/route/conn.go similarity index 100% rename from route/conn.go rename to sing-box-rr/route/conn.go diff --git a/route/dns.go b/sing-box-rr/route/dns.go similarity index 100% rename from route/dns.go rename to sing-box-rr/route/dns.go diff --git a/route/network.go b/sing-box-rr/route/network.go similarity index 100% rename from route/network.go rename to sing-box-rr/route/network.go diff --git a/route/platform_searcher.go b/sing-box-rr/route/platform_searcher.go similarity index 100% rename from route/platform_searcher.go rename to sing-box-rr/route/platform_searcher.go diff --git a/route/process_cache.go b/sing-box-rr/route/process_cache.go similarity index 100% rename from route/process_cache.go rename to sing-box-rr/route/process_cache.go diff --git a/route/route.go b/sing-box-rr/route/route.go similarity index 100% rename from route/route.go rename to sing-box-rr/route/route.go diff --git a/route/router.go b/sing-box-rr/route/router.go similarity index 100% rename from route/router.go rename to sing-box-rr/route/router.go diff --git a/route/rule/match_state.go b/sing-box-rr/route/rule/match_state.go similarity index 100% rename from route/rule/match_state.go rename to sing-box-rr/route/rule/match_state.go diff --git a/route/rule/rule_abstract.go b/sing-box-rr/route/rule/rule_abstract.go similarity index 100% rename from route/rule/rule_abstract.go rename to sing-box-rr/route/rule/rule_abstract.go diff --git a/route/rule/rule_abstract_test.go b/sing-box-rr/route/rule/rule_abstract_test.go similarity index 100% rename from route/rule/rule_abstract_test.go rename to sing-box-rr/route/rule/rule_abstract_test.go diff --git a/route/rule/rule_action.go b/sing-box-rr/route/rule/rule_action.go similarity index 100% rename from route/rule/rule_action.go rename to sing-box-rr/route/rule/rule_action.go diff --git a/route/rule/rule_default.go b/sing-box-rr/route/rule/rule_default.go similarity index 100% rename from route/rule/rule_default.go rename to sing-box-rr/route/rule/rule_default.go diff --git a/route/rule/rule_default_interface_address.go b/sing-box-rr/route/rule/rule_default_interface_address.go similarity index 100% rename from route/rule/rule_default_interface_address.go rename to sing-box-rr/route/rule/rule_default_interface_address.go diff --git a/route/rule/rule_dns.go b/sing-box-rr/route/rule/rule_dns.go similarity index 100% rename from route/rule/rule_dns.go rename to sing-box-rr/route/rule/rule_dns.go diff --git a/route/rule/rule_headless.go b/sing-box-rr/route/rule/rule_headless.go similarity index 100% rename from route/rule/rule_headless.go rename to sing-box-rr/route/rule/rule_headless.go diff --git a/route/rule/rule_interface_address.go b/sing-box-rr/route/rule/rule_interface_address.go similarity index 100% rename from route/rule/rule_interface_address.go rename to sing-box-rr/route/rule/rule_interface_address.go diff --git a/route/rule/rule_item_adguard.go b/sing-box-rr/route/rule/rule_item_adguard.go similarity index 100% rename from route/rule/rule_item_adguard.go rename to sing-box-rr/route/rule/rule_item_adguard.go diff --git a/route/rule/rule_item_auth_user.go b/sing-box-rr/route/rule/rule_item_auth_user.go similarity index 100% rename from route/rule/rule_item_auth_user.go rename to sing-box-rr/route/rule/rule_item_auth_user.go diff --git a/route/rule/rule_item_cidr.go b/sing-box-rr/route/rule/rule_item_cidr.go similarity index 100% rename from route/rule/rule_item_cidr.go rename to sing-box-rr/route/rule/rule_item_cidr.go diff --git a/route/rule/rule_item_clash_mode.go b/sing-box-rr/route/rule/rule_item_clash_mode.go similarity index 100% rename from route/rule/rule_item_clash_mode.go rename to sing-box-rr/route/rule/rule_item_clash_mode.go diff --git a/route/rule/rule_item_client.go b/sing-box-rr/route/rule/rule_item_client.go similarity index 100% rename from route/rule/rule_item_client.go rename to sing-box-rr/route/rule/rule_item_client.go diff --git a/route/rule/rule_item_domain.go b/sing-box-rr/route/rule/rule_item_domain.go similarity index 100% rename from route/rule/rule_item_domain.go rename to sing-box-rr/route/rule/rule_item_domain.go diff --git a/route/rule/rule_item_domain_keyword.go b/sing-box-rr/route/rule/rule_item_domain_keyword.go similarity index 100% rename from route/rule/rule_item_domain_keyword.go rename to sing-box-rr/route/rule/rule_item_domain_keyword.go diff --git a/route/rule/rule_item_domain_regex.go b/sing-box-rr/route/rule/rule_item_domain_regex.go similarity index 100% rename from route/rule/rule_item_domain_regex.go rename to sing-box-rr/route/rule/rule_item_domain_regex.go diff --git a/route/rule/rule_item_inbound.go b/sing-box-rr/route/rule/rule_item_inbound.go similarity index 100% rename from route/rule/rule_item_inbound.go rename to sing-box-rr/route/rule/rule_item_inbound.go diff --git a/route/rule/rule_item_ip_accept_any.go b/sing-box-rr/route/rule/rule_item_ip_accept_any.go similarity index 100% rename from route/rule/rule_item_ip_accept_any.go rename to sing-box-rr/route/rule/rule_item_ip_accept_any.go diff --git a/route/rule/rule_item_ip_is_private.go b/sing-box-rr/route/rule/rule_item_ip_is_private.go similarity index 100% rename from route/rule/rule_item_ip_is_private.go rename to sing-box-rr/route/rule/rule_item_ip_is_private.go diff --git a/route/rule/rule_item_ipversion.go b/sing-box-rr/route/rule/rule_item_ipversion.go similarity index 100% rename from route/rule/rule_item_ipversion.go rename to sing-box-rr/route/rule/rule_item_ipversion.go diff --git a/route/rule/rule_item_network.go b/sing-box-rr/route/rule/rule_item_network.go similarity index 100% rename from route/rule/rule_item_network.go rename to sing-box-rr/route/rule/rule_item_network.go diff --git a/route/rule/rule_item_network_is_constrained.go b/sing-box-rr/route/rule/rule_item_network_is_constrained.go similarity index 100% rename from route/rule/rule_item_network_is_constrained.go rename to sing-box-rr/route/rule/rule_item_network_is_constrained.go diff --git a/route/rule/rule_item_network_is_expensive.go b/sing-box-rr/route/rule/rule_item_network_is_expensive.go similarity index 100% rename from route/rule/rule_item_network_is_expensive.go rename to sing-box-rr/route/rule/rule_item_network_is_expensive.go diff --git a/route/rule/rule_item_network_type.go b/sing-box-rr/route/rule/rule_item_network_type.go similarity index 100% rename from route/rule/rule_item_network_type.go rename to sing-box-rr/route/rule/rule_item_network_type.go diff --git a/route/rule/rule_item_outbound.go b/sing-box-rr/route/rule/rule_item_outbound.go similarity index 100% rename from route/rule/rule_item_outbound.go rename to sing-box-rr/route/rule/rule_item_outbound.go diff --git a/route/rule/rule_item_package_name.go b/sing-box-rr/route/rule/rule_item_package_name.go similarity index 100% rename from route/rule/rule_item_package_name.go rename to sing-box-rr/route/rule/rule_item_package_name.go diff --git a/route/rule/rule_item_port.go b/sing-box-rr/route/rule/rule_item_port.go similarity index 100% rename from route/rule/rule_item_port.go rename to sing-box-rr/route/rule/rule_item_port.go diff --git a/route/rule/rule_item_port_range.go b/sing-box-rr/route/rule/rule_item_port_range.go similarity index 100% rename from route/rule/rule_item_port_range.go rename to sing-box-rr/route/rule/rule_item_port_range.go diff --git a/route/rule/rule_item_preferred_by.go b/sing-box-rr/route/rule/rule_item_preferred_by.go similarity index 100% rename from route/rule/rule_item_preferred_by.go rename to sing-box-rr/route/rule/rule_item_preferred_by.go diff --git a/route/rule/rule_item_process_name.go b/sing-box-rr/route/rule/rule_item_process_name.go similarity index 100% rename from route/rule/rule_item_process_name.go rename to sing-box-rr/route/rule/rule_item_process_name.go diff --git a/route/rule/rule_item_process_path.go b/sing-box-rr/route/rule/rule_item_process_path.go similarity index 100% rename from route/rule/rule_item_process_path.go rename to sing-box-rr/route/rule/rule_item_process_path.go diff --git a/route/rule/rule_item_process_path_regex.go b/sing-box-rr/route/rule/rule_item_process_path_regex.go similarity index 100% rename from route/rule/rule_item_process_path_regex.go rename to sing-box-rr/route/rule/rule_item_process_path_regex.go diff --git a/route/rule/rule_item_protocol.go b/sing-box-rr/route/rule/rule_item_protocol.go similarity index 100% rename from route/rule/rule_item_protocol.go rename to sing-box-rr/route/rule/rule_item_protocol.go diff --git a/route/rule/rule_item_query_type.go b/sing-box-rr/route/rule/rule_item_query_type.go similarity index 100% rename from route/rule/rule_item_query_type.go rename to sing-box-rr/route/rule/rule_item_query_type.go diff --git a/route/rule/rule_item_rule_set.go b/sing-box-rr/route/rule/rule_item_rule_set.go similarity index 100% rename from route/rule/rule_item_rule_set.go rename to sing-box-rr/route/rule/rule_item_rule_set.go diff --git a/route/rule/rule_item_user.go b/sing-box-rr/route/rule/rule_item_user.go similarity index 100% rename from route/rule/rule_item_user.go rename to sing-box-rr/route/rule/rule_item_user.go diff --git a/route/rule/rule_item_user_id.go b/sing-box-rr/route/rule/rule_item_user_id.go similarity index 100% rename from route/rule/rule_item_user_id.go rename to sing-box-rr/route/rule/rule_item_user_id.go diff --git a/route/rule/rule_item_wifi_bssid.go b/sing-box-rr/route/rule/rule_item_wifi_bssid.go similarity index 100% rename from route/rule/rule_item_wifi_bssid.go rename to sing-box-rr/route/rule/rule_item_wifi_bssid.go diff --git a/route/rule/rule_item_wifi_ssid.go b/sing-box-rr/route/rule/rule_item_wifi_ssid.go similarity index 100% rename from route/rule/rule_item_wifi_ssid.go rename to sing-box-rr/route/rule/rule_item_wifi_ssid.go diff --git a/route/rule/rule_network_interface_address.go b/sing-box-rr/route/rule/rule_network_interface_address.go similarity index 100% rename from route/rule/rule_network_interface_address.go rename to sing-box-rr/route/rule/rule_network_interface_address.go diff --git a/route/rule/rule_set.go b/sing-box-rr/route/rule/rule_set.go similarity index 100% rename from route/rule/rule_set.go rename to sing-box-rr/route/rule/rule_set.go diff --git a/route/rule/rule_set_local.go b/sing-box-rr/route/rule/rule_set_local.go similarity index 100% rename from route/rule/rule_set_local.go rename to sing-box-rr/route/rule/rule_set_local.go diff --git a/route/rule/rule_set_remote.go b/sing-box-rr/route/rule/rule_set_remote.go similarity index 100% rename from route/rule/rule_set_remote.go rename to sing-box-rr/route/rule/rule_set_remote.go diff --git a/route/rule/rule_set_semantics_test.go b/sing-box-rr/route/rule/rule_set_semantics_test.go similarity index 100% rename from route/rule/rule_set_semantics_test.go rename to sing-box-rr/route/rule/rule_set_semantics_test.go diff --git a/route/rule_conds.go b/sing-box-rr/route/rule_conds.go similarity index 100% rename from route/rule_conds.go rename to sing-box-rr/route/rule_conds.go diff --git a/service/admin_panel/README.md b/sing-box-rr/service/admin_panel/README.md similarity index 100% rename from service/admin_panel/README.md rename to sing-box-rr/service/admin_panel/README.md diff --git a/service/admin_panel/service.go b/sing-box-rr/service/admin_panel/service.go similarity index 100% rename from service/admin_panel/service.go rename to sing-box-rr/service/admin_panel/service.go diff --git a/service/admin_panel/service_stub.go b/sing-box-rr/service/admin_panel/service_stub.go similarity index 100% rename from service/admin_panel/service_stub.go rename to sing-box-rr/service/admin_panel/service_stub.go diff --git a/service/admin_panel/service_test.go b/sing-box-rr/service/admin_panel/service_test.go similarity index 100% rename from service/admin_panel/service_test.go rename to sing-box-rr/service/admin_panel/service_test.go diff --git a/service/admin_panel/web/.gitignore b/sing-box-rr/service/admin_panel/web/.gitignore similarity index 100% rename from service/admin_panel/web/.gitignore rename to sing-box-rr/service/admin_panel/web/.gitignore diff --git a/service/admin_panel/web/index.html b/sing-box-rr/service/admin_panel/web/index.html similarity index 100% rename from service/admin_panel/web/index.html rename to sing-box-rr/service/admin_panel/web/index.html diff --git a/service/admin_panel/web/package-lock.json b/sing-box-rr/service/admin_panel/web/package-lock.json similarity index 100% rename from service/admin_panel/web/package-lock.json rename to sing-box-rr/service/admin_panel/web/package-lock.json diff --git a/service/admin_panel/web/package.json b/sing-box-rr/service/admin_panel/web/package.json similarity index 100% rename from service/admin_panel/web/package.json rename to sing-box-rr/service/admin_panel/web/package.json diff --git a/service/admin_panel/web/src/App.tsx b/sing-box-rr/service/admin_panel/web/src/App.tsx similarity index 100% rename from service/admin_panel/web/src/App.tsx rename to sing-box-rr/service/admin_panel/web/src/App.tsx diff --git a/service/admin_panel/web/src/api/client.ts b/sing-box-rr/service/admin_panel/web/src/api/client.ts similarity index 100% rename from service/admin_panel/web/src/api/client.ts rename to sing-box-rr/service/admin_panel/web/src/api/client.ts diff --git a/service/admin_panel/web/src/api/types.ts b/sing-box-rr/service/admin_panel/web/src/api/types.ts similarity index 100% rename from service/admin_panel/web/src/api/types.ts rename to sing-box-rr/service/admin_panel/web/src/api/types.ts diff --git a/service/admin_panel/web/src/assets/icon.svg b/sing-box-rr/service/admin_panel/web/src/assets/icon.svg similarity index 100% rename from service/admin_panel/web/src/assets/icon.svg rename to sing-box-rr/service/admin_panel/web/src/assets/icon.svg diff --git a/service/admin_panel/web/src/auth/AuthContext.tsx b/sing-box-rr/service/admin_panel/web/src/auth/AuthContext.tsx similarity index 100% rename from service/admin_panel/web/src/auth/AuthContext.tsx rename to sing-box-rr/service/admin_panel/web/src/auth/AuthContext.tsx diff --git a/service/admin_panel/web/src/components/ColorPickerButton.tsx b/sing-box-rr/service/admin_panel/web/src/components/ColorPickerButton.tsx similarity index 100% rename from service/admin_panel/web/src/components/ColorPickerButton.tsx rename to sing-box-rr/service/admin_panel/web/src/components/ColorPickerButton.tsx diff --git a/service/admin_panel/web/src/components/CopyableId.tsx b/sing-box-rr/service/admin_panel/web/src/components/CopyableId.tsx similarity index 100% rename from service/admin_panel/web/src/components/CopyableId.tsx rename to sing-box-rr/service/admin_panel/web/src/components/CopyableId.tsx diff --git a/service/admin_panel/web/src/components/CrudPage.tsx b/sing-box-rr/service/admin_panel/web/src/components/CrudPage.tsx similarity index 100% rename from service/admin_panel/web/src/components/CrudPage.tsx rename to sing-box-rr/service/admin_panel/web/src/components/CrudPage.tsx diff --git a/service/admin_panel/web/src/components/Layout.tsx b/sing-box-rr/service/admin_panel/web/src/components/Layout.tsx similarity index 100% rename from service/admin_panel/web/src/components/Layout.tsx rename to sing-box-rr/service/admin_panel/web/src/components/Layout.tsx diff --git a/service/admin_panel/web/src/components/LoginBackdropMesh.tsx b/sing-box-rr/service/admin_panel/web/src/components/LoginBackdropMesh.tsx similarity index 100% rename from service/admin_panel/web/src/components/LoginBackdropMesh.tsx rename to sing-box-rr/service/admin_panel/web/src/components/LoginBackdropMesh.tsx diff --git a/service/admin_panel/web/src/components/LoginThemeControls.tsx b/sing-box-rr/service/admin_panel/web/src/components/LoginThemeControls.tsx similarity index 100% rename from service/admin_panel/web/src/components/LoginThemeControls.tsx rename to sing-box-rr/service/admin_panel/web/src/components/LoginThemeControls.tsx diff --git a/service/admin_panel/web/src/components/PageHeader.tsx b/sing-box-rr/service/admin_panel/web/src/components/PageHeader.tsx similarity index 100% rename from service/admin_panel/web/src/components/PageHeader.tsx rename to sing-box-rr/service/admin_panel/web/src/components/PageHeader.tsx diff --git a/service/admin_panel/web/src/main.tsx b/sing-box-rr/service/admin_panel/web/src/main.tsx similarity index 100% rename from service/admin_panel/web/src/main.tsx rename to sing-box-rr/service/admin_panel/web/src/main.tsx diff --git a/service/admin_panel/web/src/notifications/NotificationsProvider.tsx b/sing-box-rr/service/admin_panel/web/src/notifications/NotificationsProvider.tsx similarity index 100% rename from service/admin_panel/web/src/notifications/NotificationsProvider.tsx rename to sing-box-rr/service/admin_panel/web/src/notifications/NotificationsProvider.tsx diff --git a/service/admin_panel/web/src/pages/BandwidthLimitersPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/BandwidthLimitersPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/BandwidthLimitersPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/BandwidthLimitersPage.tsx diff --git a/service/admin_panel/web/src/pages/ConnectionLimitersPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/ConnectionLimitersPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/ConnectionLimitersPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/ConnectionLimitersPage.tsx diff --git a/service/admin_panel/web/src/pages/DashboardPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/DashboardPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/DashboardPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/DashboardPage.tsx diff --git a/service/admin_panel/web/src/pages/LoginPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/LoginPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/LoginPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/LoginPage.tsx diff --git a/service/admin_panel/web/src/pages/NodesPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/NodesPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/NodesPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/NodesPage.tsx diff --git a/service/admin_panel/web/src/pages/RateLimitersPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/RateLimitersPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/RateLimitersPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/RateLimitersPage.tsx diff --git a/service/admin_panel/web/src/pages/SquadsPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/SquadsPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/SquadsPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/SquadsPage.tsx diff --git a/service/admin_panel/web/src/pages/TrafficLimitersPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/TrafficLimitersPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/TrafficLimitersPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/TrafficLimitersPage.tsx diff --git a/service/admin_panel/web/src/pages/UsersPage.tsx b/sing-box-rr/service/admin_panel/web/src/pages/UsersPage.tsx similarity index 100% rename from service/admin_panel/web/src/pages/UsersPage.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/UsersPage.tsx diff --git a/service/admin_panel/web/src/pages/squadField.tsx b/sing-box-rr/service/admin_panel/web/src/pages/squadField.tsx similarity index 100% rename from service/admin_panel/web/src/pages/squadField.tsx rename to sing-box-rr/service/admin_panel/web/src/pages/squadField.tsx diff --git a/service/admin_panel/web/src/theme.ts b/sing-box-rr/service/admin_panel/web/src/theme.ts similarity index 100% rename from service/admin_panel/web/src/theme.ts rename to sing-box-rr/service/admin_panel/web/src/theme.ts diff --git a/service/admin_panel/web/src/theme/AppThemeProvider.tsx b/sing-box-rr/service/admin_panel/web/src/theme/AppThemeProvider.tsx similarity index 100% rename from service/admin_panel/web/src/theme/AppThemeProvider.tsx rename to sing-box-rr/service/admin_panel/web/src/theme/AppThemeProvider.tsx diff --git a/service/admin_panel/web/src/vite-env.d.ts b/sing-box-rr/service/admin_panel/web/src/vite-env.d.ts similarity index 100% rename from service/admin_panel/web/src/vite-env.d.ts rename to sing-box-rr/service/admin_panel/web/src/vite-env.d.ts diff --git a/service/admin_panel/web/tsconfig.json b/sing-box-rr/service/admin_panel/web/tsconfig.json similarity index 100% rename from service/admin_panel/web/tsconfig.json rename to sing-box-rr/service/admin_panel/web/tsconfig.json diff --git a/service/admin_panel/web/tsconfig.tsbuildinfo b/sing-box-rr/service/admin_panel/web/tsconfig.tsbuildinfo similarity index 100% rename from service/admin_panel/web/tsconfig.tsbuildinfo rename to sing-box-rr/service/admin_panel/web/tsconfig.tsbuildinfo diff --git a/service/admin_panel/web/vite.config.ts b/sing-box-rr/service/admin_panel/web/vite.config.ts similarity index 100% rename from service/admin_panel/web/vite.config.ts rename to sing-box-rr/service/admin_panel/web/vite.config.ts diff --git a/service/ccm/credential.go b/sing-box-rr/service/ccm/credential.go similarity index 100% rename from service/ccm/credential.go rename to sing-box-rr/service/ccm/credential.go diff --git a/service/ccm/credential_darwin.go b/sing-box-rr/service/ccm/credential_darwin.go similarity index 100% rename from service/ccm/credential_darwin.go rename to sing-box-rr/service/ccm/credential_darwin.go diff --git a/service/ccm/credential_other.go b/sing-box-rr/service/ccm/credential_other.go similarity index 100% rename from service/ccm/credential_other.go rename to sing-box-rr/service/ccm/credential_other.go diff --git a/service/ccm/service.go b/sing-box-rr/service/ccm/service.go similarity index 100% rename from service/ccm/service.go rename to sing-box-rr/service/ccm/service.go diff --git a/service/ccm/service_usage.go b/sing-box-rr/service/ccm/service_usage.go similarity index 100% rename from service/ccm/service_usage.go rename to sing-box-rr/service/ccm/service_usage.go diff --git a/service/ccm/service_user.go b/sing-box-rr/service/ccm/service_user.go similarity index 100% rename from service/ccm/service_user.go rename to sing-box-rr/service/ccm/service_user.go diff --git a/service/derp/service.go b/sing-box-rr/service/derp/service.go similarity index 100% rename from service/derp/service.go rename to sing-box-rr/service/derp/service.go diff --git a/service/manager/constant/dto.go b/sing-box-rr/service/manager/constant/dto.go similarity index 100% rename from service/manager/constant/dto.go rename to sing-box-rr/service/manager/constant/dto.go diff --git a/service/manager/constant/error.go b/sing-box-rr/service/manager/constant/error.go similarity index 100% rename from service/manager/constant/error.go rename to sing-box-rr/service/manager/constant/error.go diff --git a/service/manager/constant/manager.go b/sing-box-rr/service/manager/constant/manager.go similarity index 100% rename from service/manager/constant/manager.go rename to sing-box-rr/service/manager/constant/manager.go diff --git a/service/manager/constant/node.go b/sing-box-rr/service/manager/constant/node.go similarity index 100% rename from service/manager/constant/node.go rename to sing-box-rr/service/manager/constant/node.go diff --git a/service/manager/constant/repository.go b/sing-box-rr/service/manager/constant/repository.go similarity index 100% rename from service/manager/constant/repository.go rename to sing-box-rr/service/manager/constant/repository.go diff --git a/service/manager/repository/postgresql/filter.go b/sing-box-rr/service/manager/repository/postgresql/filter.go similarity index 100% rename from service/manager/repository/postgresql/filter.go rename to sing-box-rr/service/manager/repository/postgresql/filter.go diff --git a/service/manager/repository/postgresql/migration.go b/sing-box-rr/service/manager/repository/postgresql/migration.go similarity index 100% rename from service/manager/repository/postgresql/migration.go rename to sing-box-rr/service/manager/repository/postgresql/migration.go diff --git a/service/manager/repository/postgresql/repository.go b/sing-box-rr/service/manager/repository/postgresql/repository.go similarity index 100% rename from service/manager/repository/postgresql/repository.go rename to sing-box-rr/service/manager/repository/postgresql/repository.go diff --git a/service/manager/repository/postgresql/utils.go b/sing-box-rr/service/manager/repository/postgresql/utils.go similarity index 100% rename from service/manager/repository/postgresql/utils.go rename to sing-box-rr/service/manager/repository/postgresql/utils.go diff --git a/service/manager/repository/sqlite/filter.go b/sing-box-rr/service/manager/repository/sqlite/filter.go similarity index 100% rename from service/manager/repository/sqlite/filter.go rename to sing-box-rr/service/manager/repository/sqlite/filter.go diff --git a/service/manager/repository/sqlite/migration.go b/sing-box-rr/service/manager/repository/sqlite/migration.go similarity index 100% rename from service/manager/repository/sqlite/migration.go rename to sing-box-rr/service/manager/repository/sqlite/migration.go diff --git a/service/manager/repository/sqlite/repository.go b/sing-box-rr/service/manager/repository/sqlite/repository.go similarity index 100% rename from service/manager/repository/sqlite/repository.go rename to sing-box-rr/service/manager/repository/sqlite/repository.go diff --git a/service/manager/repository/sqlite/utils.go b/sing-box-rr/service/manager/repository/sqlite/utils.go similarity index 100% rename from service/manager/repository/sqlite/utils.go rename to sing-box-rr/service/manager/repository/sqlite/utils.go diff --git a/service/manager/service.go b/sing-box-rr/service/manager/service.go similarity index 100% rename from service/manager/service.go rename to sing-box-rr/service/manager/service.go diff --git a/service/manager/service_stub.go b/sing-box-rr/service/manager/service_stub.go similarity index 100% rename from service/manager/service_stub.go rename to sing-box-rr/service/manager/service_stub.go diff --git a/service/manager_api/grpc/client/client.go b/sing-box-rr/service/manager_api/grpc/client/client.go similarity index 100% rename from service/manager_api/grpc/client/client.go rename to sing-box-rr/service/manager_api/grpc/client/client.go diff --git a/service/manager_api/grpc/client/converter.go b/sing-box-rr/service/manager_api/grpc/client/converter.go similarity index 100% rename from service/manager_api/grpc/client/converter.go rename to sing-box-rr/service/manager_api/grpc/client/converter.go diff --git a/service/manager_api/grpc/client/manager.go b/sing-box-rr/service/manager_api/grpc/client/manager.go similarity index 100% rename from service/manager_api/grpc/client/manager.go rename to sing-box-rr/service/manager_api/grpc/client/manager.go diff --git a/service/manager_api/grpc/client/tls.go b/sing-box-rr/service/manager_api/grpc/client/tls.go similarity index 100% rename from service/manager_api/grpc/client/tls.go rename to sing-box-rr/service/manager_api/grpc/client/tls.go diff --git a/service/manager_api/grpc/manager/manager.pb.go b/sing-box-rr/service/manager_api/grpc/manager/manager.pb.go similarity index 100% rename from service/manager_api/grpc/manager/manager.pb.go rename to sing-box-rr/service/manager_api/grpc/manager/manager.pb.go diff --git a/service/manager_api/grpc/manager/manager.proto b/sing-box-rr/service/manager_api/grpc/manager/manager.proto similarity index 100% rename from service/manager_api/grpc/manager/manager.proto rename to sing-box-rr/service/manager_api/grpc/manager/manager.proto diff --git a/service/manager_api/grpc/manager/manager_grpc.pb.go b/sing-box-rr/service/manager_api/grpc/manager/manager_grpc.pb.go similarity index 100% rename from service/manager_api/grpc/manager/manager_grpc.pb.go rename to sing-box-rr/service/manager_api/grpc/manager/manager_grpc.pb.go diff --git a/service/manager_api/grpc/server/converter.go b/sing-box-rr/service/manager_api/grpc/server/converter.go similarity index 100% rename from service/manager_api/grpc/server/converter.go rename to sing-box-rr/service/manager_api/grpc/server/converter.go diff --git a/service/manager_api/grpc/server/rpc.go b/sing-box-rr/service/manager_api/grpc/server/rpc.go similarity index 100% rename from service/manager_api/grpc/server/rpc.go rename to sing-box-rr/service/manager_api/grpc/server/rpc.go diff --git a/service/manager_api/grpc/server/server.go b/sing-box-rr/service/manager_api/grpc/server/server.go similarity index 100% rename from service/manager_api/grpc/server/server.go rename to sing-box-rr/service/manager_api/grpc/server/server.go diff --git a/service/manager_api/http/client/client.go b/sing-box-rr/service/manager_api/http/client/client.go similarity index 100% rename from service/manager_api/http/client/client.go rename to sing-box-rr/service/manager_api/http/client/client.go diff --git a/service/manager_api/http/client/manager.go b/sing-box-rr/service/manager_api/http/client/manager.go similarity index 100% rename from service/manager_api/http/client/manager.go rename to sing-box-rr/service/manager_api/http/client/manager.go diff --git a/service/manager_api/http/server/openapi.yaml b/sing-box-rr/service/manager_api/http/server/openapi.yaml similarity index 100% rename from service/manager_api/http/server/openapi.yaml rename to sing-box-rr/service/manager_api/http/server/openapi.yaml diff --git a/service/manager_api/http/server/server.go b/sing-box-rr/service/manager_api/http/server/server.go similarity index 100% rename from service/manager_api/http/server/server.go rename to sing-box-rr/service/manager_api/http/server/server.go diff --git a/service/manager_api/http/server/server_test.go b/sing-box-rr/service/manager_api/http/server/server_test.go similarity index 100% rename from service/manager_api/http/server/server_test.go rename to sing-box-rr/service/manager_api/http/server/server_test.go diff --git a/service/manager_api/http/server/swagger.go b/sing-box-rr/service/manager_api/http/server/swagger.go similarity index 100% rename from service/manager_api/http/server/swagger.go rename to sing-box-rr/service/manager_api/http/server/swagger.go diff --git a/service/manager_api/service.go b/sing-box-rr/service/manager_api/service.go similarity index 100% rename from service/manager_api/service.go rename to sing-box-rr/service/manager_api/service.go diff --git a/service/node/constant/bandwidth.go b/sing-box-rr/service/node/constant/bandwidth.go similarity index 100% rename from service/node/constant/bandwidth.go rename to sing-box-rr/service/node/constant/bandwidth.go diff --git a/service/node/constant/connection.go b/sing-box-rr/service/node/constant/connection.go similarity index 100% rename from service/node/constant/connection.go rename to sing-box-rr/service/node/constant/connection.go diff --git a/service/node/constant/inbound.go b/sing-box-rr/service/node/constant/inbound.go similarity index 100% rename from service/node/constant/inbound.go rename to sing-box-rr/service/node/constant/inbound.go diff --git a/service/node/constant/rate.go b/sing-box-rr/service/node/constant/rate.go similarity index 100% rename from service/node/constant/rate.go rename to sing-box-rr/service/node/constant/rate.go diff --git a/service/node/constant/traffic.go b/sing-box-rr/service/node/constant/traffic.go similarity index 100% rename from service/node/constant/traffic.go rename to sing-box-rr/service/node/constant/traffic.go diff --git a/service/node/inbound/hysteria.go b/sing-box-rr/service/node/inbound/hysteria.go similarity index 100% rename from service/node/inbound/hysteria.go rename to sing-box-rr/service/node/inbound/hysteria.go diff --git a/service/node/inbound/hysteria2.go b/sing-box-rr/service/node/inbound/hysteria2.go similarity index 100% rename from service/node/inbound/hysteria2.go rename to sing-box-rr/service/node/inbound/hysteria2.go diff --git a/service/node/inbound/mtproxy.go b/sing-box-rr/service/node/inbound/mtproxy.go similarity index 100% rename from service/node/inbound/mtproxy.go rename to sing-box-rr/service/node/inbound/mtproxy.go diff --git a/service/node/inbound/trojan.go b/sing-box-rr/service/node/inbound/trojan.go similarity index 100% rename from service/node/inbound/trojan.go rename to sing-box-rr/service/node/inbound/trojan.go diff --git a/service/node/inbound/tuic.go b/sing-box-rr/service/node/inbound/tuic.go similarity index 100% rename from service/node/inbound/tuic.go rename to sing-box-rr/service/node/inbound/tuic.go diff --git a/service/node/inbound/vless.go b/sing-box-rr/service/node/inbound/vless.go similarity index 100% rename from service/node/inbound/vless.go rename to sing-box-rr/service/node/inbound/vless.go diff --git a/service/node/inbound/vmess.go b/sing-box-rr/service/node/inbound/vmess.go similarity index 100% rename from service/node/inbound/vmess.go rename to sing-box-rr/service/node/inbound/vmess.go diff --git a/service/node/limiter/bandwidth.go b/sing-box-rr/service/node/limiter/bandwidth.go similarity index 100% rename from service/node/limiter/bandwidth.go rename to sing-box-rr/service/node/limiter/bandwidth.go diff --git a/service/node/limiter/connection.go b/sing-box-rr/service/node/limiter/connection.go similarity index 100% rename from service/node/limiter/connection.go rename to sing-box-rr/service/node/limiter/connection.go diff --git a/service/node/limiter/rate.go b/sing-box-rr/service/node/limiter/rate.go similarity index 100% rename from service/node/limiter/rate.go rename to sing-box-rr/service/node/limiter/rate.go diff --git a/service/node/limiter/traffic.go b/sing-box-rr/service/node/limiter/traffic.go similarity index 100% rename from service/node/limiter/traffic.go rename to sing-box-rr/service/node/limiter/traffic.go diff --git a/service/node/service.go b/sing-box-rr/service/node/service.go similarity index 100% rename from service/node/service.go rename to sing-box-rr/service/node/service.go diff --git a/service/node_manager_api/client/client.go b/sing-box-rr/service/node_manager_api/client/client.go similarity index 100% rename from service/node_manager_api/client/client.go rename to sing-box-rr/service/node_manager_api/client/client.go diff --git a/service/node_manager_api/client/tls.go b/sing-box-rr/service/node_manager_api/client/tls.go similarity index 100% rename from service/node_manager_api/client/tls.go rename to sing-box-rr/service/node_manager_api/client/tls.go diff --git a/service/node_manager_api/manager/manager.pb.go b/sing-box-rr/service/node_manager_api/manager/manager.pb.go similarity index 100% rename from service/node_manager_api/manager/manager.pb.go rename to sing-box-rr/service/node_manager_api/manager/manager.pb.go diff --git a/service/node_manager_api/manager/manager.proto b/sing-box-rr/service/node_manager_api/manager/manager.proto similarity index 100% rename from service/node_manager_api/manager/manager.proto rename to sing-box-rr/service/node_manager_api/manager/manager.proto diff --git a/service/node_manager_api/manager/manager_grpc.pb.go b/sing-box-rr/service/node_manager_api/manager/manager_grpc.pb.go similarity index 100% rename from service/node_manager_api/manager/manager_grpc.pb.go rename to sing-box-rr/service/node_manager_api/manager/manager_grpc.pb.go diff --git a/service/node_manager_api/server/node.go b/sing-box-rr/service/node_manager_api/server/node.go similarity index 100% rename from service/node_manager_api/server/node.go rename to sing-box-rr/service/node_manager_api/server/node.go diff --git a/service/node_manager_api/server/server.go b/sing-box-rr/service/node_manager_api/server/server.go similarity index 100% rename from service/node_manager_api/server/server.go rename to sing-box-rr/service/node_manager_api/server/server.go diff --git a/service/node_manager_api/service.go b/sing-box-rr/service/node_manager_api/service.go similarity index 100% rename from service/node_manager_api/service.go rename to sing-box-rr/service/node_manager_api/service.go diff --git a/service/ocm/credential.go b/sing-box-rr/service/ocm/credential.go similarity index 100% rename from service/ocm/credential.go rename to sing-box-rr/service/ocm/credential.go diff --git a/service/ocm/credential_darwin.go b/sing-box-rr/service/ocm/credential_darwin.go similarity index 100% rename from service/ocm/credential_darwin.go rename to sing-box-rr/service/ocm/credential_darwin.go diff --git a/service/ocm/credential_other.go b/sing-box-rr/service/ocm/credential_other.go similarity index 100% rename from service/ocm/credential_other.go rename to sing-box-rr/service/ocm/credential_other.go diff --git a/service/ocm/service.go b/sing-box-rr/service/ocm/service.go similarity index 100% rename from service/ocm/service.go rename to sing-box-rr/service/ocm/service.go diff --git a/service/ocm/service_usage.go b/sing-box-rr/service/ocm/service_usage.go similarity index 100% rename from service/ocm/service_usage.go rename to sing-box-rr/service/ocm/service_usage.go diff --git a/service/ocm/service_user.go b/sing-box-rr/service/ocm/service_user.go similarity index 100% rename from service/ocm/service_user.go rename to sing-box-rr/service/ocm/service_user.go diff --git a/service/ocm/service_websocket.go b/sing-box-rr/service/ocm/service_websocket.go similarity index 100% rename from service/ocm/service_websocket.go rename to sing-box-rr/service/ocm/service_websocket.go diff --git a/service/oomkiller/config.go b/sing-box-rr/service/oomkiller/config.go similarity index 100% rename from service/oomkiller/config.go rename to sing-box-rr/service/oomkiller/config.go diff --git a/service/oomkiller/service.go b/sing-box-rr/service/oomkiller/service.go similarity index 100% rename from service/oomkiller/service.go rename to sing-box-rr/service/oomkiller/service.go diff --git a/service/oomkiller/service_stub.go b/sing-box-rr/service/oomkiller/service_stub.go similarity index 100% rename from service/oomkiller/service_stub.go rename to sing-box-rr/service/oomkiller/service_stub.go diff --git a/service/oomkiller/service_timer.go b/sing-box-rr/service/oomkiller/service_timer.go similarity index 100% rename from service/oomkiller/service_timer.go rename to sing-box-rr/service/oomkiller/service_timer.go diff --git a/service/profiler/service.go b/sing-box-rr/service/profiler/service.go similarity index 100% rename from service/profiler/service.go rename to sing-box-rr/service/profiler/service.go diff --git a/service/resolved/resolve1.go b/sing-box-rr/service/resolved/resolve1.go similarity index 100% rename from service/resolved/resolve1.go rename to sing-box-rr/service/resolved/resolve1.go diff --git a/service/resolved/service.go b/sing-box-rr/service/resolved/service.go similarity index 100% rename from service/resolved/service.go rename to sing-box-rr/service/resolved/service.go diff --git a/service/resolved/stub.go b/sing-box-rr/service/resolved/stub.go similarity index 100% rename from service/resolved/stub.go rename to sing-box-rr/service/resolved/stub.go diff --git a/service/resolved/transport.go b/sing-box-rr/service/resolved/transport.go similarity index 100% rename from service/resolved/transport.go rename to sing-box-rr/service/resolved/transport.go diff --git a/service/ssmapi/api.go b/sing-box-rr/service/ssmapi/api.go similarity index 100% rename from service/ssmapi/api.go rename to sing-box-rr/service/ssmapi/api.go diff --git a/service/ssmapi/cache.go b/sing-box-rr/service/ssmapi/cache.go similarity index 100% rename from service/ssmapi/cache.go rename to sing-box-rr/service/ssmapi/cache.go diff --git a/service/ssmapi/server.go b/sing-box-rr/service/ssmapi/server.go similarity index 100% rename from service/ssmapi/server.go rename to sing-box-rr/service/ssmapi/server.go diff --git a/service/ssmapi/traffic.go b/sing-box-rr/service/ssmapi/traffic.go similarity index 100% rename from service/ssmapi/traffic.go rename to sing-box-rr/service/ssmapi/traffic.go diff --git a/service/ssmapi/user.go b/sing-box-rr/service/ssmapi/user.go similarity index 100% rename from service/ssmapi/user.go rename to sing-box-rr/service/ssmapi/user.go diff --git a/test/box_test.go b/sing-box-rr/test/box_test.go similarity index 100% rename from test/box_test.go rename to sing-box-rr/test/box_test.go diff --git a/test/brutal_test.go b/sing-box-rr/test/brutal_test.go similarity index 100% rename from test/brutal_test.go rename to sing-box-rr/test/brutal_test.go diff --git a/test/clash_darwin_test.go b/sing-box-rr/test/clash_darwin_test.go similarity index 100% rename from test/clash_darwin_test.go rename to sing-box-rr/test/clash_darwin_test.go diff --git a/test/clash_other_test.go b/sing-box-rr/test/clash_other_test.go similarity index 100% rename from test/clash_other_test.go rename to sing-box-rr/test/clash_other_test.go diff --git a/test/clash_test.go b/sing-box-rr/test/clash_test.go similarity index 100% rename from test/clash_test.go rename to sing-box-rr/test/clash_test.go diff --git a/test/config/hysteria-client.json b/sing-box-rr/test/config/hysteria-client.json similarity index 100% rename from test/config/hysteria-client.json rename to sing-box-rr/test/config/hysteria-client.json diff --git a/test/config/hysteria-server.json b/sing-box-rr/test/config/hysteria-server.json similarity index 100% rename from test/config/hysteria-server.json rename to sing-box-rr/test/config/hysteria-server.json diff --git a/test/config/hysteria2-client.yml b/sing-box-rr/test/config/hysteria2-client.yml similarity index 100% rename from test/config/hysteria2-client.yml rename to sing-box-rr/test/config/hysteria2-client.yml diff --git a/test/config/hysteria2-server.yml b/sing-box-rr/test/config/hysteria2-server.yml similarity index 100% rename from test/config/hysteria2-server.yml rename to sing-box-rr/test/config/hysteria2-server.yml diff --git a/test/config/naive-nginx.conf b/sing-box-rr/test/config/naive-nginx.conf similarity index 100% rename from test/config/naive-nginx.conf rename to sing-box-rr/test/config/naive-nginx.conf diff --git a/test/config/naive-quic.json b/sing-box-rr/test/config/naive-quic.json similarity index 100% rename from test/config/naive-quic.json rename to sing-box-rr/test/config/naive-quic.json diff --git a/test/config/naive.json b/sing-box-rr/test/config/naive.json similarity index 100% rename from test/config/naive.json rename to sing-box-rr/test/config/naive.json diff --git a/test/config/nginx.conf b/sing-box-rr/test/config/nginx.conf similarity index 100% rename from test/config/nginx.conf rename to sing-box-rr/test/config/nginx.conf diff --git a/test/config/shadowsocksr.json b/sing-box-rr/test/config/shadowsocksr.json similarity index 100% rename from test/config/shadowsocksr.json rename to sing-box-rr/test/config/shadowsocksr.json diff --git a/test/config/trojan.json b/sing-box-rr/test/config/trojan.json similarity index 100% rename from test/config/trojan.json rename to sing-box-rr/test/config/trojan.json diff --git a/test/config/tuic-client.json b/sing-box-rr/test/config/tuic-client.json similarity index 100% rename from test/config/tuic-client.json rename to sing-box-rr/test/config/tuic-client.json diff --git a/test/config/tuic-server.json b/sing-box-rr/test/config/tuic-server.json similarity index 100% rename from test/config/tuic-server.json rename to sing-box-rr/test/config/tuic-server.json diff --git a/test/config/vless-server.json b/sing-box-rr/test/config/vless-server.json similarity index 100% rename from test/config/vless-server.json rename to sing-box-rr/test/config/vless-server.json diff --git a/test/config/vless-tls-client.json b/sing-box-rr/test/config/vless-tls-client.json similarity index 100% rename from test/config/vless-tls-client.json rename to sing-box-rr/test/config/vless-tls-client.json diff --git a/test/config/vless-tls-server.json b/sing-box-rr/test/config/vless-tls-server.json similarity index 100% rename from test/config/vless-tls-server.json rename to sing-box-rr/test/config/vless-tls-server.json diff --git a/test/config/vmess-client.json b/sing-box-rr/test/config/vmess-client.json similarity index 100% rename from test/config/vmess-client.json rename to sing-box-rr/test/config/vmess-client.json diff --git a/test/config/vmess-grpc-client.json b/sing-box-rr/test/config/vmess-grpc-client.json similarity index 100% rename from test/config/vmess-grpc-client.json rename to sing-box-rr/test/config/vmess-grpc-client.json diff --git a/test/config/vmess-grpc-server.json b/sing-box-rr/test/config/vmess-grpc-server.json similarity index 100% rename from test/config/vmess-grpc-server.json rename to sing-box-rr/test/config/vmess-grpc-server.json diff --git a/test/config/vmess-mux-client.json b/sing-box-rr/test/config/vmess-mux-client.json similarity index 100% rename from test/config/vmess-mux-client.json rename to sing-box-rr/test/config/vmess-mux-client.json diff --git a/test/config/vmess-server.json b/sing-box-rr/test/config/vmess-server.json similarity index 100% rename from test/config/vmess-server.json rename to sing-box-rr/test/config/vmess-server.json diff --git a/test/config/vmess-ws-client.json b/sing-box-rr/test/config/vmess-ws-client.json similarity index 100% rename from test/config/vmess-ws-client.json rename to sing-box-rr/test/config/vmess-ws-client.json diff --git a/test/config/vmess-ws-server.json b/sing-box-rr/test/config/vmess-ws-server.json similarity index 100% rename from test/config/vmess-ws-server.json rename to sing-box-rr/test/config/vmess-ws-server.json diff --git a/test/config/wireguard.conf b/sing-box-rr/test/config/wireguard.conf similarity index 100% rename from test/config/wireguard.conf rename to sing-box-rr/test/config/wireguard.conf diff --git a/test/direct_test.go b/sing-box-rr/test/direct_test.go similarity index 100% rename from test/direct_test.go rename to sing-box-rr/test/direct_test.go diff --git a/test/docker_test.go b/sing-box-rr/test/docker_test.go similarity index 100% rename from test/docker_test.go rename to sing-box-rr/test/docker_test.go diff --git a/test/domain_inbound_test.go b/sing-box-rr/test/domain_inbound_test.go similarity index 100% rename from test/domain_inbound_test.go rename to sing-box-rr/test/domain_inbound_test.go diff --git a/test/ech_test.go b/sing-box-rr/test/ech_test.go similarity index 100% rename from test/ech_test.go rename to sing-box-rr/test/ech_test.go diff --git a/test/go.mod b/sing-box-rr/test/go.mod similarity index 100% rename from test/go.mod rename to sing-box-rr/test/go.mod diff --git a/test/go.sum b/sing-box-rr/test/go.sum similarity index 100% rename from test/go.sum rename to sing-box-rr/test/go.sum diff --git a/test/http_test.go b/sing-box-rr/test/http_test.go similarity index 100% rename from test/http_test.go rename to sing-box-rr/test/http_test.go diff --git a/test/hysteria2_test.go b/sing-box-rr/test/hysteria2_test.go similarity index 100% rename from test/hysteria2_test.go rename to sing-box-rr/test/hysteria2_test.go diff --git a/test/hysteria_test.go b/sing-box-rr/test/hysteria_test.go similarity index 100% rename from test/hysteria_test.go rename to sing-box-rr/test/hysteria_test.go diff --git a/test/inbound_detour_test.go b/sing-box-rr/test/inbound_detour_test.go similarity index 100% rename from test/inbound_detour_test.go rename to sing-box-rr/test/inbound_detour_test.go diff --git a/test/ktls_test.go b/sing-box-rr/test/ktls_test.go similarity index 100% rename from test/ktls_test.go rename to sing-box-rr/test/ktls_test.go diff --git a/test/mkcert.go b/sing-box-rr/test/mkcert.go similarity index 100% rename from test/mkcert.go rename to sing-box-rr/test/mkcert.go diff --git a/test/mux_cool_test.go b/sing-box-rr/test/mux_cool_test.go similarity index 100% rename from test/mux_cool_test.go rename to sing-box-rr/test/mux_cool_test.go diff --git a/test/mux_test.go b/sing-box-rr/test/mux_test.go similarity index 100% rename from test/mux_test.go rename to sing-box-rr/test/mux_test.go diff --git a/test/naive_self_test.go b/sing-box-rr/test/naive_self_test.go similarity index 100% rename from test/naive_self_test.go rename to sing-box-rr/test/naive_self_test.go diff --git a/test/naive_test.go b/sing-box-rr/test/naive_test.go similarity index 100% rename from test/naive_test.go rename to sing-box-rr/test/naive_test.go diff --git a/test/reality_test.go b/sing-box-rr/test/reality_test.go similarity index 100% rename from test/reality_test.go rename to sing-box-rr/test/reality_test.go diff --git a/test/shadowsocks_legacy_test.go b/sing-box-rr/test/shadowsocks_legacy_test.go similarity index 100% rename from test/shadowsocks_legacy_test.go rename to sing-box-rr/test/shadowsocks_legacy_test.go diff --git a/test/shadowsocks_test.go b/sing-box-rr/test/shadowsocks_test.go similarity index 100% rename from test/shadowsocks_test.go rename to sing-box-rr/test/shadowsocks_test.go diff --git a/test/shadowtls_test.go b/sing-box-rr/test/shadowtls_test.go similarity index 100% rename from test/shadowtls_test.go rename to sing-box-rr/test/shadowtls_test.go diff --git a/test/socks_test.go b/sing-box-rr/test/socks_test.go similarity index 100% rename from test/socks_test.go rename to sing-box-rr/test/socks_test.go diff --git a/test/ss_plugin_test.go b/sing-box-rr/test/ss_plugin_test.go similarity index 100% rename from test/ss_plugin_test.go rename to sing-box-rr/test/ss_plugin_test.go diff --git a/test/tfo_test.go b/sing-box-rr/test/tfo_test.go similarity index 100% rename from test/tfo_test.go rename to sing-box-rr/test/tfo_test.go diff --git a/test/tls_test.go b/sing-box-rr/test/tls_test.go similarity index 100% rename from test/tls_test.go rename to sing-box-rr/test/tls_test.go diff --git a/test/trojan_test.go b/sing-box-rr/test/trojan_test.go similarity index 100% rename from test/trojan_test.go rename to sing-box-rr/test/trojan_test.go diff --git a/test/tuic_test.go b/sing-box-rr/test/tuic_test.go similarity index 100% rename from test/tuic_test.go rename to sing-box-rr/test/tuic_test.go diff --git a/test/v2ray_api_test.go b/sing-box-rr/test/v2ray_api_test.go similarity index 100% rename from test/v2ray_api_test.go rename to sing-box-rr/test/v2ray_api_test.go diff --git a/test/v2ray_grpc_test.go b/sing-box-rr/test/v2ray_grpc_test.go similarity index 100% rename from test/v2ray_grpc_test.go rename to sing-box-rr/test/v2ray_grpc_test.go diff --git a/test/v2ray_httpupgrade_test.go b/sing-box-rr/test/v2ray_httpupgrade_test.go similarity index 100% rename from test/v2ray_httpupgrade_test.go rename to sing-box-rr/test/v2ray_httpupgrade_test.go diff --git a/test/v2ray_transport_test.go b/sing-box-rr/test/v2ray_transport_test.go similarity index 100% rename from test/v2ray_transport_test.go rename to sing-box-rr/test/v2ray_transport_test.go diff --git a/test/v2ray_ws_test.go b/sing-box-rr/test/v2ray_ws_test.go similarity index 100% rename from test/v2ray_ws_test.go rename to sing-box-rr/test/v2ray_ws_test.go diff --git a/test/vmess_test.go b/sing-box-rr/test/vmess_test.go similarity index 100% rename from test/vmess_test.go rename to sing-box-rr/test/vmess_test.go diff --git a/test/wrapper_test.go b/sing-box-rr/test/wrapper_test.go similarity index 100% rename from test/wrapper_test.go rename to sing-box-rr/test/wrapper_test.go diff --git a/transport/masque/adapter.go b/sing-box-rr/transport/masque/adapter.go similarity index 100% rename from transport/masque/adapter.go rename to sing-box-rr/transport/masque/adapter.go diff --git a/transport/masque/buffer.go b/sing-box-rr/transport/masque/buffer.go similarity index 100% rename from transport/masque/buffer.go rename to sing-box-rr/transport/masque/buffer.go diff --git a/transport/masque/device.go b/sing-box-rr/transport/masque/device.go similarity index 100% rename from transport/masque/device.go rename to sing-box-rr/transport/masque/device.go diff --git a/transport/masque/device_stack.go b/sing-box-rr/transport/masque/device_stack.go similarity index 100% rename from transport/masque/device_stack.go rename to sing-box-rr/transport/masque/device_stack.go diff --git a/transport/masque/masque.go b/sing-box-rr/transport/masque/masque.go similarity index 100% rename from transport/masque/masque.go rename to sing-box-rr/transport/masque/masque.go diff --git a/transport/masque/options.go b/sing-box-rr/transport/masque/options.go similarity index 100% rename from transport/masque/options.go rename to sing-box-rr/transport/masque/options.go diff --git a/transport/masque/tunnel.go b/sing-box-rr/transport/masque/tunnel.go similarity index 100% rename from transport/masque/tunnel.go rename to sing-box-rr/transport/masque/tunnel.go diff --git a/transport/masque/utils.go b/sing-box-rr/transport/masque/utils.go similarity index 100% rename from transport/masque/utils.go rename to sing-box-rr/transport/masque/utils.go diff --git a/transport/simple-obfs/README.md b/sing-box-rr/transport/simple-obfs/README.md similarity index 100% rename from transport/simple-obfs/README.md rename to sing-box-rr/transport/simple-obfs/README.md diff --git a/transport/simple-obfs/http.go b/sing-box-rr/transport/simple-obfs/http.go similarity index 100% rename from transport/simple-obfs/http.go rename to sing-box-rr/transport/simple-obfs/http.go diff --git a/transport/simple-obfs/tls.go b/sing-box-rr/transport/simple-obfs/tls.go similarity index 100% rename from transport/simple-obfs/tls.go rename to sing-box-rr/transport/simple-obfs/tls.go diff --git a/transport/sip003/args.go b/sing-box-rr/transport/sip003/args.go similarity index 100% rename from transport/sip003/args.go rename to sing-box-rr/transport/sip003/args.go diff --git a/transport/sip003/obfs.go b/sing-box-rr/transport/sip003/obfs.go similarity index 100% rename from transport/sip003/obfs.go rename to sing-box-rr/transport/sip003/obfs.go diff --git a/transport/sip003/plugin.go b/sing-box-rr/transport/sip003/plugin.go similarity index 100% rename from transport/sip003/plugin.go rename to sing-box-rr/transport/sip003/plugin.go diff --git a/transport/sip003/v2ray.go b/sing-box-rr/transport/sip003/v2ray.go similarity index 100% rename from transport/sip003/v2ray.go rename to sing-box-rr/transport/sip003/v2ray.go diff --git a/transport/trojan/mux.go b/sing-box-rr/transport/trojan/mux.go similarity index 100% rename from transport/trojan/mux.go rename to sing-box-rr/transport/trojan/mux.go diff --git a/transport/trojan/protocol.go b/sing-box-rr/transport/trojan/protocol.go similarity index 100% rename from transport/trojan/protocol.go rename to sing-box-rr/transport/trojan/protocol.go diff --git a/transport/trojan/protocol_wait.go b/sing-box-rr/transport/trojan/protocol_wait.go similarity index 100% rename from transport/trojan/protocol_wait.go rename to sing-box-rr/transport/trojan/protocol_wait.go diff --git a/transport/trojan/service.go b/sing-box-rr/transport/trojan/service.go similarity index 100% rename from transport/trojan/service.go rename to sing-box-rr/transport/trojan/service.go diff --git a/transport/trojan/service_wait.go b/sing-box-rr/transport/trojan/service_wait.go similarity index 100% rename from transport/trojan/service_wait.go rename to sing-box-rr/transport/trojan/service_wait.go diff --git a/transport/v2ray/grpc.go b/sing-box-rr/transport/v2ray/grpc.go similarity index 100% rename from transport/v2ray/grpc.go rename to sing-box-rr/transport/v2ray/grpc.go diff --git a/transport/v2ray/grpc_lite.go b/sing-box-rr/transport/v2ray/grpc_lite.go similarity index 100% rename from transport/v2ray/grpc_lite.go rename to sing-box-rr/transport/v2ray/grpc_lite.go diff --git a/transport/v2ray/quic.go b/sing-box-rr/transport/v2ray/quic.go similarity index 100% rename from transport/v2ray/quic.go rename to sing-box-rr/transport/v2ray/quic.go diff --git a/transport/v2ray/transport.go b/sing-box-rr/transport/v2ray/transport.go similarity index 100% rename from transport/v2ray/transport.go rename to sing-box-rr/transport/v2ray/transport.go diff --git a/transport/v2raygrpc/client.go b/sing-box-rr/transport/v2raygrpc/client.go similarity index 100% rename from transport/v2raygrpc/client.go rename to sing-box-rr/transport/v2raygrpc/client.go diff --git a/transport/v2raygrpc/conn.go b/sing-box-rr/transport/v2raygrpc/conn.go similarity index 100% rename from transport/v2raygrpc/conn.go rename to sing-box-rr/transport/v2raygrpc/conn.go diff --git a/transport/v2raygrpc/credentials/credentials.go b/sing-box-rr/transport/v2raygrpc/credentials/credentials.go similarity index 100% rename from transport/v2raygrpc/credentials/credentials.go rename to sing-box-rr/transport/v2raygrpc/credentials/credentials.go diff --git a/transport/v2raygrpc/credentials/spiffe.go b/sing-box-rr/transport/v2raygrpc/credentials/spiffe.go similarity index 100% rename from transport/v2raygrpc/credentials/spiffe.go rename to sing-box-rr/transport/v2raygrpc/credentials/spiffe.go diff --git a/transport/v2raygrpc/credentials/syscallconn.go b/sing-box-rr/transport/v2raygrpc/credentials/syscallconn.go similarity index 100% rename from transport/v2raygrpc/credentials/syscallconn.go rename to sing-box-rr/transport/v2raygrpc/credentials/syscallconn.go diff --git a/transport/v2raygrpc/credentials/util.go b/sing-box-rr/transport/v2raygrpc/credentials/util.go similarity index 100% rename from transport/v2raygrpc/credentials/util.go rename to sing-box-rr/transport/v2raygrpc/credentials/util.go diff --git a/transport/v2raygrpc/custom_name.go b/sing-box-rr/transport/v2raygrpc/custom_name.go similarity index 100% rename from transport/v2raygrpc/custom_name.go rename to sing-box-rr/transport/v2raygrpc/custom_name.go diff --git a/transport/v2raygrpc/server.go b/sing-box-rr/transport/v2raygrpc/server.go similarity index 100% rename from transport/v2raygrpc/server.go rename to sing-box-rr/transport/v2raygrpc/server.go diff --git a/transport/v2raygrpc/stream.pb.go b/sing-box-rr/transport/v2raygrpc/stream.pb.go similarity index 100% rename from transport/v2raygrpc/stream.pb.go rename to sing-box-rr/transport/v2raygrpc/stream.pb.go diff --git a/transport/v2raygrpc/stream.proto b/sing-box-rr/transport/v2raygrpc/stream.proto similarity index 100% rename from transport/v2raygrpc/stream.proto rename to sing-box-rr/transport/v2raygrpc/stream.proto diff --git a/transport/v2raygrpc/stream_grpc.pb.go b/sing-box-rr/transport/v2raygrpc/stream_grpc.pb.go similarity index 100% rename from transport/v2raygrpc/stream_grpc.pb.go rename to sing-box-rr/transport/v2raygrpc/stream_grpc.pb.go diff --git a/transport/v2raygrpc/tls_credentials.go b/sing-box-rr/transport/v2raygrpc/tls_credentials.go similarity index 100% rename from transport/v2raygrpc/tls_credentials.go rename to sing-box-rr/transport/v2raygrpc/tls_credentials.go diff --git a/transport/v2raygrpclite/client.go b/sing-box-rr/transport/v2raygrpclite/client.go similarity index 100% rename from transport/v2raygrpclite/client.go rename to sing-box-rr/transport/v2raygrpclite/client.go diff --git a/transport/v2raygrpclite/conn.go b/sing-box-rr/transport/v2raygrpclite/conn.go similarity index 100% rename from transport/v2raygrpclite/conn.go rename to sing-box-rr/transport/v2raygrpclite/conn.go diff --git a/transport/v2raygrpclite/server.go b/sing-box-rr/transport/v2raygrpclite/server.go similarity index 100% rename from transport/v2raygrpclite/server.go rename to sing-box-rr/transport/v2raygrpclite/server.go diff --git a/transport/v2rayhttp/client.go b/sing-box-rr/transport/v2rayhttp/client.go similarity index 100% rename from transport/v2rayhttp/client.go rename to sing-box-rr/transport/v2rayhttp/client.go diff --git a/transport/v2rayhttp/conn.go b/sing-box-rr/transport/v2rayhttp/conn.go similarity index 100% rename from transport/v2rayhttp/conn.go rename to sing-box-rr/transport/v2rayhttp/conn.go diff --git a/transport/v2rayhttp/force_close.go b/sing-box-rr/transport/v2rayhttp/force_close.go similarity index 100% rename from transport/v2rayhttp/force_close.go rename to sing-box-rr/transport/v2rayhttp/force_close.go diff --git a/transport/v2rayhttp/pool.go b/sing-box-rr/transport/v2rayhttp/pool.go similarity index 100% rename from transport/v2rayhttp/pool.go rename to sing-box-rr/transport/v2rayhttp/pool.go diff --git a/transport/v2rayhttp/server.go b/sing-box-rr/transport/v2rayhttp/server.go similarity index 100% rename from transport/v2rayhttp/server.go rename to sing-box-rr/transport/v2rayhttp/server.go diff --git a/transport/v2rayhttpupgrade/client.go b/sing-box-rr/transport/v2rayhttpupgrade/client.go similarity index 100% rename from transport/v2rayhttpupgrade/client.go rename to sing-box-rr/transport/v2rayhttpupgrade/client.go diff --git a/transport/v2rayhttpupgrade/server.go b/sing-box-rr/transport/v2rayhttpupgrade/server.go similarity index 100% rename from transport/v2rayhttpupgrade/server.go rename to sing-box-rr/transport/v2rayhttpupgrade/server.go diff --git a/transport/v2raykcp/config.go b/sing-box-rr/transport/v2raykcp/config.go similarity index 100% rename from transport/v2raykcp/config.go rename to sing-box-rr/transport/v2raykcp/config.go diff --git a/transport/v2raykcp/connection.go b/sing-box-rr/transport/v2raykcp/connection.go similarity index 100% rename from transport/v2raykcp/connection.go rename to sing-box-rr/transport/v2raykcp/connection.go diff --git a/transport/v2raykcp/crypt.go b/sing-box-rr/transport/v2raykcp/crypt.go similarity index 100% rename from transport/v2raykcp/crypt.go rename to sing-box-rr/transport/v2raykcp/crypt.go diff --git a/transport/v2raykcp/dialer.go b/sing-box-rr/transport/v2raykcp/dialer.go similarity index 100% rename from transport/v2raykcp/dialer.go rename to sing-box-rr/transport/v2raykcp/dialer.go diff --git a/transport/v2raykcp/errors.go b/sing-box-rr/transport/v2raykcp/errors.go similarity index 100% rename from transport/v2raykcp/errors.go rename to sing-box-rr/transport/v2raykcp/errors.go diff --git a/transport/v2raykcp/header.go b/sing-box-rr/transport/v2raykcp/header.go similarity index 100% rename from transport/v2raykcp/header.go rename to sing-box-rr/transport/v2raykcp/header.go diff --git a/transport/v2raykcp/listener.go b/sing-box-rr/transport/v2raykcp/listener.go similarity index 100% rename from transport/v2raykcp/listener.go rename to sing-box-rr/transport/v2raykcp/listener.go diff --git a/transport/v2raykcp/multi_buffer.go b/sing-box-rr/transport/v2raykcp/multi_buffer.go similarity index 100% rename from transport/v2raykcp/multi_buffer.go rename to sing-box-rr/transport/v2raykcp/multi_buffer.go diff --git a/transport/v2raykcp/output.go b/sing-box-rr/transport/v2raykcp/output.go similarity index 100% rename from transport/v2raykcp/output.go rename to sing-box-rr/transport/v2raykcp/output.go diff --git a/transport/v2raykcp/receiving.go b/sing-box-rr/transport/v2raykcp/receiving.go similarity index 100% rename from transport/v2raykcp/receiving.go rename to sing-box-rr/transport/v2raykcp/receiving.go diff --git a/transport/v2raykcp/segment.go b/sing-box-rr/transport/v2raykcp/segment.go similarity index 100% rename from transport/v2raykcp/segment.go rename to sing-box-rr/transport/v2raykcp/segment.go diff --git a/transport/v2raykcp/sending.go b/sing-box-rr/transport/v2raykcp/sending.go similarity index 100% rename from transport/v2raykcp/sending.go rename to sing-box-rr/transport/v2raykcp/sending.go diff --git a/transport/v2raykcp/updater.go b/sing-box-rr/transport/v2raykcp/updater.go similarity index 100% rename from transport/v2raykcp/updater.go rename to sing-box-rr/transport/v2raykcp/updater.go diff --git a/transport/v2rayquic/client.go b/sing-box-rr/transport/v2rayquic/client.go similarity index 100% rename from transport/v2rayquic/client.go rename to sing-box-rr/transport/v2rayquic/client.go diff --git a/transport/v2rayquic/init.go b/sing-box-rr/transport/v2rayquic/init.go similarity index 100% rename from transport/v2rayquic/init.go rename to sing-box-rr/transport/v2rayquic/init.go diff --git a/transport/v2rayquic/server.go b/sing-box-rr/transport/v2rayquic/server.go similarity index 100% rename from transport/v2rayquic/server.go rename to sing-box-rr/transport/v2rayquic/server.go diff --git a/transport/v2rayquic/stream.go b/sing-box-rr/transport/v2rayquic/stream.go similarity index 100% rename from transport/v2rayquic/stream.go rename to sing-box-rr/transport/v2rayquic/stream.go diff --git a/transport/v2raywebsocket/client.go b/sing-box-rr/transport/v2raywebsocket/client.go similarity index 100% rename from transport/v2raywebsocket/client.go rename to sing-box-rr/transport/v2raywebsocket/client.go diff --git a/transport/v2raywebsocket/conn.go b/sing-box-rr/transport/v2raywebsocket/conn.go similarity index 100% rename from transport/v2raywebsocket/conn.go rename to sing-box-rr/transport/v2raywebsocket/conn.go diff --git a/transport/v2raywebsocket/server.go b/sing-box-rr/transport/v2raywebsocket/server.go similarity index 100% rename from transport/v2raywebsocket/server.go rename to sing-box-rr/transport/v2raywebsocket/server.go diff --git a/transport/v2raywebsocket/writer.go b/sing-box-rr/transport/v2raywebsocket/writer.go similarity index 100% rename from transport/v2raywebsocket/writer.go rename to sing-box-rr/transport/v2raywebsocket/writer.go diff --git a/transport/v2rayxhttp/client.go b/sing-box-rr/transport/v2rayxhttp/client.go similarity index 100% rename from transport/v2rayxhttp/client.go rename to sing-box-rr/transport/v2rayxhttp/client.go diff --git a/transport/v2rayxhttp/conn.go b/sing-box-rr/transport/v2rayxhttp/conn.go similarity index 100% rename from transport/v2rayxhttp/conn.go rename to sing-box-rr/transport/v2rayxhttp/conn.go diff --git a/transport/v2rayxhttp/dialer.go b/sing-box-rr/transport/v2rayxhttp/dialer.go similarity index 100% rename from transport/v2rayxhttp/dialer.go rename to sing-box-rr/transport/v2rayxhttp/dialer.go diff --git a/transport/v2rayxhttp/http.go b/sing-box-rr/transport/v2rayxhttp/http.go similarity index 100% rename from transport/v2rayxhttp/http.go rename to sing-box-rr/transport/v2rayxhttp/http.go diff --git a/transport/v2rayxhttp/mux.go b/sing-box-rr/transport/v2rayxhttp/mux.go similarity index 100% rename from transport/v2rayxhttp/mux.go rename to sing-box-rr/transport/v2rayxhttp/mux.go diff --git a/transport/v2rayxhttp/server.go b/sing-box-rr/transport/v2rayxhttp/server.go similarity index 100% rename from transport/v2rayxhttp/server.go rename to sing-box-rr/transport/v2rayxhttp/server.go diff --git a/transport/v2rayxhttp/upload_queue.go b/sing-box-rr/transport/v2rayxhttp/upload_queue.go similarity index 100% rename from transport/v2rayxhttp/upload_queue.go rename to sing-box-rr/transport/v2rayxhttp/upload_queue.go diff --git a/transport/v2rayxhttp/utils.go b/sing-box-rr/transport/v2rayxhttp/utils.go similarity index 100% rename from transport/v2rayxhttp/utils.go rename to sing-box-rr/transport/v2rayxhttp/utils.go diff --git a/transport/v2rayxhttp/writer.go b/sing-box-rr/transport/v2rayxhttp/writer.go similarity index 100% rename from transport/v2rayxhttp/writer.go rename to sing-box-rr/transport/v2rayxhttp/writer.go diff --git a/transport/v2rayxhttp/xpadding.go b/sing-box-rr/transport/v2rayxhttp/xpadding.go similarity index 100% rename from transport/v2rayxhttp/xpadding.go rename to sing-box-rr/transport/v2rayxhttp/xpadding.go diff --git a/transport/wireguard/client_bind.go b/sing-box-rr/transport/wireguard/client_bind.go similarity index 100% rename from transport/wireguard/client_bind.go rename to sing-box-rr/transport/wireguard/client_bind.go diff --git a/transport/wireguard/device.go b/sing-box-rr/transport/wireguard/device.go similarity index 100% rename from transport/wireguard/device.go rename to sing-box-rr/transport/wireguard/device.go diff --git a/transport/wireguard/device_nat.go b/sing-box-rr/transport/wireguard/device_nat.go similarity index 100% rename from transport/wireguard/device_nat.go rename to sing-box-rr/transport/wireguard/device_nat.go diff --git a/transport/wireguard/device_stack.go b/sing-box-rr/transport/wireguard/device_stack.go similarity index 100% rename from transport/wireguard/device_stack.go rename to sing-box-rr/transport/wireguard/device_stack.go diff --git a/transport/wireguard/device_stack_gonet.go b/sing-box-rr/transport/wireguard/device_stack_gonet.go similarity index 100% rename from transport/wireguard/device_stack_gonet.go rename to sing-box-rr/transport/wireguard/device_stack_gonet.go diff --git a/transport/wireguard/device_stack_stub.go b/sing-box-rr/transport/wireguard/device_stack_stub.go similarity index 100% rename from transport/wireguard/device_stack_stub.go rename to sing-box-rr/transport/wireguard/device_stack_stub.go diff --git a/transport/wireguard/device_system.go b/sing-box-rr/transport/wireguard/device_system.go similarity index 100% rename from transport/wireguard/device_system.go rename to sing-box-rr/transport/wireguard/device_system.go diff --git a/transport/wireguard/device_system_stack.go b/sing-box-rr/transport/wireguard/device_system_stack.go similarity index 100% rename from transport/wireguard/device_system_stack.go rename to sing-box-rr/transport/wireguard/device_system_stack.go diff --git a/transport/wireguard/endpoint.go b/sing-box-rr/transport/wireguard/endpoint.go similarity index 100% rename from transport/wireguard/endpoint.go rename to sing-box-rr/transport/wireguard/endpoint.go diff --git a/transport/wireguard/endpoint_options.go b/sing-box-rr/transport/wireguard/endpoint_options.go similarity index 100% rename from transport/wireguard/endpoint_options.go rename to sing-box-rr/transport/wireguard/endpoint_options.go