|  | @@ -47,6 +47,103 @@ matrix_variables=(ONION_ONLY
 | 
	
		
			
			| 47 | 47 |                    MATRIX_SECRET
 | 
	
		
			
			| 48 | 48 |                    DEFAULT_DOMAIN_NAME)
 | 
	
		
			
			| 49 | 49 |  
 | 
	
		
			
			|  | 50 | +function matrix_nginx {
 | 
	
		
			
			|  | 51 | +    matrix_proxy_str='
 | 
	
		
			
			|  | 52 | +    location /matrix {
 | 
	
		
			
			|  | 53 | +        proxy_pass https://localhost:8448;
 | 
	
		
			
			|  | 54 | +        proxy_buffering on;
 | 
	
		
			
			|  | 55 | +    }'
 | 
	
		
			
			|  | 56 | +
 | 
	
		
			
			|  | 57 | +    if [ ! -f /etc/nginx/sites-available/${DEFAULT_DOMAIN_NAME} ]; then
 | 
	
		
			
			|  | 58 | +        matrix_nginx_site=/etc/nginx/sites-available/$DEFAULT_DOMAIN_NAME
 | 
	
		
			
			|  | 59 | +        if [[ $ONION_ONLY == "no" ]]; then
 | 
	
		
			
			|  | 60 | +            function_check nginx_http_redirect
 | 
	
		
			
			|  | 61 | +            nginx_http_redirect $DEFAULT_DOMAIN_NAME
 | 
	
		
			
			|  | 62 | +            echo 'server {' >> $matrix_nginx_site
 | 
	
		
			
			|  | 63 | +            echo '  listen 443 ssl;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 64 | +            echo '  listen [::]:443 ssl;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 65 | +            echo "  server_name $DEFAULT_DOMAIN_NAME;" >> $matrix_nginx_site
 | 
	
		
			
			|  | 66 | +            echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 67 | +            echo '  # Security' >> $matrix_nginx_site
 | 
	
		
			
			|  | 68 | +            function_check nginx_ssl
 | 
	
		
			
			|  | 69 | +            nginx_ssl $DEFAULT_DOMAIN_NAME
 | 
	
		
			
			|  | 70 | +
 | 
	
		
			
			|  | 71 | +            function_check nginx_disable_sniffing
 | 
	
		
			
			|  | 72 | +            nginx_disable_sniffing $DEFAULT_DOMAIN_NAME
 | 
	
		
			
			|  | 73 | +
 | 
	
		
			
			|  | 74 | +            echo '  add_header Strict-Transport-Security max-age=15768000;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 75 | +            echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 76 | +            echo '  # Logs' >> $matrix_nginx_site
 | 
	
		
			
			|  | 77 | +            echo '  access_log /dev/null;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 78 | +            echo '  error_log /dev/null;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 79 | +            echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 80 | +            echo '  # Root' >> $matrix_nginx_site
 | 
	
		
			
			|  | 81 | +            echo "  root /var/www/$DEFAULT_DOMAIN_NAME/htdocs;" >> $matrix_nginx_site
 | 
	
		
			
			|  | 82 | +            echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 83 | +            echo '  # Index' >> $matrix_nginx_site
 | 
	
		
			
			|  | 84 | +            echo '  index index.html;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 85 | +            echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 86 | +            echo '  # Location' >> $matrix_nginx_site
 | 
	
		
			
			|  | 87 | +            echo '  location / {' >> $matrix_nginx_site
 | 
	
		
			
			|  | 88 | +            function_check nginx_limits
 | 
	
		
			
			|  | 89 | +            nginx_limits $DEFAULT_DOMAIN_NAME '15m'
 | 
	
		
			
			|  | 90 | +            echo '  }' >> $matrix_nginx_site
 | 
	
		
			
			|  | 91 | +            echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 92 | +            echo '  # Restrict access that is unnecessary anyway' >> $matrix_nginx_site
 | 
	
		
			
			|  | 93 | +            echo '  location ~ /\.(ht|git) {' >> $matrix_nginx_site
 | 
	
		
			
			|  | 94 | +            echo '    deny all;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 95 | +            echo '  }' >> $matrix_nginx_site
 | 
	
		
			
			|  | 96 | +            echo '}' >> $matrix_nginx_site
 | 
	
		
			
			|  | 97 | +        else
 | 
	
		
			
			|  | 98 | +            echo -n '' > $matrix_nginx_site
 | 
	
		
			
			|  | 99 | +        fi
 | 
	
		
			
			|  | 100 | +        echo 'server {' >> $matrix_nginx_site
 | 
	
		
			
			|  | 101 | +        echo "    listen 127.0.0.1:$MATRIX_PORT default_server;" >> $matrix_nginx_site
 | 
	
		
			
			|  | 102 | +        echo "    server_name $DEFAULT_DOMAIN_NAME;" >> $matrix_nginx_site
 | 
	
		
			
			|  | 103 | +        echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 104 | +        function_check nginx_disable_sniffing
 | 
	
		
			
			|  | 105 | +        nginx_disable_sniffing $DEFAULT_DOMAIN_NAME
 | 
	
		
			
			|  | 106 | +        echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 107 | +        echo '  # Logs' >> $matrix_nginx_site
 | 
	
		
			
			|  | 108 | +        echo '  access_log /dev/null;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 109 | +        echo '  error_log /dev/null;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 110 | +        echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 111 | +        echo '  # Root' >> $matrix_nginx_site
 | 
	
		
			
			|  | 112 | +        echo "  root /var/www/$DEFAULT_DOMAIN_NAME/htdocs;" >> $matrix_nginx_site
 | 
	
		
			
			|  | 113 | +        echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 114 | +        echo '  # Location' >> $matrix_nginx_site
 | 
	
		
			
			|  | 115 | +        echo '  location / {' >> $matrix_nginx_site
 | 
	
		
			
			|  | 116 | +        function_check nginx_limits
 | 
	
		
			
			|  | 117 | +        nginx_limits $DEFAULT_DOMAIN_NAME '15m'
 | 
	
		
			
			|  | 118 | +        echo '  }' >> $matrix_nginx_site
 | 
	
		
			
			|  | 119 | +        echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 120 | +        echo '  # Fancy URLs' >> $matrix_nginx_site
 | 
	
		
			
			|  | 121 | +        echo '  location @matrix {' >> $matrix_nginx_site
 | 
	
		
			
			|  | 122 | +        echo '    rewrite ^(.*)$ /index.php?p=$1 last;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 123 | +        echo '  }' >> $matrix_nginx_site
 | 
	
		
			
			|  | 124 | +        echo '' >> $matrix_nginx_site
 | 
	
		
			
			|  | 125 | +        echo '  # Restrict access that is unnecessary anyway' >> $matrix_nginx_site
 | 
	
		
			
			|  | 126 | +        echo '  location ~ /\.(ht|git) {' >> $matrix_nginx_site
 | 
	
		
			
			|  | 127 | +        echo '    deny all;' >> $matrix_nginx_site
 | 
	
		
			
			|  | 128 | +        echo '  }' >> $matrix_nginx_site
 | 
	
		
			
			|  | 129 | +        echo '}' >> $matrix_nginx_site
 | 
	
		
			
			|  | 130 | +
 | 
	
		
			
			|  | 131 | +        if [ ! -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
 | 
	
		
			
			|  | 132 | +            function_check create_site_certificate
 | 
	
		
			
			|  | 133 | +            create_site_certificate $DEFAULT_DOMAIN_NAME 'yes'
 | 
	
		
			
			|  | 134 | +        fi
 | 
	
		
			
			|  | 135 | +
 | 
	
		
			
			|  | 136 | +        nginx_ensite $DEFAULT_DOMAIN_NAME
 | 
	
		
			
			|  | 137 | +    fi
 | 
	
		
			
			|  | 138 | +
 | 
	
		
			
			|  | 139 | +    if ! grep 'localhost:8448' /etc/nginx/sites-available/${DEFAULT_DOMAIN_NAME}; then
 | 
	
		
			
			|  | 140 | +        sed "s|:443 ssl;|:443 ssl;${matrix_proxy_str}|g" /etc/nginx/sites-available/${DEFAULT_DOMAIN_NAME}
 | 
	
		
			
			|  | 141 | +        sed "s| default_server;| default_server;${matrix_proxy_str}|g" /etc/nginx/sites-available/${DEFAULT_DOMAIN_NAME}
 | 
	
		
			
			|  | 142 | +    fi
 | 
	
		
			
			|  | 143 | +
 | 
	
		
			
			|  | 144 | +    systemctl restart nginx
 | 
	
		
			
			|  | 145 | +}
 | 
	
		
			
			|  | 146 | +
 | 
	
		
			
			| 50 | 147 |  function matrix_generate_synapse_file {
 | 
	
		
			
			| 51 | 148 |      local filepath="${1}"
 | 
	
		
			
			| 52 | 149 |  
 | 
	
	
		
			
			|  | @@ -130,10 +227,11 @@ function add_user_matrix {
 | 
	
		
			
			| 130 | 227 |      ${PROJECT_NAME}-pass -u $new_username -a matrix -p "$new_user_password"
 | 
	
		
			
			| 131 | 228 |  
 | 
	
		
			
			| 132 | 229 |      read_config_param 'MATRIX_SECRET'
 | 
	
		
			
			|  | 230 | +    matrix_nginx
 | 
	
		
			
			| 133 | 231 |      if [ -f /var/lib/matrix/.synapse/bin/activate ]; then
 | 
	
		
			
			| 134 | 232 |          source /var/lib/matrix/.synapse/bin/activate
 | 
	
		
			
			| 135 | 233 |      fi
 | 
	
		
			
			| 136 |  | -    register_new_matrix_user -c ${MATRIX_DATA_DIR}/homeserver.yaml https://localhost:${MATRIX_PORT} -u "${new_username}" -p "${new_user_password}" -a
 | 
	
		
			
			|  | 234 | +    register_new_matrix_user -c ${MATRIX_DATA_DIR}/homeserver.yaml https://${DEFAULT_DOMAIN_NAME}/matrix -u "${new_username}" -p "${new_user_password}" -a
 | 
	
		
			
			| 137 | 235 |      if [ ! "$?" = "0" ]; then
 | 
	
		
			
			| 138 | 236 |          echo '1'
 | 
	
		
			
			| 139 | 237 |      else
 | 
	
	
		
			
			|  | @@ -382,6 +480,8 @@ function install_matrix {
 | 
	
		
			
			| 382 | 480 |      rm -f ${MATRIX_DATA_DIR}/.procmailrc
 | 
	
		
			
			| 383 | 481 |      rm -f ${MATRIX_DATA_DIR}/.emacs-mutt
 | 
	
		
			
			| 384 | 482 |  
 | 
	
		
			
			|  | 483 | +    matrix_nginx
 | 
	
		
			
			|  | 484 | +
 | 
	
		
			
			| 385 | 485 |      if [[ $(add_user_matrix "${MY_USERNAME}" "${MATRIX_PASSWORD}") != "0" ]]; then
 | 
	
		
			
			| 386 | 486 |          echo $'Failed to add matrix admin user';
 | 
	
		
			
			| 387 | 487 |          exit 879352
 |