Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update shadowsocks-rust to 1.9.0 #2622

Merged
merged 6 commits into from
Dec 25, 2020
Merged

Update shadowsocks-rust to 1.9.0 #2622

merged 6 commits into from
Dec 25, 2020

Conversation

madeye
Copy link
Contributor

@madeye madeye commented Dec 11, 2020

No description provided.

@madeye
Copy link
Contributor Author

madeye commented Dec 11, 2020

The i386 build seems to have problems with illegal instructions.

I guess it's related to crypto2: https://github.com/shadowsocks/crypto2/blob/master/src/blockcipher/aes/x86.rs#L13

For some old x86 devices without AES instructions, we may need to disable the ASM here.

To simplify the logic, we can totally disable assembly acceleration on armeabi and i386 build.

/data/user_de/0/com.github.shadowsocks/no_backup/stat_main -c /data/user/0/com.github.shadowsocks/no_backup/shadowsocks.conf --vpn -U --dns-addr 127.0.0.1:5450 --remote-dns-addr dns.google:53 --acl /data/user_de/0/com.github.shadowsocks/no_backup/bypass-lan.acl
12-11 16:58:39.620 11047 11047 F libc    : Fatal signal 4 (SIGILL), code 2 (ILL_ILLOPN), fault addr 0x5f62c2e7 in tid 11047 (libsslocal.so), pid 11047 (libsslocal.so)
12-11 16:58:39.657 11053 11053 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
12-11 16:58:39.660  1873  1873 I /system/bin/tombstoned: received crash request for pid 11047
12-11 16:58:39.672 11053 11053 I crash_dump32: performing dump of process 11047 (target tid = 11047)
12-11 16:58:39.672 11053 11053 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-11 16:58:39.672 11053 11053 F DEBUG   : Build fingerprint: 'google/sdk_gphone_x86/generic_x86:10/QSR1.190920.001/5891938:user/release-keys'
12-11 16:58:39.672 11053 11053 F DEBUG   : Revision: '0'
12-11 16:58:39.672 11053 11053 F DEBUG   : ABI: 'x86'
12-11 16:58:39.672 11053 11053 F DEBUG   : Timestamp: 2020-12-11 16:58:39+0800
12-11 16:58:39.673 11053 11053 F DEBUG   : pid: 11047, tid: 11047, name: libsslocal.so  >>> /data/app/com.github.shadowsocks-aP4h93XpVwl34bjFzFASdQ==/lib/x86/libsslocal.so <<<
12-11 16:58:39.673 11053 11053 F DEBUG   : uid: 10134
12-11 16:58:39.673 11053 11053 F DEBUG   : signal 4 (SIGILL), code 2 (ILL_ILLOPN), fault addr 0x5f62c2e7 (*pc=0x8328f8c5)
12-11 16:58:39.673 11053 11053 F DEBUG   :     eax ffb366f4  ebx 5f9abe24  ecx ef469068  edx 00000000
12-11 16:58:39.673 11053 11053 F DEBUG   :     edi ffb366f4  esi 0000000d
12-11 16:58:39.673 11053 11053 F DEBUG   :     ebp ffb366f4  esp ffb36630  eip 5f62c2e7
12-11 16:58:39.685 11053 11053 F DEBUG   :
12-11 16:58:39.685 11053 11053 F DEBUG   : backtrace:
12-11 16:58:39.685 11053 11053 F DEBUG   :       #00 pc 000cb2e7  /data/app/com.github.shadowsocks-aP4h93XpVwl34bjFzFASdQ==/lib/x86/libsslocal.so
12-11 16:58:39.685 11053 11053 F DEBUG   :       #01 pc 000898e8  /apex/com.android.runtime/lib/bionic/libc.so (__libc_init+120) (BuildId: 76290498408016ad14f4b98c3ab6c65c)

@zonyitoo
Copy link

I am still working on shadowsocks/shadowsocks-rust#326 , which is the actual v1.9.0.

@madeye
Copy link
Contributor Author

madeye commented Dec 11, 2020

Okay, no hurry.

@LuoZijun
Copy link

LuoZijun commented Dec 11, 2020

@madeye 我想问题应该在这个文件里:https://github.com/shadowsocks/shadowsocks-rust/blob/master/.cargo/config.toml#L10

如果你为一些陈旧的处理器编译版本的话,那可能需要修改这个 RUSTFLAGS,把 AES 和 SSE2 去掉。
或者直接在环境变量里面使用 RUSTFLAGS="-C -C target-feature=+sse" cargo build --release

@madeye
Copy link
Contributor Author

madeye commented Dec 11, 2020

@LuoZijun We'd better separate x86 and x86_64 and enable aes and avx for x86_64 only.

I'll try overwrite RUSTC flags in the Gradle config.

@LuoZijun
Copy link

LuoZijun commented Dec 11, 2020

@madeye

不对,这应该是 Ring 的问题,因为 shadowsocks-cryptoX86X86-64ARM32AArch64 都是使用 Ring 的密码代码(AEAD)。

通过 Ring 的 build.rs 脚本可以看到,Ring 在 X86 平台依然使用 AES-NI 指令 以及 pclmulqdq 指令。

https://github.com/briansmith/ring/blob/main/build.rs#L55-L60

Copy link
Contributor

@Mygod Mygod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's better to wait for the features in rust-nightly become stable before merging this. (I haven't been following -- what features were required on nightly?) Otherwise looks good.

@madeye
Copy link
Contributor Author

madeye commented Dec 12, 2020

It looks ring is still in a early stage. I see some similar issues for armv7 build:

briansmith/ring#838

@madeye
Copy link
Contributor Author

madeye commented Dec 12, 2020

If we plan to switch to ring and crypto2 in the next release, we may need to remove the support of armv7 and x86.

@Mygod
Copy link
Contributor

Mygod commented Dec 13, 2020

I think you might be heavily underestimating how popular 32-bit systems are due to memory constraints.

@madeye
Copy link
Contributor Author

madeye commented Dec 13, 2020

Guess we need a LTS branch from shadowsocks-rust built with openssl and libsodoum...

Or we should find a way to disable AES and AVX for x86 and armv7 target.

@zonyitoo
Copy link

Guess we need a LTS branch from shadowsocks-rust built with openssl and libsodoum...

Or we should find a way to disable AES and AVX for x86 and armv7 target.

Maybe we could simply disable ring on x86 and armv7 targets?

@madeye
Copy link
Contributor Author

madeye commented Dec 13, 2020

Maybe we could simply disable ring on x86 and armv7 targets?

It's a good idea.

@madeye
Copy link
Contributor Author

madeye commented Dec 14, 2020

BTW, is there any way to optimize the memory usage for ACL. I observed very large memory usage from the previous release. The memory usage easily reaches to 200M in several minutes after the startup.

 9969 u0_a446      20   0  12G 197M 2.3M S 18.0   2.6   0:25.90 libsslocal.so +

I suspected it's related to the regex we're using now. Maybe we should move to wildcard rules to solve this issue.

@Mygod
Copy link
Contributor

Mygod commented Dec 14, 2020

@madeye Make a separate thread? Has the issue been here since the beginning?

@zonyitoo
Copy link

BTW, is there any way to optimize the memory usage for ACL. I observed very large memory usage from the previous release. The memory usage easily reaches to 200M in several minutes after the startup.

 9969 u0_a446      20   0  12G 197M 2.3M S 18.0   2.6   0:25.90 libsslocal.so +

I suspected it's related to the regex we're using now. Maybe we should move to wildcard rules to solve this issue.

Yes. I have also noticed that on my RPI. Regex rules matching is very CPU consuming, which results in very high latency on ARM devices.

@madeye madeye force-pushed the update-shadowsocks-rust branch 4 times, most recently from 990fe57 to 37bee29 Compare December 19, 2020 22:50
@madeye madeye marked this pull request as ready for review December 21, 2020 00:15
@madeye madeye force-pushed the update-shadowsocks-rust branch 2 times, most recently from 2a43d27 to 9bb65f3 Compare December 23, 2020 00:19
@zonyitoo
Copy link

zonyitoo commented Dec 23, 2020

Is it possible to provide local DNS resolver with common TCP & UDP sockets? That would make a lot easier to reuse those existed DNS resolvers.

Connecting to Unix Sockets requires a little bit nasty customization to trust-dns-resolver. :( Because by definition, all DNS servers could be identified by SocketAddr, but unix sockets couldn't.

Android could listen to a localhost port, say 127.0.0.1:65000 with TCP & UDP, which is customizable.

NOTE: I just look deep into how trust-dns-resolver handles DNS requests and responses. It contains quite a lot details that we didn't cover in dns-relay implementations. So I suggest to reuse this library:

  1. For local dns resolvers, which is for resolving remote servers' domain, could be customized directly with the dns configuration key. On Android, it could points to a port that relays requests to system resolver.
  2. For dns-relay, which relays DNS queries directly to servers. Current implementation is good enough.

@LuoZijun
Copy link

LuoZijun commented Dec 23, 2020

@zonyitoo
Copy link

@zonyitoo See https://github.com/shadowsocks/dns/blob/main/wire/examples/lookup.rs

也许对你有帮助。

The key issue is that Android is currently using an unix socket as local DNS resolver, which is not compatible with common DNS libraries. Usually these libraries contains lots of useful tools, like

  • RFC requires resolver to handles localhost as a special case
  • Caching query results with ttl
  • DNS over TLS / HTTPS, ... mdns, ... dnssec, and so on.

@madeye
Copy link
Contributor Author

madeye commented Dec 24, 2020

@zonyitoo I suggest we keep the current RPC like local resolver for Android app.

Actually, the local resolver provided by shadowsocks-android is just a wrapper of Android's API: https://developer.android.com/reference/java/net/InetAddress#getAllByName(java.lang.String). We have no plan to implement a real local DNS resolver in Kotlin or Java.

We expect all the local resolver logic would be moved to shadowsocks-rust one day. It's not an easy task, as we need to find a way to call this API from shadowsocks-rust: https://developer.android.com/ndk/reference/group/networking#group___networking_1ga0ae9e15612e6411855e295476a98ceee

@madeye
Copy link
Contributor Author

madeye commented Dec 24, 2020

@zonyitoo What's the release plan for shadowsocks-rust 1.9.0? I guess including tokio 1.0 in 1.9.0 is too risky?

@zonyitoo
Copy link

zonyitoo commented Dec 24, 2020

@zonyitoo What's the release plan for shadowsocks-rust 1.9.0? I guess including tokio 1.0 in 1.9.0 is too risky?

It should include tokio v1.0. Because it is almost equivalent to v0.3. All libraries out there held and waited for this final and long term support release.

@madeye
Copy link
Contributor Author

madeye commented Dec 24, 2020

This will set the name server configuration for trust-dns-resolver, it will connects to this address with both TCP and UDP protocol.

It looks not working. All local DNS queries are dropped.

It should include tokio v1.0. Because it is almost equivalent to v0.3. All libraries out there held and waited for v1.0.

Okay.

@zonyitoo
Copy link

It looks not working. All local DNS queries are dropped.

"--local-dns-addr", "127.0.0.1:${DataStore.portLocalDns + 1}"

This command line option is also required.

@madeye
Copy link
Contributor Author

madeye commented Dec 24, 2020

Okay, it works now.

@zonyitoo
Copy link

Great. Did you delete those code before test?

@madeye
Copy link
Contributor Author

madeye commented Dec 24, 2020

Did you delete those code before test?

Yes

@zonyitoo
Copy link

zonyitoo commented Dec 24, 2020

BTW. On the latest master branch, I have made some modifications about dns-relay:

For remote DNS queries, it sends TCP and UDP queries simutaneously. But TCP queries send about 500ms ~ 1.5s after UDP. https://github.com/shadowsocks/shadowsocks-rust/blob/9bc90cc59bc9a1fe61cdab47648c02b055878e5a/crates/shadowsocks-service/src/local/dns/server.rs#L633-L670

@zonyitoo
Copy link

We expect all the local resolver logic would be moved to shadowsocks-rust one day. It's not an easy task, as we need to find a way to call this API from shadowsocks-rust: https://developer.android.com/ndk/reference/group/networking#group___networking_1ga0ae9e15612e6411855e295476a98ceee

https://github.com/bbqsrc/cargo-ndk :P

zonyitoo added a commit to shadowsocks/shadowsocks-rust that referenced this pull request Dec 24, 2020
@madeye
Copy link
Contributor Author

madeye commented Dec 24, 2020

@zonyitoo BTW, the local resolver is UDP only. So we need to make the UDP local resolver always enabled even in TCP only mode.

@madeye
Copy link
Contributor Author

madeye commented Dec 24, 2020

@zonyitoo BTW, the local resolver is UDP only. So we need to make the UDP local resolver always enabled even in TCP only mode.

Maybe we can control the local and remote DNS protocols? For example, --local-dns-addr udp://127.0.0.1:5353

@madeye
Copy link
Contributor Author

madeye commented Dec 25, 2020

Moved to DNS changes to #2635

@madeye madeye merged commit 4f38bed into master Dec 25, 2020
@madeye madeye deleted the update-shadowsocks-rust branch December 25, 2020 00:44
@zonyitoo
Copy link

@zonyitoo BTW, the local resolver is UDP only. So we need to make the UDP local resolver always enabled even in TCP only mode.

Maybe we can control the local and remote DNS protocols? For example, --local-dns-addr udp://127.0.0.1:5353

That's a good idea. But for general cases, a DNS server must provide both UDP and TCP services. trust-dns won't create the TCP stream if UDP queries are alway succeeded.

zonyitoo added a commit to shadowsocks/shadowsocks-rust that referenced this pull request Dec 28, 2020
* upgrade to tokio v1.0

- removed tokio::prelude
- upgrade hyper to v0.14, tokio-rustls to v0.22

still working on migrating trust-dns-* and tokio-native-tls

ref #354

* tokio v1.0 removed with_poll

fix #355, ref #354

* removed CTRL-BREAK signal handler

ref #354

* fixes compliation error, add missing return

fixes #355

* allow setting SO_SNDBUF and SO_RCVBUF for sockets

ref #352

* completely removed unix socket based DNS resolving

ref shadowsocks/shadowsocks-android#2622

* fix build issue on Windows

* fixed uds poll_write loop, fixed udp outbound loopback check

ref #355

* disable default trust-dns resolver for andorid, macos, ios

This commit also:

- Optimized resolve() logging with elapsed time
- updated tokio-native-tls

* local-dns removed from default features

* fix rustc version with rust-toolchain

* Bump bytes from 0.6.0 to 1.0.0

* add dependabot badge

* indirectly depend on trust_dns_proto via trust_dns_resolver

* auto reconnect if udp sendto failed

* recreate proxied socket if recv() returns failure

* increase score precision to 0.0001

* example of log4rs configuration

* PingBalancer instance shouldn't kill probing task when dropping

- Probing task should be controlled by the internal shared state

* switch to trust-dns main for latest tokio 1.0 support
@IceCodeNew
Copy link

@madeye 这个 PR 在依赖 tokio 的依赖项还没有兼容 tokio 1.0 的时候就合并了,我在想是不是应该再更新一次 git submodule shadowsocks-rust,重新触发一次编译?

@Mygod
Copy link
Contributor

Mygod commented Jan 4, 2021

@zonyitoo I suggest we keep the current RPC like local resolver for Android app.

Actually, the local resolver provided by shadowsocks-android is just a wrapper of Android's API: https://developer.android.com/reference/java/net/InetAddress#getAllByName(java.lang.String). We have no plan to implement a real local DNS resolver in Kotlin or Java.

We expect all the local resolver logic would be moved to shadowsocks-rust one day. It's not an easy task, as we need to find a way to call this API from shadowsocks-rust: https://developer.android.com/ndk/reference/group/networking#group___networking_1ga0ae9e15612e6411855e295476a98ceee

Incorrect. On latest Android versions, we use per-Network resolving APIs. Will open a separate issue about UDS later.

JackyAnn added a commit to JackyAnn/shadowsocks-android that referenced this pull request Sep 22, 2022
* Allow user to keep data when uninstalling (shadowsocks#2506)

* Update README.md

* Update dependencies

* Add cargo clean task

* Enable LTO

* Speed up rebuild

* Update issue templates with labels

* Update dependencies

* Fix output name second attempt

* Update NDK

* Ensure cargoBuild is ran before mergeJniLibFolders

* Bump version

* Refine release build process

* Refine gradle files

* Add RUST_BACKTRACE

* Use rethrowAsSocketException

* Suppress write errors to protect_path

* Update shadowsocks-rust

* Bump version

* Improve accessibility

* Rename cipher plain to none

* Revert "Add RUST_BACKTRACE"

This reverts commit fdff88e.

ndk-stack should be used instead.

* Use cp.cloudflare.com for connectivity test

Credits: https://www.v2ex.com/t/656983#r_8748918

* Update dependencies

* Remote DNS setting is enabled unconditionally

* Show more information on conflicting plugins

Because one of you feckers just cannot learn to be decent.

* Add support for PTR queries

* Prevent querying PTR on custom Network

* Suppress network unspecified exceptions

* Handle IOException while reading

* Refine handling duplicate plugins

* Use any address as default DNS

* Suppress EACCES for ProtectWorker

* Clean up unused code

* Do not suppress IOException

* Disable UDP relay if plugin is enabled and no fallback

* Remove unnecessary isExperimental

* Update dependencies

* Fix unchecked cast

* Do not use WorkManager in device storage

* Remove unnecessary directBootAware overloading

* Suppress BadConfigurationProvider

* Disable RemoveWorkManagerInitializer lint for apps

* Update to Android 11 beta 1

* Request QUERY_ALL_PACKAGES for mobile

* Refine code style

* Fix ambiguous coroutineContext

* Downgrade coroutines

* Update dependencies

* Deprecate using Handler

* Fix shadowsocks#2546

* Only match exported plugins

* Update dependencies

* Update dependencies

* Migrate to ML kit for scanning QR code

Fixes shadowsocks#2548.

* Make scanner immersive

* Lock orientation to prevent camera recreation

* Fix missing Serializable declaration

* Add missing serialVersionUID

* Update dependencies

* Partially migrate to ActivityResultContracts

AlertDialogFragment will be migrated after the API goes stable.

* Add ActionBar to oss activity

* Add ActionBar to details activity

* Refine Scanner

* Bump version

* Update dependencies

* Suppress cancellation exceptions

* Skip processing if EOS is reached

* Refine PTR compat

* Fix shadowsocks#2557

* Fix shadowsocks#2562

* Update Android gradle

* Set VPN flag properly

Refine shadowsocks#2562.

* Drop support for Android Lollipop

* Update dependencies

* Remove UDP upstream DNS support. Fix shadowsocks#2564 shadowsocks#2518

* Update shadowsocks-rust

* Update dependencies

* Decouple main dependencies from plugin lib

* Simplify code

* Add missing type

* Update dependencies

* Deprecate old backup mechanism for Android 5-

* Update leanback theme to appcompat

* Use singleTask launchMode

* Fix build

* Bump version

* Update dependencies

* Update dependencies

* Bump plugin lib version to 2.0.0

* Add isV2 to PluginManager.InitResult

* Pass a value with the VPN option, if plugin version < 2.0

* Switch to __android_vpn

* Remove unnecessary parentheses

* Update shadowsocks-rust

* Bump version

* Clean up and bump version

* Revert camera-view back to alpha17

* Bump version

* Update dependencies

* Migrate away from deprecated APIs with core 1.3.0-alpha05

* Clean up code

* Refine code style

* Remove old ciphers. Fix shadowsocks#2621

* Enable single-threaded

* Update shadowsocks-rust to 1.8.23

* Use Parcelize for TrafficStats

* Fix platform insets on API 29-

* Fix shadowsocks#2623

* Update barcode-scanning

* Fix shadowsocks#2571

* Refine error message

* Refine shadowsocks#2571

* Limit open sockets to 256 in UDP association. Fix shadowsocks#2625

* Bump version

* Fix little problem of profile switching

* Update shadowsocks-rust to 1.9.0 (shadowsocks#2622)

* Fix shadowsocks#2638

* Bump version

* Switch to local UDP DNS resolver (shadowsocks#2635)

* Switch to the local UDP DNS resolver

* Update shadowsocks-rust

* Revert the rustup commands

* Fix shadowsocks#2642

* Fix the ByteBuffer allocation

* Update shadowsocks-rust

* Revert to local UDS resolver

Fix shadowsocks#2650

* Check deprecated ciphers (shadowsocks#2651)

* Bump version

* Fix shadowsocks#2301

* Bump version

* Remove the non-ietf chacha20 and salsa20 ciphers

* Fix shadowsocks#2665

* Update dependencies

* Fix deprecation of kotlin extensions

* Remove unused gcm work library for API 23+

* Use work-multiprocess

* Refine code style

* Update dependencies (shadowsocks#2672)

* Update dependencies

* Refine code style

* Bump gradle to 6.8.2

* Drop packet if out of buffer

* Refine error message

* Enlarge the buffer size of a UDP connection

* Bump version

* Ignore all exceptions whilst updating subscriptions

* Refine the JSON config file for ss-rust 1.10

* Refine the code style

* Update shadowsocks-rust to v1.10.3

* Fix shadowsocks#2679

* Update dependencies

Fixes shadowsocks#2699.

* Fix deprecation of adapterPosition

* Bump plugin to 2.0.1

* Migrate AlertDialogFragment to fragment result API

* Remove useless dependency update

* Migrate the rest to fragment result API

* Remove unused field

* Prevent crashing on shitty ROMs

* Add search tool for profiles (shadowsocks#2682)

* Suppress logging unsupported query type errors

* Ignore if connection was prematurely closed

* Use default udp_timeout=300 instead

Refine shadowsocks#2625.

* Mark underlyingNetwork as volatile

Attempts at addressing shadowsocks#2667.

* Fixed required targetFragments for preference

* Downgrade gradle plugin

* Update shadowsocks-rust and add back some ciphers

Fix shadowsocks#2705 and shadowsocks#2663.

* Update dependencies

* Check plugin properly

Fix shadowsocks#2667.

* Check crypto before init

* Make code style more Kotlin

* Update core and remove workaround

* Refine search to respect locale

* Double fixes touch target

* Resolve server name dynamically always (shadowsocks#2731)

Fixes shadowsocks#2722.

* Bump version

* Downgrade fragment to 1.3.2

Fixes shadowsocks#2733.

* Make plugin library depend on minimum version instead

* Enable Parallel GC

* Set useLegacyPackaging

* Update the maven publish plugin (shadowsocks#2734)

1. Remove the unnecessary custom URL
2. Replace jcenter with mavenCentral

* Handle illegal profiles properly

* Fix windows build failed shadowsocks#2666 shadowsocks#2711

* Allowed build under msys2 or cygwin

* Update dependencies

* Bring back semitransparent TV app via build variants (shadowsocks#2741)

This creates two variants for tv, freedom containing the original design, and google containing one matching Google's nonsense guideline. The former should be published on GitHub and elsewhere.

Revert "Revert "Revert "Revert "Revert "Make app fullscreen to match guidelines"""""

This reverts commit 0c67ac6.

* Fix typo

* Show full proxied apps mode to compensate for missing title

* Use MaterialAlertDialogBuilder

* Add progress indicator to ServiceButton

* Remove elevation from progress

* Only show progress for connecting

* Only show progress when connecting is taking too long

* Bump version

* Update dependencies

* Update sdk to S

* Use registerBestMatchingNetworkCallback

* Use OsConstants.ENONET

* Deal with new requirements

* Use main thread for default network callback on API 26+

* Remove unused code

* Fix duplicate authentication

* Update dependencies

* Bump version

* More stupid Android 6 bugs

* Update dependencies

* Downgrade leanback-preference

* Update to API 31

* Remove STORAGE permission on Android 10+

* Update dnsjava

* Ensure that redirects are always followed

Fixes shadowsocks#2786, shadowsocks#2791.

* Update dependencies

* Update to AGP 7.0.2

* Fix lint

* Update dependencies

* Fix shadowsocks#2803

* Remove extra file

* v5.2.6

* Revert "Show full proxied apps mode to compensate for missing title"

This reverts commit d21cf7b.

Fixes shadowsocks#2806.

* Add linkedin.com to gfwlist

* Fix Codacy badge

* Update dependencies

* Update .gitignore

ignore DS_Store

* Just to satisfy the obsessive-compulsive disorder :-)

* Update shadowsocks-rust

Update rust  dependency

* add new ciphers feature, and reorder cipher name

* Modify acl rules

* Update config.yml

try to fix up the rust build error

* enable armv8, neon feathures for hardware acceleration.

* Fix the missing springAnimator

* Update shadowsocks-rust to v1.15.0-alpha.5

* Bump version

* Update translations

Fixes shadowsocks#2867.

* Add German and Ukrainian translations

* Misc fixes

* Fix order

* Use system resolver

* Update dependencies

* Declare POST_NOTIFICATIONS

* Protect sensitive profile information when copied

* Add support for monochrome icons (not recommended)

* Declare supported languages

* Require authentication for closing service

* Support skipping animation in StatsBar

* Downgrade AGP

* Misc fixes

* Turn on fun switch

* Remove useless code

* Bump version

* Fix the compile error shadowsocks#2930 (shadowsocks#2935)

Make checking python version code compatible with windows and *nix

Redefine the python version detection code

Co-authored-by: Mygod <[email protected]>
Co-authored-by: Mygod <[email protected]>
Co-authored-by: Max Lv <[email protected]>
Co-authored-by: cyber386 <[email protected]>
Co-authored-by: Goooler <[email protected]>
Co-authored-by: SquallATF <[email protected]>
Co-authored-by: dev4u <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants