mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-15 18:03:30 +00:00
176 lines
4.5 KiB
Bash
Executable File
176 lines
4.5 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2010-2015 OpenWrt.org
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
|
|
|
|
LIST_SEP="
|
|
"
|
|
|
|
unregex() {
|
|
echo "$1" | sed -e 's/[]\/()$*.^|[]/\\&/g'
|
|
}
|
|
|
|
option_word_to_digit() {
|
|
word=$(grep -ioE "\b$2=\S+" "$1"|awk -F= '{print $2}')
|
|
digit=$(echo "$3" |grep -oE "$word/\S+"|awk -F'/' '{print $2}')
|
|
sed -i "s/\b$2=$word\b/$2=$digit/g" "$1"
|
|
}
|
|
|
|
encrypt_password() {
|
|
pass_notencryted=$(grep -ioE "\b$2=[^\n]+" "$1"|sed "s/.*$2=//g")
|
|
pass_encryted=$(echo -n $pass_notencryted|md5sum|grep -oE "[a-z0-9]{32}")
|
|
[[ -z $pass_notencryted ]] || sed -i "s/\b$2=$(unregex $pass_notencryted)/$2=$pass_encryted/g" "$1"
|
|
}
|
|
|
|
write_dat_file() {
|
|
if [[ -s "$1" ]] ; then
|
|
cat "$1" > "$2"
|
|
else
|
|
[[ -s "$2" ]] && cat "$2" > "$1"
|
|
fi
|
|
}
|
|
|
|
set_params() {
|
|
cat /etc/amule/amule.conf.template > "$config_file"
|
|
local p; local v; local s="$1"; shift
|
|
for p in $*; do
|
|
config_get v "$s" "$p"
|
|
IFS="$LIST_SEP"
|
|
for v in $v; do
|
|
[ -n "$v" ] && (
|
|
sed -i "s;|$(echo $p|tr '[a-z]' '[A-Z]'|sed -e 's|_||g')|;$(unregex $v);g" "$config_file"
|
|
)
|
|
done
|
|
unset IFS
|
|
done
|
|
|
|
#delete unreplaced placeholders
|
|
sed -i "s;=|[A-Z0-9]*|;=;g" "$config_file"
|
|
|
|
#convert some options to digit
|
|
option_word_to_digit "$config_file" "ProxyType" "socks5/0 socks4/1 http/2 socks4a/3"
|
|
option_word_to_digit "$config_file" "SeeShare" "anyone/0 friends/1 nobody/2"
|
|
|
|
#encrypt password
|
|
encrypt_password "$config_file" "ECPassword"
|
|
encrypt_password "$config_file" "Password"
|
|
encrypt_password "$config_file" "PasswordLow"
|
|
}
|
|
|
|
section_enabled() {
|
|
config_get_bool enabled "$1" 'enabled' 0
|
|
[ $enabled -gt 0 ]
|
|
}
|
|
|
|
set_owner() {
|
|
case $(echo "$1"|grep -oE "^/[^/]+") in
|
|
"/var"|"/tmp"|"/mnt"|"root")
|
|
cur_user=$(ls -w50 -ld "$1"|awk '{print $3}')
|
|
cur_group=$(ls -w50 -ld "$1"|awk '{print $4}')
|
|
[[ $cur_user == $2 ]] || ( chown -R $2 "$1" )
|
|
[[ $cur_group == $3 ]] || ( chgrp -R $3 "$1" )
|
|
;;
|
|
*)
|
|
false
|
|
;;
|
|
esac
|
|
}
|
|
|
|
amule() {
|
|
local cfg="$1"
|
|
local USE
|
|
|
|
local runasuser
|
|
local incoming_dir config_dir temp_dir
|
|
local mem_percentage
|
|
local config_overwrite nice ionice_flags
|
|
local cmdline
|
|
|
|
section_enabled "$section" || return 1
|
|
|
|
config_get config_dir "$cfg" 'config_dir' '/var/run/amule'
|
|
config_get runasuser "$cfg" 'runasuser' 'daemon'
|
|
config_get incoming_dir "$cfg" 'incoming_dir' "$config_dir/Incoming"
|
|
config_get temp_dir "$cfg" 'temp_dir' "$config_dir/Temp"
|
|
config_get mem_percentage "$cfg" 'mem_percentage' '50'
|
|
config_get config_overwrite "$cfg" config_overwrite 1
|
|
config_get nice "$cfg" nice "-19"
|
|
config_get ionice_flags "$cfg" ionice_flags ''
|
|
group=$(id -Gn $runasuser)
|
|
|
|
case $(echo "$config_dir"|grep -oE "^/[^/]+") in
|
|
"/var"|"/tmp"|"/mnt"|"/root"|"/home")
|
|
true
|
|
;;
|
|
*)
|
|
echo "You should set config_dir to subfolders under /var, /tmp ,/mnt or /root"
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
which ionice > /dev/null || ionice_flags=''
|
|
|
|
local MEM=$(sed -ne 's!^MemTotal:[[:space:]]*\([0-9]*\) kB$!\1!p' /proc/meminfo)
|
|
if test "$MEM" -gt 1;then
|
|
USE=$(expr $MEM \* $mem_percentage \* 10)
|
|
fi
|
|
|
|
config_file="$config_dir/amule.conf"
|
|
#[ -d "$config_dir" ] || {
|
|
mkdir -m 0755 -p "$config_dir"
|
|
chmod g+s "$config_dir"
|
|
chown $group:$runasuser "$config_dir"
|
|
touch "$config_file" "$config_dir/addresses.dat" "$config_dir/shareddir.dat" \
|
|
"$config_dir/ipfilter_static.dat"
|
|
[ -d "$config_dir/.aMule" ] || ln -s ./ $config_dir/.aMule
|
|
#[ -z "$runasuser" ] || set_owner "$config_dir" $runasuser $group
|
|
#}
|
|
|
|
|
|
touch "$config_file"
|
|
write_dat_file /etc/amule/addresses.dat "$config_dir/addresses.dat"
|
|
write_dat_file /etc/amule/shareddir.dat "$config_dir/shareddir.dat"
|
|
write_dat_file /etc/amule/ipfilter_static.dat "$config_dir/ipfilter_static.dat"
|
|
|
|
#[ "$config_overwrite" == 0 ] || {
|
|
set_params "$cfg" $(uci show amule|awk -F'[.=]' '{print $3}'|tr '\n' ' ')
|
|
#}
|
|
|
|
HOME="$config_dir" /usr/bin/amulecmd --create-config-from="$config_file"
|
|
|
|
cmdline="/usr/bin/amuled -c $config_dir"
|
|
[ "$ionice_flags" ] && cmdline="ionice $ionice_flags $cmdline"
|
|
procd_open_instance
|
|
procd_set_param command $cmdline
|
|
procd_set_param respawn retry=60
|
|
procd_set_param user "$runasuser"
|
|
procd_set_param nice "$nice"
|
|
if test -z "$USE";then
|
|
procd_set_param limits core="0 0"
|
|
else
|
|
procd_set_param limits core="0 0" as="$USE $USE"
|
|
logger -t amule "Starting with $USE virt mem"
|
|
fi
|
|
|
|
procd_add_jail amule log
|
|
procd_add_jail_mount_rw $config_file
|
|
procd_add_jail_mount_rw $incoming_dir
|
|
procd_add_jail_mount_rw $temp_dir
|
|
procd_close_instance
|
|
}
|
|
|
|
start_service() {
|
|
killall -9 amuleweb >/dev/null 2>&1
|
|
config_load 'amule'
|
|
config_foreach amule 'amule'
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
sleep 2
|
|
start
|
|
}
|
|
|