mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh /etc/rc.common
 | |
| # Copyright (C) 2016 chenhw2 <chenhw2@github.com>
 | |
| # Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
 | |
| 
 | |
| START=85
 | |
| 
 | |
| USE_PROCD=1
 | |
| PROG_NAME=nginx
 | |
| PROG=/usr/sbin/${PROG_NAME}
 | |
| NAME=nginx-ha
 | |
| 
 | |
| PIDCOUNT=0
 | |
| 
 | |
| _log() {
 | |
| 	logger -p daemon.info -t ${PROG_NAME} "$@"
 | |
| }
 | |
| 
 | |
| _err() {
 | |
| 	logger -p daemon.err -t ${PROG_NAME} "$@"
 | |
| }
 | |
| 
 | |
| validate_section() {
 | |
| 	uci_validate_section nginx-ha nginxha "${1}" \
 | |
| 		'enable:bool:0'            \
 | |
| 		'retries:uinteger:3'       \
 | |
| 		'timeout:uinteger:4000'    \
 | |
| 		'listen:string'            \
 | |
| 		'upstreams:list(string)'
 | |
| }
 | |
| 
 | |
| genline_srv(){
 | |
| 	echo "    server $1;"
 | |
| }
 | |
| 
 | |
| start_instance() {
 | |
| 	local enable retries timeout startup_delay listen upstreams
 | |
| 
 | |
| 	validate_section "${1}" || {
 | |
| 		_err "validation failed"
 | |
| 		return 1
 | |
| 	}
 | |
| 
 | |
| 	[ "$enable" = 1 ] || return 1
 | |
| 
 | |
| 	stream="${stream}
 | |
| 		upstream ${1} {
 | |
| 			zone dynamic 64k;
 | |
| 			$(config_list_foreach "${1}" "upstreams" genline_srv)
 | |
| 		}
 | |
| 	
 | |
| 		server {
 | |
| 			listen ${listen:-0.0.0.0:6666} udp;
 | |
| 			listen ${listen:-0.0.0.0:6666} so_keepalive=off;
 | |
| 			proxy_pass ${1};
 | |
| 		}
 | |
| 	"
 | |
| }
 | |
| 
 | |
| start_service() {
 | |
| 	local stream=""
 | |
| 	config_load nginx-ha
 | |
| 	config_foreach start_instance nginxha
 | |
| 
 | |
| 	[ -z "$stream" ] && return
 | |
| 	
 | |
| 	mkdir -p /var/log/nginx
 | |
| 	mkdir -p /var/etc
 | |
| 	cat <<-EOF > /var/etc/$PROG_NAME.cfg
 | |
| 	user nobody nogroup;
 | |
| 	worker_processes $(grep -c '^processor' /proc/cpuinfo | tr -d "\n");
 | |
| 	worker_rlimit_nofile 300000;
 | |
| 	
 | |
| 	events {
 | |
| 		worker_connections 15000;
 | |
| 		multi_accept on;
 | |
| 		use epoll;
 | |
| 	}
 | |
| 	
 | |
| 	stream {
 | |
| 		${stream}
 | |
| 	}
 | |
| 	EOF
 | |
| 
 | |
| 	procd_open_instance "nginx-ha"
 | |
| 	procd_set_param command /usr/sbin/nginx -c /var/etc/$PROG_NAME.cfg -g 'daemon off;'
 | |
| 	procd_set_param file /var/etc/$PROG_NAME.cfg
 | |
| 	procd_set_param respawn
 | |
| 	procd_close_instance
 | |
| 
 | |
| 
 | |
| }
 | |
| 
 | |
| reload_service() {
 | |
| 	stop
 | |
| 	start
 | |
| }
 | |
| 
 | |
| stop_service() {
 | |
| 	local _PID=$(cat /var/run/nginx.pid 2>/dev/null)
 | |
| 	kill -15 $_PID 2>/dev/null
 | |
| 	sleep 1                 # give time to shutdown
 | |
| 	local _tmp=$(pgrep nginx | tr "\n" " ")
 | |
| 	if [ -z "$_tmp" ]; then
 | |
| 		logger -p daemon.notice -t "nginx-ha[$_PID]" "Shutdown successfully"
 | |
| 	else
 | |
| 		kill -9 $_tmp   # Normally never come here
 | |
| 		logger -p daemon.warn -t "nginx-ha[$_tmp]" "Shutdown forced by KILL"
 | |
| 	fi
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| 
 | |
| service_triggers() {
 | |
| 	procd_add_reload_trigger nginx-ha
 | |
| }
 |