Browse Source

Add mediagoblin to the interactive installer

Bob Mottram 9 years ago
parent
commit
142486f03f
2 changed files with 330 additions and 265 deletions
  1. 229
    229
      src/freedombone
  2. 101
    36
      src/freedombone-config

+ 229
- 229
src/freedombone View File

@@ -1903,92 +1903,92 @@ function check_domains {
1903 1903
     fi
1904 1904
 
1905 1905
     if [ ${#GIT_DOMAIN_NAME} -gt 1 ]; then
1906
-		test_domain_name "$GIT_DOMAIN_NAME"
1907
-
1908
-		if [[ "$test_domain_name" == "$WIKI_DOMAIN_NAME" ]]; then
1909
-			echo $'Hubzilla domain name is the same as wiki domain name. They must be different'
1910
-			exit 83682
1911
-		fi
1912
-		if [[ "$test_domain_name" == "$OWNCLOUD_DOMAIN_NAME" ]]; then
1913
-			echo $'Hubzilla domain name is the same as Owncloud domain name. They must be different'
1914
-			exit 65192
1915
-		fi
1916
-		if [[ "$test_domain_name" == "$FULLBLOG_DOMAIN_NAME" ]]; then
1917
-			echo $'Hubzilla domain name is the same as blog domain name. They must be different'
1918
-			exit 74817
1919
-		fi
1920
-		if [[ "$test_domain_name" == "$MICROBLOG_DOMAIN_NAME" ]]; then
1921
-			echo $'Hubzilla domain name is the same as microblog domain name. They must be different'
1922
-			exit 83683
1923
-		fi
1924
-		if [[ "$test_domain_name" == "$HUBZILLA_DOMAIN_NAME" ]]; then
1925
-			echo $'Microblog domain name is the same as hubzilla domain name. They must be different'
1926
-			exit 678382
1927
-		fi
1928
-	fi
1906
+        test_domain_name "$GIT_DOMAIN_NAME"
1907
+
1908
+        if [[ "$test_domain_name" == "$WIKI_DOMAIN_NAME" ]]; then
1909
+            echo $'Hubzilla domain name is the same as wiki domain name. They must be different'
1910
+            exit 83682
1911
+        fi
1912
+        if [[ "$test_domain_name" == "$OWNCLOUD_DOMAIN_NAME" ]]; then
1913
+            echo $'Hubzilla domain name is the same as Owncloud domain name. They must be different'
1914
+            exit 65192
1915
+        fi
1916
+        if [[ "$test_domain_name" == "$FULLBLOG_DOMAIN_NAME" ]]; then
1917
+            echo $'Hubzilla domain name is the same as blog domain name. They must be different'
1918
+            exit 74817
1919
+        fi
1920
+        if [[ "$test_domain_name" == "$MICROBLOG_DOMAIN_NAME" ]]; then
1921
+            echo $'Hubzilla domain name is the same as microblog domain name. They must be different'
1922
+            exit 83683
1923
+        fi
1924
+        if [[ "$test_domain_name" == "$HUBZILLA_DOMAIN_NAME" ]]; then
1925
+            echo $'Microblog domain name is the same as hubzilla domain name. They must be different'
1926
+            exit 678382
1927
+        fi
1928
+    fi
1929 1929
 }
1930 1930
 
1931 1931
 # Checks whether certificates were generated for the given hostname
1932 1932
 function check_certificates {
1933
-	if [ ! $1 ]; then
1934
-		return
1935
-	fi
1936
-	if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
1937
-		if [ ! -f /etc/ssl/private/$1.key ]; then
1938
-			echo $"Private certificate for $CHECK_HOSTNAME was not created"
1939
-			exit 63959
1940
-		fi
1941
-		if [ ! -f /etc/ssl/certs/$1.crt ]; then
1942
-			echo $"Public certificate for $CHECK_HOSTNAME was not created"
1943
-			exit 7679
1944
-		fi
1945
-	else
1946
-		if [ ! -f /etc/letsencrypt/live/${1}/privkey.pem ]; then
1947
-			echo $"Private certificate for $CHECK_HOSTNAME was not created"
1948
-			exit 6282
1949
-		fi
1950
-		if [ ! -f /etc/letsencrypt/live/${1}/fullchain.pem ]; then
1951
-			echo $"Public certificate for $CHECK_HOSTNAME was not created"
1952
-			exit 5328
1953
-		fi
1954
-	fi
1955
-	if [ ! -f /etc/ssl/certs/$1.dhparam ]; then
1956
-		echo $"Diffie–Hellman parameters for $CHECK_HOSTNAME were not created"
1957
-		exit 5989
1958
-	fi
1933
+    if [ ! $1 ]; then
1934
+        return
1935
+    fi
1936
+    if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
1937
+        if [ ! -f /etc/ssl/private/$1.key ]; then
1938
+            echo $"Private certificate for $CHECK_HOSTNAME was not created"
1939
+            exit 63959
1940
+        fi
1941
+        if [ ! -f /etc/ssl/certs/$1.crt ]; then
1942
+            echo $"Public certificate for $CHECK_HOSTNAME was not created"
1943
+            exit 7679
1944
+        fi
1945
+    else
1946
+        if [ ! -f /etc/letsencrypt/live/${1}/privkey.pem ]; then
1947
+            echo $"Private certificate for $CHECK_HOSTNAME was not created"
1948
+            exit 6282
1949
+        fi
1950
+        if [ ! -f /etc/letsencrypt/live/${1}/fullchain.pem ]; then
1951
+            echo $"Public certificate for $CHECK_HOSTNAME was not created"
1952
+            exit 5328
1953
+        fi
1954
+    fi
1955
+    if [ ! -f /etc/ssl/certs/$1.dhparam ]; then
1956
+        echo $"Diffie–Hellman parameters for $CHECK_HOSTNAME were not created"
1957
+        exit 5989
1958
+    fi
1959 1959
 }
1960 1960
 
1961 1961
 function backup_database_local {
1962
-	# Makes local backups of databases which can then be automatically rolled
1963
-	# back if corruption is detected
1964
-	database_name=$1
1965
-
1966
-	backup_databases_script=/usr/bin/backupdatabases
1967
-	echo '' >> $backup_databases_script
1968
-	echo "# Backup the ${database_name} database" >> $backup_databases_script
1969
-	echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
1970
-	echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
1971
-	echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
1972
-	echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
1973
-	echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
1974
-	echo '    if [ -f $DAILYFILE ]; then' >> $backup_databases_script
1975
-	echo '        cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
1976
-	echo '' >> $backup_databases_script
1977
-	echo '        # try to restore yesterdays database' >> $backup_databases_script
1978
-	echo "        mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
1979
-	echo '' >> $backup_databases_script
1980
-	echo '        # Send a warning email' >> $backup_databases_script
1981
-	echo "        echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
1982
-	echo '    else' >> $backup_databases_script
1983
-	echo '        # Send a warning email' >> $backup_databases_script
1984
-	echo "        echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
1985
-	echo '    fi' >> $backup_databases_script
1986
-	echo 'else' >> $backup_databases_script
1987
-	echo '    chmod 600 $TEMPFILE' >> $backup_databases_script
1988
-	echo '    mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
1989
-	echo '' >> $backup_databases_script
1990
-	echo '    # Make the backup readable only by root' >> $backup_databases_script
1991
-	echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
1962
+    # Makes local backups of databases which can then be automatically rolled
1963
+    # back if corruption is detected
1964
+    database_name=$1
1965
+
1966
+    backup_databases_script=/usr/bin/backupdatabases
1967
+    echo '' >> $backup_databases_script
1968
+    echo "# Backup the ${database_name} database" >> $backup_databases_script
1969
+    echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
1970
+    echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
1971
+    echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
1972
+    echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
1973
+    echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
1974
+    echo '    if [ -f $DAILYFILE ]; then' >> $backup_databases_script
1975
+    echo '        cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
1976
+    echo '' >> $backup_databases_script
1977
+    echo '        # try to restore yesterdays database' >> $backup_databases_script
1978
+    echo "        mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
1979
+    echo '' >> $backup_databases_script
1980
+    echo '        # Send a warning email' >> $backup_databases_script
1981
+    echo "        echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
1982
+    echo '    else' >> $backup_databases_script
1983
+    echo '        # Send a warning email' >> $backup_databases_script
1984
+    echo "        echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
1985
+    echo '    fi' >> $backup_databases_script
1986
+    echo 'else' >> $backup_databases_script
1987
+    echo '    chmod 600 $TEMPFILE' >> $backup_databases_script
1988
+    echo '    mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
1989
+    echo '' >> $backup_databases_script
1990
+    echo '    # Make the backup readable only by root' >> $backup_databases_script
1991
+    echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
1992 1992
     echo 'fi' >> $backup_databases_script
1993 1993
 
1994 1994
     weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
@@ -9622,157 +9622,157 @@ function install_mediagoblin {
9622 9622
         sed -i "s/Mediagoblin commit.*/Mediagoblin commit:$MEDIAGOBLIN_COMMIT/g" $COMPLETION_FILE
9623 9623
     fi
9624 9624
 
9625
-	./bootstrap.sh
9626
-	if [ ! "$?" = "0" ]; then
9627
-		exit 278826
9628
-	fi
9629
-
9630
-	./configure --with-python3 --without-virtualenv
9631
-	if [ ! "$?" = "0" ]; then
9632
-		exit 462826
9633
-	fi
9634
-
9635
-	make
9636
-	if [ ! "$?" = "0" ]; then
9637
-		exit 738229
9638
-	fi
9639
-
9640
-	if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev ]; then
9641
-		mkdir $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
9642
-	fi
9643
-	chmod 750 $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
9644
-	easy_install flup
9645
-	if [ ! "$?" = "0" ]; then
9646
-		exit 83527
9647
-	fi
9648
-	if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin.ini ]; then
9649
-		echo $'mediagoblin.ini not found'
9650
-		exit 737529
9651
-	fi
9652
-	if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/paste.ini ]; then
9653
-		echo $'paste.ini not found'
9654
-		exit 52762
9655
-	fi
9656
-
9657
-	cp -av mediagoblin.ini mediagoblin_local.ini
9658
-	cp -av paste.ini paste_local.ini
9659
-
9660
-	# TODO configure ini files
9661
-
9662
-	chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
9663
-
9664
-	# init with systemd
9665
-	echo '[Unit]' > /etc/systemd/system/mediagoblin.service
9666
-	echo 'Description=Mediagoblin (Media Server)' >> /etc/systemd/system/mediagoblin.service
9667
-	echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin.service
9668
-	echo 'After=network.target' >> /etc/systemd/system/mediagoblin.service
9669
-	#echo 'After=postgresql.service' >> /etc/systemd/system/mediagoblin.service
9670
-	echo '' >> /etc/systemd/system/mediagoblin.service
9671
-	echo '[Service]' >> /etc/systemd/system/mediagoblin.service
9672
-	echo 'Type=simple' >> /etc/systemd/system/mediagoblin.service
9673
-	echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin.service
9674
-	echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin.service
9675
-	echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin.service
9676
-	echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/lazyserver.sh  --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543" >> /etc/systemd/system/mediagoblin.service
9677
-	echo 'Restart=always' >> /etc/systemd/system/mediagoblin.service
9678
-	echo 'Environment="USER=mediagoblin","HOME=/var/lib/mediagoblin"' >> /etc/systemd/system/mediagoblin.service
9679
-	echo '' >> /etc/systemd/system/mediagoblin.service
9680
-	echo '[Install]' >> /etc/systemd/system/mediagoblin.service
9681
-	echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin.service
9682
-	systemctl daemon-reload
9683
-	systemctl enable mediagoblin
9684
-	systemctl start mediagoblin
9625
+    ./bootstrap.sh
9626
+    if [ ! "$?" = "0" ]; then
9627
+        exit 278826
9628
+    fi
9629
+
9630
+    ./configure --with-python3 --without-virtualenv
9631
+    if [ ! "$?" = "0" ]; then
9632
+        exit 462826
9633
+    fi
9634
+
9635
+    make
9636
+    if [ ! "$?" = "0" ]; then
9637
+        exit 738229
9638
+    fi
9639
+
9640
+    if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev ]; then
9641
+        mkdir $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
9642
+    fi
9643
+    chmod 750 $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
9644
+    easy_install flup
9645
+    if [ ! "$?" = "0" ]; then
9646
+        exit 83527
9647
+    fi
9648
+    if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin.ini ]; then
9649
+        echo $'mediagoblin.ini not found'
9650
+        exit 737529
9651
+    fi
9652
+    if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/paste.ini ]; then
9653
+        echo $'paste.ini not found'
9654
+        exit 52762
9655
+    fi
9656
+
9657
+    cp -av mediagoblin.ini mediagoblin_local.ini
9658
+    cp -av paste.ini paste_local.ini
9659
+
9660
+    # TODO configure ini files
9661
+
9662
+    chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
9663
+
9664
+    # init with systemd
9665
+    echo '[Unit]' > /etc/systemd/system/mediagoblin.service
9666
+    echo 'Description=Mediagoblin (Media Server)' >> /etc/systemd/system/mediagoblin.service
9667
+    echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin.service
9668
+    echo 'After=network.target' >> /etc/systemd/system/mediagoblin.service
9669
+    #echo 'After=postgresql.service' >> /etc/systemd/system/mediagoblin.service
9670
+    echo '' >> /etc/systemd/system/mediagoblin.service
9671
+    echo '[Service]' >> /etc/systemd/system/mediagoblin.service
9672
+    echo 'Type=simple' >> /etc/systemd/system/mediagoblin.service
9673
+    echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin.service
9674
+    echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin.service
9675
+    echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin.service
9676
+    echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/lazyserver.sh  --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543" >> /etc/systemd/system/mediagoblin.service
9677
+    echo 'Restart=always' >> /etc/systemd/system/mediagoblin.service
9678
+    echo 'Environment="USER=mediagoblin","HOME=/var/lib/mediagoblin"' >> /etc/systemd/system/mediagoblin.service
9679
+    echo '' >> /etc/systemd/system/mediagoblin.service
9680
+    echo '[Install]' >> /etc/systemd/system/mediagoblin.service
9681
+    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin.service
9682
+    systemctl daemon-reload
9683
+    systemctl enable mediagoblin
9684
+    systemctl start mediagoblin
9685 9685
 
9686 9686
     MEDIAGOBLIN_ONION_HOSTNAME=$(add_onion_service mediagoblin 80 ${MEDIAGOBLIN_ONION_PORT})
9687
-	if ! grep -q "Mediagoblin onion domain" $COMPLETION_FILE; then
9688
-		echo "Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}" >> $COMPLETION_FILE
9689
-	else
9690
-		sed -i "s|Mediagoblin onion domain.*|Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}|g" $COMPLETION_FILE
9691
-	fi
9692
-	
9693
-	# web config
9694
-	MEDIAGOBLIN_VIRTUAL_HOST=/etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
9695
-	nginx_http_redirect $MEDIAGOBLIN_DOMAIN_NAME
9696
-	echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9697
-	echo '  listen 443 ssl;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9698
-	echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9699
-	echo '  # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9700
-	echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9701
-	echo '  include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9702
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9703
-	echo '  autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9704
-	echo '  default_type  application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9705
-	echo '  sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9706
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9707
-	nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
9708
-	nginx_ssl $MEDIAGOBLIN_DOMAIN_NAME
9709
-	nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
9710
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9711
-	echo '  # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
9712
-	echo '  gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9713
-	echo '  gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9714
-	echo '  gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9715
-	echo '  gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9716
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9717
-	echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9718
-	echo '  # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
9719
-	echo '  # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
9720
-	echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9721
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9722
-	echo "  server_name $MEDIAGOBLIN_DOMAIN_NAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9723
-	echo '  access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9724
-	echo '  error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9725
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9726
-	echo '  # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
9727
-	echo '  location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9728
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9729
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9730
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9731
-	echo '  # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
9732
-	echo '  location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9733
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9734
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9735
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9736
-	echo '  # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9737
-	echo '  location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9738
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9739
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9740
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9741
-	echo '  # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9742
-	echo '  location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9743
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9744
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9745
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9746
-	echo '  # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
9747
-	echo '  location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9748
-	echo '    fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9749
-	echo '    include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9750
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9751
-	echo '    # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
9752
-	echo '      # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9753
-	echo '    fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9754
-	echo '    fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
9755
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9756
-	echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
9757
-
9758
-	if [ ! -f /etc/ssl/certs/$MEDIAGOBLIN_DOMAIN_NAME.dhparam ]; then
9759
-		if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
9760
-			${PROJECT_NAME}-addcert -h $MEDIAGOBLIN_DOMAIN_NAME --dhkey $DH_KEYLENGTH
9761
-		else
9762
-			${PROJECT_NAME}-addcert -e $MEDIAGOBLIN_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
9763
-		fi
9764
-		check_certificates $MEDIAGOBLIN_DOMAIN_NAME
9765
-	fi
9766
-
9767
-	nginx_ensite $MEDIAGOBLIN_DOMAIN_NAME
9768
-	systemctl restart php5-fpm
9769
-	systemctl restart nginx
9770
-
9771
-	# update the dynamic DNS
9772
-	CURRENT_DDNS_DOMAIN=$MEDIAGOBLIN_DOMAIN_NAME
9773
-	add_ddns_domain
9774
-
9775
-	echo 'install_mediagoblin' >> $COMPLETION_FILE
9687
+    if ! grep -q "Mediagoblin onion domain" $COMPLETION_FILE; then
9688
+        echo "Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}" >> $COMPLETION_FILE
9689
+    else
9690
+        sed -i "s|Mediagoblin onion domain.*|Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}|g" $COMPLETION_FILE
9691
+    fi
9692
+    
9693
+    # web config
9694
+    MEDIAGOBLIN_VIRTUAL_HOST=/etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
9695
+    nginx_http_redirect $MEDIAGOBLIN_DOMAIN_NAME
9696
+    echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9697
+    echo '  listen 443 ssl;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9698
+    echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9699
+    echo '  # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9700
+    echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9701
+    echo '  include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9702
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9703
+    echo '  autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9704
+    echo '  default_type  application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9705
+    echo '  sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9706
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9707
+    nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
9708
+    nginx_ssl $MEDIAGOBLIN_DOMAIN_NAME
9709
+    nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
9710
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9711
+    echo '  # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
9712
+    echo '  gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9713
+    echo '  gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9714
+    echo '  gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9715
+    echo '  gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9716
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9717
+    echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9718
+    echo '  # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
9719
+    echo '  # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
9720
+    echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
9721
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9722
+    echo "  server_name $MEDIAGOBLIN_DOMAIN_NAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9723
+    echo '  access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9724
+    echo '  error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9725
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9726
+    echo '  # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
9727
+    echo '  location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9728
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9729
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9730
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9731
+    echo '  # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
9732
+    echo '  location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9733
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9734
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9735
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9736
+    echo '  # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9737
+    echo '  location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9738
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9739
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9740
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9741
+    echo '  # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9742
+    echo '  location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9743
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9744
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9745
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9746
+    echo '  # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
9747
+    echo '  location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9748
+    echo '    fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9749
+    echo '    include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9750
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
9751
+    echo '    # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
9752
+    echo '      # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
9753
+    echo '    fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
9754
+    echo '    fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
9755
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9756
+    echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
9757
+
9758
+    if [ ! -f /etc/ssl/certs/$MEDIAGOBLIN_DOMAIN_NAME.dhparam ]; then
9759
+        if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
9760
+            ${PROJECT_NAME}-addcert -h $MEDIAGOBLIN_DOMAIN_NAME --dhkey $DH_KEYLENGTH
9761
+        else
9762
+            ${PROJECT_NAME}-addcert -e $MEDIAGOBLIN_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
9763
+        fi
9764
+        check_certificates $MEDIAGOBLIN_DOMAIN_NAME
9765
+    fi
9766
+
9767
+    nginx_ensite $MEDIAGOBLIN_DOMAIN_NAME
9768
+    systemctl restart php5-fpm
9769
+    systemctl restart nginx
9770
+
9771
+    # update the dynamic DNS
9772
+    CURRENT_DDNS_DOMAIN=$MEDIAGOBLIN_DOMAIN_NAME
9773
+    add_ddns_domain
9774
+
9775
+    echo 'install_mediagoblin' >> $COMPLETION_FILE
9776 9776
 }
9777 9777
 
9778 9778
 function create_upgrade_script {
@@ -10759,7 +10759,7 @@ install_hubzilla
10759 10759
 #install_search_engine
10760 10760
 install_dlna_server
10761 10761
 configure_firewall_for_dlna
10762
-#install_mediagoblin
10762
+install_mediagoblin
10763 10763
 #install_ipfs
10764 10764
 repair_databases_script
10765 10765
 backup_to_friends_servers

+ 101
- 36
src/freedombone-config View File

@@ -91,6 +91,8 @@ FULLBLOG_DOMAIN_NAME=
91 91
 FULLBLOG_CODE=
92 92
 OWNCLOUD_DOMAIN_NAME=
93 93
 OWNCLOUD_CODE=
94
+MEDIAGOBLIN_DOMAIN_NAME=
95
+MEDIAGOBLIN_CODE=
94 96
 HUBZILLA_DOMAIN_NAME=
95 97
 HUBZILLA_CODE=
96 98
 MICROBLOG_DOMAIN_NAME=
@@ -561,10 +563,10 @@ function set_main_repo {
561 563
     dialog --backtitle $"Freedombone Control Panel" \
562 564
            --title $"Main Repository (Mirrors)" \
563 565
            --form $"If you don't know what this means then just select Ok.\n\nIf you don't wish to use the default repositories they can be obtained from mirrored repos on another ${PROJECT_NAME} system.\n\nThe repositories are for applications which are not yet packaged for Debian." 18 65 4 \
564
-              $"URL:" 1 1 "$FRIENDS_MIRRORS_SERVER" 1 18 40 18 \
565
-              $"SSH Port:" 2 1 "$FRIENDS_MIRRORS_SSH_PORT" 2 18 10 10000 \
566
-              $"Password:" 3 1 "$FRIENDS_MIRRORS_PASSWORD" 3 18 40 10000 \
567
-              2> $data
566
+           $"URL:" 1 1 "$FRIENDS_MIRRORS_SERVER" 1 18 40 18 \
567
+           $"SSH Port:" 2 1 "$FRIENDS_MIRRORS_SSH_PORT" 2 18 10 10000 \
568
+           $"Password:" 3 1 "$FRIENDS_MIRRORS_PASSWORD" 3 18 40 10000 \
569
+           2> $data
568 570
     sel=$?
569 571
     case $sel in
570 572
         1) return;;
@@ -1659,6 +1661,63 @@ function interactive_configuration {
1659 1661
         save_configuration_file
1660 1662
     fi
1661 1663
 
1664
+    if [[ $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
1665
+        if [[ $ONION_ONLY != "no" ]]; then
1666
+            MEDIAGOBLIN_DOMAIN_NAME='media.local'
1667
+        else
1668
+            MEDIAGOBLIN_DETAILS_COMPLETE=
1669
+            while [ ! $MEDIAGOBLIN_DETAILS_COMPLETE ]
1670
+            do
1671
+                data=$(tempfile 2>/dev/null)
1672
+                trap "rm -f $data" 0 1 2 5 15
1673
+                if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
1674
+                    dialog --backtitle $"Freedombone Configuration" \
1675
+                           --title $"Mediagoblin Configuration" \
1676
+                           --form $"\nPlease enter your Mediagoblin details, or just select Ok if you don't need a Mediagoblin site:" 11 55 2 \
1677
+                           $"Domain:" 1 1 "$(grep 'MEDIAGOBLIN_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \
1678
+                           $"Code:" 2 1 "$(grep 'MEDIAGOBLIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \
1679
+                           2> $data
1680
+                else
1681
+                    dialog --backtitle $"Freedombone Configuration" \
1682
+                           --title $"Mediagoblin Configuration" \
1683
+                           --form $"\nPlease enter your Mediagoblin details, or just select Ok if you don't need a Mediagoblin site:" 11 55 2 \
1684
+                           $"Domain:" 1 1 "$(grep 'MEDIAGOBLIN_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \
1685
+                           2> $data
1686
+                fi
1687
+                sel=$?
1688
+                case $sel in
1689
+                    1) exit 1;;
1690
+                    255) exit 1;;
1691
+                esac
1692
+                MEDIAGOBLIN_DOMAIN_NAME=$(cat $data | sed -n 1p)
1693
+                if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then
1694
+                    TEST_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME
1695
+                    validate_domain_name
1696
+                    if [[ $TEST_DOMAIN_NAME != $MEDIAGOBLIN_DOMAIN_NAME ]]; then
1697
+                        MEDIAGOBLIN_DOMAIN_NAME='invalid'
1698
+                        dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
1699
+                    else
1700
+                        if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
1701
+                            MEDIAGOBLIN_CODE=$(cat $data | sed -n 2p)
1702
+                            validate_freedns_code "$MEDIAGOBLIN_CODE"
1703
+                            if [ ! $VALID_CODE ]; then
1704
+                                MEDIAGOBLIN_DOMAIN_NAME='invalid'
1705
+                            fi
1706
+                        fi
1707
+                    fi
1708
+                fi
1709
+                if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then
1710
+                    if [[ $MEDIAGOBLIN_DOMAIN_NAME == 'invalid' ]]; then
1711
+                        MEDIAGOBLIN_DOMAIN_NAME=
1712
+                    else
1713
+                        MEDIAGOBLIN_DETAILS_COMPLETE="yes"
1714
+                    fi
1715
+                fi
1716
+            done
1717
+        fi
1718
+        save_configuration_file
1719
+    fi
1720
+
1662 1721
     if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
1663 1722
         if [[ $ONION_ONLY != "no" ]]; then
1664 1723
             HUBZILLA_DOMAIN_NAME='hubzilla.local'
@@ -1884,38 +1943,38 @@ function interactive_configuration {
1884 1943
                         dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
1885 1944
                     else
1886 1945
                         DEFAULT_DOMAIN_DETAILS_COMPLETE="yes"
1887
-                                                                                                                                                                                                    fi
1888
-                                                                                                                                                                                                fi
1889
-                                                                                                                                                                                            done
1890
-                                                                                                                                                                                        fi
1891
-                                                                                                                                                                                        save_configuration_file
1892
-
1893
-                                                                                                                                                                                        if [[ $ONION_ONLY != "no" ]]; then
1894
-                                                                                                                                                                                            EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
1895
-                                                                                                                                                                                        else
1896
-                                                                                                                                                                                            while [ ${#MY_EMAIL_ADDRESS} -lt 5 ]
1897
-                                                                                                                                                                                            do
1898
-                                                                                                                                                                                                EMAIL_ADDRESS=$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
1899
-                                                                                                                                                                                                if [ ! $EMAIL_ADDRESS ]; then
1900
-                                                                                                                                                                                                    EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
1901
-                                                                                                                                                                                                fi
1902
-                                                                                                                                                                                                if [ ${#MY_EMAIL_ADDRESS} -lt 5 ]; then
1903
-                                                                                                                                                                                                    EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
1904
-                                                                                                                                                                                                fi
1905
-
1906
-                                                                                                                                                                                                data=$(tempfile 2>/dev/null)
1907
-                                                                                                                                                                                                trap "rm -f $data" 0 1 2 5 15
1908
-                                                                                                                                                                                                dialog --backtitle $"Freedombone Configuration" \
1909
-                                                                                                                                                                                                       --inputbox $"Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data
1910
-                                                                                                                                                                                                sel=$?
1911
-                                                                                                                                                                                                case $sel in
1912
-                                                                                                                                                                                                    0) MY_EMAIL_ADDRESS=$(cat $data);;
1913
-                                                                                                                                                                                                    1) exit 1;;
1914
-                                                                                                                                                                                                    255) exit 1;;
1915
-                                                                                                                                                                                                esac
1916
-                                                                                                                                                                                            done
1917
-                                                                                                                                                                                        fi
1918
-                                                                                                                                                                                        save_configuration_file
1946
+                    fi
1947
+                fi
1948
+            done
1949
+        fi
1950
+        save_configuration_file
1951
+
1952
+        if [[ $ONION_ONLY != "no" ]]; then
1953
+            EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
1954
+        else
1955
+            while [ ${#MY_EMAIL_ADDRESS} -lt 5 ]
1956
+            do
1957
+                EMAIL_ADDRESS=$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
1958
+                if [ ! $EMAIL_ADDRESS ]; then
1959
+                    EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
1960
+                fi
1961
+                if [ ${#MY_EMAIL_ADDRESS} -lt 5 ]; then
1962
+                    EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
1963
+                fi
1964
+
1965
+                data=$(tempfile 2>/dev/null)
1966
+                trap "rm -f $data" 0 1 2 5 15
1967
+                dialog --backtitle $"Freedombone Configuration" \
1968
+                       --inputbox $"Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data
1969
+                sel=$?
1970
+                case $sel in
1971
+                    0) MY_EMAIL_ADDRESS=$(cat $data);;
1972
+                    1) exit 1;;
1973
+                    255) exit 1;;
1974
+                esac
1975
+            done
1976
+        fi
1977
+        save_configuration_file
1919 1978
     fi
1920 1979
 
1921 1980
     # delete the temporary configuration file
@@ -2049,6 +2108,12 @@ function read_configuration {
2049 2108
         if grep -q "OWNCLOUD_CODE" $CONFIGURATION_FILE; then
2050 2109
             OWNCLOUD_CODE=$(grep "OWNCLOUD_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
2051 2110
         fi
2111
+        if grep -q "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE; then
2112
+            MEDIAGOBLIN_DOMAIN_NAME=$(grep "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
2113
+        fi
2114
+        if grep -q "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE; then
2115
+            MEDIAGOBLIN_CODE=$(grep "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
2116
+        fi
2052 2117
         if grep -q "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE; then
2053 2118
             WIKI_DOMAIN_NAME=$(grep "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
2054 2119
         fi