瀏覽代碼

Onion site for wiki

Bob Mottram 9 年之前
父節點
當前提交
970038218f
共有 1 個文件被更改,包括 105 次插入2 次删除
  1. 105
    2
      src/freedombone

+ 105
- 2
src/freedombone 查看文件

@@ -212,6 +212,7 @@ WIKI_DOMAIN_NAME=
212 212
 WIKI_ADMIN_PASSWORD=
213 213
 WIKI_TITLE="${PROJECT_NAME} Wiki"
214 214
 WIKI_CODE=
215
+WIKI_ONION_PORT=8089
215 216
 
216 217
 # Domain name for your blog
217 218
 FULLBLOG_DOMAIN_NAME=
@@ -6939,6 +6940,87 @@ function install_wiki {
6939 6940
   echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6940 6941
   echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6941 6942
   echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6943
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6944
+  echo 'server {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6945
+  echo "    listen 127.0.0.1:${WIKI_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6946
+  echo "    root /var/www/$WIKI_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6947
+  echo "    server_name $WIKI_DOMAIN_NAME;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6948
+  echo '    access_log off;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6949
+  echo "    error_log /var/log/nginx/${WIKI_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6950
+  echo '    index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6951
+  echo '    charset utf-8;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6952
+  echo '    client_max_body_size 20m;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6953
+  echo '    client_body_buffer_size 128k;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6954
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6955
+  echo '    limit_conn conn_limit_per_ip 10;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6956
+  echo '    limit_req zone=req_limit_per_ip burst=10 nodelay;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6957
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6958
+  echo '    add_header X-Frame-Options DENY;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6959
+  echo '    add_header X-Content-Type-Options nosniff;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6960
+  echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6961
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6962
+  echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6963
+  echo '    location / {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6964
+  echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6965
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6966
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6967
+  echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6968
+  echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6969
+  echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6970
+  echo '        allow all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6971
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6972
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6973
+  echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6974
+  echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6975
+  echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6976
+  echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6977
+  echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6978
+  echo '        expires 30d;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6979
+  echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6980
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6981
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6982
+  echo '    # block these file types' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6983
+  echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6984
+  echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6985
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6986
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6987
+  echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6988
+  echo '    # or a unix socket' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6989
+  echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6990
+  echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6991
+  echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6992
+  echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6993
+  echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6994
+  echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6995
+  echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6996
+  echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6997
+  echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6998
+  echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6999
+  echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7000
+  echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7001
+  echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7002
+  echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7003
+  echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7004
+  echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7005
+  echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7006
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7007
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7008
+  echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7009
+  echo '    location ~ /\. {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7010
+  echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7011
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7012
+  echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7013
+  echo '    #deny access to store' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7014
+  echo '    location ~ /store {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7015
+  echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7016
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7017
+  echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7018
+  echo '      deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7019
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7020
+  echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7021
+  echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7022
+  echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7023
+  echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
6942 7024
 
6943 7025
   if [ ! -f /etc/ssl/certs/$WIKI_DOMAIN_NAME.dhparam ]; then
6944 7026
       if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
@@ -6952,8 +7034,27 @@ function install_wiki {
6952 7034
   configure_php
6953 7035
 
6954 7036
   nginx_ensite $WIKI_DOMAIN_NAME
6955
-  service php5-fpm restart
6956
-  service nginx restart
7037
+
7038
+  if [ ! -d /var/lib/tor ]; then
7039
+      echo $'No Tor installation found. Wiki onion site cannot be configured.'
7040
+      exit 877367
7041
+  fi
7042
+  if ! grep -q "hidden_service_wiki" /etc/tor/torrc; then
7043
+      echo 'HiddenServiceDir /var/lib/tor/hidden_service_wiki/' >> /etc/tor/torrc
7044
+      echo "HiddenServicePort 80 127.0.0.1:${WIKI_ONION_PORT}" >> /etc/tor/torrc
7045
+      echo $'Added onion site for Wiki'
7046
+  fi
7047
+
7048
+  systemctl restart php5-fpm
7049
+  systemctl restart nginx
7050
+  systemctl restart tor
7051
+
7052
+  if [ ! -f /var/lib/tor/hidden_service_wiki/hostname ]; then
7053
+      echo $'Wiki onion site hostname not found'
7054
+      exit 52383
7055
+  fi
7056
+  WIKI_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_wiki/hostname)
7057
+  echo "Wiki onion domain:${WIKI_ONION_HOSTNAME}" >> $COMPLETION_FILE
6957 7058
 
6958 7059
   # update the dynamic DNS
6959 7060
   CURRENT_DDNS_DOMAIN=$WIKI_DOMAIN_NAME
@@ -6965,12 +7066,14 @@ function install_wiki {
6965 7066
       echo '' >> /home/$MY_USERNAME/README
6966 7067
       echo $'Wiki' >> /home/$MY_USERNAME/README
6967 7068
       echo '====' >> /home/$MY_USERNAME/README
7069
+      echo $"Wiki onion domain: ${WIKI_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
6968 7070
       echo $"Wiki username: $MY_USERNAME" >> /home/$MY_USERNAME/README
6969 7071
       echo $"Wiki password: $WIKI_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
6970 7072
       echo '' >> /home/$MY_USERNAME/README
6971 7073
       echo $'Once you have set up the wiki then remove the install file:' >> /home/$MY_USERNAME/README
6972 7074
       echo '' >> /home/$MY_USERNAME/README
6973 7075
       echo "  rm /var/www/$WIKI_DOMAIN_NAME/htdocs/install.php" >> /home/$MY_USERNAME/README
7076
+      echo '' >> /home/$MY_USERNAME/README
6974 7077
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
6975 7078
       chmod 600 /home/$MY_USERNAME/README
6976 7079
   fi