{"id":14,"date":"2017-03-03T21:10:20","date_gmt":"2017-03-03T13:10:20","guid":{"rendered":"http:\/\/www.zhangyijun.com\/?p=14"},"modified":"2017-03-03T21:10:20","modified_gmt":"2017-03-03T13:10:20","slug":"%e8%87%aa%e7%94%a8ssr%e4%b8%80%e9%94%ae%e8%84%9a%e6%9c%ac%e5%88%86%e4%ba%ab%ef%bc%882017-02-25%e6%9b%b4%e6%96%b0%ef%bc%89","status":"publish","type":"post","link":"http:\/\/www.zhangyijun.com\/?p=14","title":{"rendered":"\u81ea\u7528SSR\u4e00\u952e\u811a\u672c\u5206\u4eab\uff082017.02.25\u66f4\u65b0\uff09"},"content":{"rendered":"<h1 class=\"article-title\">https:\/\/www.91yun.org\/archives\/2079<\/h1>\n<p>wget -N &#8211;no-check-certificate https:\/\/raw.githubusercontent.com\/91yun\/shadowsocks_install\/master\/shadowsocksR.sh &amp;&amp; bash shadowsocksR.sh<\/p>\n<p>\u672c\u811a\u672c\u6765\u6e90\u4e8e teddysun \u7684\u4e00\u952e\u811a\u672c\uff1a https:\/\/shadowsocks.be\/9.html<\/p>\n<p>\u611f\u8c22 teddysun \u5927\u795e\u7684\u4e00\u952e\u811a\u672c<\/p>\n<h1>\u00a0 2017.02.25 \u66f4\u65b0<\/h1>\n<p>\u4fee\u6539\u4e86\u9ed8\u8ba4\u534f\u8bae\u4e3a auth_sha1_v4<\/p>\n<h1>\u51e0\u4e2a\u9ed8\u8ba4\u914d\u7f6e\uff1a<\/h1>\n<ol>\n<li>\u9ed8\u8ba4\u52a0\u5bc6\u4e3a\uff1a chacha20<\/li>\n<li>\u9ed8\u8ba4\u534f\u8bae\u4e3a\uff1a auth_sha1_v4<\/li>\n<li>\u9ed8\u8ba4\u6df7\u6dc6\u4e3a\uff1a\u00a0 tls1.2_ticket_auth<\/li>\n<\/ol>\n<p>\u6709\u95ee\u9898\u6b22\u8fce\u5927\u5bb6\u53ca\u65f6\u53cd\u9988 . \uff08 91yun \u7684\u5b98\u65b9 TG \u7fa4\uff1a <a href=\"https:\/\/telegram.me\/im91yun\">https:\/\/telegram.me\/im91yun<\/a> \uff09<\/p>\n<h1>\u4e00\u952e\u811a\u672c\u7684\u5b89\u88c5<\/h1>\n<div id=\"crayon-58b96d821ba82746062264\" class=\"crayon-syntax crayon-theme-shell-default crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-toolbar\" data-settings=\" show\"><\/div>\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"hide\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba82746062264-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-58b96d821ba82746062264-1\" class=\"crayon-line\"><span class=\"crayon-v\">wget<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">N<\/span> <span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-v\">no<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">check<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">certificate <\/span><span class=\"crayon-v\">https<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">raw<\/span><span class=\"crayon-e\">.githubusercontent<\/span><span class=\"crayon-e\">.com<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">91yun<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">shadowsocks_install<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">master<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">shadowsocksR<\/span><span class=\"crayon-e\">.sh<\/span> <span class=\"crayon-o\">&amp;&amp;<\/span> <span class=\"crayon-r\">bash<\/span> <span class=\"crayon-v\">shadowsocksR<\/span><span class=\"crayon-e\">.sh<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u672c\u811a\u672c\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u5df2\u5c06 ShadowsocksR \u81ea\u52a8\u52a0\u5165\u5f00\u673a\u81ea\u542f\u52a8\u3002<\/p>\n<h1><strong>\u5378\u8f7d\u65b9\u6cd5\uff1a<\/strong><\/h1>\n<p>\u4f7f\u7528 root \u7528\u6237\u767b\u5f55\uff0c\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<div id=\"crayon-58b96d821ba8a007555249\" class=\"crayon-syntax crayon-theme-shell-default crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-toolbar\" data-settings=\" show\"><\/div>\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"hide\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba8a007555249-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-58b96d821ba8a007555249-1\" class=\"crayon-line\"><span class=\"crayon-r\">bash<\/span> <span class=\"crayon-sy\">.<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">shadowsocksR<\/span><span class=\"crayon-e\">.sh<\/span> <span class=\"crayon-v\">uninstall<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h1>\u5347\u7ea7\u65b9\u6cd5\uff1a<\/h1>\n<div id=\"crayon-58b96d821ba8d896047477\" class=\"crayon-syntax crayon-theme-shell-default crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-toolbar\" data-settings=\" show\"><\/div>\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"hide\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba8d896047477-1\">1<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba8d896047477-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-58b96d821ba8d896047477-1\" class=\"crayon-line\"><span class=\"crayon-r\">cd<\/span> <span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">usr<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">local<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">shadowsocks<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">shadowsocks<\/span><\/div>\n<div id=\"crayon-58b96d821ba8d896047477-2\" class=\"crayon-line\"><span class=\"crayon-e\">git <\/span><span class=\"crayon-v\">pull<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h1><strong>\u4f7f\u7528\u547d\u4ee4\uff1a<\/strong><\/h1>\n<p>\u542f\u52a8\uff1a \/etc\/init.d\/shadowsocks start<br \/>\n\u505c\u6b62\uff1a \/etc\/init.d\/shadowsocks stop<br \/>\n\u91cd\u542f\uff1a \/etc\/init.d\/shadowsocks restart<br \/>\n\u72b6\u6001\uff1a \/etc\/init.d\/shadowsocks status<\/p>\n<p>\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\uff1a \/etc\/shadowsocks.json<br \/>\n\u65e5\u5fd7\u6587\u4ef6\u8def\u5f84\uff1a \/var\/log\/shadowsocks.log<br \/>\n\u5b89\u88c5\u8def\u5f84\uff1a \/usr\/local\/shadowsocks\/shadowsoks<\/p>\n<h1>\u591a\u7528\u6237\u914d\u7f6e<\/h1>\n<p>\u5982\u679c\u8981\u591a\u4e2a\u7528\u6237\u4e00\u8d77\u4f7f\u7528\u7684\u8bdd\uff0c\u8bf7\u5199\u5165\u4ee5\u4e0b\u914d\u7f6e\uff08 vi \/etc\/shadowsocks.json \uff09\uff1a<\/p>\n<p>\u591a\u7528\u6237\u7684\u6838\u5fc3\u662f\u8fd9\u4e2a\u914d\u7f6e\uff0c\u628a\u8fd9\u4e2a\u914d\u7f6e\u66ff\u4ee3\u6389 \/etc\/shadowsocks.json \u7684\u76f8\u5173\u5bc6\u7801\u7684\u914d\u7f6e\u5c31\u884c\u4e86\uff1a<\/p>\n<blockquote><p>\u201cport_password\u201d:{<\/p>\n<p>\u201c80\u201d:\u201dpassword1\u2033,<\/p>\n<p>\u201c443\u201d:\u201dpassword2\u2033<\/p>\n<p>},<\/p><\/blockquote>\n<p>\u5b8c\u6574\u7684\u591a\u7528\u6237\u914d\u7f6e\uff1a<\/p>\n<div id=\"crayon-58b96d821ba90569841264\" class=\"crayon-syntax crayon-theme-shell-default crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-toolbar\" data-settings=\" show\"><\/div>\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"hide\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-1\">1<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-3\">3<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-5\">5<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-7\">7<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-9\">9<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-11\">11<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-13\">13<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-15\">15<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-17\">17<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-19\">19<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-58b96d821ba90569841264-20\">20<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-58b96d821ba90569841264-1\" class=\"crayon-line\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-2\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;server&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-s\">&#8220;0.0.0.0&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;server_ipv6&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8220;[::]&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-4\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;local_address&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-s\">&#8220;127.0.0.1&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-5\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;local_port&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">1080<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-6\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;port_password&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-7\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;80&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-s\">&#8220;password1&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-8\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;443&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-s\">&#8220;password2&#8221;<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-9\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-10\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;timeout&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">300<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-11\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;method&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-s\">&#8220;aes-256-cfb&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-12\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;protocol&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8220;auth_sha1_compatible&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-13\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;protocol_param&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-14\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;obfs&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8220;http_simple_compatible&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-15\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;obfs_param&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-16\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;redirect&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-17\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;dns_ipv6&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-t\">false<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-18\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;fast_open&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-t\">false<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-19\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;workers&#8221;<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">1<\/span><\/div>\n<div id=\"crayon-58b96d821ba90569841264-20\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u5982\u679c\u4f60\u60f3\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\uff0c\u8bf7\u53c2\u8003\uff1a<br \/>\n<a href=\"https:\/\/github.com\/breakwa11\/shadowsocks-rss\/wiki\/Server-Setup\">https:\/\/github.com\/breakwa11\/shadowsocks-rss\/wiki\/Server-Setup<\/a><\/p>\n<p>&nbsp;<\/p>\n<h1><span style=\"color: #ff0000;\">shadowsocksR.sh\u6e90\u7801 -\u65b0\u7248<\/span><\/h1>\n<pre>#! \/bin\/bash\nPATH=\/bin:\/sbin:\/usr\/bin:\/usr\/sbin:\/usr\/local\/bin:\/usr\/local\/sbin:~\/bin\nexport PATH\n#=================================================================#\n#   System Required:  CentOS 6,7, Debian, Ubuntu                  #\n#   Description: One click Install ShadowsocksR Server            #\n#   Author: 91yun &lt;https:\/\/twitter.com\/91yun&gt;                     #\n#   Thanks: @breakwa11 &lt;https:\/\/twitter.com\/breakwa11&gt;            #\n#   Thanks: @Teddysun &lt;i@teddysun.com&gt;                            #\n#   Intro:  https:\/\/www.91yun.org\/archives\/2079                   #\n#=================================================================#\n\n\n#Current folder\ncur_dir=`pwd`\n# Get public IP address\nIP=$(ip addr | egrep -o '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}' | egrep -v \"^192\\.168|^172\\.1[6-9]\\.|^172\\.2[0-9]\\.|^172\\.3[0-2]\\.|^10\\.|^127\\.|^255\\.|^0\\.\" | head -n 1)\nif [[ \"$IP\" = \"\" ]]; then\n    IP=$(wget -qO- -t1 -T2 ipv4.icanhazip.com)\nfi\n\n# Make sure only root can run our script\nfunction rootness(){\n    if [[ $EUID -ne 0 ]]; then\n       echo \"Error:This script must be run as root!\" 1&gt;&amp;2\n       exit 1\n    fi\n}\n\n# Check OS\nfunction checkos(){\n    if [ -f \/etc\/redhat-release ];then\n        OS='CentOS'\n    elif [ ! -z \"`cat \/etc\/issue | grep bian`\" ];then\n        OS='Debian'\n    elif [ ! -z \"`cat \/etc\/issue | grep Ubuntu`\" ];then\n        OS='Ubuntu'\n    else\n        echo \"Not support OS, Please reinstall OS and retry!\"\n        exit 1\n    fi\n}\n\n# Get version\nfunction getversion(){\n    if [[ -s \/etc\/redhat-release ]];then\n        grep -oE  \"[0-9.]+\" \/etc\/redhat-release\n    else    \n        grep -oE  \"[0-9.]+\" \/etc\/issue\n    fi    \n}\n\n# CentOS version\nfunction centosversion(){\n    local code=$1\n    local version=\"`getversion`\"\n    local main_ver=${version%%.*}\n    if [ $main_ver == $code ];then\n        return 0\n    else\n        return 1\n    fi        \n}\n\n# Disable selinux\nfunction disable_selinux(){\nif [ -s \/etc\/selinux\/config ] &amp;&amp; grep 'SELINUX=enforcing' \/etc\/selinux\/config; then\n    sed -i 's\/SELINUX=enforcing\/SELINUX=disabled\/g' \/etc\/selinux\/config\n    setenforce 0\nfi\n}\n\n# Pre-installation settings\nfunction pre_install(){\n    # Not support CentOS 5\n    if centosversion 5; then\n        echo \"Not support CentOS 5, please change OS to CentOS 6+\/Debian 7+\/Ubuntu 12+ and retry.\"\n        exit 1\n    fi\n    # Set ShadowsocksR config password\n    echo \"Please input password for ShadowsocksR:\"\n    read -p \"(Default password: www.91yun.org):\" shadowsockspwd\n    [ -z \"$shadowsockspwd\" ] &amp;&amp; shadowsockspwd=\"www.91yun.org\"\n    echo\n    echo \"---------------------------\"\n    echo \"password = $shadowsockspwd\"\n    echo \"---------------------------\"\n    echo\n    # Set ShadowsocksR config port\n    while true\n    do\n    echo -e \"Please input port for ShadowsocksR [1-65535]:\"\n    read -p \"(Default port: 8989):\" shadowsocksport\n    [ -z \"$shadowsocksport\" ] &amp;&amp; shadowsocksport=\"8989\"\n    expr $shadowsocksport + 0 &amp;&gt;\/dev\/null\n    if [ $? -eq 0 ]; then\n        if [ $shadowsocksport -ge 1 ] &amp;&amp; [ $shadowsocksport -le 65535 ]; then\n            echo\n            echo \"---------------------------\"\n            echo \"port = $shadowsocksport\"\n            echo \"---------------------------\"\n            echo\n            break\n        else\n            echo \"Input error! Please input correct number.\"\n        fi\n    else\n        echo \"Input error! Please input correct number.\"\n    fi\n    done\n    get_char(){\n        SAVEDSTTY=`stty -g`\n        stty -echo\n        stty cbreak\n        dd if=\/dev\/tty bs=1 count=1 2&gt; \/dev\/null\n        stty -raw\n        stty echo\n        stty $SAVEDSTTY\n    }\n    echo\n    echo \"Press any key to start...or Press Ctrl+C to cancel\"\n    char=`get_char`\n    # Install necessary dependencies\n    if [ \"$OS\" == 'CentOS' ]; then\n        yum install -y wget unzip openssl-devel gcc swig python python-devel python-setuptools autoconf libtool libevent git ntpdate\n        yum install -y m2crypto automake make curl curl-devel zlib-devel perl perl-devel cpio expat-devel gettext-devel\n    else\n        apt-get -y update\n        apt-get -y install python python-dev python-pip python-m2crypto curl wget unzip gcc swig automake make perl cpio build-essential git ntpdate\n    fi\n    cd $cur_dir\n}\n\n# Download files\nfunction download_files(){\n    # Download libsodium file\n    if ! wget --no-check-certificate -O libsodium-1.0.10.tar.gz https:\/\/github.com\/jedisct1\/libsodium\/releases\/download\/1.0.10\/libsodium-1.0.10.tar.gz; then\n        echo \"Failed to download libsodium file!\"\n        exit 1\n    fi\n    # Download ShadowsocksR file\n    # if ! wget --no-check-certificate -O manyuser.zip https:\/\/github.com\/breakwa11\/shadowsocks\/archive\/manyuser.zip; then\n        # echo \"Failed to download ShadowsocksR file!\"\n        # exit 1\n    # fi\n    # Download ShadowsocksR chkconfig file\n    if [ \"$OS\" == 'CentOS' ]; then\n        if ! wget --no-check-certificate https:\/\/raw.githubusercontent.com\/91yun\/shadowsocks_install\/master\/shadowsocksR -O \/etc\/init.d\/shadowsocks; then\n            echo \"Failed to download ShadowsocksR chkconfig file!\"\n            exit 1\n        fi\n    else\n        if ! wget --no-check-certificate https:\/\/raw.githubusercontent.com\/91yun\/shadowsocks_install\/master\/shadowsocksR-debian -O \/etc\/init.d\/shadowsocks; then\n            echo \"Failed to download ShadowsocksR chkconfig file!\"\n            exit 1\n        fi\n    fi\n}\n\n# firewall set\nfunction firewall_set(){\n    echo \"firewall set start...\"\n    if centosversion 6; then\n        \/etc\/init.d\/iptables status &gt; \/dev\/null 2&gt;&amp;1\n        if [ $? -eq 0 ]; then\n            iptables -L -n | grep '${shadowsocksport}' | grep 'ACCEPT' &gt; \/dev\/null 2&gt;&amp;1\n            if [ $? -ne 0 ]; then\n                iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport ${shadowsocksport} -j ACCEPT\n                iptables -I INPUT -m state --state NEW -m udp -p udp --dport ${shadowsocksport} -j ACCEPT\n                \/etc\/init.d\/iptables save\n                \/etc\/init.d\/iptables restart\n            else\n                echo \"port ${shadowsocksport} has been set up.\"\n            fi\n        else\n            echo \"WARNING: iptables looks like shutdown or not installed, please manually set it if necessary.\"\n        fi\n    elif centosversion 7; then\n        systemctl status firewalld &gt; \/dev\/null 2&gt;&amp;1\n        if [ $? -eq 0 ];then\n            firewall-cmd --permanent --zone=public --add-port=${shadowsocksport}\/tcp\n            firewall-cmd --permanent --zone=public --add-port=${shadowsocksport}\/udp\n            firewall-cmd --reload\n        else\n\t\t\t\/etc\/init.d\/iptables status &gt; \/dev\/null 2&gt;&amp;1\n\t\t\tif [ $? -eq 0 ]; then\n\t\t\t\tiptables -L -n | grep '${shadowsocksport}' | grep 'ACCEPT' &gt; \/dev\/null 2&gt;&amp;1\n\t\t\t\tif [ $? -ne 0 ]; then\n\t\t\t\t\tiptables -I INPUT -m state --state NEW -m tcp -p tcp --dport ${shadowsocksport} -j ACCEPT\n\t\t\t\t\tiptables -I INPUT -m state --state NEW -m udp -p udp --dport ${shadowsocksport} -j ACCEPT\n\t\t\t\t\t\/etc\/init.d\/iptables save\n\t\t\t\t\t\/etc\/init.d\/iptables restart\n\t\t\t\telse\n\t\t\t\t\techo \"port ${shadowsocksport} has been set up.\"\n\t\t\t\tfi\n\t\t\telse\n\t\t\t\techo \"WARNING: firewall like shutdown or not installed, please manually set it if necessary.\"\n\t\t\tfi\t\t\n        fi\n    fi\n    echo \"firewall set completed...\"\n}\n\n# Config ShadowsocksR\nfunction config_shadowsocks(){\n    cat &gt; \/etc\/shadowsocks.json&lt;&lt;-EOF\n{\n    \"server\": \"0.0.0.0\",\n    \"server_ipv6\": \"::\",\n    \"server_port\": ${shadowsocksport},\n    \"local_address\": \"127.0.0.1\",\n    \"local_port\": 1081,\n    \"password\": \"${shadowsockspwd}\",\n    \"timeout\": 120,\n    \"udp_timeout\": 60,\n    \"method\": \"chacha20\",\n    \"protocol\": \"auth_sha1_v4_compatible\",\n    \"protocol_param\": \"\",\n    \"obfs\": \"tls1.2_ticket_auth_compatible\",\n    \"obfs_param\": \"\",\n    \"dns_ipv6\": false,\n    \"connect_verbose_info\": 1,\n    \"redirect\": \"\",\n    \"fast_open\": false,\n    \"workers\": 1\n\n}\nEOF\n}\n\n# Install ShadowsocksR\nfunction install_ss(){\n    # Install libsodium\n    tar zxf libsodium-1.0.10.tar.gz\n    cd $cur_dir\/libsodium-1.0.10\n    .\/configure &amp;&amp; make &amp;&amp; make install\n    echo \"\/usr\/local\/lib\" &gt; \/etc\/ld.so.conf.d\/local.conf\n    ldconfig\n    # Install ShadowsocksR\n    cd $cur_dir\n    # unzip -q manyuser.zip\n    # mv shadowsocks-manyuser\/shadowsocks \/usr\/local\/\n\tgit clone https:\/\/github.com\/shadowsocksr\/shadowsocksr.git \/usr\/local\/shadowsocks\n    if [ -f \/usr\/local\/shadowsocks\/server.py ]; then\n        chmod +x \/etc\/init.d\/shadowsocks\n        # Add run on system start up\n        if [ \"$OS\" == 'CentOS' ]; then\n            chkconfig --add shadowsocks\n            chkconfig shadowsocks on\n        else\n            update-rc.d -f shadowsocks defaults\n        fi\n        # Run ShadowsocksR in the background\n        \/etc\/init.d\/shadowsocks start\n        clear\n        echo\n        echo \"Congratulations, ShadowsocksR install completed!\"\n        echo -e \"Server IP: \\033[41;37m ${IP} \\033[0m\"\n        echo -e \"Server Port: \\033[41;37m ${shadowsocksport} \\033[0m\"\n        echo -e \"Password: \\033[41;37m ${shadowsockspwd} \\033[0m\"\n        echo -e \"Protocol: \\033[41;37m auth_sha1_v4 \\033[0m\"\n        echo -e \"obfs: \\033[41;37m tls1.2_ticket_auth \\033[0m\"\n        echo -e \"Encryption Method: \\033[41;37m chacha20 \\033[0m\"\n        echo \"Welcome to visit:https:\/\/www.91yun.org\/archives\/2079\"\n        echo \"If you want to change protocol &amp; obfs, reference URL:\"\n        echo \"https:\/\/github.com\/breakwa11\/shadowsocks-rss\/wiki\/Server-Setup\"\n        echo\n        echo \"Enjoy it!\"\n        echo\n    else\n        echo \"Shadowsocks install failed!\"\n        install_cleanup\n        exit 1\n    fi\n}\n\n\n# Install cleanup\nfunction install_cleanup(){\n    cd $cur_dir\n    rm -f manyuser.zip\n    rm -rf shadowsocks-manyuser\n    rm -f libsodium-1.0.10.tar.gz\n    rm -rf libsodium-1.0.10\n}\n\n\n# Uninstall ShadowsocksR\nfunction uninstall_shadowsocks(){\n    printf \"Are you sure uninstall ShadowsocksR? (y\/n) \"\n    printf \"\\n\"\n    read -p \"(Default: n):\" answer\n    if [ -z $answer ]; then\n        answer=\"n\"\n    fi\n    if [ \"$answer\" = \"y\" ]; then\n        \/etc\/init.d\/shadowsocks status &gt; \/dev\/null 2&gt;&amp;1\n        if [ $? -eq 0 ]; then\n            \/etc\/init.d\/shadowsocks stop\n        fi\n        checkos\n        if [ \"$OS\" == 'CentOS' ]; then\n            chkconfig --del shadowsocks\n        else\n            update-rc.d -f shadowsocks remove\n        fi\n        rm -f \/etc\/shadowsocks.json\n        rm -f \/etc\/init.d\/shadowsocks\n        rm -rf \/usr\/local\/shadowsocks\n        echo \"ShadowsocksR uninstall success!\"\n    else\n        echo \"uninstall cancelled, Nothing to do\"\n    fi\n}\n\n\n# Install ShadowsocksR\nfunction install_shadowsocks(){\n    checkos\n    rootness\n    disable_selinux\n    pre_install\n    download_files\n    config_shadowsocks\n    install_ss\n    if [ \"$OS\" == 'CentOS' ]; then\n        firewall_set &gt; \/dev\/null 2&gt;&amp;1\n    fi\n\t#check_datetime\n    install_cleanup\n\t\n}\n\n# Initialization step\naction=$1\n[ -z $1 ] &amp;&amp; action=install\ncase \"$action\" in\ninstall)\n    install_shadowsocks\n    ;;\nuninstall)\n    uninstall_shadowsocks\n    ;;\n*)\n    echo \"Arguments error! [${action} ]\"\n    echo \"Usage: `basename $0` {install|uninstall}\"\n    ;;\nesac\n\n<\/pre>\n<h1><span style=\"color: #ff0000;\">shadowsocksR.sh\u6e90\u7801-\u65e7\u7248\u517c\u5bb9\u5b98\u65b9SS\u5ba2\u6237\u7aef\uff0cIOS\u517c\u5bb9<\/span><\/h1>\n<p><a href=\"http:\/\/www.zhangyijun.com\/wp-content\/uploads\/2017\/03\/shadowsocksR.txt\">shadowsocksR<\/a><\/p>\n<pre>#! \/bin\/bash\nPATH=\/bin:\/sbin:\/usr\/bin:\/usr\/sbin:\/usr\/local\/bin:\/usr\/local\/sbin:~\/bin\nexport PATH\n#=================================================================#\n#   System Required:  CentOS 6,7, Debian, Ubuntu                  #\n#   Description: One click Install ShadowsocksR Server            #\n#   Author: 91yun &lt;https:\/\/twitter.com\/91yun&gt;                     #\n#   Thanks: @breakwa11 &lt;https:\/\/twitter.com\/breakwa11&gt;            #\n#   Thanks: @Teddysun &lt;i@teddysun.com&gt;                            #\n#   Intro:  https:\/\/www.91yun.org\/archives\/2079                   #\n#=================================================================#\n\nclear\necho\n\necho\n\n#Current folder\ncur_dir=`pwd`\n# Get public IP address\nIP=$(ip addr | egrep -o '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}' | egrep -v \"^192\\.168|^172\\.1[6-9]\\.|^172\\.2[0-9]\\.|^172\\.3[0-2]\\.|^10\\.|^127\\.|^255\\.|^0\\.\" | head -n 1)\nif [[ \"$IP\" = \"\" ]]; then\n    IP=$(wget -qO- -t1 -T2 ipv4.icanhazip.com)\nfi\n\n# Make sure only root can run our script\nfunction rootness(){\n    if [[ $EUID -ne 0 ]]; then\n       echo \"Error:This script must be run as root!\" 1&gt;&amp;2\n       exit 1\n    fi\n}\n\n# Check OS\nfunction checkos(){\n    if [ -f \/etc\/redhat-release ];then\n        OS='CentOS'\n    elif [ ! -z \"`cat \/etc\/issue | grep bian`\" ];then\n        OS='Debian'\n    elif [ ! -z \"`cat \/etc\/issue | grep Ubuntu`\" ];then\n        OS='Ubuntu'\n    else\n        echo \"Not support OS, Please reinstall OS and retry!\"\n        exit 1\n    fi\n}\n\n# Get version\nfunction getversion(){\n    if [[ -s \/etc\/redhat-release ]];then\n        grep -oE  \"[0-9.]+\" \/etc\/redhat-release\n    else    \n        grep -oE  \"[0-9.]+\" \/etc\/issue\n    fi    \n}\n\n# CentOS version\nfunction centosversion(){\n    local code=$1\n    local version=\"`getversion`\"\n    local main_ver=${version%%.*}\n    if [ $main_ver == $code ];then\n        return 0\n    else\n        return 1\n    fi        \n}\n\n# Disable selinux\nfunction disable_selinux(){\nif [ -s \/etc\/selinux\/config ] &amp;&amp; grep 'SELINUX=enforcing' \/etc\/selinux\/config; then\n    sed -i 's\/SELINUX=enforcing\/SELINUX=disabled\/g' \/etc\/selinux\/config\n    setenforce 0\nfi\n}\n\n# Pre-installation settings\nfunction pre_install(){\n    # Not support CentOS 5\n    if centosversion 5; then\n        echo \"Not support CentOS 5, please change OS to CentOS 6+\/Debian 7+\/Ubuntu 12+ and retry.\"\n        exit 1\n    fi\n    # Set ShadowsocksR config password\n    echo \"Please input password for ShadowsocksR:\"\n    read -p \"(Default password: www.91yun.org):\" shadowsockspwd\n    [ -z \"$shadowsockspwd\" ] &amp;&amp; shadowsockspwd=\"www.91yun.org\"\n    echo\n    echo \"---------------------------\"\n    echo \"password = $shadowsockspwd\"\n    echo \"---------------------------\"\n    echo\n    # Set ShadowsocksR config port\n    while true\n    do\n    echo -e \"Please input port for ShadowsocksR [1-65535]:\"\n    read -p \"(Default port: 8989):\" shadowsocksport\n    [ -z \"$shadowsocksport\" ] &amp;&amp; shadowsocksport=\"8989\"\n    expr $shadowsocksport + 0 &amp;&gt;\/dev\/null\n    if [ $? -eq 0 ]; then\n        if [ $shadowsocksport -ge 1 ] &amp;&amp; [ $shadowsocksport -le 65535 ]; then\n            echo\n            echo \"---------------------------\"\n            echo \"port = $shadowsocksport\"\n            echo \"---------------------------\"\n            echo\n            break\n        else\n            echo \"Input error! Please input correct number.\"\n        fi\n    else\n        echo \"Input error! Please input correct number.\"\n    fi\n    done\n    get_char(){\n        SAVEDSTTY=`stty -g`\n        stty -echo\n        stty cbreak\n        dd if=\/dev\/tty bs=1 count=1 2&gt; \/dev\/null\n        stty -raw\n        stty echo\n        stty $SAVEDSTTY\n    }\n    echo\n    echo \"Press any key to start...or Press Ctrl+C to cancel\"\n    char=`get_char`\n    # Install necessary dependencies\n    if [ \"$OS\" == 'CentOS' ]; then\n        yum install -y wget unzip openssl-devel gcc swig python python-devel python-setuptools autoconf libtool libevent git ntpdate\n        yum install -y m2crypto automake make curl curl-devel zlib-devel perl perl-devel cpio expat-devel gettext-devel\n    else\n        apt-get -y update\n        apt-get -y install python python-dev python-pip python-m2crypto curl wget unzip gcc swig automake make perl cpio build-essential git ntpdate\n    fi\n    cd $cur_dir\n}\n\n# Download files\nfunction download_files(){\n    # Download libsodium file\n    if ! wget --no-check-certificate -O libsodium-1.0.10.tar.gz https:\/\/github.com\/jedisct1\/libsodium\/releases\/download\/1.0.10\/libsodium-1.0.10.tar.gz; then\n        echo \"Failed to download libsodium file!\"\n        exit 1\n    fi\n    # Download ShadowsocksR file\n    # if ! wget --no-check-certificate -O manyuser.zip https:\/\/github.com\/breakwa11\/shadowsocks\/archive\/manyuser.zip; then\n        # echo \"Failed to download ShadowsocksR file!\"\n        # exit 1\n    # fi\n    # Download ShadowsocksR chkconfig file\n    if [ \"$OS\" == 'CentOS' ]; then\n        if ! wget --no-check-certificate https:\/\/raw.githubusercontent.com\/91yun\/shadowsocks_install\/master\/shadowsocksR -O \/etc\/init.d\/shadowsocks; then\n            echo \"Failed to download ShadowsocksR chkconfig file!\"\n            exit 1\n        fi\n    else\n        if ! wget --no-check-certificate https:\/\/raw.githubusercontent.com\/91yun\/shadowsocks_install\/master\/shadowsocksR-debian -O \/etc\/init.d\/shadowsocks; then\n            echo \"Failed to download ShadowsocksR chkconfig file!\"\n            exit 1\n        fi\n    fi\n}\n\n# firewall set\nfunction firewall_set(){\n    echo \"firewall set start...\"\n    if centosversion 6; then\n        \/etc\/init.d\/iptables status &gt; \/dev\/null 2&gt;&amp;1\n        if [ $? -eq 0 ]; then\n            iptables -L -n | grep '${shadowsocksport}' | grep 'ACCEPT' &gt; \/dev\/null 2&gt;&amp;1\n            if [ $? -ne 0 ]; then\n                iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport ${shadowsocksport} -j ACCEPT\n                iptables -I INPUT -m state --state NEW -m udp -p udp --dport ${shadowsocksport} -j ACCEPT\n                \/etc\/init.d\/iptables save\n                \/etc\/init.d\/iptables restart\n            else\n                echo \"port ${shadowsocksport} has been set up.\"\n            fi\n        else\n            echo \"WARNING: iptables looks like shutdown or not installed, please manually set it if necessary.\"\n        fi\n    elif centosversion 7; then\n        systemctl status firewalld &gt; \/dev\/null 2&gt;&amp;1\n        if [ $? -eq 0 ];then\n            firewall-cmd --permanent --zone=public --add-port=${shadowsocksport}\/tcp\n            firewall-cmd --permanent --zone=public --add-port=${shadowsocksport}\/udp\n            firewall-cmd --reload\n        else\n\t\t\t\/etc\/init.d\/iptables status &gt; \/dev\/null 2&gt;&amp;1\n\t\t\tif [ $? -eq 0 ]; then\n\t\t\t\tiptables -L -n | grep '${shadowsocksport}' | grep 'ACCEPT' &gt; \/dev\/null 2&gt;&amp;1\n\t\t\t\tif [ $? -ne 0 ]; then\n\t\t\t\t\tiptables -I INPUT -m state --state NEW -m tcp -p tcp --dport ${shadowsocksport} -j ACCEPT\n\t\t\t\t\tiptables -I INPUT -m state --state NEW -m udp -p udp --dport ${shadowsocksport} -j ACCEPT\n\t\t\t\t\t\/etc\/init.d\/iptables save\n\t\t\t\t\t\/etc\/init.d\/iptables restart\n\t\t\t\telse\n\t\t\t\t\techo \"port ${shadowsocksport} has been set up.\"\n\t\t\t\tfi\n\t\t\telse\n\t\t\t\techo \"WARNING: firewall like shutdown or not installed, please manually set it if necessary.\"\n\t\t\tfi\t\t\n        fi\n    fi\n    echo \"firewall set completed...\"\n}\n\n# Config ShadowsocksR\nfunction config_shadowsocks(){\n    cat &gt; \/etc\/shadowsocks.json&lt;&lt;-EOF\n{\n    \"server\": \"0.0.0.0\",\n    \"server_ipv6\": \"::\",\n    \"server_port\": ${shadowsocksport},\n    \"local_address\": \"127.0.0.1\",\n    \"local_port\": 1081,\n    \"password\": \"${shadowsockspwd}\",\n    \"timeout\": 120,\n    \"udp_timeout\": 60,\n    \"method\": \"chacha20\",\n    \"protocol\": \"verify_sha1_compatible\",\n    \"protocol_param\": \"\",\n    \"obfs\": \"tls1.2_ticket_auth_compatible\",\n    \"obfs_param\": \"\",\n    \"dns_ipv6\": false,\n    \"connect_verbose_info\": 1,\n    \"redirect\": \"\",\n    \"fast_open\": false,\n    \"workers\": 1\n\n}\nEOF\n}\n\n# Install ShadowsocksR\nfunction install_ss(){\n    # Install libsodium\n    tar zxf libsodium-1.0.10.tar.gz\n    cd $cur_dir\/libsodium-1.0.10\n    .\/configure &amp;&amp; make &amp;&amp; make install\n    echo \"\/usr\/local\/lib\" &gt; \/etc\/ld.so.conf.d\/local.conf\n    ldconfig\n    # Install ShadowsocksR\n    cd $cur_dir\n    # unzip -q manyuser.zip\n    # mv shadowsocks-manyuser\/shadowsocks \/usr\/local\/\n\tgit clone https:\/\/github.com\/shadowsocksr\/shadowsocksr.git \/usr\/local\/shadowsocks\n    if [ -f \/usr\/local\/shadowsocks\/server.py ]; then\n        chmod +x \/etc\/init.d\/shadowsocks\n        # Add run on system start up\n        if [ \"$OS\" == 'CentOS' ]; then\n            chkconfig --add shadowsocks\n            chkconfig shadowsocks on\n        else\n            update-rc.d -f shadowsocks defaults\n        fi\n        # Run ShadowsocksR in the background\n        \/etc\/init.d\/shadowsocks start\n        clear\n        echo\n        echo \"Congratulations, ShadowsocksR install completed!\"\n        echo -e \"Server IP: \\033[41;37m ${IP} \\033[0m\"\n        echo -e \"Server Port: \\033[41;37m ${shadowsocksport} \\033[0m\"\n        echo -e \"Password: \\033[41;37m ${shadowsockspwd} \\033[0m\"\n        echo -e \"Protocol(\u9357\u5fda\ue185): \\033[41;37m verify_sha1(\u9358\u71ba\u5897ss\u7039\u3221\u57db\u7ed4\ue21e\u6e36\u7455\u4f78\u5b00\u95ab\u5909\u7af4\u5a06\u2103\u20ac\u0447\u7359\u7487\ufffd) \\033[0m\"\n        echo -e \"obfs(\u5a23\u950b\u7a6f): \\033[41;37m tls1.2_ticket_auth \\033[0m\"\n        echo -e \"Encryption Method(\u9354\u72b2\u7611\u93c2\u89c4\u7876): \\033[41;37m chacha20 \\033[0m\"\n        echo \"Welcome to visit:https:\/\/www.91yun.org\/archives\/2079\"\n        echo \"If you want to change protocol &amp; obfs, reference URL:\"\n        echo \"https:\/\/github.com\/breakwa11\/shadowsocks-rss\/wiki\/Server-Setup\"\n        echo\n        echo \"Enjoy it!\"\n        echo\n    else\n        echo \"Shadowsocks install failed!\"\n        install_cleanup\n        exit 1\n    fi\n}\n\n#\u93c0\u89c4\u579a\u9356\u693e\u542b\u93c3\u5815\u68ff\n# function check_datetime(){\n\t# rm -rf \/etc\/localtime\n\t# ln -s \/usr\/share\/zoneinfo\/Asia\/Shanghai \/etc\/localtime\n\t# ntpdate time.windows.com\n# }\n\n# Install cleanup\nfunction install_cleanup(){\n    cd $cur_dir\n    rm -f manyuser.zip\n    rm -rf shadowsocks-manyuser\n    rm -f libsodium-1.0.10.tar.gz\n    rm -rf libsodium-1.0.10\n}\n\n\n# Uninstall ShadowsocksR\nfunction uninstall_shadowsocks(){\n    printf \"Are you sure uninstall ShadowsocksR? (y\/n) \"\n    printf \"\\n\"\n    read -p \"(Default: n):\" answer\n    if [ -z $answer ]; then\n        answer=\"n\"\n    fi\n    if [ \"$answer\" = \"y\" ]; then\n        \/etc\/init.d\/shadowsocks status &gt; \/dev\/null 2&gt;&amp;1\n        if [ $? -eq 0 ]; then\n            \/etc\/init.d\/shadowsocks stop\n        fi\n        checkos\n        if [ \"$OS\" == 'CentOS' ]; then\n            chkconfig --del shadowsocks\n        else\n            update-rc.d -f shadowsocks remove\n        fi\n        rm -f \/etc\/shadowsocks.json\n        rm -f \/etc\/init.d\/shadowsocks\n        rm -rf \/usr\/local\/shadowsocks\n        echo \"ShadowsocksR uninstall success!\"\n    else\n        echo \"uninstall cancelled, Nothing to do\"\n    fi\n}\n\n\n# Install ShadowsocksR\nfunction install_shadowsocks(){\n    checkos\n    rootness\n    disable_selinux\n    pre_install\n    download_files\n    config_shadowsocks\n    install_ss\n    if [ \"$OS\" == 'CentOS' ]; then\n        firewall_set &gt; \/dev\/null 2&gt;&amp;1\n    fi\n\t#check_datetime\n    install_cleanup\n\t\n}\n\n# Initialization step\naction=$1\n[ -z $1 ] &amp;&amp; action=install\ncase \"$action\" in\ninstall)\n    install_shadowsocks\n    ;;\nuninstall)\n    uninstall_shadowsocks\n    ;;\n*)\n    echo \"Arguments error! [${action} ]\"\n    echo \"Usage: `basename $0` {install|uninstall}\"\n    ;;\nesac\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\t\t\t\t\t\t&#8230; <\/p>\n<div class=\"read-more navbutton\"><a href=\"http:\/\/www.zhangyijun.com\/?p=14\">\u9605\u8bfb\u66f4\u591a<i class=\"fa fa-angle-double-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-14","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14"}],"version-history":[{"count":0,"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=\/wp\/v2\/posts\/14\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.zhangyijun.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}