From f95578d83864660539c56211bcd88c124e532615 Mon Sep 17 00:00:00 2001 From: windyday <63159472+CoverUp137@users.noreply.github.com> Date: Sun, 22 Jun 2025 01:46:54 +0800 Subject: [PATCH] Add files via upload --- xray/xray.init | 141 ++++++++++++++++++++++++++++++++++++++++++++++ xray/xray.service | 16 ++++++ 2 files changed, 157 insertions(+) create mode 100644 xray/xray.init create mode 100644 xray/xray.service diff --git a/xray/xray.init b/xray/xray.init new file mode 100644 index 0000000..2b135be --- /dev/null +++ b/xray/xray.init @@ -0,0 +1,141 @@ +#!/bin/sh + +#chkconfig: 2345 99 99 +### BEGIN INIT INFO +# Provides: xray +# Required-Start: $all +# Required-Stop: $all +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start xray daemon at boot time +# Description: Start xray daemon at boot time +### END INIT INFO +START=99 +EXTRA_COMMANDS="status" + +usage() +{ + if type systemctl && [ -z "$(systemctl --failed|grep -q 'Host is down')" ]; then + us="systemctl [start|stop|status|restart] xray.service" + else + if [ "$0" = '/etc/rc.common' ]; then + us="/etc/init.d/xray [start|stop|status|restart]"\ + else + us="$0 [start|stop|status|restart]" + fi + fi &>/dev/null + echo "Usage: + $us + Config file is [xray_install_directory]/xray.json" +} 2>/dev/null + +status() +{ + grep -q xray /proc/`cat [xray_install_directory]/run.pid`/comm && \ + echo "xray is running..." || \ + echo "xray is stopped..." +} 2>/dev/null + +start() +{ + status | grep "xray is running..." && return 0 + echo -n "Starting xray:" + echo 3 >/proc/sys/net/ipv4/tcp_fastopen + ulimit -n 1048576 + cd "[xray_install_directory]" + (while :; do + ./xray run -config xray.json & + echo $! >[xray_install_directory]/run.pid + sleep 3 + while grep -q xray /proc/`cat [xray_install_directory]/run.pid`/comm; do + sleep 3 + done + done >/dev/null & + echo $! >[xray_install_directory]/drun.pid) + count=0 + while [ ! -f "[xray_install_directory]/run.pid" ] && [ "$count" -le 5 ]; do + sleep 1 + count=$((count + 1)) + done + sleep 1 + for server_port in [xray_tcp_port_list]; do + iptables -I INPUT -p 6 --dport $server_port -j ACCEPT + ip6tables -I INPUT -p 6 --dport $server_port -j ACCEPT + done + for server_port in [xray_udp_port_list]; do + iptables -I INPUT -p 17 --dport $server_port -j ACCEPT + ip6tables -I INPUT -p 17 --dport $server_port -j ACCEPT + done + grep -q xray /proc/`cat [xray_install_directory]/run.pid`/comm && \ + echo -e "\033[60G[\033[32m OK \033[0m]" || \ + echo -e "\033[60G[\033[31mFAILED\033[0m]" +} 2>/dev/null + +stop() +{ + for server_port in [xray_tcp_port_list]; do + while iptables -S INPUT | grep -qE "\-\-dport $server_port \-j ACCEPT"; do + iptables -D INPUT -p 6 --dport $server_port -j ACCEPT + done + while ip6tables -S INPUT | grep -qE "\-\-dport $server_port \-j ACCEPT"; do + ip6tables -D INPUT -p 6 --dport $server_port -j ACCEPT + done + done + for server_port in [xray_udp_port_list]; do + while iptables -S INPUT | grep -qE "\-\-dport $server_port \-j ACCEPT"; do + iptables -D INPUT -p 17 --dport $server_port -j ACCEPT + done + while ip6tables -S INPUT | grep -qE "\-\-dport $server_port \-j ACCEPT"; do + ip6tables -D INPUT -p 17 --dport $server_port -j ACCEPT + done + done + status | grep "xray is stopped..." && return 0 + echo -n "Stopping xray:" + kill -9 `cat [xray_install_directory]/drun.pid` + kill -9 `cat [xray_install_directory]/run.pid` + sleep 1 + grep -q xray /proc/`cat [xray_install_directory]/run.pid`/comm && \ + echo -e "\033[60G[\033[31mFAILED\033[0m]" || \ + echo -e "\033[60G[\033[32m OK \033[0m]" +} 2>/dev/null + +restart() +{ + stop + start +} 2>/dev/null + +systemdStart() +{ + status | grep running && return 0 + cd "[xray_install_directory]" + for server_port in [xray_tcp_port_list]; do + iptables -I INPUT -p 6 --dport $server_port -j ACCEPT + ip6tables -I INPUT -p 6 --dport $server_port -j ACCEPT + done + for server_port in [xray_udp_port_list]; do + iptables -I INPUT -p 17 --dport $server_port -j ACCEPT + ip6tables -I INPUT -p 17 --dport $server_port -j ACCEPT + done + ulimit -n 1048576 + cd "[xray_install_directory]" + (while :; do + ./xray run -config xray.json & + echo $! >[xray_install_directory]/run.pid + sleep 3 + while grep -q xray /proc/`cat [xray_install_directory]/run.pid`/comm; do + sleep 3 + done + done >/dev/null & + echo $! >[xray_install_directory]/drun.pid) +} 2>/dev/null + +systemdRestart() +{ + stop + systemdStart +} 2>/dev/null + +if [ -z "$initscript" ]; then + ${1:-usage} +fi diff --git a/xray/xray.service b/xray/xray.service new file mode 100644 index 0000000..9800c20 --- /dev/null +++ b/xray/xray.service @@ -0,0 +1,16 @@ +[Unit] +Description=xray - Project V +Documentation=https://github.com/XTLS/Xray-core + +[Service] +Type=forking +PIDFile=[xray_install_directory]/run.pid +ExecStart=[xray_install_directory]/xray.init systemdStart +ExecReload=[xray_install_directory]/xray.init systemdRestart +ExecStop=[xray_install_directory]/xray.init stop +PrivateTmp=true +KillMode=control-group + +[Install] +WantedBy=multi-user.target +