Git Product home page Git Product logo

nekoboxforandroid's People

Contributors

arm64v8a avatar cancanneednews avatar chocolate4u avatar cielneko avatar ddzzkunye avatar enfein avatar kimmyxyc avatar kiteab avatar maskedeken avatar misaka-blog avatar nanaminakano avatar neroblackstone avatar purofle avatar pxee avatar turikhay avatar xchacha20-poly1305 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nekoboxforandroid's Issues

Put last added profiles at the top, instead of the bottom (reverse the order)

With UX design principles, in most of the GUI applications, the newer items of tables and lists are shown at the beginning, to be accessible first.
For example:

  1. In messengers chat page, you'll see latest messages first (At page bottom).
  2. When you open chat list, you'll see the last updated chat, not the most inactive chat.
  3. Telegram Desktop proxy list sort
  4. Github Issue list page (the newer issues are shown first).

And a lot more examples...

In NekoBoxForAndroid (Also in Matsuri):
In most of the times, the user needs to click on the profile which has been added a moment ago, not the oldest added profile.
With the current time-ascending order, the oldest added item stays at row 0 forever, and added profiles are put at the end of the list so the user needs to scroll to the end each time after adding new profiles to click them.
When the list is too long, scrolling gets hard, so this problem becomes worse, and the user should remove old proxy profiles frequently to shorten the list to overcome this problem. In other words, users need do proxy management instead of leaving this task for the app!!!
Also, making the user frequently shorten the list, increases the risk of lockups because there's more chance for all profiles to get expired or died at once, when the profile list is not long enough.

So reverse the default initial order please!

There's also one more reason for doing this: The oldest profile, in most of the cases is expired or died. Why should it stay in front of the user's eye forever? New profiles should be placed at the top and older profiles should get shifted to down each time the user adds a new one. So they get hidden from user's eyes when the list is long.

WireGuard导入节点无法启动

描述问题
WireGuard导入的节点启动失败,用SagerNet测试是可以正常使用的
预期行为:
实际行为:

如何复现

提供有帮助的截图,录像,
1

2
文字说明,订阅链接等。
日志
NekoBox for Andoird 0.8 (40) OSS
Date: 2023-03-24 16:35:12.597 UTC

OS_VERSION: 4.4.205-perf+
SDK_INT: 29
RELEASE: 10
ID: QKQ1.191014.012
DISPLAY: ONEPLUS A5010_43_201029
INCREMENTAL: 2010292059
SECURITY_PATCH: 2020-09-01
IS_DEBUGGABLE: 0
IS_EMULATOR: null
IS_TREBLE_ENABLED: true
TYPE: user
TAGS: release-keys

MANUFACTURER: OnePlus
BRAND: OnePlus
MODEL: ONEPLUS A5010
PRODUCT: OnePlus5T
BOARD: msm8998
HARDWARE: qcom
DEVICE: OnePlus5T
SUPPORTED_ABIS: arm64-v8a, armeabi-v7a, armeabi

Settings:

mixedPort: 2080
portLocalDns: 6450
transproxyPort: 9200
nightTheme: 0
serviceMode: vpn
tunImplementation: 1
mtu: 9000
profileTrafficStatistics: true
speedInterval: 1000
alwaysShowAddress: false
meteredNetwork: false
logLevel: 0
proxyApps: false
bypassLanInCore: false
resolveDestination: false
ipv6Mode: 0
rulesProvider: 0
mux: []
muxConcurrency: 8
remoteDns: https://8.8.8.8/dns-query
directDns: https://223.5.5.5/dns-query
directDnsUseSystem: false
dnsNetwork: []
enableDnsRouting: true
enableFakeDns: false
appendHttpProxy: false
requireTransproxy: false
transproxyMode: 0
allowAccess: false
connectionTestURL: http://cp.cloudflare.com/
acquireWakeLock: false
enableClashAPI: false
tcpKeepAliveInterval: 15
appTLSVersion: 1.2
bypassLan: true
showDirectSpeed: false
appTheme: 2
showBottomBar: false
showGroupInNotification: false
nekoPlugins:
trafficSniffing: true
profileCurrent: 88
profileGroup: 1
profileId: 88

Logcat:

--------- beginning of system
03-25 00:30:44.057 12164 12164 D TextClassifierService: No configured system TextClassifierService
03-25 00:30:44.064 12164 12164 D TextClassifierService: No configured system TextClassifierService
03-25 00:30:44.067 12164 14329 D TextClassifierService: No configured system TextClassifierService
03-25 00:30:44.300 12164 14329 D TextClassifierService: No configured system TextClassifierService
03-25 00:31:00.868 12164 12164 D TextClassifierService: No configured system TextClassifierService
03-25 00:31:00.874 12164 12164 D TextClassifierService: No configured system TextClassifierService
03-25 00:31:00.875 12164 14366 D TextClassifierService: No configured system TextClassifierService
03-25 00:31:00.958 12164 14366 D TextClassifierService: No configured system TextClassifierService
--------- beginning of main
03-25 00:31:40.251 12164 12917 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@606f033[MainActivity]
03-25 00:31:40.252 12164 12917 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=true inTouchMode=true
03-25 00:31:41.823 12164 13037 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=false inTouchMode=true
03-25 00:34:20.875 13990 13990 E moe.nb4a: Unknown bits set in runtime_flags: 0x20000
03-25 00:34:20.877 13990 13990 E moe.nb4a: Not starting debugger since process cannot load the jdwp agent.
03-25 00:34:20.915 13990 13990 I Perf : Connecting to perf service.
03-25 00:34:20.919 13990 13990 I moe.nb4a: [GL_OOM] ClearGrowthLimit 536870912
03-25 00:34:20.928 13990 13990 V Font : Change font:1
03-25 00:34:20.928 13990 13990 V Font : Default family:android.graphics.Typeface@6b253cf4
03-25 00:34:20.975 13990 13990 W moe.nb4a: Accessing hidden field Ljava/util/Collections$SynchronizedCollection;->mutex:Ljava/lang/Object; (greylist-max-o, reflection, denied)
03-25 00:34:20.975 13990 13990 W moe.nb4a: Accessing hidden method Ljava/util/Collections$SynchronizedSet;->(Ljava/util/Set;Ljava/lang/Object;)V (greylist-max-o, reflection, denied)
03-25 00:34:20.975 13990 13990 W moe.nb4a: Accessing hidden method Ljava/util/Collections$SynchronizedCollection;->(Ljava/util/Collection;Ljava/lang/Object;)V (greylist-max-o, reflection, denied)
03-25 00:34:20.964 13990 13990 W moe.nb4a: type=1400 audit(0.0:482549): avc: denied { read } for name="tcp" dev="proc" ino=4026532126 scontext=u:r:untrusted_app:s0:c70,c257,c512,c768 tcontext=u:object_r:proc_net_tcp_udp:s0 tclass=file permissive=0
03-25 00:34:20.988 13991 13991 E moe.nb4a:bg: Unknown bits set in runtime_flags: 0x20000
03-25 00:34:20.990 13991 13991 E moe.nb4a:bg: Not starting debugger since process cannot load the jdwp agent.
03-25 00:34:21.016 13990 13990 D AppCompatDelegate: Checking for metadata for AppLocalesMetadataHolderService : Service not found
03-25 00:34:21.021 13991 13991 I Perf : Connecting to perf service.
03-25 00:34:21.024 13991 13991 I moe.nb4a:bg: [GL_OOM] ClearGrowthLimit 536870912
03-25 00:34:21.025 13991 13991 V Font : Change font:1
03-25 00:34:21.026 13991 13991 V Font : Default family:android.graphics.Typeface@6b253cf4
03-25 00:34:21.034 13991 13991 W moe.nb4a:bg: type=1400 audit(0.0:482550): avc: denied { read } for name="tcp" dev="proc" ino=4026532126 scontext=u:r:untrusted_app:s0:c70,c257,c512,c768 tcontext=u:object_r:proc_net_tcp_udp:s0 tclass=file permissive=0
03-25 00:34:21.044 13990 13990 V FlingOptimizerScroller: FlingOptimizerOverScroller Init
03-25 00:34:21.045 13991 13991 W moe.nb4a:bg: Accessing hidden field Ljava/util/Collections$SynchronizedCollection;->mutex:Ljava/lang/Object; (greylist-max-o, reflection, denied)
03-25 00:34:21.045 13991 13991 W moe.nb4a:bg: Accessing hidden method Ljava/util/Collections$SynchronizedSet;->(Ljava/util/Set;Ljava/lang/Object;)V (greylist-max-o, reflection, denied)
03-25 00:34:21.045 13991 13991 W moe.nb4a:bg: Accessing hidden method Ljava/util/Collections$SynchronizedCollection;->(Ljava/util/Collection;Ljava/lang/Object;)V (greylist-max-o, reflection, denied)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: Failed to inflate ColorStateList, leaving it to the framework
03-25 00:34:21.061 13990 13990 W ResourcesCompat: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 0: TypedValue{t=0x2/d=0x7f040275 a=-1}
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.content.res.TypedArray.getColor(TypedArray.java:554)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at androidx.core.content.res.ColorStateListInflaterCompat.createFromXmlInner(ColorStateListInflaterCompat.java:147)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at androidx.core.content.res.ColorStateListInflaterCompat.createFromXml(ColorStateListInflaterCompat.java:18)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at androidx.core.content.ContextCompat.getColorStateList(ContextCompat.java:124)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at com.google.android.material.resources.MaterialResources.getColorStateList(MaterialResources.java:7)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at com.google.android.material.navigation.NavigationView.(NavigationView.java:359)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at java.lang.reflect.Constructor.newInstance0(Native Method)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.view.LayoutInflater.createView(LayoutInflater.java:854)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at io.nekohasekai.sagernet.databinding.LayoutMainBinding.inflate(LayoutMainBinding.java:2)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at io.nekohasekai.sagernet.databinding.LayoutMainBinding.inflate(LayoutMainBinding.java:1)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at io.nekohasekai.sagernet.ui.MainActivity.onCreate(MainActivity.kt:8)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.Activity.performCreate(Activity.java:7815)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.Activity.performCreate(Activity.java:7804)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1325)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3350)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3514)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2110)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.os.Handler.dispatchMessage(Handler.java:107)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.os.Looper.loop(Looper.java:214)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at android.app.ActivityThread.main(ActivityThread.java:7697)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at java.lang.reflect.Method.invoke(Native Method)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
03-25 00:34:21.061 13990 13990 W ResourcesCompat: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
03-25 00:34:21.089 13990 13990 W TabLayout: MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead
03-25 00:34:21.118 13990 13990 V ViewRootImpl: The specified message queue synchronization barrier token has not been posted or has already been removed
03-25 00:34:21.132 13990 15615 I AdrenoGLES: QUALCOMM build : 6209c5d, Ifdcc64d6e8
03-25 00:34:21.132 13990 15615 I AdrenoGLES: Build Date : 12/12/19
03-25 00:34:21.132 13990 15615 I AdrenoGLES: OpenGL ES Shader Compiler Version: EV031.27.05.03
03-25 00:34:21.132 13990 15615 I AdrenoGLES: Local Branch : mybranchea1c9b4a-9e05-f149-a3b2-1458d0b52ae8
03-25 00:34:21.132 13990 15615 I AdrenoGLES: Remote Branch : quic/gfx-adreno.lnx.1.0.r85-rel
03-25 00:34:21.132 13990 15615 I AdrenoGLES: Remote Branch : NONE
03-25 00:34:21.132 13990 15615 I AdrenoGLES: Reconstruct Branch : NOTHING
03-25 00:34:21.132 13990 15615 I AdrenoGLES: Build Config : C O 9.0.3 AArch64
03-25 00:34:21.133 13990 15583 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@606f033[MainActivity]
03-25 00:34:21.136 13990 15615 I AdrenoGLES: PFP: 0x005ff112, ME: 0x005ff066
03-25 00:34:21.136 13990 15583 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=true inTouchMode=true
03-25 00:34:21.168 13990 15615 W Gralloc3: mapper 3.x is not supported
03-25 00:34:21.182 13990 13990 W Choreographer: Already have a pending vsync event. There should only be one at a time.
03-25 00:34:22.924 13990 15580 W System : A resource failed to call close.
03-25 00:34:29.663 13990 13990 I Surface : opservice is null false
03-25 00:34:37.016 13990 15640 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=false inTouchMode=true
03-25 00:34:37.154 13990 15640 E ContentProviderNative: onTransact error from {P:15031;U:1000}
03-25 00:34:37.155 13990 15640 E DatabaseUtils: Writing exception to parcel
03-25 00:34:37.155 13990 15640 E DatabaseUtils: java.lang.SecurityException: Permission Denial: reading androidx.core.content.FileProvider uri content://moe.nb4a.cache/cache/log/NB4A%201718077340309029870.log from pid=15031, uid=1000 requires the provider be exported, or grantUriPermission()
03-25 00:34:37.155 13990 15640 E DatabaseUtils: at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:781)
03-25 00:34:37.155 13990 15640 E DatabaseUtils: at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:645)
03-25 00:34:37.155 13990 15640 E DatabaseUtils: at android.content.ContentProvider$Transport.query(ContentProvider.java:239)
03-25 00:34:37.155 13990 15640 E DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:114)
03-25 00:34:37.155 13990 15640 E DatabaseUtils: at android.os.Binder.execTransactInternal(Binder.java:1032)
03-25 00:34:37.155 13990 15640 E DatabaseUtils: at android.os.Binder.execTransact(Binder.java:1005)
03-25 00:34:40.431 13990 15583 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@606f033[MainActivity]
03-25 00:34:40.432 13990 15583 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=true inTouchMode=true
03-25 00:34:42.600 13990 13990 I Surface : opservice is null false
03-25 00:34:46.235 13990 13990 W TabLayout: MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead
03-25 00:34:55.465 13990 13990 I Surface : opservice is null false
03-25 00:35:07.351 13990 13990 I Surface : opservice is null false

如果有日志,请上传。请在文档内查看导出日志的详细步骤。

App misbehaves when rotating the screen

描述问题
When in the middle of a URL test, if we rotate the screen, the test will vanish and stop!!!

预期行为:
The test should continue normally.

实际行为:
The test got aborted!!

如何复现
Rotate!

关于仪表板的bug

算是一个小bug,客户端访问那个仪表板的话,他默认是英文改成中文也没用,你返回再进去还是英文?只发现用浏览器,进那个仪表盘的话,改成中文,他重新访问,不会变成英文了,的客户端我也不知道什么情况啊,所以只是,反馈这个小bug

[Feature Request] Retain the Connection test capabilities while Search is active

As it is evident from the screenshot, as of now, when we search for something (for example all trojan connections), the UI loses the features which are available in three dots menu on top right corner (testing connections, ordering, ...).

It will be really helpful if those features remain while the list is filtered (so that we could apply testing and ordering only to the filtered items).
Screenshot_20230326-114341_Lawnchair

Feature request: Publishing on F-Droid

F-Droid is a well-known appstore that offers FLOSS apps only, without any proprietary dependencies. As far as I can see, this app is completely open-source/free. Maybe it would be possible to publish it on F-Droid?

[Feature Request] Don't block the UI while a test is running

Don't block the GUI while tests are running (Look at v2rayNG behavior while running tests).
Already, when user runs a test, the GUI gets blocked by the overlay.

I know blocking the GUI is necessary to inform the user that the test is still running and current values and order is wrong. But instead of blocking the UI, you can inform the user by showing a toast message at the end of tests.

订阅格式解析错误

描述问题
h2节点未解析path和host
订阅中节点分享链接格式如下:
vless://[email protected]:xxxxx?encryption=none&type=h2&headerType=none&host=xxxx.xxxx.xxx&path=%2F39bdc83a&flow=&security=tls&sni=xxxx.xxxx.xxxx&serviceName=&mode=&alpn=#xxxxxxxxxx
订阅是base64的,这是转换后的一个节点,v2rayN和matsuri解析正常
预期行为:
正确解析h2节点
实际行为:
在nekobox(nekoray 和 NekoBoxForAndroid 都一样)中无法解析path和host
如何复现
使用导入类似格式的订阅,或分享链接
提供有帮助的截图,录像,文字说明,订阅链接等。
如果手动把分享链接里的h2改成http,是可以正确读取的
日志

如果有日志,请上传。请在文档内查看导出日志的详细步骤。

Error with Wireguard conf

描述问题

预期行为:
Wireguard config will connect and work properly.

实际行为:
An error appears when trying to connect
error decode config: outbound options: json: cannot unmarshal array into Go struct field WireguardOutboundOptions.local_address of type string
And no connection at all.

如何复现
Any wireguard config. Tested on NekoBox v0.6 - 0.8

提供有帮助的截图,录像,文字说明,订阅链接等。
Wireguard connection can be established if config has been changed:
in the Private address field add for IP at the end

  • (for IPv4)
    xxx.xxx.xxx.xxx/32
  • (for IPv6)
    xxxx:xxx.....xxxx:xxxx/128

Wireguard

描述问题

Wireguard协议速度相较于使用Wireguard APP很慢(节点配置一样)

频繁切换WIFI和数据,最后连上WIFI后无法解析DNS

描述问题

预期行为:任意切换网络都能和matsuri一样正常解析DNS(也就是说同环境matsuri完全无此bug)

实际行为:无法解析DNS(浏览器/termux的ping),从0.6~0.8版本都这样

如何复现

0.切换飞行模式开关,清空后台来刷新dns缓存
1.同时打开wifi和数据(**移动5g,关闭ipv6与否均测试了不影响结果),此时wifi自动连上正常访问国外网站(仅支持ipv4,有路由器给的局域网ipv6,满格2.4g/5ghz双频合一信号)
2.断开wifi,打开wifi,连上的瞬间断开wifi,再打开……循环约10次(以10次为例)
3.第10次连上wifi,打开via浏览器(或chrome都一样),访问国外网站(日志里以tineye.com、www.appbrain.com为例),出现无法resolve域名的错误。但此时可以正常访问speedtest.cn等国内网站。此时用termux nslookup(日志例子是youtube.com)可以正常获得结果,用ping youtube.com则解析不到ip报错。此时打开telegram官方客户端正常刷新,意味着ip直连没问题,节点正常工作。
4.注:已测试切换ipv6选项、切换geoip/geosite来源和版本均无影响。此节点确保正常工作,更换节点问题依旧。matsuri一切正常。并且实际使用中,因为在屋里屋外走走出出,没有如此高频地切换wifi和数据也会触发,已经影响了正常使用,平均每次出门回屋都会遇到。

日志

NB4A 3809928673491545293.log

能否加一个自动保存证书的功能?

描述建议

如果连接到基于 tls 的节点时,发现节点的证书不可信,则跳出提示:证书不可信,是否信任这个证书?信任后就把这个证书固定下来,就像信任 ssh 指纹一样。

延迟测速时自动跳过证书验证。

建议的必要性

  • 手机上不方便导入证书 (我自己找不到在哪删除已信任的证书)
  • 保证小白的安全性

While running "URL Test", do a sort after testing each profile

Already, after "URL Test" gets executed for the list, the list can be sorted finally after all tests get completed (i.e. when all profiles have been tested)

When the profile list is too long, user can't wait for testing all profiles, so it is better to do a sort after testing each profile instead of doing only one sort after testing all profiles.

  1. After detecting a profile being unavailable, put it at the bottom. (Also better to compare its last ping value with the last ping value of the profiles which are at the bottom at the same moment, to have a local order at the bottom for unavailable profiles)
  2. After detecting a profile being available, put it at the top. (Also better to compare its ping value with the ping value of the profiles which are at the top at the same moment, to have a local order at the top for available profiles)
  3. Profiles which are still not tested will stay at the middle of the list until being detected as being available or unavailable to be moved to top or bottom according to 1 or 2 each one.

Also, please don't block the GUI while these test/sorts are running (Look at v2rayNG behavior for tests).
Already, when user runs a test, the GUI gets blocked by the progress indicator spinner overlay. Instead of this, you can tell the user that the current list order and test results are invalid. After all test/sorts get completed, inform the user that the current list and its values are updated and valid.

This is helpful for users having a long list. When the tests are running, let the GUI get continuously updated according to test results and let user interact with it.

Add ShadowSocksR

描述建议
Hello, I request you to add ShadowsocksR to nekobox.(with_shadowsocksr)
Because this protocol still works.
建议的必要性
Add ShadowSocksR To NekoBox

SSH fails

描述问题
SSH connection fails, no matter which server I use.
The error

预期行为:
It should connect.

实际行为:
Shows an error immediately:
Failed:: create service : parse outbound[0]: parse host key nil..

如何复现

提供有帮助的截图,录像,文字说明,订阅链接等。

Screenshot_20230316-225604_NekoBox

日志

如果有日志,请上传。请在文档内查看导出日志的详细步骤。

BUG on features import from clipboard

I am got many response/feedback from my member groups on your app, they say can't import from clipboard with vmess any type of transport. I tested it too with current latest release in repo.
I tests with clipboard from v2rayNG and even from nekobox itself failed to parse transport/network type, path/servicename. After imported they become network TCP even though I import vmess ws/grpc.
Screenshot_2023-03-23-04-30-12-199-edit_moe nb4a

Add monochrome icon

Hi 👋

Please support the Android 13 "Themed App Icons" feature.

Screenshot_2023-03-17-02-11-12-244_de mm20 launcher2 release

Thanks 🙏

服务无法连接(naiveproxy 证书吊销检查)

描述问题

使用Matsuri无法连接非443端口的naiveproxy服务,而SagerNet是可以的,看了下Matsuri日志好像是证书方面的问题,还请作者大大帮忙看看问题所在,谢谢~希望
Matsuri越来越好用。

日志

[2023-01-09 23:00:31] [Error] [tag=libnaive] [0110/070031.548742:ERROR:ssl_client_socket_impl.cc(982)] handshake failed; returned -1, SSL error code 1, net_error -202
[2023-01-09 23:00:31] [Warning] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: connection ends > read tcp 127.0.0.1:36392->127.0.0.1:45945: read: connection reset by peer
[2023-01-09 23:00:31] [Error] [tag=libnaive] [0110/070031.549240:INFO:naive_proxy.cc(192)] Connection 37 closed: ERR_PROXY_CERTIFICATE_INVALID

订阅ss链接中simple-obfs插件名识别问题

从 Matsuri 导出订阅链接到 NekoBox 时,有一个分组是simplef_obfs的,插件名为空,在 Matsuri 里正常。用浏览器访问链接,把内容解码看了一下,plugin=simple-obfs,而不是obfs-local,原来两个名字都能正确识别,现在怎么还只识别1个了。不过好在用的subconverter,目前用sssub和clash可以正确识别。

支持ssr吗

描述问题

预期行为:

实际行为:

如何复现

提供有帮助的截图,录像,文字说明,订阅链接等。

日志

如果有日志,请上传。请在文档内查看导出日志的详细步骤。

仅代理模式无法连接代理

描述问题

预期行为:
仅代理模式下,可以连接代理

实际行为:
仅代理模式下,无法连接代理,测试失败

如何复现

提供有帮助的截图,录像,文字说明,订阅链接等。

日志

如果有日志,请上传。请在文档内查看导出日志的详细步骤。

NekoBox for Andoird 0.5 (25) OSS
Date: 2023-03-16 02:25:48.955 UTC

OS_VERSION: 4.19.157-perf-g76ed4af0a24a
SDK_INT: 31
RELEASE: 12
ID: SKQ1.211006.001
DISPLAY: SKQ1.211006.001 test-keys
INCREMENTAL: V13.0.4.1.47.DEV
SECURITY_PATCH: 2022-07-01
IS_DEBUGGABLE: 0
IS_EMULATOR: null
IS_TREBLE_ENABLED: true
TYPE: user
TAGS: release-keys

MANUFACTURER: Xiaomi
BRAND: Xiaomi
MODEL: Mi 10 Pro
PRODUCT: cmi
BOARD: cmi
HARDWARE: qcom
DEVICE: cmi
SUPPORTED_ABIS: arm64-v8a, armeabi-v7a, armeabi

Settings: 

mixedPort: 2080
portLocalDns: 6450
transproxyPort: 9200
nightTheme: 0
tunImplementation: 1
mtu: 9000
profileTrafficStatistics: true
speedInterval: 1000
alwaysShowAddress: false
meteredNetwork: false
proxyApps: false
bypassLan: false
bypassLanInCoreOnly: false
trafficSniffing: true
resolveDestination: false
ipv6Mode: 0
mux: []
muxConcurrency: 8
remoteDns: https://8.8.8.8/dns-query
directDns: https://223.5.5.5/dns-query
directDnsUseSystem: false
dnsNetwork: []
enableDnsRouting: true
enableFakeDns: false
requireTransproxy: false
transproxyMode: 0
allowAccess: false
connectionTestURL: http://cp.cloudflare.com/
acquireWakeLock: false
tcpKeepAliveInterval: 15
appTLSVersion: 1.2
showBottomBar: false
rulesProvider: 1
enableClashAPI: false
showDirectSpeed: false
appendHttpProxy: true
serviceMode: proxy
enableLog: true
profileGroup: 3
profileId: 47
profileCurrent: 47

Logcat: 



2023/03/16 02:25:44 [Warning] [StatsBar$testConnection$1] java.lang.IllegalStateException: 超时

[ws+uTLS] VMess协议无法使用

描述问题

预期行为:正常使用

实际行为:应用内测速提示EOF,打开代理后(全局模式)无法上网

如何复现

代理使用的是VMess+ws+tls,配置为手动填写,如下(已隐藏域名和UUID):

{
  "dns": {
    "rules": [
      {
        "domain": [
          "***"
        ],
        "server": "dns-direct"
      },
      {
        "disable_cache": true,
        "domain_suffix": [
          ".arpa.",
          ".arpa"
        ],
        "server": "dns-block"
      }
    ],
    "servers": [
      {
        "address": "https://8.8.8.8/dns-query",
        "address_resolver": "dns-direct",
        "tag": "dns-remote"
      },
      {
        "address": "https://223.5.5.5/dns-query",
        "address_resolver": "dns-local",
        "detour": "direct",
        "tag": "dns-direct"
      },
      {
        "address": "underlying://0.0.0.0",
        "detour": "direct",
        "tag": "dns-local"
      },
      {
        "address": "rcode://success",
        "tag": "dns-block"
      }
    ],
    "strategy": "ipv4_only"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "listen_port": 6450,
      "override_address": "8.8.8.8",
      "override_port": 53,
      "tag": "dns-in",
      "type": "direct"
    },
    {
      "domain_strategy": "",
      "endpoint_independent_nat": true,
      "inet4_address": [
        "172.19.0.1/28"
      ],
      "sniff": false,
      "stack": "system",
      "tag": "tun-in",
      "type": "tun"
    },
    {
      "domain_strategy": "",
      "listen": "127.0.0.1",
      "listen_port": 2080,
      "tag": "mixed-in",
      "type": "mixed"
    }
  ],
  "log": {
    "level": "trace"
  },
  "outbounds": [
    {
      "alter_id": 0,
      "packet_encoding": "",
      "security": "auto",
      "server": "***",
      "server_port": 443,
      "tls": {
        "enabled": true,
        "insecure": false,
        "server_name": "***",
        "utls": {
          "enabled": true,
          "fingerprint": "firefox"
        }
      },
      "transport": {
        "headers": {},
        "path": "/tyu",
        "type": "ws"
      },
      "uuid": "***",
      "type": "vmess",
      "tag": "proxy",
      "domain_strategy": ""
    },
    {
      "tag": "direct",
      "type": "direct"
    },
    {
      "tag": "bypass",
      "type": "direct"
    },
    {
      "tag": "block",
      "type": "block"
    },
    {
      "tag": "dns-out",
      "type": "dns"
    }
  ],
  "route": {
    "auto_detect_interface": true,
    "rules": [
      {
        "outbound": "dns-out",
        "port": [
          53
        ]
      },
      {
        "inbound": [
          "dns-in"
        ],
        "outbound": "dns-out"
      },
      {
        "ip_cidr": [
          "224.0.0.0/3",
          "ff00::/8"
        ],
        "outbound": "block",
        "source_ip_cidr": [
          "224.0.0.0/3",
          "ff00::/8"
        ]
      }
    ]
  }
}

日志

NekoBox for Andoird 0.8 (40) OSS
Date: 2023-03-26 10:31:10.627 UTC

OS_VERSION: 5.4.147-qgki-g369674717ad3
SDK_INT: 33
RELEASE: 13
ID: TKQ1.220829.002
DISPLAY: TKQ1.220829.002 test-keys
INCREMENTAL: V14.0.23.1.9.DEV
SECURITY_PATCH: 2023-01-01
IS_DEBUGGABLE: 0
IS_EMULATOR: null
IS_TREBLE_ENABLED: true
TYPE: user
TAGS: release-keys

MANUFACTURER: Xiaomi
BRAND: Xiaomi
MODEL: 2106118C
PRODUCT: odin
BOARD: odin
HARDWARE: qcom
DEVICE: odin
SUPPORTED_ABIS: arm64-v8a, armeabi-v7a, armeabi

Settings: 

mixedPort: 2080
portLocalDns: 6450
transproxyPort: 9200
nightTheme: 0
serviceMode: vpn
tunImplementation: 1
mtu: 9000
speedInterval: 1000
profileTrafficStatistics: true
showGroupInNotification: false
alwaysShowAddress: false
meteredNetwork: false
showDirectSpeed: true
resolveDestination: false
ipv6Mode: 0
rulesProvider: 0
muxConcurrency: 8
remoteDns: https://8.8.8.8/dns-query
directDns: https://223.5.5.5/dns-query
directDnsUseSystem: false
dnsNetwork: []
enableFakeDns: false
appendHttpProxy: false
requireTransproxy: false
transproxyMode: 0
connectionTestURL: http://cp.cloudflare.com/
acquireWakeLock: false
enableClashAPI: false
tcpKeepAliveInterval: 15
appTLSVersion: 1.2
appTheme: 20
bypassMode: false
individual: com.microsoft.emmx
com.android.vending
com.google.android.gms
com.google.android.gsf
com.picacomic.fregata
com.valvesoftware.android.steam.community
com.google.android.youtube
jp.pxv.android
com.android.providers.downloads.ui
com.android.providers.downloads
com.android.browser
com.nexon.bluearchive
showBottomBar: true
profileId: 7
trafficSniffing: false
bypassLanInCore: false
bypassLan: false
proxyApps: false
mux: []
enableDnsRouting: false
allowAccess: false
profileCurrent: 7
logLevel: 4
profileGroup: 1

Logcat: 

--------- beginning of main
03-26 18:31:09.689  9178 22186 D AppScoutStateMachine: 9178-ScoutStateMachinecreated
03-26 18:31:09.728  9178 20089 I ContentCatcher: Interceptor : Catcher list invalid for [email protected]@117584001
03-26 18:31:09.728  9178 20089 I ContentCatcher: Interceptor : Get featureInfo from config image_pick_mode
03-26 18:31:09.729  9178 20089 I ContentCatcher: Interceptor : Get featureInfo from config pick_mode
03-26 18:31:09.887  9178  9178 D DecorView[]: onWindowFocusChanged hasWindowFocus true
03-26 18:31:09.899  9178  9178 I HandWritingStubImpl: refreshLastKeyboardType: 1
03-26 18:31:09.900  9178  9178 I HandWritingStubImpl: getCurrentKeyboardType: 1


2023/03/26 10:25:11 [Warning] [StatsBar$testConnection$1] java.lang.IllegalStateException: Get "http://cp.cloudflare.com/": unexpected EOF
2023/03/26 10:25:29 [Warning] [StatsBar$testConnection$1] java.lang.IllegalStateException: Get "http://cp.cloudflare.com/": malformed HTTP response "\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00\x05\x00\x10\x00\x00\x00\x03\x00\x00\x00\xfa\x00\x06\x00\x10\x01@\x00\x04\x00\x10\x00\x00"

频繁切换wifi/数据后偶发dns解析错误

描述问题

预期行为:正常解析dns,如同之前用matsuri一样

实际行为:无法解析国外网站,但在geosite的cn里的网站可以解析(应该是,测试了baidu可以),tg等不走dns的也可以,nslookup命令解析国外网站也可以

如何复现

ipv4v6都支持的数据网络切换到仅v4的wifi后,有几率用任意国外浏览器打开国外网站(日志里是tineye.com),无法解析。注,这个节点之前用matsuri从来没这样过

日志

NB4A 2348937209763053916.log
请见#27 (comment)

[Feature Request] Auto delete old configs when list becomes longer than a specific size

Let users set a number in settings so that if the profile list become longer than that number, the older profiles should be automatically deleted.
This is actually an alternative solution for the problem which I have mentioned in my earlier issue: #33

For users who need to add too many profiles per day, at least one of these solutions is necessary. The first one is useful for the rest of users too.
Users who add free and short lasting servers need to add many servers everyday.
When the list becomes too long, tests can't reach the end of the list soon.
So better to put new profiles at the beginning of the list or prevent the list become long.
It's the most important issue in this app - if you use free servers in a country which blocks servers rapidly you will understand the reason.

将一个节点连同各种设置导出设定档后,不能导入

描述问题
节点的分享按钮里面有导出设定档,导出之后得到一个完整设置的json 然后导入的时候会提示“未在此档案中找到代理”
预期行为:
导入设置之后替换现有设置和节点
实际行为:
“未在此档案中找到代理”
如何复现

提供有帮助的截图,录像,文字说明,订阅链接等。

日志

如果有日志,请上传。请在文档内查看导出日志的详细步骤。

路由选项增加路由组设置,类似pc上快速规则切换。

**描述建议**

当前0.8版本设置选项里没有域名解析策略了,内置类似策略的效果跟“IPIfNonMatch”差不多。
希望能增加这个域名解析策略的选择。

建议的必要性

主要是因为“AsIs“这个策略也有优势是完全忽略对ip地址的考虑,仅考虑对域名的过滤,使得bt下载时能一直开着vpn。
(当前vpn服务启用后,默认对所有ip执行代理,所以bt流量都走代理了,而bt时对ip设置过滤条件不太现实。)
(尝试路由选项新建策略 protocol:bittorrent 绕过,好像没有起效,bt流量还是走代理)

哦,想了下,增加这个域名解析策略选项好像没用,
因为默认是全局代理(ip和域名)。
只有在全局绕过时,“AsIs”的忽略ip才能让bt下载直连。

原建议请忽略。。。

描述建议
新建议是路由设置路由组,比如黑名单的规则可以定成一个组,白名单的规则一个组等等,并添加到通知栏可以快速切换。

建议的必要性
非必要性,主要是跟pc版的功能更一致。

Multiplexer is not working

Hi
When i tried multiplexer did not work for me it made the servers timeout or unavailable without it it's works fine.

工程编译流程总结

编译环境

ubuntu 20

仓库版本 9144e3f9b890ab7c907a527d54102cb197eda63a

安装openjdk-8 测试 javac

安装git

git clone

1.执行脚本 下载 external lib

/run init action library

2.设置ndk环境

打开sdk manage 下载 ndk 25.0.8775105 即可

3.编译 core文件

./buildScript/lib/core.sh

如果提示没有go环境 执行 ./buildScript/init/go.sh (好像core步骤包括了 具体我忘了)

如果提示下载go库错误,需要设置镜像代理

打开 build/golang/go/bin 目录

执行:

go env -w GOPROXY=https://goproxy.cn

重新执行 ./buildScript/lib/core.sh 即可完成

输出

>> install /home/Matsuri/app/libs/libcore.aar

视为成功

然后可以进行AndroidStudio build操作了。

任何网络超时下载的问题 自行科学上网解决

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.