├── app
├── .gitignore
├── executableSo
│ └── .gitignore
├── src
│ └── main
│ │ ├── assets
│ │ ├── dashboard.version.txt
│ │ ├── analysis.txt
│ │ └── LICENSE
│ │ ├── res
│ │ ├── raw-zh-rCN
│ │ │ ├── insecure.txt
│ │ │ ├── not_encrypted.txt
│ │ │ ├── shadowsocks_stream_cipher.txt
│ │ │ └── vmess_md5_auth.txt
│ │ ├── font
│ │ │ └── jetbrains_mono.ttf
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── xml
│ │ │ ├── cache_paths.xml
│ │ │ ├── network_security_config.xml
│ │ │ ├── neko_preferences.xml
│ │ │ ├── name_preferences.xml
│ │ │ ├── backup_descriptor.xml
│ │ │ ├── backup_rules.xml
│ │ │ ├── config_preferences.xml
│ │ │ ├── shortcuts.xml
│ │ │ └── balancer_preferences.xml
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── values
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── dimens.xml
│ │ │ └── attrs.xml
│ │ ├── raw
│ │ │ ├── insecure.txt
│ │ │ ├── not_encrypted.txt
│ │ │ ├── shadowsocks_stream_cipher.txt
│ │ │ └── vmess_md5_auth.txt
│ │ ├── menu
│ │ │ ├── app_list_neko_menu.xml
│ │ │ ├── traffic_menu.xml
│ │ │ ├── import_asset_menu.xml
│ │ │ ├── profile_apply_menu.xml
│ │ │ ├── scanner_menu.xml
│ │ │ ├── dash_menu.xml
│ │ │ ├── add_group_menu.xml
│ │ │ ├── app_list_menu.xml
│ │ │ ├── add_route_menu.xml
│ │ │ ├── logcat_menu.xml
│ │ │ ├── per_app_proxy_menu.xml
│ │ │ ├── traffic_item_menu.xml
│ │ │ ├── group_action_menu.xml
│ │ │ └── profile_config_menu.xml
│ │ ├── values-night
│ │ │ └── colors.xml
│ │ ├── mipmap-anydpi-v26
│ │ │ └── ic_launcher.xml
│ │ ├── color
│ │ │ ├── navigation_item.xml
│ │ │ ├── navigation_icon.xml
│ │ │ ├── chip_text_color.xml
│ │ │ ├── chip_background.xml
│ │ │ └── chip_ripple_color.xml
│ │ ├── layout
│ │ │ ├── layout_empty.xml
│ │ │ ├── layout_mtu_help.xml
│ │ │ ├── layout_loglevel_help.xml
│ │ │ ├── layout_webview.xml
│ │ │ ├── layout_config_settings.xml
│ │ │ ├── layout_license.xml
│ │ │ ├── layout_settings_activity.xml
│ │ │ ├── layout_profile_list.xml
│ │ │ ├── layout_appbar.xml
│ │ │ ├── layout_progress.xml
│ │ │ ├── layout_debug.xml
│ │ │ ├── layout_add_entity.xml
│ │ │ ├── layout_empty_route.xml
│ │ │ ├── layout_scanner.xml
│ │ │ ├── layout_progress_list.xml
│ │ │ ├── simple_menu_dropdown_item.xml
│ │ │ ├── item_keyboard_key.xml
│ │ │ ├── layout_loading.xml
│ │ │ ├── layout_group.xml
│ │ │ ├── layout_route.xml
│ │ │ ├── layout_assets.xml
│ │ │ ├── layout_logcat.xml
│ │ │ ├── layout_tools.xml
│ │ │ └── layout_group_list.xml
│ │ ├── drawable
│ │ │ ├── ic_baseline_home_24.xml
│ │ │ ├── baseline_keyboard_tab_24.xml
│ │ │ ├── ic_baseline_download_24.xml
│ │ │ ├── ic_baseline_fast_forward_24.xml
│ │ │ ├── ic_baseline_fiber_manual_record_24.xml
│ │ │ ├── ic_baseline_warning_24.xml
│ │ │ ├── ic_file_file_upload.xml
│ │ │ ├── baseline_send_24.xml
│ │ │ ├── ic_action_done.xml
│ │ │ ├── ic_baseline_local_bar_24.xml
│ │ │ ├── ic_navigation_menu.xml
│ │ │ ├── ic_baseline_grid_3x3_24.xml
│ │ │ ├── baseline_arrow_back_24.xml
│ │ │ ├── ic_baseline_info_24.xml
│ │ │ ├── baseline_redo_24.xml
│ │ │ ├── baseline_undo_24.xml
│ │ │ ├── baseline_widgets_24.xml
│ │ │ ├── ic_action_delete.xml
│ │ │ ├── ic_baseline_legend_toggle_24.xml
│ │ │ ├── ic_baseline_layers_24.xml
│ │ │ ├── ic_baseline_transform_24.xml
│ │ │ ├── ic_navigation_close.xml
│ │ │ ├── ic_baseline_compare_arrows_24.xml
│ │ │ ├── ic_baseline_person_24.xml
│ │ │ ├── ic_qu_shadowsocks_foreground.xml
│ │ │ ├── baseline_delete_sweep_24.xml
│ │ │ ├── ic_baseline_airplanemode_active_24.xml
│ │ │ ├── ic_baseline_format_align_left_24.xml
│ │ │ ├── ic_baseline_security_24.xml
│ │ │ ├── ic_image_photo.xml
│ │ │ ├── ic_navigation_apps.xml
│ │ │ ├── ic_av_playlist_add.xml
│ │ │ ├── ic_baseline_view_list_24.xml
│ │ │ ├── baseline_save_24.xml
│ │ │ ├── ic_action_description.xml
│ │ │ ├── ic_baseline_low_priority_24.xml
│ │ │ ├── ic_baseline_location_on_24.xml
│ │ │ ├── ic_image_edit.xml
│ │ │ ├── baseline_wrap_text_24.xml
│ │ │ ├── ic_baseline_push_pin_24.xml
│ │ │ ├── ic_baseline_vpn_key_24.xml
│ │ │ ├── ic_baseline_more_vert_24.xml
│ │ │ ├── ic_baseline_shuffle_24.xml
│ │ │ ├── ic_maps_directions.xml
│ │ │ ├── ic_service_busy.xml
│ │ │ ├── baseline_developer_board_24.xml
│ │ │ ├── ic_action_note_add.xml
│ │ │ ├── ic_qu_camera_launcher.xml
│ │ │ ├── ic_baseline_domain_24.xml
│ │ │ ├── ic_baseline_refresh_24.xml
│ │ │ ├── baseline_flight_takeoff_24.xml
│ │ │ ├── ic_communication_phonelink_ring.xml
│ │ │ ├── ic_image_looks_6.xml
│ │ │ ├── ic_qu_shadowsocks_launcher.xml
│ │ │ ├── terminal_scroll_shape.xml
│ │ │ ├── ic_baseline_running_with_errors_24.xml
│ │ │ ├── ic_maps_360.xml
│ │ │ ├── ic_baseline_link_24.xml
│ │ │ ├── ic_baseline_speed_24.xml
│ │ │ ├── ic_baseline_timelapse_24.xml
│ │ │ ├── ic_baseline_http_24.xml
│ │ │ ├── ic_notification_enhanced_encryption.xml
│ │ │ ├── ic_action_lock_open.xml
│ │ │ ├── ic_baseline_nfc_24.xml
│ │ │ ├── ic_baseline_https_24.xml
│ │ │ ├── ic_baseline_lock_24.xml
│ │ │ ├── ic_action_lock.xml
│ │ │ ├── ic_device_data_usage.xml
│ │ │ ├── ic_device_developer_mode.xml
│ │ │ ├── ic_file_cloud_queue.xml
│ │ │ ├── ic_image_camera_alt.xml
│ │ │ ├── ic_baseline_cast_connected_24.xml
│ │ │ ├── ic_baseline_rule_folder_24.xml
│ │ │ ├── ic_baseline_manage_search_24.xml
│ │ │ ├── ic_baseline_center_focus_weak_24.xml
│ │ │ ├── ic_baseline_update_24.xml
│ │ │ ├── ic_baseline_multiline_chart_24.xml
│ │ │ ├── ic_baseline_texture_24.xml
│ │ │ ├── baseline_translate_24.xml
│ │ │ ├── ic_baseline_emoji_emotions_24.xml
│ │ │ ├── ic_action_dns.xml
│ │ │ ├── ic_baseline_android_24.xml
│ │ │ ├── baseline_public_24.xml
│ │ │ ├── ic_hardware_router.xml
│ │ │ ├── ic_baseline_multiple_stop_24.xml
│ │ │ ├── ic_baseline_sanitizer_24.xml
│ │ │ ├── ic_baseline_wb_sunny_24.xml
│ │ │ ├── ic_baseline_nat_24.xml
│ │ │ ├── ic_baseline_no_encryption_gmailerrorred_24.xml
│ │ │ ├── ic_baseline_import_contacts_24.xml
│ │ │ ├── ic_baseline_bug_report_24.xml
│ │ │ ├── ic_baseline_transgender_24.xml
│ │ │ ├── ic_baseline_camera_24.xml
│ │ │ ├── ic_social_share.xml
│ │ │ ├── ic_maps_directions_boat.xml
│ │ │ ├── ic_baseline_card_giftcard_24.xml
│ │ │ ├── ic_baseline_color_lens_24.xml
│ │ │ ├── ic_baseline_flip_camera_android_24.xml
│ │ │ ├── baseline_construction_24.xml
│ │ │ ├── ic_app_shortcut_background.xml
│ │ │ ├── ic_service_idle.xml
│ │ │ ├── ic_baseline_add_road_24.xml
│ │ │ ├── ic_baseline_shutter_speed_24.xml
│ │ │ ├── ic_baseline_stream_24.xml
│ │ │ ├── ic_action_settings.xml
│ │ │ ├── ic_service_connected.xml
│ │ │ ├── ic_service_stopping.xml
│ │ │ └── ic_action_copyright.xml
│ │ ├── drawable-v26
│ │ │ ├── ic_qu_camera_launcher.xml
│ │ │ └── ic_qu_shadowsocks_launcher.xml
│ │ ├── values-nl
│ │ │ └── strings.xml
│ │ ├── values-it
│ │ │ └── strings.xml
│ │ ├── values-ko
│ │ │ └── strings.xml
│ │ └── values-pt-rBR
│ │ │ └── strings.xml
│ │ ├── aidl
│ │ └── io
│ │ │ └── nekohasekai
│ │ │ └── sagernet
│ │ │ └── aidl
│ │ │ ├── TrafficData.aidl
│ │ │ ├── SpeedDisplayData.aidl
│ │ │ ├── ISagerNetService.aidl
│ │ │ └── ISagerNetServiceCallback.aidl
│ │ ├── ic_launcher-playstore.png
│ │ └── java
│ │ ├── io
│ │ └── nekohasekai
│ │ │ └── sagernet
│ │ │ ├── bg
│ │ │ ├── AbstractInstance.kt
│ │ │ ├── proto
│ │ │ │ └── UrlTest.kt
│ │ │ └── ProxyService.kt
│ │ │ ├── ui
│ │ │ ├── profile
│ │ │ │ ├── HttpSettingsActivity.kt
│ │ │ │ ├── TrojanSettingsActivity.kt
│ │ │ │ └── VMessSettingsActivity.kt
│ │ │ ├── NamedFragment.kt
│ │ │ ├── BlankActivity.kt
│ │ │ ├── SettingsFragment.kt
│ │ │ ├── DebugFragment.kt
│ │ │ ├── ToolbarFragment.kt
│ │ │ ├── ProfileSelectActivity.kt
│ │ │ └── SwitchActivity.kt
│ │ │ ├── aidl
│ │ │ ├── TrafficData.kt
│ │ │ └── SpeedDisplayData.kt
│ │ │ ├── database
│ │ │ ├── preference
│ │ │ │ ├── OnPreferenceDataStoreChangeListener.kt
│ │ │ │ └── PublicDatabase.kt
│ │ │ └── ParcelizeBridge.java
│ │ │ ├── ktx
│ │ │ ├── Dimens.kt
│ │ │ ├── Dialogs.kt
│ │ │ ├── Browsers.kt
│ │ │ └── Asyncs.kt
│ │ │ ├── utils
│ │ │ └── cf
│ │ │ │ ├── UpdateDeviceRequest.kt
│ │ │ │ └── RegisterRequest.kt
│ │ │ ├── fmt
│ │ │ ├── internal
│ │ │ │ └── InternalBean.java
│ │ │ ├── trojan
│ │ │ │ └── TrojanFmt.kt
│ │ │ ├── ssh
│ │ │ │ └── SSHFmt.kt
│ │ │ ├── Serializable.kt
│ │ │ ├── TypeMap.kt
│ │ │ ├── gson
│ │ │ │ └── GsonConverters.java
│ │ │ ├── v2ray
│ │ │ │ └── VMessBean.java
│ │ │ ├── UniversalFmt.kt
│ │ │ └── http
│ │ │ │ └── HttpFmt.kt
│ │ │ └── widget
│ │ │ ├── UserAgentPreference.kt
│ │ │ ├── GroupPreference.kt
│ │ │ ├── OutboundPreference.kt
│ │ │ ├── FabProgressBehavior.kt
│ │ │ └── AutoCollapseTextView.kt
│ │ ├── com
│ │ ├── github
│ │ │ └── shadowsocks
│ │ │ │ └── plugin
│ │ │ │ └── Utils.kt
│ │ └── wireguard
│ │ │ └── crypto
│ │ │ ├── KeyFormatException.java
│ │ │ └── KeyPair.java
│ │ └── moe
│ │ └── matsuri
│ │ └── nb4a
│ │ ├── proxy
│ │ ├── shadowtls
│ │ │ └── ShadowTLSFmt.kt
│ │ └── PreferenceBindingManager.kt
│ │ ├── utils
│ │ ├── LibcoreUtil.kt
│ │ └── WebViewUtil.kt
│ │ ├── ui
│ │ ├── LongClickMenuPreference.kt
│ │ ├── LongClickListPreference.kt
│ │ ├── LongClickSwitchPreference.kt
│ │ ├── Dialogs.kt
│ │ └── EditConfigPreference.kt
│ │ └── TempDatabase.kt
└── schemas
│ ├── moe.matsuri.nb4a.TempDatabase
│ └── 1.json
│ └── io.nekohasekai.sagernet.database.preference.PublicDatabase
│ └── 1.json
├── settings.gradle.kts
├── nb4a.properties
├── fastlane
└── metadata
│ └── android
│ ├── zh-CN
│ ├── short_description.txt
│ └── full_description.txt
│ └── en-US
│ ├── short_description.txt
│ ├── changelogs
│ └── default.txt
│ ├── images
│ └── icon.png
│ └── full_description.txt
├── release.keystore
├── libcore
├── .gitignore
├── assets_other.go
├── stun
│ ├── README
│ └── doc.go
├── device
│ ├── device.go
│ └── debug.go
├── crypto.go
├── assets.go
├── init.sh
├── date.go
├── certs.go
├── build.sh
├── LICENSE
├── platform_java.go
├── io.go
├── interface_monitor.go
└── stun.go
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── repositories.gradle.kts
├── .github
└── ISSUE_TEMPLATE
│ ├── feature_request-zh_cn.md
│ └── bug-report-zh_cn.md
├── run
├── .gitignore
├── AUTHORS
├── LICENSE
└── gradle.properties
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/executableSo/.gitignore:
--------------------------------------------------------------------------------
1 | *.so
2 |
--------------------------------------------------------------------------------
/app/src/main/assets/dashboard.version.txt:
--------------------------------------------------------------------------------
1 | 4
2 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | include(":app")
2 | rootProject.name = "NB4A"
3 |
--------------------------------------------------------------------------------
/app/src/main/res/raw-zh-rCN/insecure.txt:
--------------------------------------------------------------------------------
1 | 该配置 (不安全) 能够被检测识别,传输的内容对审查者完全可见,并且无法抵抗中间人篡改通讯内容.
--------------------------------------------------------------------------------
/nb4a.properties:
--------------------------------------------------------------------------------
1 | PACKAGE_NAME=moe.cb4a
2 | VERSION_NAME=1.2.4
3 | VERSION_CODE=28
4 |
--------------------------------------------------------------------------------
/app/src/main/res/raw-zh-rCN/not_encrypted.txt:
--------------------------------------------------------------------------------
1 | 该配置 (未加密) 极易被检测识别,传输的内容对审查者完全可见,并且无法抵抗中间人篡改通讯内容.
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/short_description.txt:
--------------------------------------------------------------------------------
1 | CatBox 是一款使用 sing-box 的 Android 通用代理软件。
--------------------------------------------------------------------------------
/release.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bysqh/CatBoxForAndroid/HEAD/release.keystore
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | CatBox is an universal proxy toolchain for Android
--------------------------------------------------------------------------------
/libcore/.gitignore:
--------------------------------------------------------------------------------
1 | binary*.go
2 | *.[a|j]ar
3 | .idea
4 | .vscode
5 | /debug.go
6 | build
7 | .build
8 |
--------------------------------------------------------------------------------
/libcore/assets_other.go:
--------------------------------------------------------------------------------
1 | //go:build !android
2 |
3 | package libcore
4 |
5 | func extractAssets() {}
6 |
--------------------------------------------------------------------------------
/libcore/stun/README:
--------------------------------------------------------------------------------
1 | from https://github.com/ccding/go-stun/commit/877ebaff7ba7b0f0ce44e92d785075647545e777
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/full_description.txt:
--------------------------------------------------------------------------------
1 | CatBox 是一款使用 sing-box 的通用代理平台,改编自 NekoBoxForAndroid。移除了一些不受欢迎的特性,同时更加开放、透明。
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bysqh/CatBoxForAndroid/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/aidl/io/nekohasekai/sagernet/aidl/TrafficData.aidl:
--------------------------------------------------------------------------------
1 | package io.nekohasekai.sagernet.aidl;
2 |
3 | parcelable TrafficData;
4 |
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bysqh/CatBoxForAndroid/HEAD/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/app/src/main/res/font/jetbrains_mono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bysqh/CatBoxForAndroid/HEAD/app/src/main/res/font/jetbrains_mono.ttf
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/default.txt:
--------------------------------------------------------------------------------
1 | See https://github.com/AntiNeko/CatBoxForAndroid/releases/latest to get full changelogs
--------------------------------------------------------------------------------
/app/src/main/aidl/io/nekohasekai/sagernet/aidl/SpeedDisplayData.aidl:
--------------------------------------------------------------------------------
1 | package io.nekohasekai.sagernet.aidl;
2 |
3 | parcelable SpeedDisplayData;
4 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bysqh/CatBoxForAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bysqh/CatBoxForAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bysqh/CatBoxForAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/xml/cache_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 | * Instances of this class are immutable.
12 | */
13 | public class KeyPair {
14 | private final Key privateKey;
15 | private final Key publicKey;
16 |
17 | /**
18 | * Creates a key pair using a newly-generated private key.
19 | */
20 | public KeyPair() {
21 | this(Key.generatePrivateKey());
22 | }
23 |
24 | /**
25 | * Creates a key pair using an existing private key.
26 | *
27 | * @param privateKey a private key, used to derive the public key
28 | */
29 | public KeyPair(final Key privateKey) {
30 | this.privateKey = privateKey;
31 | publicKey = Key.generatePublicKey(privateKey);
32 | }
33 |
34 | /**
35 | * Returns the private key from the key pair.
36 | *
37 | * @return the private key
38 | */
39 | public Key getPrivateKey() {
40 | return privateKey;
41 | }
42 |
43 | /**
44 | * Returns the public key from the key pair.
45 | *
46 | * @return the public key
47 | */
48 | public Key getPublicKey() {
49 | return publicKey;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/io/nekohasekai/sagernet/widget/AutoCollapseTextView.kt:
--------------------------------------------------------------------------------
1 | package io.nekohasekai.sagernet.widget
2 |
3 | import android.annotation.SuppressLint
4 | import android.content.Context
5 | import android.graphics.Rect
6 | import android.util.AttributeSet
7 | import android.view.MotionEvent
8 | import androidx.appcompat.widget.AppCompatTextView
9 | import androidx.core.view.isGone
10 |
11 | class AutoCollapseTextView @JvmOverloads constructor(
12 | context: Context, attrs: AttributeSet? = null,
13 | defStyleAttr: Int = 0,
14 | ) :
15 | AppCompatTextView(context, attrs, defStyleAttr) {
16 | override fun onTextChanged(
17 | text: CharSequence?,
18 | start: Int,
19 | lengthBefore: Int,
20 | lengthAfter: Int,
21 | ) {
22 | super.onTextChanged(text, start, lengthBefore, lengthAfter)
23 | isGone = text.isNullOrEmpty()
24 | }
25 |
26 | // #1874
27 | override fun onFocusChanged(focused: Boolean, direction: Int, previouslyFocusedRect: Rect?) =
28 | try {
29 | super.onFocusChanged(focused, direction, previouslyFocusedRect)
30 | } catch (e: IndexOutOfBoundsException) {
31 | }
32 |
33 | @SuppressLint("ClickableViewAccessibility")
34 | override fun onTouchEvent(event: MotionEvent?) = try {
35 | super.onTouchEvent(event)
36 | } catch (e: IndexOutOfBoundsException) {
37 | false
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_logcat.xml:
--------------------------------------------------------------------------------
1 |
2 |