obfsproxy.init (3695B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2016 OpenWrt.org 3 4 START=80 5 STOP=20 6 USE_PROCD=1 7 8 PROG=/usr/bin/obfsproxy 9 10 append_arg() { 11 local cfg="$1" 12 local var="$2" 13 local opt="$3" 14 local def="$4" 15 local val 16 17 config_get val "$cfg" "$var" 18 [ -n "$val" -o -n "$def" ] && procd_append_param command "$opt" "${val:-$def}" 19 } 20 21 append_bool() { 22 local cfg="$1" 23 local var="$2" 24 local opt="$3" 25 local def="$4" 26 local val 27 28 config_get_bool val "$cfg" "$var" "$def" 29 [ "$val" = 1 ] && procd_append_param command "$opt" 30 } 31 32 append_plain() { 33 procd_append_param command "$1" 34 } 35 36 append_param() { 37 local cfg="$1" 38 local var="$2" 39 local opt="$3" 40 local def="$4" 41 local val 42 43 config_get val "$cfg" "$var" 44 [ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}" 45 } 46 47 append_proxy_spec() { 48 local cfg="$1" 49 local scheme_var="$2" 50 local username_var="$3" 51 local password_var="$4" 52 local host_var="$5" 53 local port_var="$6" 54 local opt="$7" 55 local def="$8" 56 local scheme 57 local username 58 local password 59 local host 60 local port 61 local login 62 local val 63 64 config_get scheme "$cfg" "$scheme_var" 65 config_get username "$cfg" "$username_var" 66 config_get password "$cfg" "$password_var" 67 config_get host "$cfg" "$host_var" 68 config_get port "$cfg" "$port_var" 69 [ "$username" ] && login="$username${password:+:$password}@" 70 [ -n "$scheme" -a -n "$host" -a -n "$port" ] && val="$scheme://$login$host:$port" 71 [ -n "$val" -o -n "$def" ] && procd_append_param command "$opt" "${val:-$def}" 72 } 73 74 append_host_port() { 75 local cfg="$1" 76 local host_var="$2" 77 local port_var="$3" 78 local opt="$4" 79 local def="$5" 80 local host 81 local port 82 local val 83 84 config_get host "$cfg" "$host_var" 85 config_get port "$cfg" "$port_var" 86 [ -n "$host" -a -n "$port" ] && val="$host:$port" 87 [ -n "$val" -o -n "$def" ] && { 88 [ "$opt" ] && procd_append_param command "$opt" 89 procd_append_param command "${val:-$def}" 90 } 91 } 92 93 start_instance() { 94 local cfg="$1" 95 local lib_dir="/var/lib/obfsproxy/$cfg" 96 local redirect=0 97 local enabled 98 local user 99 local transport 100 local password 101 local log_min_severity 102 103 config_get_bool enabled "$cfg" 'enabled' '0' 104 [ "$enabled" = 0 ] && return 1 105 106 config_get user "$cfg" 'user' 'root' 107 config_get transport "$cfg" 'transport' 108 [ "$transport" = "scramblesuit" ] && config_get password "$cfg" 'password' 109 110 [ -d "$lib_dir" ] || { 111 mkdir -m 0755 -p "$lib_dir/data" 112 chmod -R 0700 "$lib_dir" 113 } 114 [ "$password" ] && { 115 echo "$password" > "$lib_dir/secret" 116 chmod 0600 "$lib_dir/secret" 117 } 118 chown -R "$user:" "$lib_dir" 119 120 config_get log_min_severity "$cfg" 'log_min_severity' 121 [ "$log_min_severity" = "debug" ] && redirect=1 122 123 procd_open_instance 124 125 procd_set_param command "$PROG" --data-dir "$lib_dir/data" --syslog "obfsproxy($cfg)" 126 127 append_arg "$cfg" log_file "--log-file" 128 append_arg "$cfg" log_min_severity "--log-min-severity" 129 append_bool "$cfg" no_log "--no-log" 130 append_bool "$cfg" no_safe_logging "--no-safe-logging" 131 append_proxy_spec "$cfg" proxy_scheme proxy_username proxy_password proxy_host proxy_port "--proxy" 132 133 append_param "$cfg" transport command 134 [ "$transport" = "obfs2" ] && append_arg "$cfg" password "--shared-secret" 135 [ "$password" ] && procd_append_param command "--password-file" "$lib_dir/secret" 136 137 append_param "$cfg" mode command 138 append_host_port "$cfg" dest_host dest_port "--dest" 139 append_arg "$cfg" ext_cookie_file "--ext-cookie-file" 140 141 append_host_port "$cfg" listen_host listen_port 142 143 procd_set_param respawn 144 procd_set_param stdout $redirect 145 procd_set_param stderr $redirect 146 append_param "$cfg" user user 147 148 procd_close_instance 149 } 150 151 service_triggers() { 152 procd_add_reload_trigger obfsproxy 153 } 154 155 start_service() { 156 config_load obfsproxy 157 config_foreach start_instance obfsproxy 158 }