ss-switch 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/bin/bash
  2. main_cfg='/etc/tproxy/ss-tproxy.conf'
  3. function usage() {
  4. {
  5. echo -e "\e[37mUsage:\e[0m \e[36m${0}\e[0m \e[1;37mOPTIONS\e[0m"
  6. echo -e "\e[1;37mOPTIONS\e[0m := {"
  7. echo -e "\t\e[33m-t\e[0m \e[33;1mtype\e[0m\t\t\tserver type {ss|ssr} \e[35;1m*\e[0m"
  8. echo -e "\t\e[33m-s\e[0m \e[33;1maddr\e[0m\t\t\tserver address"
  9. echo -e "\t\e[33m-p\e[0m \e[33;1mport\e[0m\t\t\tserver port"
  10. echo -e "\t\e[33m-m\e[0m \e[33;1mmethod\e[0m\t\tserver method"
  11. echo -e "\t\e[33m-k\e[0m \e[33;1mpasswd\e[0m\t\tserver password"
  12. echo -e "\t\e[33m-O\e[0m \e[33;1mprotocol\e[0m\t\tserver protocol"
  13. echo -e "\t\e[33m-G\e[0m \e[33;1mprotocol_param\e[0m\tserver protocol_param"
  14. echo -e "\t\e[33m-o\e[0m \e[33;1mobfs\e[0m\t\t\tserver obfs"
  15. echo -e "\t\e[33m-g\e[0m \e[33;1mobfs_param\e[0m\t\tserver obfs_param"
  16. echo -e "\t\e[33m-h --help\e[0m\t\tshow current help"
  17. echo -e "}"
  18. } | more
  19. }
  20. while getopts ":s:p:m:k:O:o:G:g:t:h" OPT; do
  21. case $OPT in
  22. s) addr="$OPTARG";;
  23. p) port="$OPTARG";;
  24. m) method="$OPTARG";;
  25. k) passwd="$OPTARG";;
  26. O) protocol="$OPTARG";;
  27. G) protocol_param="$OPTARG";;
  28. o) obfs="$OPTARG";;
  29. g) obfs_param="$OPTARG";;
  30. t) type="$OPTARG";;
  31. h) usage 1>&2; exit;;
  32. :) echo -e "\e[35mmissing argument to\e[0m \e[31m'-$OPTARG'\e[0m" 1>&2; usage 1>&2; exit 1;;
  33. esac
  34. done
  35. if [ "$type" = 'ss' ]; then
  36. sed -ri "s@server_use_ssr=.+@server_use_ssr='false'@g" $main_cfg
  37. if [ -n "$addr" ]; then sed -ri "s@server_addr=.+@server_addr='$addr'@g" $main_cfg; fi
  38. if [ -n "$port" ]; then sed -ri "s@server_port=.+@server_port='$port'@g" $main_cfg; fi
  39. if [ -n "$method" ]; then sed -ri "s@server_method=.+@server_method='$method'@g" $main_cfg; fi
  40. if [ -n "$passwd" ]; then sed -ri "s@server_passwd=.+@server_passwd='$passwd'@g" $main_cfg; fi
  41. ss-tproxy restart
  42. elif [ "$type" = 'ssr' ]; then
  43. sed -ri "s@server_use_ssr=.+@server_use_ssr='true'@g" $main_cfg
  44. if [ -n "$addr" ]; then sed -ri "s@server_addr=.+@server_addr='$addr'@g" $main_cfg; fi
  45. if [ -n "$port" ]; then sed -ri "s@server_port=.+@server_port='$port'@g" $main_cfg; fi
  46. if [ -n "$method" ]; then sed -ri "s@server_method=.+@server_method='$method'@g" $main_cfg; fi
  47. if [ -n "$passwd" ]; then sed -ri "s@server_passwd=.+@server_passwd='$passwd'@g" $main_cfg; fi
  48. if [ -n "$protocol" ]; then sed -ri "s@server_protocol=.+@server_protocol='$protocol'@g" $main_cfg; fi
  49. if [ -n "$protocol_param" ]; then sed -ri "s@server_protocol_param=.+@server_protocol_param='$protocol_param'@g" $main_cfg; fi
  50. if [ -n "$obfs" ]; then sed -ri "s@server_obfs=.+@server_obfs='$obfs'@g" $main_cfg; fi
  51. if [ -n "$obfs_param" ]; then sed -ri "s@server_obfs_param=.+@server_obfs_param='$obfs_param'@g" $main_cfg; fi
  52. ss-tproxy restart
  53. else
  54. echo -e "\e[35minvalid type\e[0m \e[31m'$type'\e[0m" 1>&2
  55. usage 1>&2
  56. exit 1
  57. fi