#!/bin/bash main_cfg='/etc/tproxy/ss-tproxy.conf' function usage() { { echo -e "\e[37mUsage:\e[0m \e[36m${0}\e[0m \e[1;37mOPTIONS\e[0m" echo -e "\e[1;37mOPTIONS\e[0m := {" echo -e "\t\e[33m-t\e[0m \e[33;1mtype\e[0m\t\t\tserver type {ss|ssr} \e[35;1m*\e[0m" echo -e "\t\e[33m-s\e[0m \e[33;1maddr\e[0m\t\t\tserver address" echo -e "\t\e[33m-p\e[0m \e[33;1mport\e[0m\t\t\tserver port" echo -e "\t\e[33m-m\e[0m \e[33;1mmethod\e[0m\t\tserver method" echo -e "\t\e[33m-k\e[0m \e[33;1mpasswd\e[0m\t\tserver password" echo -e "\t\e[33m-O\e[0m \e[33;1mprotocol\e[0m\t\tserver protocol" echo -e "\t\e[33m-G\e[0m \e[33;1mprotocol_param\e[0m\tserver protocol_param" echo -e "\t\e[33m-o\e[0m \e[33;1mobfs\e[0m\t\t\tserver obfs" echo -e "\t\e[33m-g\e[0m \e[33;1mobfs_param\e[0m\t\tserver obfs_param" echo -e "\t\e[33m-h --help\e[0m\t\tshow current help" echo -e "}" } | more } while getopts ":s:p:m:k:O:o:G:g:t:h" OPT; do case $OPT in s) addr="$OPTARG";; p) port="$OPTARG";; m) method="$OPTARG";; k) passwd="$OPTARG";; O) protocol="$OPTARG";; G) protocol_param="$OPTARG";; o) obfs="$OPTARG";; g) obfs_param="$OPTARG";; t) type="$OPTARG";; h) usage 1>&2; exit;; :) echo -e "\e[35mmissing argument to\e[0m \e[31m'-$OPTARG'\e[0m" 1>&2; usage 1>&2; exit 1;; esac done if [ "$type" = 'ss' ]; then sed -ri "s@server_use_ssr=.+@server_use_ssr='false'@g" $main_cfg if [ -n "$addr" ]; then sed -ri "s@server_addr=.+@server_addr='$addr'@g" $main_cfg; fi if [ -n "$port" ]; then sed -ri "s@server_port=.+@server_port='$port'@g" $main_cfg; fi if [ -n "$method" ]; then sed -ri "s@server_method=.+@server_method='$method'@g" $main_cfg; fi if [ -n "$passwd" ]; then sed -ri "s@server_passwd=.+@server_passwd='$passwd'@g" $main_cfg; fi ss-tproxy restart elif [ "$type" = 'ssr' ]; then sed -ri "s@server_use_ssr=.+@server_use_ssr='true'@g" $main_cfg if [ -n "$addr" ]; then sed -ri "s@server_addr=.+@server_addr='$addr'@g" $main_cfg; fi if [ -n "$port" ]; then sed -ri "s@server_port=.+@server_port='$port'@g" $main_cfg; fi if [ -n "$method" ]; then sed -ri "s@server_method=.+@server_method='$method'@g" $main_cfg; fi if [ -n "$passwd" ]; then sed -ri "s@server_passwd=.+@server_passwd='$passwd'@g" $main_cfg; fi if [ -n "$protocol" ]; then sed -ri "s@server_protocol=.+@server_protocol='$protocol'@g" $main_cfg; fi if [ -n "$protocol_param" ]; then sed -ri "s@server_protocol_param=.+@server_protocol_param='$protocol_param'@g" $main_cfg; fi if [ -n "$obfs" ]; then sed -ri "s@server_obfs=.+@server_obfs='$obfs'@g" $main_cfg; fi if [ -n "$obfs_param" ]; then sed -ri "s@server_obfs_param=.+@server_obfs_param='$obfs_param'@g" $main_cfg; fi ss-tproxy restart else echo -e "\e[35minvalid type\e[0m \e[31m'$type'\e[0m" 1>&2 usage 1>&2 exit 1 fi