lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

znc.init (4581B)


      1 #!/bin/sh /etc/rc.common
      2 # Copyright (C) 2010 Openwrt.org
      3 
      4 START=60
      5 
      6 USE_PROCD=1
      7 
      8 ZNC_CONFIG_PATH=/tmp/etc/znc
      9 PID_FILE=${ZNC_CONFIG_PATH}/znc.pid
     10 ZNC_CONFIG=${ZNC_CONFIG_PATH}/configs/znc.conf
     11 
     12 EXTERNAL_CONFIG=0
     13 DISABLED=
     14 
     15 RUNAS_USER=
     16 RUNAS_GROUP=
     17 
     18 add_param() {
     19 	echo "$1 = $2" >> $ZNC_CONFIG
     20 }
     21 
     22 add_chan() {
     23 	chan=${1% *}
     24 	pass=${1#* }
     25 	echo "		<Chan $chan>" >> $ZNC_CONFIG
     26 	[ "$chan" != "$pass" ] && echo "			Key = $pass" >> $ZNC_CONFIG
     27 	echo "		</Chan>" >> $ZNC_CONFIG
     28 }
     29 
     30 add_network() {
     31 	local current_user="$1"
     32 	local network="$2"
     33 	local user
     34 	local name
     35 
     36 	config_get user "$network" user
     37 
     38 	[ "$user" = "$current_user" ] || return 0
     39 
     40 	config_get name "$network" name
     41 	echo "	<Network $name>" >> $ZNC_CONFIG
     42 	config_list_foreach "$network" server "add_param \"		Server\""
     43 	config_list_foreach "$network" fingerprint "add_param \"		trustedserverfingerprint\""
     44 	config_list_foreach "$network" channel "add_chan"
     45 	echo "	</Network>" >> $ZNC_CONFIG
     46 }
     47 
     48 znc_global() {
     49 	local znc="$1"
     50 	local anoniplimit
     51 	local maxbuffersize
     52 	local connectdelay
     53 	local serverthrottle
     54 	local znc_config_path
     55 	local znc_pem_file
     56 
     57 	config_get_bool DISABLED "$znc" disabled 0
     58 
     59 	[ "$DISABLED" -eq 0 ] || return 0
     60 
     61 	config_get znc_config_path "$znc" znc_config_path
     62 
     63 	config_get RUNAS_USER "$znc" runas_user znc
     64 	config_get RUNAS_GROUP "$znc" runas_group znc
     65 
     66 	if [ "${znc_config_path}" ]
     67 	then
     68 		ZNC_CONFIG_PATH=$znc_config_path
     69 		EXTERNAL_CONFIG=1
     70 	else
     71 		mkdir -p $ZNC_CONFIG_PATH/configs/
     72 		[ ! -f "$ZNC_CONFIG" ] || rm "$ZNC_CONFIG"
     73 
     74 		add_param "Version" "1.0"
     75 
     76 		config_get anoniplimit "$znc" anoniplimit
     77 		config_get maxbuffersize "$znc" maxbuffersize
     78 		config_get connectdelay "$znc" connectdelay
     79 		config_get serverthrottle "$znc" serverthrottle
     80 		config_get znc_pem_file "$znc" znc_ssl_cert
     81 
     82 		[ -z "$znc_pem_file" ] || ln -sf "$znc_pem_file" $ZNC_CONFIG_PATH/znc.pem
     83 
     84 		[ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG
     85 		[ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG
     86 		[ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG
     87 		[ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG
     88 
     89 		echo "PidFile = $PID_FILE" >> $ZNC_CONFIG
     90 
     91 		config_list_foreach "$znc" listener "add_param Listener"
     92 		config_list_foreach "$znc" module "add_param LoadModule"
     93 	fi
     94 }
     95 
     96 add_user() {
     97 	local user="$1"
     98 	local password
     99 	local nick
    100 	local altnick
    101 	local ident
    102 	local realname
    103 	local buffer
    104 	local quitmsg
    105 	local chanmodes
    106 	local vhost
    107 	local server
    108 
    109 	config_get password "$user" password
    110 	config_get nick "$user" nick
    111 	config_get altnick "$user" altnick
    112 	config_get ident "$user" ident
    113 	config_get realname "$user" realname
    114 	config_get buffer "$user" buffer
    115 	config_get quitmsg "$user" quitmsg
    116 	config_get chanmodes "$user" chanmodes
    117 	config_get vhost "$user" vhost
    118 	config_get server "$user" server
    119 
    120 	echo "<User $user>" >> $ZNC_CONFIG
    121 
    122 	case "$password" in
    123 	"md5#"* | "sha256#"* | "plain#"*)
    124 		add_param "	Pass" "$password"
    125 		;;
    126 	*)
    127 		add_param "	Pass" "plain#$password"
    128 		;;
    129 	esac
    130 
    131 	add_param "	Nick" "$nick"
    132 	add_param "	AltNick" "${altnick:-$nick"_"}"
    133 	add_param "	Ident" "${ident:-$nick}"
    134 	add_param "	RealName" "${realname:-$nick}"
    135 	[ -z "$vhost" ] || add_param "	VHost" "$vhost"
    136 	add_param "	Buffer" "${buffer:-50}"
    137 	add_param "	KeepBuffer" "false"
    138 	add_param "	ChanModes" "${chanmodes:-"+stn"}"
    139 	[ -z "$quitmsg" ] || add_param "	QuitMsg" "$quitmsg"
    140 
    141 	config_list_foreach "$user" module "add_param \"	LoadModule\""
    142 
    143 	# add legacy network
    144 	if [ "$server" ]; then
    145 		echo "	<Network Default>" >> $ZNC_CONFIG
    146 		config_list_foreach "$user" server "add_param \"		Server\""
    147 		config_list_foreach "$user" fingerprint "add_param \"		trustedserverfingerprint\""
    148 		config_list_foreach "$user" channel "add_chan"
    149 		echo "	</Network>" >> $ZNC_CONFIG
    150 	fi
    151 
    152 	config_foreach "add_network \"$user\"" network
    153 
    154 	echo "</User>" >> $ZNC_CONFIG
    155 }
    156 
    157 start_service() {
    158 	config_load znc
    159 	config_foreach znc_global znc
    160 
    161 	[ "$DISABLED" -eq 0 ] || return 0
    162 
    163 	if [ "$EXTERNAL_CONFIG" -eq 0 ]
    164 	then
    165 		config_foreach add_listener listener
    166 		config_foreach add_user user
    167 
    168 	fi
    169 
    170 	chown -hR ${RUNAS_USER}:${RUNAS_GROUP} ${ZNC_CONFIG_PATH} || {
    171 		logger -s -t ZNC -p daemon.err "Invalid UID/GID. Aborting startup"
    172 		exit 1
    173 	}
    174 
    175 	procd_open_instance
    176 	procd_set_param file /etc/config/znc
    177 	[ "$EXTERNAL_CONFIG" -eq 1 ] && procd_set_param file "${ZNC_CONFIG}/configs/znc.conf"
    178 	procd_set_param command /usr/bin/znc
    179 	procd_append_param command -f -d$ZNC_CONFIG_PATH
    180 	procd_set_param user ${RUNAS_USER}
    181 	procd_set_param respawn
    182 	procd_close_instance
    183 }