diff --git a/README.md b/README.md index f6c2171ac0..f8521af69c 100644 --- a/README.md +++ b/README.md @@ -23,23 +23,23 @@
-

🛠️ Packed to the gills

-

Expansive range of modes including SOCKS5, HTTP proxy, TCP/UDP forwarding, Linux TProxy - not to mention additional features continually being added.

+

🛠️ Jack of all trades

+

Wide range of modes including SOCKS5, HTTP Proxy, TCP/UDP Forwarding, Linux TProxy, TUN - with more features being added constantly.

-

⚡ Lightning fast

-

Powered by a custom QUIC protocol, Hysteria delivers unparalleled performance over even the most unreliable and lossy networks.

+

⚡ Blazing fast

+

Powered by a customized QUIC protocol, Hysteria is designed to deliver unparalleled performance over unreliable and lossy networks.

✊ Censorship resistant

-

Our protocol is designed to masquerade as standard HTTP/3 traffic, making it very difficult to detect and block without widespread collateral damage.

+

The protocol masquerades as standard HTTP/3 traffic, making it very difficult for censors to detect and block without widespread collateral damage.

💻 Cross-platform

-

We have builds for all major platforms and architectures. Deploy anywhere & use everywhere.

+

We have builds for every major platform and architecture. Deploy anywhere & use everywhere. Not to mention the long list of 3rd party apps.

@@ -48,8 +48,8 @@
-

🤗 Open standards

-

We have well-documented specifications and code for developers to contribute and build their own apps.

+

🤗 Cards on the table

+

We have well-documented specifications and code for developers to contribute and build their own apps. And a helpful community, too.

diff --git a/scripts/install_server.sh b/scripts/install_server.sh index 3dae096c0d..b71f07559b 100644 --- a/scripts/install_server.sh +++ b/scripts/install_server.sh @@ -60,6 +60,9 @@ HYSTERIA_USER="${HYSTERIA_USER:-}" # Directory for ACME certificates storage HYSTERIA_HOME_DIR="${HYSTERIA_HOME_DIR:-}" +# SELinux context of systemd unit files +SECONTEXT_SYSTEMD_UNIT="${SECONTEXT_SYSTEMD_UNIT:-}" + ### # ARGUMENTS @@ -176,6 +179,14 @@ systemctl() { command systemctl "$@" } +chcon() { + if ! has_command chcon || [[ "x$FORCE_NO_SELINUX" == "x1" ]]; then + return + fi + + command chcon "$@" +} + show_argument_error_and_exit() { local _error_msg="$1" @@ -221,6 +232,7 @@ exec_sudo() { $(env | grep "^OPERATING_SYSTEM=" || true) $(env | grep "^ARCHITECTURE=" || true) $(env | grep "^HYSTERIA_\w*=" || true) + $(env | grep "^SECONTEXT_SYSTEMD_UNIT=" || true) $(env | grep "^FORCE_\w*=" || true) ) IFS="$_saved_ifs" @@ -236,6 +248,7 @@ detect_package_manager() { fi if has_command apt; then + apt update PACKAGE_MANAGEMENT_INSTALL='apt -y --no-install-recommends install' return 0 fi @@ -406,6 +419,30 @@ check_environment_systemd() { esac } +check_environment_selinux() { + if ! has_command chcon; then + return + fi + + note "SELinux is detected" + + if [[ "x$FORCE_NO_SELINUX" == "x1" ]]; then + warning "FORCE_NO_SELINUX=1, we will skip all SELinux related commands." + return + fi + + if [[ -z "$SECONTEXT_SYSTEMD_UNIT" ]]; then + if [[ -z "$FORCE_NO_SYSTEMD" ]] && [[ -e "$SYSTEMD_SERVICES_DIR" ]]; then + local _sectx="$(ls -ldZ "$SYSTEMD_SERVICES_DIR" | cut -d ' ' -f 5)" + if [[ "x$_sectx" == "x?" ]]; then + warning "Failed to obtain SEContext of $SYSTEMD_SERVICES_DIR" + else + SECONTEXT_SYSTEMD_UNIT="$_sectx" + fi + fi + fi +} + check_environment_curl() { if has_command curl; then return @@ -426,6 +463,7 @@ check_environment() { check_environment_operating_system check_environment_architecture check_environment_systemd + check_environment_selinux check_environment_curl check_environment_grep } @@ -917,6 +955,10 @@ perform_install_hysteria_systemd() { install_content -Dm644 "$(tpl_hysteria_server_service)" "$SYSTEMD_SERVICES_DIR/hysteria-server.service" "1" install_content -Dm644 "$(tpl_hysteria_server_x_service)" "$SYSTEMD_SERVICES_DIR/hysteria-server@.service" "1" + if [[ -n "$SECONTEXT_SYSTEMD_UNIT" ]]; then + chcon "$SECONTEXT_SYSTEMD_UNIT" "$SYSTEMD_SERVICES_DIR/hysteria-server.service" + chcon "$SECONTEXT_SYSTEMD_UNIT" "$SYSTEMD_SERVICES_DIR/hysteria-server@.service" + fi systemctl daemon-reload }