| 
				
			 | 
			
			
				@@ -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 
			 |