Merge branch 'stretch' of https://github.com/bashrc/freedombone
This commit is contained in:
commit
f85c6a9b5b
|
@ -28,7 +28,13 @@ git clone https://github.com/bashrc/freedombone
|
||||||
cd freedombone
|
cd freedombone
|
||||||
git checkout stretch
|
git checkout stretch
|
||||||
make install
|
make install
|
||||||
freedombone makeconfig
|
freedombone menuconfig (or freedombone menuconfig-onion)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
The installation process will then begin. Depending upon the hardware you're installing onto and your internet connection speed it may take quite a while to install.
|
The installation process will then begin. Depending upon the hardware you're installing onto and your internet connection speed it may take quite a while to install.
|
||||||
|
|
||||||
|
Once installed you can then log in from another system with:
|
||||||
|
|
||||||
|
#+BEGIN_SRC bash
|
||||||
|
ssh yourusername@freedombone.local -p 2222
|
||||||
|
#+END_SRC
|
||||||
|
|
Binary file not shown.
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -875,6 +875,9 @@ function install_pleroma {
|
||||||
if [[ $ONION_ONLY == "no" ]]; then
|
if [[ $ONION_ONLY == "no" ]]; then
|
||||||
function_check nginx_http_redirect
|
function_check nginx_http_redirect
|
||||||
nginx_http_redirect $PLEROMA_DOMAIN_NAME "index index.html"
|
nginx_http_redirect $PLEROMA_DOMAIN_NAME "index index.html"
|
||||||
|
echo '' >> $pleroma_nginx_site
|
||||||
|
echo 'proxy_cache_path /tmp/pleroma-media-cache levels=1:2 keys_zone=pleroma_media_cache:10m max_size=100m inactive=80m use_temp_path=off;' >> $pleroma_nginx_site
|
||||||
|
echo '' >> $pleroma_nginx_site
|
||||||
echo 'server {' >> $pleroma_nginx_site
|
echo 'server {' >> $pleroma_nginx_site
|
||||||
echo ' listen 443 ssl;' >> $pleroma_nginx_site
|
echo ' listen 443 ssl;' >> $pleroma_nginx_site
|
||||||
echo ' listen [::]:443 ssl;' >> $pleroma_nginx_site
|
echo ' listen [::]:443 ssl;' >> $pleroma_nginx_site
|
||||||
|
@ -902,12 +905,23 @@ function install_pleroma {
|
||||||
echo ' location / {' >> $pleroma_nginx_site
|
echo ' location / {' >> $pleroma_nginx_site
|
||||||
function_check nginx_limits
|
function_check nginx_limits
|
||||||
nginx_limits $PLEROMA_DOMAIN_NAME '15m'
|
nginx_limits $PLEROMA_DOMAIN_NAME '15m'
|
||||||
|
echo ' proxy_http_version 1.1;' >> $pleroma_nginx_site
|
||||||
|
echo ' proxy_set_header Upgrade $http_upgrade;' >> $pleroma_nginx_site
|
||||||
|
echo ' proxy_set_header Connection "upgrade";' >> $pleroma_nginx_site
|
||||||
|
echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site
|
||||||
|
echo ' }' >> $pleroma_nginx_site
|
||||||
|
echo '' >> $pleroma_nginx_site
|
||||||
|
echo ' location /proxy {' >> $pleroma_nginx_site
|
||||||
|
nginx_limits $PLEROMA_DOMAIN_NAME '15m'
|
||||||
|
echo ' proxy_cache pleroma_media_cache;' >> $pleroma_nginx_site
|
||||||
|
echo ' proxy_cache_lock on;' >> $pleroma_nginx_site
|
||||||
echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site
|
echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site
|
||||||
echo ' }' >> $pleroma_nginx_site
|
echo ' }' >> $pleroma_nginx_site
|
||||||
echo ' # include snippets/well-known.conf;' >> $pleroma_nginx_site
|
echo ' # include snippets/well-known.conf;' >> $pleroma_nginx_site
|
||||||
echo '}' >> $pleroma_nginx_site
|
echo '}' >> $pleroma_nginx_site
|
||||||
else
|
else
|
||||||
echo -n '' > $pleroma_nginx_site
|
echo 'proxy_cache_path /tmp/pleroma-media-cache levels=1:2 keys_zone=pleroma_media_cache:10m max_size=100m inactive=80m use_temp_path=off;' >> $pleroma_nginx_site
|
||||||
|
echo '' >> $pleroma_nginx_site
|
||||||
fi
|
fi
|
||||||
echo 'server {' >> $pleroma_nginx_site
|
echo 'server {' >> $pleroma_nginx_site
|
||||||
echo " listen 127.0.0.1:$PLEROMA_ONION_PORT default_server;" >> $pleroma_nginx_site
|
echo " listen 127.0.0.1:$PLEROMA_ONION_PORT default_server;" >> $pleroma_nginx_site
|
||||||
|
@ -929,6 +943,16 @@ function install_pleroma {
|
||||||
echo ' location / {' >> $pleroma_nginx_site
|
echo ' location / {' >> $pleroma_nginx_site
|
||||||
function_check nginx_limits
|
function_check nginx_limits
|
||||||
nginx_limits $PLEROMA_DOMAIN_NAME '15m'
|
nginx_limits $PLEROMA_DOMAIN_NAME '15m'
|
||||||
|
echo ' proxy_http_version 1.1;' >> $pleroma_nginx_site
|
||||||
|
echo ' proxy_set_header Upgrade $http_upgrade;' >> $pleroma_nginx_site
|
||||||
|
echo ' proxy_set_header Connection "upgrade";' >> $pleroma_nginx_site
|
||||||
|
echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site
|
||||||
|
echo ' }' >> $pleroma_nginx_site
|
||||||
|
echo '' >> $pleroma_nginx_site
|
||||||
|
echo ' location /proxy {' >> $pleroma_nginx_site
|
||||||
|
nginx_limits $PLEROMA_DOMAIN_NAME '15m'
|
||||||
|
echo ' proxy_cache pleroma_media_cache;' >> $pleroma_nginx_site
|
||||||
|
echo ' proxy_cache_lock on;' >> $pleroma_nginx_site
|
||||||
echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site
|
echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site
|
||||||
echo ' }' >> $pleroma_nginx_site
|
echo ' }' >> $pleroma_nginx_site
|
||||||
echo ' # include snippets/well-known.conf;' >> $pleroma_nginx_site
|
echo ' # include snippets/well-known.conf;' >> $pleroma_nginx_site
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
@ -149,10 +149,11 @@ function upgrade_rss {
|
||||||
|
|
||||||
function backup_local_rss {
|
function backup_local_rss {
|
||||||
if [ -d /etc/share/tt-rss ]; then
|
if [ -d /etc/share/tt-rss ]; then
|
||||||
RSS_READER_DOMAIN_NAME=$(get_completion_param "rss reader domain")
|
|
||||||
|
|
||||||
echo $"Backing up ttrss"
|
echo $"Backing up ttrss"
|
||||||
|
|
||||||
|
function_check get_mariadb_password
|
||||||
|
get_mariadb_password
|
||||||
|
|
||||||
function_check backup_database_to_usb
|
function_check backup_database_to_usb
|
||||||
backup_database_to_usb ttrss
|
backup_database_to_usb ttrss
|
||||||
|
|
||||||
|
@ -165,10 +166,11 @@ function backup_local_rss {
|
||||||
function restore_local_rss {
|
function restore_local_rss {
|
||||||
temp_restore_dir=/root/tempttrss
|
temp_restore_dir=/root/tempttrss
|
||||||
|
|
||||||
function_check rss_create_database
|
function_check get_mariadb_password
|
||||||
rss_create_database
|
get_mariadb_password
|
||||||
|
|
||||||
restore_database ttrss ${RSS_READER_DOMAIN_NAME}
|
function_check restore_database
|
||||||
|
restore_database ttrss
|
||||||
|
|
||||||
if [ -d /etc/share/tt-rss ]; then
|
if [ -d /etc/share/tt-rss ]; then
|
||||||
if [ -d $temp_restore_dir/etc/share/tt-rss ]; then
|
if [ -d $temp_restore_dir/etc/share/tt-rss ]; then
|
||||||
|
@ -176,6 +178,9 @@ function restore_local_rss {
|
||||||
rm -rf /etc/share/tt-rss
|
rm -rf /etc/share/tt-rss
|
||||||
mv $temp_restore_dir/etc/share/tt-rss /etc/share/
|
mv $temp_restore_dir/etc/share/tt-rss /etc/share/
|
||||||
else
|
else
|
||||||
|
if [ ! -d /etc/share/tt-rss ]; then
|
||||||
|
mkdir -p /etc/share/tt-rss
|
||||||
|
fi
|
||||||
cp -r $temp_restore_dir/* /etc/share/tt-rss/
|
cp -r $temp_restore_dir/* /etc/share/tt-rss/
|
||||||
fi
|
fi
|
||||||
if [ ! "$?" = "0" ]; then
|
if [ ! "$?" = "0" ]; then
|
||||||
|
@ -216,7 +221,10 @@ function restore_local_rss {
|
||||||
function backup_remote_rss {
|
function backup_remote_rss {
|
||||||
if [ -d /etc/share/tt-rss ]; then
|
if [ -d /etc/share/tt-rss ]; then
|
||||||
function_check suspend_site
|
function_check suspend_site
|
||||||
suspend_site ${RSS_READER_DOMAIN_NAME}
|
suspend_site ttrss
|
||||||
|
|
||||||
|
function_check get_mariadb_password
|
||||||
|
get_mariadb_password
|
||||||
|
|
||||||
function_check backup_database_to_friend
|
function_check backup_database_to_friend
|
||||||
backup_database_to_friend ttrss
|
backup_database_to_friend ttrss
|
||||||
|
@ -229,7 +237,8 @@ function backup_remote_rss {
|
||||||
function_check restart_site
|
function_check restart_site
|
||||||
restart_site
|
restart_site
|
||||||
else
|
else
|
||||||
echo $"RSS reader domain specified but not found in /etc/share/ttrss}"
|
echo $"/etc/share/tt-rss directory not found}"
|
||||||
|
exit 783532
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,18 +246,20 @@ function restore_remote_rss {
|
||||||
temp_restore_dir=/root/tempttrss
|
temp_restore_dir=/root/tempttrss
|
||||||
if grep -q "rss reader domain" $COMPLETION_FILE; then
|
if grep -q "rss reader domain" $COMPLETION_FILE; then
|
||||||
echo $"Restoring ttrss"
|
echo $"Restoring ttrss"
|
||||||
|
function_check get_mariadb_password
|
||||||
|
get_mariadb_password
|
||||||
|
|
||||||
function_check restore_database_from_friend
|
function_check restore_database_from_friend
|
||||||
|
restore_database_from_friend ttrss
|
||||||
function_check rss_create_database
|
|
||||||
rss_create_database
|
|
||||||
|
|
||||||
restore_database_from_friend ttrss ${RSS_READER_DOMAIN_NAME}
|
|
||||||
|
|
||||||
if [ -d /etc/share/tt-rss ]; then
|
if [ -d /etc/share/tt-rss ]; then
|
||||||
if [ -d $temp_restore_dir/etc/share/tt-rss ]; then
|
if [ -d $temp_restore_dir/etc/share/tt-rss ]; then
|
||||||
rm -rf /etc/share/tt-rss
|
rm -rf /etc/share/tt-rss
|
||||||
mv $temp_restore_dir/etc/share/tt-rss /etc/share/
|
mv $temp_restore_dir/etc/share/tt-rss /etc/share/
|
||||||
else
|
else
|
||||||
|
if [ ! -d /etc/share/tt-rss ]; then
|
||||||
|
mkdir -p /etc/share/tt-rss
|
||||||
|
fi
|
||||||
cp -r $temp_restore_dir/* /etc/share/tt-rss/
|
cp -r $temp_restore_dir/* /etc/share/tt-rss/
|
||||||
fi
|
fi
|
||||||
if [ ! "$?" = "0" ]; then
|
if [ ! "$?" = "0" ]; then
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -1,381 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# .---. . .
|
|
||||||
# | | |
|
|
||||||
# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
|
|
||||||
# | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
|
|
||||||
# ' ' --' --' -' - -' ' ' -' -' -' ' - --'
|
|
||||||
#
|
|
||||||
# Freedom in the Cloud
|
|
||||||
#
|
|
||||||
# Smilodon ActivityPub app
|
|
||||||
#
|
|
||||||
# License
|
|
||||||
# =======
|
|
||||||
#
|
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
VARIANTS=''
|
|
||||||
|
|
||||||
IN_DEFAULT_INSTALL=0
|
|
||||||
SHOW_ON_ABOUT=1
|
|
||||||
SHOW_ICANN_ADDRESS_ON_ABOUT=0
|
|
||||||
|
|
||||||
SMILODON_REPO="https://github.com/bashrc/smilodon"
|
|
||||||
SMILODON_COMMIT='18c91b84737fbb1a106d3c495730ac3261aac335'
|
|
||||||
SMILODON_ADMIN_PASSWORD=
|
|
||||||
SMILODON_ONION_PORT=8054
|
|
||||||
SMILODON_PATH=/etc/smilodon
|
|
||||||
SMILODON_SECRET_KEY=
|
|
||||||
|
|
||||||
smilodon_variables=(SMILODON_REPO
|
|
||||||
SMILODON_ADMIN_PASSWORD
|
|
||||||
USB_MOUNT
|
|
||||||
SMILODON_SECRET_KEY
|
|
||||||
MY_EMAIL_ADDRESS
|
|
||||||
MY_USERNAME)
|
|
||||||
|
|
||||||
function logging_on_smilodon {
|
|
||||||
echo -n ''
|
|
||||||
}
|
|
||||||
|
|
||||||
function logging_off_smilodon {
|
|
||||||
echo -n ''
|
|
||||||
}
|
|
||||||
|
|
||||||
function remove_user_smilodon {
|
|
||||||
remove_username="$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_user_smilodon {
|
|
||||||
new_username="$1"
|
|
||||||
new_user_password="$2"
|
|
||||||
echo '0'
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_interactive_smilodon {
|
|
||||||
echo -n ''
|
|
||||||
APP_INSTALLED=1
|
|
||||||
}
|
|
||||||
|
|
||||||
function change_password_smilodon {
|
|
||||||
curr_username="$1"
|
|
||||||
new_user_password="$2"
|
|
||||||
|
|
||||||
#${PROJECT_NAME}-pass -u "$curr_username" -a smilodon -p "$new_user_password"
|
|
||||||
}
|
|
||||||
|
|
||||||
function smilodon_create_database {
|
|
||||||
if [ ! $SMILODON_ADMIN_PASSWORD ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
function_check create_database_mongodb
|
|
||||||
create_database_mongodb smilodon "$SMILODON_ADMIN_PASSWORD" smilodon
|
|
||||||
}
|
|
||||||
|
|
||||||
function reconfigure_smilodon {
|
|
||||||
echo -n ''
|
|
||||||
}
|
|
||||||
|
|
||||||
function upgrade_smilodon {
|
|
||||||
CURR_SMILODON_COMMIT=$(get_completion_param "smilodon commit")
|
|
||||||
if [[ "$CURR_SMILODON_COMMIT" == "$SMILODON_COMMIT" ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $(app_is_installed smilodon) == "1" ]]; then
|
|
||||||
systemctl stop smilodon
|
|
||||||
function_check set_repo_commit
|
|
||||||
set_repo_commit $SMILODON_PATH "smilodon commit" "$SMILODON_COMMIT" $SMILODON_REPO
|
|
||||||
chown -R smilodon:smilodon $SMILODON_PATH
|
|
||||||
systemctl start smilodon
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function backup_local_smilodon {
|
|
||||||
if [ ! -d $SMILODON_PATH ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl stop smilodon
|
|
||||||
|
|
||||||
USE_MONGODB=1
|
|
||||||
function_check backup_database_to_usb
|
|
||||||
backup_database_to_usb smilodon
|
|
||||||
|
|
||||||
backup_directory_to_usb $SMILODON_PATH smilodon
|
|
||||||
|
|
||||||
systemctl start smilodon
|
|
||||||
}
|
|
||||||
|
|
||||||
function restore_local_smilodon {
|
|
||||||
temp_restore_dir=/root/tempsmilodon
|
|
||||||
|
|
||||||
systemctl stop smilodon
|
|
||||||
|
|
||||||
function_check smilodon_create_database
|
|
||||||
smilodon_create_database
|
|
||||||
|
|
||||||
USE_MONGODB=1
|
|
||||||
restore_database smilodon
|
|
||||||
|
|
||||||
if [ -d ${SMILODON_PATH} ]; then
|
|
||||||
if [ -d $temp_restore_dir${SMILODON_PATH} ]; then
|
|
||||||
if [ -d $temp_restore_dir${SMILODON_PATH} ]; then
|
|
||||||
rm -rf ${SMILODON_PATH}
|
|
||||||
mv $temp_restore_dir$SMILODON_PATH ${SMILODON_PATH}/
|
|
||||||
else
|
|
||||||
cp -r $temp_restore_dir/* ${SMILODON_PATH}/
|
|
||||||
fi
|
|
||||||
if [ ! "$?" = "0" ]; then
|
|
||||||
function_check backup_unmount_drive
|
|
||||||
backup_unmount_drive
|
|
||||||
systemctl start smilodon
|
|
||||||
exit 528823
|
|
||||||
fi
|
|
||||||
chown -R smilodon:smilodon ${SMILODON_PATH}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d $USB_MOUNT/backup/smilodon ]; then
|
|
||||||
chown -R smilodon:smilodon ${SMILODON_PATH}
|
|
||||||
if [ -d $temp_restore_dir ]; then
|
|
||||||
rm -rf $temp_restore_dir
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl start smilodon
|
|
||||||
}
|
|
||||||
|
|
||||||
function backup_remote_smilodon {
|
|
||||||
if [ -d $SMILODON_PATH ]; then
|
|
||||||
function_check suspend_site
|
|
||||||
suspend_site smilodon
|
|
||||||
|
|
||||||
systemctl stop smilodon
|
|
||||||
|
|
||||||
USE_MONGODB=1
|
|
||||||
function_check backup_database_to_friend
|
|
||||||
backup_database_to_friend smilodon
|
|
||||||
|
|
||||||
function_check backup_directory_to_friend
|
|
||||||
backup_directory_to_friend $SMILODON_PATH smilodon
|
|
||||||
|
|
||||||
systemctl start smilodon
|
|
||||||
|
|
||||||
function_check restart_site
|
|
||||||
restart_site
|
|
||||||
else
|
|
||||||
echo $"Smilodon domain specified but not found in $SMILODON_PATH"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function restore_remote_smilodon {
|
|
||||||
temp_restore_dir=/root/tempsmilodon
|
|
||||||
if grep -q "smilodon domain" $COMPLETION_FILE; then
|
|
||||||
echo $"Restoring smilodon"
|
|
||||||
systemctl stop smilodon
|
|
||||||
|
|
||||||
function_check restore_database_from_friend
|
|
||||||
|
|
||||||
function_check smilodon_create_database
|
|
||||||
smilodon_create_database
|
|
||||||
|
|
||||||
USE_MONGODB=1
|
|
||||||
restore_database_from_friend smilodon
|
|
||||||
|
|
||||||
if [ -d $SMILODON_PATH ]; then
|
|
||||||
if [ -d $temp_restore_dir$SMILODON_PATH ]; then
|
|
||||||
rm -rf $SMILODON_PATH
|
|
||||||
mv $temp_restore_dir$SMILODON_PATH ${SMILODON_PATH}/
|
|
||||||
else
|
|
||||||
cp -r $temp_restore_dir/* ${SMILODON_PATH}/
|
|
||||||
fi
|
|
||||||
if [ ! "$?" = "0" ]; then
|
|
||||||
systemctl start smilodon
|
|
||||||
exit 6391643
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d $SERVER_DIRECTORY/backup/smilodon ]; then
|
|
||||||
chown -R smilodon:smilodon ${SMILODON_PATH}
|
|
||||||
fi
|
|
||||||
if [ -d /root/tempsmilodon ]; then
|
|
||||||
rm -rf /root/tempsmilodon
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl start smilodon
|
|
||||||
|
|
||||||
echo $"Restore of smilodon complete"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function remove_smilodon {
|
|
||||||
nginx_dissite smilodon
|
|
||||||
|
|
||||||
systemctl stop smilodon
|
|
||||||
systemctl disable smilodon
|
|
||||||
rm /etc/systemd/system/smilodon.service
|
|
||||||
|
|
||||||
function_check remove_onion_service
|
|
||||||
remove_onion_service smilodon ${SMILODON_ONION_PORT}
|
|
||||||
if [ -f /etc/nginx/sites-available/smilodon ]; then
|
|
||||||
rm /etc/nginx/sites-available/smilodon
|
|
||||||
fi
|
|
||||||
|
|
||||||
groupdel -f smilodon
|
|
||||||
userdel -r smilodon
|
|
||||||
|
|
||||||
if [ -d $SMILODON_PATH ]; then
|
|
||||||
rm -rf $SMILODON_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
function_check remove_mongodb_user
|
|
||||||
remove_mongodb_user smilodon
|
|
||||||
|
|
||||||
function_check drop_database_mongodb
|
|
||||||
drop_database_mongodb smilodon
|
|
||||||
|
|
||||||
function_check remove_mongodb
|
|
||||||
remove_mongodb smilodon
|
|
||||||
|
|
||||||
remove_completion_param install_smilodon
|
|
||||||
sed -i '/smilodon/d' $COMPLETION_FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_smilodon {
|
|
||||||
apt-get -yq install python3-pip
|
|
||||||
|
|
||||||
if [ -d $SMILODON_PATH ]; then
|
|
||||||
rm -rf $SMILODON_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d /repos/smilodon ]; then
|
|
||||||
mkdir $SMILODON_PATH
|
|
||||||
cp -r -p /repos/smilodon/. $SMILODON_PATH
|
|
||||||
cd $SMILODON_PATH
|
|
||||||
git pull
|
|
||||||
else
|
|
||||||
function_check git_clone
|
|
||||||
git_clone $SMILODON_REPO $SMILODON_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d $SMILODON_PATH ]; then
|
|
||||||
echo $'Could not clone smilodon repo'
|
|
||||||
exit 6784783
|
|
||||||
fi
|
|
||||||
cd $SMILODON_PATH
|
|
||||||
git checkout $SMILODON_COMMIT -b $SMILODON_COMMIT
|
|
||||||
set_completion_param "smilodon commit" "$SMILODON_COMMIT"
|
|
||||||
|
|
||||||
sed -i 's|https:|http:|g' $SMILODON_PATH/api/utilities.py
|
|
||||||
|
|
||||||
groupadd smilodon
|
|
||||||
useradd -c "Smilodon system account" -d $SMILODON_PATH -m -r -g smilodon smilodon
|
|
||||||
|
|
||||||
SMILODON_ONION_HOSTNAME=$(add_onion_service smilodon 80 ${SMILODON_ONION_PORT})
|
|
||||||
|
|
||||||
if [ ! $SMILODON_SECRET_KEY ]; then
|
|
||||||
SMILODON_SECRET_KEY="$(create_password 30)$(create_password 30)$(create_password 30)$(create_password 30)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f $IMAGE_PASSWORD_FILE ]; then
|
|
||||||
SMILODON_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
|
|
||||||
else
|
|
||||||
if [ ! $SMILODON_ADMIN_PASSWORD ]; then
|
|
||||||
SMILODON_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
export smilodon_domain_name=$SMILODON_ONION_HOSTNAME
|
|
||||||
export secret_key="$SMILODON_SECRET_KEY"
|
|
||||||
export mongodb_username='smilodon'
|
|
||||||
export mongodb_password="$SMILODON_ADMIN_PASSWORD"
|
|
||||||
export smilodon_admin_address=$MY_EMAIL_ADDRESS
|
|
||||||
export MAIL_SERVER='localhost'
|
|
||||||
export MAIL_PORT=25
|
|
||||||
|
|
||||||
function_check install_mongodb
|
|
||||||
install_mongodb smilodon
|
|
||||||
|
|
||||||
smilodon_create_database
|
|
||||||
|
|
||||||
pip3 install -r requirements.txt
|
|
||||||
if [ ! "$?" = "0" ]; then
|
|
||||||
echo $'Unable to install smilodon dependencies'
|
|
||||||
exit 87352835
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'server {' > /etc/nginx/sites-available/smilodon
|
|
||||||
echo " listen 127.0.0.1:${SMILODON_ONION_PORT} default_server;" >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo " server_name $SMILODON_ONION_HOSTNAME;" >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo '' >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo ' access_log /dev/null;' >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo ' error_log /dev/null;' >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo '' >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo ' location / {' >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo ' proxy_pass http://localhost:5000;' >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo ' }' >> /etc/nginx/sites-available/smilodon
|
|
||||||
echo '}' >> /etc/nginx/sites-available/smilodon
|
|
||||||
|
|
||||||
nginx_ensite smilodon
|
|
||||||
systemctl enable mongodb
|
|
||||||
systemctl restart mongodb
|
|
||||||
|
|
||||||
chown -R smilodon:smilodon ${SMILODON_PATH}
|
|
||||||
|
|
||||||
echo '#!/bin/bash' > ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "cd ${SMILODON_PATH}" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export smilodon_domain_name=$SMILODON_ONION_HOSTNAME" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export secret_key='$SMILODON_SECRET_KEY'" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export mongodb_username='smilodon'" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export mongodb_password='$SMILODON_ADMIN_PASSWORD'" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export smilodon_admin_address=$MY_EMAIL_ADDRESS" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export MAIL_SERVER='localhost'" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export MAIL_PORT=25" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "export API_NAME=$SMILODON_ONION_HOSTNAME" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
echo "python3 run.py" >> ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
chmod +x ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
chown smilodon:smilodon ${SMILODON_PATH}/run_smilodon.sh
|
|
||||||
|
|
||||||
echo '[Unit]' > /etc/systemd/system/smilodon.service
|
|
||||||
echo 'Description=Smilodon ActivityPub messenger' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo 'After=network.target mongodb.service' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo 'After=tor.service' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo '' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo '[Service]' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo 'User=smilodon' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo 'Group=smilodon' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo "WorkingDirectory=${SMILODON_PATH}/" >> /etc/systemd/system/smilodon.service
|
|
||||||
echo "ExecStart=${SMILODON_PATH}/run_smilodon.sh" >> /etc/systemd/system/smilodon.service
|
|
||||||
echo 'Restart=on-failure' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo 'RestartSec=10' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo '' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo '[Install]' >> /etc/systemd/system/smilodon.service
|
|
||||||
echo 'WantedBy=multi-user.target' >> /etc/systemd/system/smilodon.service
|
|
||||||
systemctl enable smilodon
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl start smilodon
|
|
||||||
systemctl restart nginx
|
|
||||||
|
|
||||||
${PROJECT_NAME}-pass -u $MY_USERNAME -a smilodon -p "$SMILODON_ADMIN_PASSWORD"
|
|
||||||
|
|
||||||
APP_INSTALLED=1
|
|
||||||
}
|
|
||||||
|
|
||||||
# NOTE: deliberately no exit 0
|
|
|
@ -15,7 +15,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -10,10 +10,14 @@
|
||||||
#
|
#
|
||||||
# XMPP functions
|
# XMPP functions
|
||||||
#
|
#
|
||||||
|
# The two directories for prosody modules seem necessary.
|
||||||
|
# Trying to remove /usr/lib/prosody/modules causes problems, and that's
|
||||||
|
# part of the package install.
|
||||||
|
#
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -36,7 +36,6 @@ CURR_GROUP=$USER
|
||||||
if [ -f /usr/bin/pacman ]; then
|
if [ -f /usr/bin/pacman ]; then
|
||||||
CURR_GROUP='users'
|
CURR_GROUP='users'
|
||||||
fi
|
fi
|
||||||
MESH_CLIENT_INSTALL=
|
|
||||||
ENABLE_MONKEYSPHERE=
|
ENABLE_MONKEYSPHERE=
|
||||||
|
|
||||||
# setup for a specific app
|
# setup for a specific app
|
||||||
|
@ -211,7 +210,7 @@ function configure_monkeysphere {
|
||||||
|
|
||||||
function show_help {
|
function show_help {
|
||||||
echo ''
|
echo ''
|
||||||
echo $"${PROJECT_NAME}-client --mesh [yes|no] --monkeysphere [yes|no]"
|
echo $"${PROJECT_NAME}-client --monkeysphere [yes|no]"
|
||||||
echo ''
|
echo ''
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
@ -319,10 +318,6 @@ do
|
||||||
verify_ssh_server_key
|
verify_ssh_server_key
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
-m|--mesh)
|
|
||||||
shift
|
|
||||||
MESH_CLIENT_INSTALL=${1}
|
|
||||||
;;
|
|
||||||
--monkeysphere|--ms|--monkey)
|
--monkeysphere|--ms|--monkey)
|
||||||
shift
|
shift
|
||||||
ENABLE_MONKEYSPHERE=${1}
|
ENABLE_MONKEYSPHERE=${1}
|
||||||
|
@ -342,12 +337,5 @@ configure_ssh_client
|
||||||
global_rate_limit
|
global_rate_limit
|
||||||
configure_monkeysphere
|
configure_monkeysphere
|
||||||
remove_known_hosts_entries
|
remove_known_hosts_entries
|
||||||
if [[ $MESH_CLIENT_INSTALL == $'yes' || $MESH_CLIENT_INSTALL == $'y' || $MESH_CLIENT_INSTALL == $'on' ]]; then
|
|
||||||
echo $'Installing mesh packages'
|
|
||||||
sudo ${PROJECT_NAME}-mesh-install -f tox_node
|
|
||||||
sudo ${PROJECT_NAME}-mesh-install -f toxic
|
|
||||||
${PROJECT_NAME}-mesh-install -f qtox
|
|
||||||
sudo ${PROJECT_NAME}-mesh-install -f zeronet
|
|
||||||
fi
|
|
||||||
echo $'Configuration complete'
|
echo $'Configuration complete'
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2015-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2015-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
@ -166,6 +166,7 @@ function any_key_verify {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_app_icann_address {
|
function get_app_icann_address {
|
||||||
|
@ -304,7 +305,7 @@ function view_or_change_passwords {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_for_updates {
|
function check_for_updates {
|
||||||
|
@ -330,19 +331,23 @@ function add_user {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
new_user_username=$(cat $data | sed -n 1p)
|
new_user_username=$(cat $data | sed -n 1p)
|
||||||
new_user_ssh_public_key=$(cat $data | sed -n 2p)
|
new_user_ssh_public_key=$(cat $data | sed -n 2p)
|
||||||
if [ ${#new_user_username} -lt 2 ]; then
|
if [ ${#new_user_username} -lt 2 ]; then
|
||||||
dialog --title $"New username" \
|
dialog --title $"New username" \
|
||||||
--msgbox $"No username was given" 6 40
|
--msgbox $"No username was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ "$new_user_username" == *" "* ]]; then
|
if [[ "$new_user_username" == *" "* ]]; then
|
||||||
dialog --title $"Invalid username" \
|
dialog --title $"Invalid username" \
|
||||||
--msgbox $"The username should not contain any spaces" 6 40
|
--msgbox $"The username should not contain any spaces" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#new_user_ssh_public_key} -lt 20 ]; then
|
if [ ${#new_user_ssh_public_key} -lt 20 ]; then
|
||||||
|
@ -359,6 +364,7 @@ function add_user {
|
||||||
--msgbox $"This does not look like an ssh public key" 6 40
|
--msgbox $"This does not look like an ssh public key" 6 40
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function pad_string {
|
function pad_string {
|
||||||
|
@ -742,6 +748,7 @@ function change_ssh_public_key {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove_user_from_mailing_list {
|
function remove_user_from_mailing_list {
|
||||||
|
@ -848,8 +855,10 @@ function add_to_mailing_list {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
LIST_NAME=$(cat $data | sed -n 1p)
|
LIST_NAME=$(cat $data | sed -n 1p)
|
||||||
LIST_SUBJECT=$(cat $data | sed -n 2p)
|
LIST_SUBJECT=$(cat $data | sed -n 2p)
|
||||||
|
@ -867,12 +876,14 @@ function add_to_mailing_list {
|
||||||
if [ ${#LIST_NAME} -lt 2 ]; then
|
if [ ${#LIST_NAME} -lt 2 ]; then
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"No mailing list name was given" 6 40
|
--msgbox $"No mailing list name was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#LIST_SUBJECT} -lt 2 ]; then
|
if [ ${#LIST_SUBJECT} -lt 2 ]; then
|
||||||
if [ ${#LIST_EMAIL} -lt 2 ]; then
|
if [ ${#LIST_EMAIL} -lt 2 ]; then
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"No mailing list subject or address was given" 6 40
|
--msgbox $"No mailing list subject or address was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -883,6 +894,7 @@ function add_to_mailing_list {
|
||||||
if [[ "$LIST_EMAIL" != *"@"* || "$LIST_EMAIL" != *"."* ]]; then
|
if [[ "$LIST_EMAIL" != *"@"* || "$LIST_EMAIL" != *"."* ]]; then
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"Unrecognised email address" 6 40
|
--msgbox $"Unrecognised email address" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
${PROJECT_NAME}-addlist -u $SELECTED_USERNAME -l "$LIST_NAME" \
|
${PROJECT_NAME}-addlist -u $SELECTED_USERNAME -l "$LIST_NAME" \
|
||||||
|
@ -892,6 +904,7 @@ function add_to_mailing_list {
|
||||||
|
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"$LIST_NAME list was added" 6 40
|
--msgbox $"$LIST_NAME list was added" 6 40
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function email_rule {
|
function email_rule {
|
||||||
|
@ -910,8 +923,10 @@ function email_rule {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
RULE_EMAIL=$(cat $data | sed -n 1p)
|
RULE_EMAIL=$(cat $data | sed -n 1p)
|
||||||
RULE_FOLDER=$(cat $data | sed -n 2p)
|
RULE_FOLDER=$(cat $data | sed -n 2p)
|
||||||
|
@ -928,16 +943,19 @@ function email_rule {
|
||||||
if [ ${#RULE_EMAIL} -lt 2 ]; then
|
if [ ${#RULE_EMAIL} -lt 2 ]; then
|
||||||
dialog --title $"Add email rule" \
|
dialog --title $"Add email rule" \
|
||||||
--msgbox $"No email address was given" 6 40
|
--msgbox $"No email address was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#RULE_FOLDER} -lt 2 ]; then
|
if [ ${#RULE_FOLDER} -lt 2 ]; then
|
||||||
dialog --title $"Add email rule" \
|
dialog --title $"Add email rule" \
|
||||||
--msgbox $"No folder name was given" 6 40
|
--msgbox $"No folder name was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ "$RULE_EMAIL" != *"@"* || "$RULE_EMAIL" != *"."* ]]; then
|
if [[ "$RULE_EMAIL" != *"@"* || "$RULE_EMAIL" != *"."* ]]; then
|
||||||
dialog --title $"Add email rule" \
|
dialog --title $"Add email rule" \
|
||||||
--msgbox $"Unrecognised email address" 6 40
|
--msgbox $"Unrecognised email address" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -945,6 +963,7 @@ function email_rule {
|
||||||
-g "$RULE_FOLDER" --public $RULE_PUBLIC
|
-g "$RULE_FOLDER" --public $RULE_PUBLIC
|
||||||
dialog --title $"Add email rule" \
|
dialog --title $"Add email rule" \
|
||||||
--msgbox $"Email rule for $RULE_EMAIL was added" 6 40
|
--msgbox $"Email rule for $RULE_EMAIL was added" 6 40
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function block_unblock_email {
|
function block_unblock_email {
|
||||||
|
@ -963,19 +982,23 @@ function block_unblock_email {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
BLOCK_EMAIL=$(cat $data | sed -n 1p)
|
BLOCK_EMAIL=$(cat $data | sed -n 1p)
|
||||||
BLOCK=$(cat $data | sed -n 2p)
|
BLOCK=$(cat $data | sed -n 2p)
|
||||||
if [ ${#BLOCK_EMAIL} -lt 2 ]; then
|
if [ ${#BLOCK_EMAIL} -lt 2 ]; then
|
||||||
dialog --title $"Block/Unblock an email" \
|
dialog --title $"Block/Unblock an email" \
|
||||||
--msgbox $"No email address was given" 6 40
|
--msgbox $"No email address was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ "$BLOCK_EMAIL" != *"@"* || "$BLOCK_EMAIL" != *"."* ]]; then
|
if [[ "$BLOCK_EMAIL" != *"@"* || "$BLOCK_EMAIL" != *"."* ]]; then
|
||||||
dialog --title $"Block/Unblock an email" \
|
dialog --title $"Block/Unblock an email" \
|
||||||
--msgbox $"Unrecognised email address" 6 40
|
--msgbox $"Unrecognised email address" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
||||||
|
@ -987,6 +1010,7 @@ function block_unblock_email {
|
||||||
dialog --title $"Unblock an email" \
|
dialog --title $"Unblock an email" \
|
||||||
--msgbox "Email from $BLOCK_EMAIL to $SELECTED_USERNAME unblocked" 6 75
|
--msgbox "Email from $BLOCK_EMAIL to $SELECTED_USERNAME unblocked" 6 75
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function block_unblock_subject {
|
function block_unblock_subject {
|
||||||
|
@ -1005,14 +1029,17 @@ function block_unblock_subject {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
BLOCK_SUBJECT=$(cat $data | sed -n 1p)
|
BLOCK_SUBJECT=$(cat $data | sed -n 1p)
|
||||||
BLOCK=$(cat $data | sed -n 2p)
|
BLOCK=$(cat $data | sed -n 2p)
|
||||||
if [ ${#BLOCK_SUBJECT} -lt 2 ]; then
|
if [ ${#BLOCK_SUBJECT} -lt 2 ]; then
|
||||||
dialog --title $"Block/Unblock an email" \
|
dialog --title $"Block/Unblock an email" \
|
||||||
--msgbox $"No subject was given" 6 40
|
--msgbox $"No subject was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
||||||
|
@ -1024,6 +1051,7 @@ function block_unblock_subject {
|
||||||
dialog --title $"Unblock an email" \
|
dialog --title $"Unblock an email" \
|
||||||
--msgbox "Email with subject $BLOCK_SUBJECT to $SELECTED_USERNAME unblocked" 6 40
|
--msgbox "Email with subject $BLOCK_SUBJECT to $SELECTED_USERNAME unblocked" 6 40
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_keydrive_master {
|
function create_keydrive_master {
|
||||||
|
@ -1226,18 +1254,21 @@ function restore_data_remote {
|
||||||
friend_server_domain_name=$(<$data)
|
friend_server_domain_name=$(<$data)
|
||||||
|
|
||||||
if [ ${#friend_server_domain_name} -lt 2 ]; then
|
if [ ${#friend_server_domain_name} -lt 2 ]; then
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $friend_server_domain_name != *"."* ]]; then
|
if [[ $friend_server_domain_name != *"."* ]]; then
|
||||||
dialog --title $"Remote server domain name" \
|
dialog --title $"Remote server domain name" \
|
||||||
--msgbox $"Invalid domain name" 6 40
|
--msgbox $"Invalid domain name" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
restore_data_from_storage $friend_server_domain_name
|
restore_data_from_storage $friend_server_domain_name
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function ping_enable_disable {
|
function ping_enable_disable {
|
||||||
|
@ -1387,8 +1418,10 @@ function format_drive {
|
||||||
--yesno $"\nPlease confirm that you wish to format drive\n\n ${USB_DRIVE}\n\nAll current data on the drive will be lost, and you will be prompted to give a password used to encrypt the drive.\n\nDANGER: If you screw up here and format the wrong drive it's your own fault!" 16 60
|
--yesno $"\nPlease confirm that you wish to format drive\n\n ${USB_DRIVE}\n\nAll current data on the drive will be lost, and you will be prompted to give a password used to encrypt the drive.\n\nDANGER: If you screw up here and format the wrong drive it's your own fault!" 16 60
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
clear
|
clear
|
||||||
|
@ -1397,6 +1430,7 @@ function format_drive {
|
||||||
echo ''
|
echo ''
|
||||||
${PROJECT_NAME}-format $USB_DRIVE
|
${PROJECT_NAME}-format $USB_DRIVE
|
||||||
any_key
|
any_key
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove_backups {
|
function remove_backups {
|
||||||
|
@ -1409,13 +1443,16 @@ function remove_backups {
|
||||||
--yesno $"\nPlease confirm that you wish to remove backups from this drive\n\n ${drive}\n\nYou will not be able to recover them afterwards." 12 60
|
--yesno $"\nPlease confirm that you wish to remove backups from this drive\n\n ${drive}\n\nYou will not be able to recover them afterwards." 12 60
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
clear
|
clear
|
||||||
${PROJECT_NAME}-backup-local $USB_DRIVE remove
|
${PROJECT_NAME}-backup-local $USB_DRIVE remove
|
||||||
any_key
|
any_key
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function shut_down_system {
|
function shut_down_system {
|
||||||
|
@ -1465,6 +1502,7 @@ function change_system_name {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_dynamic_IP {
|
function set_dynamic_IP {
|
||||||
|
@ -1515,11 +1553,14 @@ Enter a static local IP address for this system.\n\nIt will typically be ${IPv4_
|
||||||
0) NEW_STATIC_IP=$(<$data)
|
0) NEW_STATIC_IP=$(<$data)
|
||||||
if [[ "$NEW_STATIC_IP" != *"."* ]]; then
|
if [[ "$NEW_STATIC_IP" != *"."* ]]; then
|
||||||
set_dynamic_IP
|
set_dynamic_IP
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
1) return;;
|
1) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
|
|
||||||
# get the gateway
|
# get the gateway
|
||||||
data=$(tempfile 2>/dev/null)
|
data=$(tempfile 2>/dev/null)
|
||||||
|
@ -1531,10 +1572,12 @@ Enter a static local IP address for this system.\n\nIt will typically be ${IPv4_
|
||||||
case $sel in
|
case $sel in
|
||||||
0) NEW_STATIC_GATEWAY=$(<$data)
|
0) NEW_STATIC_GATEWAY=$(<$data)
|
||||||
if [[ "$NEW_STATIC_GATEWAY" != *"."* ]]; then
|
if [[ "$NEW_STATIC_GATEWAY" != *"."* ]]; then
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
1) return;;
|
1) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [[ "$NEW_STATIC_GATEWAY" == *"."* && "$NEW_STATIC_IP" == *"."* ]]; then
|
if [[ "$NEW_STATIC_GATEWAY" == *"."* && "$NEW_STATIC_IP" == *"."* ]]; then
|
||||||
|
@ -1604,6 +1647,7 @@ Enter a static local IP address for this system.\n\nIt will typically be ${IPv4_
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function wifi_settings {
|
function wifi_settings {
|
||||||
|
@ -1662,8 +1706,10 @@ function hotspot_settings {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
TEMP_WIFI_HOTSPOT=$(cat $data | sed -n 1p)
|
TEMP_WIFI_HOTSPOT=$(cat $data | sed -n 1p)
|
||||||
TEMP_WIFI_SSID=$(cat $data | sed -n 2p)
|
TEMP_WIFI_SSID=$(cat $data | sed -n 2p)
|
||||||
|
@ -1671,9 +1717,11 @@ function hotspot_settings {
|
||||||
TEMP_WIFI_PASSPHRASE=$(cat $data | sed -n 4p)
|
TEMP_WIFI_PASSPHRASE=$(cat $data | sed -n 4p)
|
||||||
|
|
||||||
if [ ${#TEMP_WIFI_SSID} -lt 2 ]; then
|
if [ ${#TEMP_WIFI_SSID} -lt 2 ]; then
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#TEMP_WIFI_TYPE} -lt 2 ]; then
|
if [ ${#TEMP_WIFI_TYPE} -lt 2 ]; then
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1691,11 +1739,13 @@ function hotspot_settings {
|
||||||
if [ ! $TEMP_WIFI_PASSPHRASE ]; then
|
if [ ! $TEMP_WIFI_PASSPHRASE ]; then
|
||||||
dialog --title $"Wifi Settings" \
|
dialog --title $"Wifi Settings" \
|
||||||
--msgbox $"No wifi hotspot passphrase was given" 6 40
|
--msgbox $"No wifi hotspot passphrase was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#TEMP_WIFI_PASSPHRASE} -lt 2 ]; then
|
if [ ${#TEMP_WIFI_PASSPHRASE} -lt 2 ]; then
|
||||||
dialog --title $"Wifi Settings" \
|
dialog --title $"Wifi Settings" \
|
||||||
--msgbox $"Wifi hotspot passphrase was too short" 6 40
|
--msgbox $"Wifi hotspot passphrase was too short" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1726,6 +1776,7 @@ function hotspot_settings {
|
||||||
|
|
||||||
dialog --title $"Wifi Settings" \
|
dialog --title $"Wifi Settings" \
|
||||||
--msgbox $"Hotspot settings were changed" 6 40
|
--msgbox $"Hotspot settings were changed" 6 40
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function reinstall_mariadb {
|
function reinstall_mariadb {
|
||||||
|
@ -1792,6 +1843,7 @@ function email_extra_domains {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function email_smtp_proxy {
|
function email_smtp_proxy {
|
||||||
|
@ -1823,6 +1875,7 @@ function email_smtp_proxy {
|
||||||
SMTP_PROXY_PORT=$(cat $data | sed -n 4p)
|
SMTP_PROXY_PORT=$(cat $data | sed -n 4p)
|
||||||
SMTP_PROXY_USERNAME=$(cat $data | sed -n 5p)
|
SMTP_PROXY_USERNAME=$(cat $data | sed -n 5p)
|
||||||
SMTP_PROXY_PASSWORD=$(cat $data | sed -n 6p)
|
SMTP_PROXY_PASSWORD=$(cat $data | sed -n 6p)
|
||||||
|
rm $data
|
||||||
|
|
||||||
# change muttrc
|
# change muttrc
|
||||||
if [ $SMTP_PROXY_ENABLE != $'no' ]; then
|
if [ $SMTP_PROXY_ENABLE != $'no' ]; then
|
||||||
|
@ -1868,8 +1921,10 @@ function menu_backup_restore {
|
||||||
11 $"Back to main menu" on 2> $data
|
11 $"Back to main menu" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) break;;
|
1) rm $data
|
||||||
255) break;;
|
break;;
|
||||||
|
255) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) backup_data;;
|
1) backup_data;;
|
||||||
|
@ -1884,6 +1939,7 @@ function menu_backup_restore {
|
||||||
10) remove_backups;;
|
10) remove_backups;;
|
||||||
11) break;;
|
11) break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1905,8 +1961,10 @@ function menu_email {
|
||||||
8 $"Back to main menu" on 2> $data
|
8 $"Back to main menu" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) break;;
|
1) rm $data
|
||||||
255) break;;
|
break;;
|
||||||
|
255) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) add_to_mailing_list;;
|
1) add_to_mailing_list;;
|
||||||
|
@ -1918,6 +1976,7 @@ function menu_email {
|
||||||
7) email_extra_domains;;
|
7) email_extra_domains;;
|
||||||
8) break;;
|
8) break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1945,6 +2004,7 @@ function domain_blocking_add {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function ip_blocking_add {
|
function ip_blocking_add {
|
||||||
|
@ -1968,6 +2028,7 @@ function ip_blocking_add {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function domain_blocking_remove {
|
function domain_blocking_remove {
|
||||||
|
@ -1994,6 +2055,7 @@ function domain_blocking_remove {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function ip_blocking_remove {
|
function ip_blocking_remove {
|
||||||
|
@ -2017,6 +2079,7 @@ function ip_blocking_remove {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function domain_blocking_show {
|
function domain_blocking_show {
|
||||||
|
@ -2049,8 +2112,10 @@ function domain_blocking {
|
||||||
6 $"Back to main menu" on 2> $data
|
6 $"Back to main menu" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) break;;
|
1) rm $data
|
||||||
255) break;;
|
break;;
|
||||||
|
255) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) domain_blocking_add;;
|
1) domain_blocking_add;;
|
||||||
|
@ -2058,8 +2123,10 @@ function domain_blocking {
|
||||||
3) ip_blocking_add;;
|
3) ip_blocking_add;;
|
||||||
4) ip_blocking_remove;;
|
4) ip_blocking_remove;;
|
||||||
5) domain_blocking_show;;
|
5) domain_blocking_show;;
|
||||||
6) break;;
|
6) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2079,8 +2146,10 @@ function menu_users {
|
||||||
6 $"Back to main menu" on 2> $data
|
6 $"Back to main menu" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) break;;
|
1) rm $data
|
||||||
255) break;;
|
break;;
|
||||||
|
255) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) add_user;;
|
1) add_user;;
|
||||||
|
@ -2088,8 +2157,10 @@ function menu_users {
|
||||||
3) change_password;;
|
3) change_password;;
|
||||||
4) change_ssh_public_key;;
|
4) change_ssh_public_key;;
|
||||||
5) reset_password_tries;;
|
5) reset_password_tries;;
|
||||||
6) break;;
|
6) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2172,16 +2243,20 @@ function menu_wifi {
|
||||||
5 $"Exit" on 2> $data
|
5 $"Exit" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) break;;
|
1) rm $data
|
||||||
255) break;;
|
break;;
|
||||||
|
255) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) wifi_enable;;
|
1) wifi_enable;;
|
||||||
2) wifi_settings;;
|
2) wifi_settings;;
|
||||||
3) wifi_edit_networks;;
|
3) wifi_edit_networks;;
|
||||||
4) hotspot_settings;;
|
4) hotspot_settings;;
|
||||||
5) break;;
|
5) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2256,8 +2331,10 @@ function menu_top_level {
|
||||||
22 $"Exit" on 2> $data
|
22 $"Exit" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) exit 1;;
|
1) rm $data
|
||||||
255) exit 1;;
|
exit 1;;
|
||||||
|
255) rm $data
|
||||||
|
exit 1;;
|
||||||
esac
|
esac
|
||||||
please_wait
|
please_wait
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
|
@ -2287,8 +2364,10 @@ function menu_top_level {
|
||||||
19) check_for_updates;;
|
19) check_for_updates;;
|
||||||
20) shut_down_system;;
|
20) shut_down_system;;
|
||||||
21) restart_system;;
|
21) restart_system;;
|
||||||
22) break;;
|
22) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
@ -169,8 +169,10 @@ function add_to_mailing_list {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
LIST_NAME=$(cat $data | sed -n 1p)
|
LIST_NAME=$(cat $data | sed -n 1p)
|
||||||
LIST_SUBJECT=$(cat $data | sed -n 2p)
|
LIST_SUBJECT=$(cat $data | sed -n 2p)
|
||||||
|
@ -188,12 +190,14 @@ function add_to_mailing_list {
|
||||||
if [ ${#LIST_NAME} -lt 2 ]; then
|
if [ ${#LIST_NAME} -lt 2 ]; then
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"No mailing list name was given" 6 40
|
--msgbox $"No mailing list name was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#LIST_SUBJECT} -lt 2 ]; then
|
if [ ${#LIST_SUBJECT} -lt 2 ]; then
|
||||||
if [ ${#LIST_EMAIL} -lt 2 ]; then
|
if [ ${#LIST_EMAIL} -lt 2 ]; then
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"No mailing list subject or address was given" 6 40
|
--msgbox $"No mailing list subject or address was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -204,6 +208,7 @@ function add_to_mailing_list {
|
||||||
if [[ "$LIST_EMAIL" != *"@"* || "$LIST_EMAIL" != *"."* ]]; then
|
if [[ "$LIST_EMAIL" != *"@"* || "$LIST_EMAIL" != *"."* ]]; then
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"Unrecognised email address" 6 40
|
--msgbox $"Unrecognised email address" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
${PROJECT_NAME}-addlist -u $USER -l "$LIST_NAME" \
|
${PROJECT_NAME}-addlist -u $USER -l "$LIST_NAME" \
|
||||||
|
@ -213,6 +218,7 @@ function add_to_mailing_list {
|
||||||
|
|
||||||
dialog --title $"Add mailing list" \
|
dialog --title $"Add mailing list" \
|
||||||
--msgbox $"$LIST_NAME list was added" 6 40
|
--msgbox $"$LIST_NAME list was added" 6 40
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function email_rule_address {
|
function email_rule_address {
|
||||||
|
@ -227,8 +233,10 @@ function email_rule_address {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
RULE_EMAIL=$(cat $data | sed -n 1p)
|
RULE_EMAIL=$(cat $data | sed -n 1p)
|
||||||
RULE_FOLDER=$(cat $data | sed -n 2p)
|
RULE_FOLDER=$(cat $data | sed -n 2p)
|
||||||
|
@ -245,16 +253,19 @@ function email_rule_address {
|
||||||
if [ ${#RULE_EMAIL} -lt 2 ]; then
|
if [ ${#RULE_EMAIL} -lt 2 ]; then
|
||||||
dialog --title $"Create an email rule" \
|
dialog --title $"Create an email rule" \
|
||||||
--msgbox $"No email address was given" 6 40
|
--msgbox $"No email address was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#RULE_FOLDER} -lt 2 ]; then
|
if [ ${#RULE_FOLDER} -lt 2 ]; then
|
||||||
dialog --title $"Create an email rule" \
|
dialog --title $"Create an email rule" \
|
||||||
--msgbox $"No folder name was given" 6 40
|
--msgbox $"No folder name was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ "$RULE_EMAIL" != *"@"* || "$RULE_EMAIL" != *"."* ]]; then
|
if [[ "$RULE_EMAIL" != *"@"* || "$RULE_EMAIL" != *"."* ]]; then
|
||||||
dialog --title $"Create an email rule" \
|
dialog --title $"Create an email rule" \
|
||||||
--msgbox $"Unrecognised email address" 6 40
|
--msgbox $"Unrecognised email address" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -262,6 +273,7 @@ function email_rule_address {
|
||||||
-g "$RULE_FOLDER" --public $RULE_PUBLIC
|
-g "$RULE_FOLDER" --public $RULE_PUBLIC
|
||||||
dialog --title $"Create an email rule" \
|
dialog --title $"Create an email rule" \
|
||||||
--msgbox $"Email rule for $RULE_EMAIL was added" 6 40
|
--msgbox $"Email rule for $RULE_EMAIL was added" 6 40
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function gpg_set_trust {
|
function gpg_set_trust {
|
||||||
|
@ -281,8 +293,10 @@ function gpg_set_trust {
|
||||||
5 $"I trust ultimately" off 2> $data
|
5 $"I trust ultimately" off 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
TRUST_LEVEL=$(cat $data)
|
TRUST_LEVEL=$(cat $data)
|
||||||
if [ ${TRUST_LEVEL} -ge 1 ] ; then
|
if [ ${TRUST_LEVEL} -ge 1 ] ; then
|
||||||
|
@ -296,6 +310,7 @@ function gpg_set_trust {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,8 +326,10 @@ function email_rule_subject {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
RULE_SUBJECT=$(cat $data | sed -n 1p)
|
RULE_SUBJECT=$(cat $data | sed -n 1p)
|
||||||
RULE_FOLDER=$(cat $data | sed -n 2p)
|
RULE_FOLDER=$(cat $data | sed -n 2p)
|
||||||
|
@ -329,11 +346,13 @@ function email_rule_subject {
|
||||||
if [ ${#RULE_SUBJECT} -lt 2 ]; then
|
if [ ${#RULE_SUBJECT} -lt 2 ]; then
|
||||||
dialog --title $"Create an email rule" \
|
dialog --title $"Create an email rule" \
|
||||||
--msgbox $"No subject text was given" 6 40
|
--msgbox $"No subject text was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ${#RULE_FOLDER} -lt 2 ]; then
|
if [ ${#RULE_FOLDER} -lt 2 ]; then
|
||||||
dialog --title $"Create an email rule" \
|
dialog --title $"Create an email rule" \
|
||||||
--msgbox $"No folder name was given" 6 40
|
--msgbox $"No folder name was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -341,6 +360,7 @@ function email_rule_subject {
|
||||||
-g "$RULE_FOLDER" --public $RULE_PUBLIC
|
-g "$RULE_FOLDER" --public $RULE_PUBLIC
|
||||||
dialog --title $"Create an email rule" \
|
dialog --title $"Create an email rule" \
|
||||||
--msgbox $"Email rule for subject '$RULE_SUBJECT' was added" 6 40
|
--msgbox $"Email rule for subject '$RULE_SUBJECT' was added" 6 40
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function block_unblock_email {
|
function block_unblock_email {
|
||||||
|
@ -355,8 +375,10 @@ function block_unblock_email {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
BLOCK_EMAIL=$(cat $data | sed -n 1p)
|
BLOCK_EMAIL=$(cat $data | sed -n 1p)
|
||||||
BLOCK=$(cat $data | sed -n 2p)
|
BLOCK=$(cat $data | sed -n 2p)
|
||||||
|
@ -368,6 +390,7 @@ function block_unblock_email {
|
||||||
if [[ "$BLOCK_EMAIL" != *"@"* || "$BLOCK_EMAIL" != *"."* ]]; then
|
if [[ "$BLOCK_EMAIL" != *"@"* || "$BLOCK_EMAIL" != *"."* ]]; then
|
||||||
dialog --title "$blockstr" \
|
dialog --title "$blockstr" \
|
||||||
--msgbox $"Unrecognised email address" 6 40
|
--msgbox $"Unrecognised email address" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
||||||
|
@ -379,6 +402,7 @@ function block_unblock_email {
|
||||||
dialog --title $"Unblock an email" \
|
dialog --title $"Unblock an email" \
|
||||||
--msgbox "Email from $BLOCK_EMAIL is now unblocked" 6 75
|
--msgbox "Email from $BLOCK_EMAIL is now unblocked" 6 75
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function block_unblock_subject {
|
function block_unblock_subject {
|
||||||
|
@ -393,14 +417,17 @@ function block_unblock_subject {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
BLOCK_SUBJECT=$(cat $data | sed -n 1p)
|
BLOCK_SUBJECT=$(cat $data | sed -n 1p)
|
||||||
BLOCK=$(cat $data | sed -n 2p)
|
BLOCK=$(cat $data | sed -n 2p)
|
||||||
if [ ${#BLOCK_SUBJECT} -lt 2 ]; then
|
if [ ${#BLOCK_SUBJECT} -lt 2 ]; then
|
||||||
dialog --title "$blockstr" \
|
dialog --title "$blockstr" \
|
||||||
--msgbox $"No subject was given" 6 40
|
--msgbox $"No subject was given" 6 40
|
||||||
|
rm $data
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
if [[ $BLOCK == "y"* || $BLOCK == "Y"* ]]; then
|
||||||
|
@ -412,6 +439,7 @@ function block_unblock_subject {
|
||||||
dialog --title $"Unblock an email" \
|
dialog --title $"Unblock an email" \
|
||||||
--msgbox $"Email with subject $BLOCK_SUBJECT is now unblocked" 6 40
|
--msgbox $"Email with subject $BLOCK_SUBJECT is now unblocked" 6 40
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_gpg_key {
|
function show_gpg_key {
|
||||||
|
@ -530,6 +558,7 @@ function remove_gpg_key {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function add_ssh_key {
|
function add_ssh_key {
|
||||||
|
@ -568,6 +597,7 @@ function add_ssh_key {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove_ssh_key {
|
function remove_ssh_key {
|
||||||
|
@ -590,6 +620,7 @@ function remove_ssh_key {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function smtp_proxy {
|
function smtp_proxy {
|
||||||
|
@ -631,8 +662,10 @@ function smtp_proxy {
|
||||||
2> $data
|
2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) return;;
|
1) rm $data
|
||||||
255) return;;
|
return;;
|
||||||
|
255) rm $data
|
||||||
|
return;;
|
||||||
esac
|
esac
|
||||||
SMTP_PROXY_ENABLE=$(cat $data | sed -n 1p)
|
SMTP_PROXY_ENABLE=$(cat $data | sed -n 1p)
|
||||||
SMTP_PROXY_PROTOCOL=$(cat $data | sed -n 2p)
|
SMTP_PROXY_PROTOCOL=$(cat $data | sed -n 2p)
|
||||||
|
@ -654,6 +687,7 @@ function smtp_proxy {
|
||||||
sed -i 's|set smtp_url|#set smtp_url|g' $MUTTRC_FILE
|
sed -i 's|set smtp_url|#set smtp_url|g' $MUTTRC_FILE
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function sign_gpg_key {
|
function sign_gpg_key {
|
||||||
|
@ -682,6 +716,7 @@ function sign_gpg_key {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -702,6 +737,7 @@ function gpg_key_trust {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
}
|
}
|
||||||
|
|
||||||
function menu_encryption_keys {
|
function menu_encryption_keys {
|
||||||
|
@ -725,8 +761,10 @@ function menu_encryption_keys {
|
||||||
11 $"Back to main menu" on 2> $data
|
11 $"Back to main menu" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) break;;
|
1) rm $data
|
||||||
255) break;;
|
break;;
|
||||||
|
255) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) show_gpg_key;;
|
1) show_gpg_key;;
|
||||||
|
@ -739,8 +777,10 @@ function menu_encryption_keys {
|
||||||
8) add_ssh_key;;
|
8) add_ssh_key;;
|
||||||
9) remove_ssh_key;;
|
9) remove_ssh_key;;
|
||||||
10) gpg_key_trust;;
|
10) gpg_key_trust;;
|
||||||
11) break;;
|
11) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,8 +801,10 @@ function menu_email {
|
||||||
7 $"Back to main menu" on 2> $data
|
7 $"Back to main menu" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) break;;
|
1) rm $data
|
||||||
255) break;;
|
break;;
|
||||||
|
255) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) add_to_mailing_list;;
|
1) add_to_mailing_list;;
|
||||||
|
@ -771,8 +813,10 @@ function menu_email {
|
||||||
4) email_rule_subject;;
|
4) email_rule_subject;;
|
||||||
5) block_unblock_email;;
|
5) block_unblock_email;;
|
||||||
6) block_unblock_subject;;
|
6) block_unblock_subject;;
|
||||||
7) break;;
|
7) rm $data
|
||||||
|
break;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -857,8 +901,10 @@ function menu_top_level {
|
||||||
9 $"Log out" on 2> $data
|
9 $"Log out" on 2> $data
|
||||||
sel=$?
|
sel=$?
|
||||||
case $sel in
|
case $sel in
|
||||||
1) exit 1;;
|
1) rm $data
|
||||||
255) exit 1;;
|
exit 1;;
|
||||||
|
255) rm $data
|
||||||
|
exit 1;;
|
||||||
esac
|
esac
|
||||||
case $(cat $data) in
|
case $(cat $data) in
|
||||||
1) mutt;;
|
1) mutt;;
|
||||||
|
@ -868,9 +914,11 @@ function menu_top_level {
|
||||||
5) menu_encryption_keys;;
|
5) menu_encryption_keys;;
|
||||||
6) smtp_proxy;;
|
6) smtp_proxy;;
|
||||||
7) menu_admin;;
|
7) menu_admin;;
|
||||||
8) break;;
|
8) rm $data
|
||||||
|
break;;
|
||||||
9) kill -HUP `pgrep -s 0 -o`;;
|
9) kill -HUP `pgrep -s 0 -o`;;
|
||||||
esac
|
esac
|
||||||
|
rm $data
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -909,7 +909,7 @@ initialise_mesh() {
|
||||||
chroot "$rootdir" apt-get -yq install apt-transport-https
|
chroot "$rootdir" apt-get -yq install apt-transport-https
|
||||||
|
|
||||||
# install tor as a possible way of routing traffic between internet gateways
|
# install tor as a possible way of routing traffic between internet gateways
|
||||||
chroot "$rootdir" apt-get -yq install tor
|
chroot "$rootdir" apt-get -yq -t stretch-backports install tor
|
||||||
|
|
||||||
# dhcp daemon for hotspot on secondary wifi adapter
|
# dhcp daemon for hotspot on secondary wifi adapter
|
||||||
chroot "$rootdir" apt-get -yq install dnsmasq
|
chroot "$rootdir" apt-get -yq install dnsmasq
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2015-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2015-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2015-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
@ -97,6 +97,12 @@ if [ -d $PROJECT_DIR ]; then
|
||||||
email_install_tls
|
email_install_tls
|
||||||
email_disable_chunking
|
email_disable_chunking
|
||||||
#defrag_filesystem
|
#defrag_filesystem
|
||||||
|
|
||||||
|
# reinstall tor from backports
|
||||||
|
tor_version=$(tor --version)
|
||||||
|
if [[ "$tor_version" == *' 0.2'* ]]; then
|
||||||
|
echo 'N' | apt-get -yq -t stretch-backports install tor
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
@ -255,6 +255,7 @@ function backup_database_local_usb {
|
||||||
else
|
else
|
||||||
USE_MONGODB=
|
USE_MONGODB=
|
||||||
USE_POSTGRESQL=
|
USE_POSTGRESQL=
|
||||||
|
cd /etc/postgresql
|
||||||
sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.${database_file_extension}
|
sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.${database_file_extension}
|
||||||
fi
|
fi
|
||||||
if [ -f ${local_database_dir}/${1}.${database_file_extension} ]; then
|
if [ -f ${local_database_dir}/${1}.${database_file_extension} ]; then
|
||||||
|
@ -278,14 +279,6 @@ function backup_database_local_usb {
|
||||||
echo $"Database dump was created for ${1}"
|
echo $"Database dump was created for ${1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_obnam_client_name {
|
|
||||||
# obnam can backup multiple machines with different domain names to
|
|
||||||
# a repository. To be able to restore directories from different
|
|
||||||
# machines we need to enforce a single client name for all backups
|
|
||||||
echo '[config]' > /etc/obnam.conf
|
|
||||||
echo "client-name = ${PROJECT_NAME}" >> /etc/obnam.conf
|
|
||||||
}
|
|
||||||
|
|
||||||
function backup_directory_to_usb_duplicity {
|
function backup_directory_to_usb_duplicity {
|
||||||
create_backups_temp_directory
|
create_backups_temp_directory
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --encrypt-key $MY_BACKUP_KEY_ID --full-if-older-than 4W --exclude-other-filesystems ${1} file://$USB_MOUNT/backup/${2}
|
echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --encrypt-key $MY_BACKUP_KEY_ID --full-if-older-than 4W --exclude-other-filesystems ${1} file://$USB_MOUNT/backup/${2}
|
||||||
|
@ -319,38 +312,6 @@ function backup_directory_to_usb_duplicity {
|
||||||
remove_backups_temp_directory
|
remove_backups_temp_directory
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_directory_to_usb_obnam {
|
|
||||||
set_obnam_client_name
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
|
||||||
if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam verify -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
|
|
||||||
if [ ! "$?" = "0" ]; then
|
|
||||||
umount $USB_MOUNT
|
|
||||||
rm -rf $USB_MOUNT
|
|
||||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
|
||||||
shred -zu ${1}/*
|
|
||||||
rm -rf ${1}
|
|
||||||
fi
|
|
||||||
function_check restart_site
|
|
||||||
restart_site
|
|
||||||
exit 683252
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam forget --keep=30d -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID
|
|
||||||
if [ ! "$?" = "0" ]; then
|
|
||||||
umount $USB_MOUNT
|
|
||||||
rm -rf $USB_MOUNT
|
|
||||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
|
||||||
shred -zu ${1}/*
|
|
||||||
rm -rf ${1}
|
|
||||||
fi
|
|
||||||
function_check restart_site
|
|
||||||
restart_site
|
|
||||||
exit 7
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function backup_directory_to_usb {
|
function backup_directory_to_usb {
|
||||||
if [ ! -d ${1} ]; then
|
if [ ! -d ${1} ]; then
|
||||||
echo $"WARNING: directory does not exist: ${1}"
|
echo $"WARNING: directory does not exist: ${1}"
|
||||||
|
@ -369,7 +330,6 @@ function backup_directory_to_usb {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
backup_directory_to_usb_duplicity ${1} ${2}
|
backup_directory_to_usb_duplicity ${1} ${2}
|
||||||
#backup_directory_to_usb_obnam ${1} ${2}
|
|
||||||
|
|
||||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||||
shred -zu ${1}/*
|
shred -zu ${1}/*
|
||||||
|
@ -378,11 +338,6 @@ function backup_directory_to_usb {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore_directory_from_usb_obnam {
|
|
||||||
set_obnam_client_name
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam restore -r $USB_MOUNT/backup/${2} --to ${1}
|
|
||||||
}
|
|
||||||
|
|
||||||
function restore_directory_from_usb_duplicity {
|
function restore_directory_from_usb_duplicity {
|
||||||
create_backups_temp_directory
|
create_backups_temp_directory
|
||||||
PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --force file://$USB_MOUNT/backup/${2} ${1}
|
PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --force file://$USB_MOUNT/backup/${2} ${1}
|
||||||
|
@ -408,12 +363,6 @@ function restore_directory_from_usb {
|
||||||
mkdir ${1}
|
mkdir ${1}
|
||||||
fi
|
fi
|
||||||
restore_directory_from_usb_duplicity ${1} ${2}
|
restore_directory_from_usb_duplicity ${1} ${2}
|
||||||
#restore_directory_from_usb_obnam ${1} ${2}
|
|
||||||
}
|
|
||||||
|
|
||||||
function restore_directory_from_friend_obnam {
|
|
||||||
set_obnam_client_name
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam restore -r $SERVER_DIRECTORY/backup/${2} --to ${1}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore_directory_from_friend_duplicity {
|
function restore_directory_from_friend_duplicity {
|
||||||
|
@ -425,12 +374,10 @@ function restore_directory_from_friend_duplicity {
|
||||||
|
|
||||||
function restore_directory_from_friend {
|
function restore_directory_from_friend {
|
||||||
if [ ! ${1} ]; then
|
if [ ! ${1} ]; then
|
||||||
echo "obnam restore -r $SERVER_DIRECTORY/backup/${2} --to ${1}"
|
|
||||||
echo $'No restore destination given'
|
echo $'No restore destination given'
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ ! ${2} ]; then
|
if [ ! ${2} ]; then
|
||||||
echo "obnam restore -r $SERVER_DIRECTORY/backup/${2} --to ${1}"
|
|
||||||
echo $'No restore source given'
|
echo $'No restore source given'
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
@ -438,7 +385,6 @@ function restore_directory_from_friend {
|
||||||
mkdir ${1}
|
mkdir ${1}
|
||||||
fi
|
fi
|
||||||
restore_directory_from_friend_duplicity ${1} ${2}
|
restore_directory_from_friend_duplicity ${1} ${2}
|
||||||
#restore_directory_from_friend_obnam ${1} ${2}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_database_to_usb {
|
function backup_database_to_usb {
|
||||||
|
@ -492,38 +438,6 @@ function backup_directory_to_friend_duplicity {
|
||||||
remove_backups_temp_directory
|
remove_backups_temp_directory
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_directory_to_friend_obnam {
|
|
||||||
set_obnam_client_name
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
|
|
||||||
if [[ $ENABLE_VERIFICATION == "yes" ]]; then
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam verify -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
|
|
||||||
if [ ! "$?" = "0" ]; then
|
|
||||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
|
||||||
shred -zu /root/temp${2}/*
|
|
||||||
rm -rf /root/temp${2}
|
|
||||||
fi
|
|
||||||
# Send a warning email
|
|
||||||
echo "Unable to verify ${2}" | mail -s "${PROJECT_NAME} backup to friends" ${ADMIN_EMAIL_ADDRESS}
|
|
||||||
function_check restart_site
|
|
||||||
restart_site
|
|
||||||
exit 953
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo "$BACKUP_DUMMY_PASSWORD" | obnam forget --keep=30d -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID}
|
|
||||||
if [ ! "$?" = "0" ]; then
|
|
||||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
|
||||||
shred -zu /root/temp${2}/*
|
|
||||||
rm -rf /root/temp${2}
|
|
||||||
fi
|
|
||||||
# Send a warning email
|
|
||||||
echo "Unable to backup ${2}" | mail -s "${PROJECT_NAME} backup to friends" ${ADMIN_EMAIL_ADDRESS}
|
|
||||||
function_check restart_site
|
|
||||||
restart_site
|
|
||||||
exit 853
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function backup_directory_to_friend {
|
function backup_directory_to_friend {
|
||||||
BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
|
BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
|
||||||
if [ ! "$?" = "0" ]; then
|
if [ ! "$?" = "0" ]; then
|
||||||
|
@ -539,7 +453,6 @@ function backup_directory_to_friend {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
backup_directory_to_friend_duplicity ${1} ${2}
|
backup_directory_to_friend_duplicity ${1} ${2}
|
||||||
#backup_directory_to_friend_obnam ${1} ${2}
|
|
||||||
|
|
||||||
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
|
||||||
shred -zu /root/temp${2}/*
|
shred -zu /root/temp${2}/*
|
||||||
|
@ -585,6 +498,7 @@ function backup_database_remote {
|
||||||
else
|
else
|
||||||
USE_MONGODB=
|
USE_MONGODB=
|
||||||
USE_POSTGRESQL=
|
USE_POSTGRESQL=
|
||||||
|
cd /etc/postgresql
|
||||||
sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.${database_file_extension}
|
sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.${database_file_extension}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -669,7 +583,7 @@ function restore_database_from_friend {
|
||||||
DATABASE_PASSWORD=
|
DATABASE_PASSWORD=
|
||||||
RESTORE_SUBDIR="root"
|
RESTORE_SUBDIR="root"
|
||||||
|
|
||||||
if [ -d $SERVER_DIRECTORY/backup/${1} ]; then
|
if [ -d $SERVER_DIRECTORY/backup/${1}data ]; then
|
||||||
database_file_extension='sql'
|
database_file_extension='sql'
|
||||||
if [ $USE_MONGODB ]; then
|
if [ $USE_MONGODB ]; then
|
||||||
database_file_extension='mdb'
|
database_file_extension='mdb'
|
||||||
|
@ -701,6 +615,7 @@ function restore_database_from_friend {
|
||||||
else
|
else
|
||||||
USE_MONGODB=
|
USE_MONGODB=
|
||||||
USE_POSTGRESQL=
|
USE_POSTGRESQL=
|
||||||
|
cd /etc/postgresql
|
||||||
mysqlsuccess=$(sudo -u postgres pg_restore ${database_file})
|
mysqlsuccess=$(sudo -u postgres pg_restore ${database_file})
|
||||||
fi
|
fi
|
||||||
if [ ! "$?" = "0" ]; then
|
if [ ! "$?" = "0" ]; then
|
||||||
|
@ -751,6 +666,9 @@ function restore_database_from_friend {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo $"No database backup found for ${1}"
|
||||||
|
exit 6239353
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -759,7 +677,7 @@ function restore_database {
|
||||||
restore_app_name=$1
|
restore_app_name=$1
|
||||||
restore_app_domain=$2
|
restore_app_domain=$2
|
||||||
|
|
||||||
if [ -d $USB_MOUNT/backup/${restore_app_name} ]; then
|
if [ -d $USB_MOUNT/backup/${restore_app_name}data ]; then
|
||||||
echo $"Restoring ${restore_app_name} database"
|
echo $"Restoring ${restore_app_name} database"
|
||||||
local_database_dir=/root/temp${restore_app_name}data
|
local_database_dir=/root/temp${restore_app_name}data
|
||||||
if [ -d ${local_database_dir} ]; then
|
if [ -d ${local_database_dir} ]; then
|
||||||
|
@ -790,6 +708,7 @@ function restore_database {
|
||||||
USE_MONGODB=
|
USE_MONGODB=
|
||||||
USE_POSTGRESQL=
|
USE_POSTGRESQL=
|
||||||
keep_database_running
|
keep_database_running
|
||||||
|
cp $database_file ~/test.sql
|
||||||
mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < $database_file)
|
mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < $database_file)
|
||||||
else
|
else
|
||||||
USE_MONGODB=
|
USE_MONGODB=
|
||||||
|
@ -799,6 +718,7 @@ function restore_database {
|
||||||
else
|
else
|
||||||
USE_MONGODB=
|
USE_MONGODB=
|
||||||
USE_POSTGRESQL=
|
USE_POSTGRESQL=
|
||||||
|
cd /etc/postgresql
|
||||||
mysqlsuccess=$(sudo -u postgres pg_restore $database_file)
|
mysqlsuccess=$(sudo -u postgres pg_restore $database_file)
|
||||||
fi
|
fi
|
||||||
if [ ! "$?" = "0" ]; then
|
if [ ! "$?" = "0" ]; then
|
||||||
|
@ -859,6 +779,11 @@ function restore_database {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo $"No database backup found for ${restore_app_name}"
|
||||||
|
set_user_permissions
|
||||||
|
backup_unmount_drive
|
||||||
|
exit 7357224
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2016-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -270,7 +270,7 @@ function install_tor {
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
apt-get -yq install tor
|
apt-get -yq -t stretch-backports install tor
|
||||||
if [ ! -f /etc/tor/torrc ]; then
|
if [ ! -f /etc/tor/torrc ]; then
|
||||||
echo 'Tor failed to install'
|
echo 'Tor failed to install'
|
||||||
exit 38259
|
exit 38259
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
@ -545,7 +545,7 @@ function disable_ctrl_alt_del {
|
||||||
|
|
||||||
function lockdown_permissions {
|
function lockdown_permissions {
|
||||||
if [ -d /root/.npm ]; then
|
if [ -d /root/.npm ]; then
|
||||||
find /root/.npm -name package.json -exec chmod 700 {} \;
|
chmod -R 700 /root/.npm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# All commands owned by root
|
# All commands owned by root
|
||||||
|
@ -593,6 +593,9 @@ function lockdown_permissions {
|
||||||
if [ -d /usr/lib/node_modules ]; then
|
if [ -d /usr/lib/node_modules ]; then
|
||||||
chmod -R 750 /usr/lib/node_modules/*
|
chmod -R 750 /usr/lib/node_modules/*
|
||||||
fi
|
fi
|
||||||
|
if [ -d /usr/lib/prosody ]; then
|
||||||
|
chown -R prosody:prosody /usr/lib/prosody
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -d /usr/lib64 ]; then
|
if [ -d /usr/lib64 ]; then
|
||||||
chown -R root:root /usr/lib64/*
|
chown -R root:root /usr/lib64/*
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License
|
# License
|
||||||
# =======
|
# =======
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
|
# Copyright (C) 2014-2018 Bob Mottram <bob@freedombone.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -22,7 +22,7 @@ if [ -d "/lib64" ];then
|
||||||
fi
|
fi
|
||||||
if [ -d "/usr/lib" ];then
|
if [ -d "/usr/lib" ];then
|
||||||
|
|
||||||
COUNT=$(find -L /usr/lib \! -user root -exec ls -l {} \; |wc -l)
|
COUNT=$(find -L /usr/lib -path /usr/lib/prosody -prune -o \! -user root -exec ls -l {} \; |wc -l)
|
||||||
|
|
||||||
if [ $COUNT -eq 0 ];then
|
if [ $COUNT -eq 0 ];then
|
||||||
:
|
:
|
||||||
|
|
|
@ -254,7 +254,7 @@ an administrator.\n\n######################\n\n' >> $LOG
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
V-51391) if [ "$3" = "en" ]; then
|
V-51391) if [ "$3" = "en" ]; then
|
||||||
log_msg $2 'A file integrity baseline must be created.'
|
log_msg $2 'A file integrity baseline must be created. Reset the tripwire from the administrator control panel.'
|
||||||
else
|
else
|
||||||
log_msg $2 '必须创建文件完整性基线。'
|
log_msg $2 '必须创建文件完整性基线。'
|
||||||
fi
|
fi
|
||||||
|
@ -487,7 +487,7 @@ time, are stored in the following directories by default:\n\n/lib\n/lib64\n/usr/
|
||||||
fi
|
fi
|
||||||
find -L /lib \! -user root -exec ls -l {} \; | grep -v '> /dev/null'
|
find -L /lib \! -user root -exec ls -l {} \; | grep -v '> /dev/null'
|
||||||
find -L /lib64 \! -user root -exec ls -l {} \;
|
find -L /lib64 \! -user root -exec ls -l {} \;
|
||||||
find -L /usr/lib \! -user root -exec ls -l {} \;
|
find -L /usr/lib -path /usr/lib/prosody -prune -o \! -user root -exec ls -l {} \;
|
||||||
if [ -d /usr/lib64 ]; then
|
if [ -d /usr/lib64 ]; then
|
||||||
find -L /usr/lib64 \! -user root -exec ls -l {} \;
|
find -L /usr/lib64 \! -user root -exec ls -l {} \;
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2017-06-25 Sun 23:22 -->
|
<!-- 2018-01-23 Tue 20:50 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title></title>
|
<title>‎</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Bob Mottram" />
|
<meta name="author" content="Bob Mottram" />
|
||||||
<meta name="description" content="How to install Freedombone onto an existing Debian system"
|
<meta name="description" content="How to install Freedombone onto an existing Debian system"
|
||||||
|
@ -257,20 +257,29 @@ It's still possible to install the system onto these unsupported devices if you
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre><code class="src src-bash">su
|
<pre class="src src-bash">su
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get -qy install build-essential git dialog
|
apt-get -qy install build-essential git dialog
|
||||||
git clone https://github.com/bashrc/freedombone
|
git clone https://github.com/bashrc/freedombone
|
||||||
<span class="org-builtin">cd</span> freedombone
|
<span class="org-builtin">cd</span> freedombone
|
||||||
git checkout stretch
|
git checkout stretch
|
||||||
make install
|
make install
|
||||||
freedombone makeconfig
|
freedombone menuconfig (or freedombone menuconfig-onion)
|
||||||
</code></pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The installation process will then begin. Depending upon the hardware you're installing onto and your internet connection speed it may take quite a while to install.
|
The installation process will then begin. Depending upon the hardware you're installing onto and your internet connection speed it may take quite a while to install.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Once installed you can then log in from another system with:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-bash">ssh yourusername@freedombone.local -p 2222
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue