fix backup/restore when OS are different

This commit is contained in:
wh1te909 2022-12-01 06:33:27 +00:00
parent 7e2295c382
commit 2526fa3c47
4 changed files with 62 additions and 20 deletions

View File

@ -1,3 +1,5 @@
from urllib.parse import urlparse
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
@ -22,6 +24,8 @@ class Command(BaseCommand):
self.stdout.write(settings.NATS_SERVER_VER) self.stdout.write(settings.NATS_SERVER_VER)
case "frontend": case "frontend":
self.stdout.write(settings.CORS_ORIGIN_WHITELIST[0]) self.stdout.write(settings.CORS_ORIGIN_WHITELIST[0])
case "webdomain":
self.stdout.write(urlparse(settings.CORS_ORIGIN_WHITELIST[0]).netloc)
case "djangoadmin": case "djangoadmin":
url = f"https://{settings.ALLOWED_HOSTS[0]}/{settings.ADMIN_URL}" url = f"https://{settings.ALLOWED_HOSTS[0]}/{settings.ADMIN_URL}"
self.stdout.write(url) self.stdout.write(url)
@ -39,7 +43,7 @@ class Command(BaseCommand):
self.stdout.write(settings.DATABASES["default"]["HOST"]) self.stdout.write(settings.DATABASES["default"]["HOST"])
case "dbport": case "dbport":
self.stdout.write(settings.DATABASES["default"]["PORT"]) self.stdout.write(settings.DATABASES["default"]["PORT"])
case "meshsite" | "meshuser" | "meshtoken": case "meshsite" | "meshuser" | "meshtoken" | "meshdomain":
from core.models import CoreSettings from core.models import CoreSettings
core: "CoreSettings" = CoreSettings.objects.first() core: "CoreSettings" = CoreSettings.objects.first()
@ -47,6 +51,8 @@ class Command(BaseCommand):
obj = core.mesh_site obj = core.mesh_site
elif kwargs["name"] == "meshuser": elif kwargs["name"] == "meshuser":
obj = core.mesh_username obj = core.mesh_username
elif kwargs["name"] == "meshdomain":
obj = urlparse(core.mesh_site).netloc
else: else:
obj = core.mesh_token obj = core.mesh_token

View File

@ -426,6 +426,7 @@ CONFIG_MGMT_CMDS = (
"meshver", "meshver",
"natsver", "natsver",
"frontend", "frontend",
"webdomain",
"djangoadmin", "djangoadmin",
"setuptoolsver", "setuptoolsver",
"wheelver", "wheelver",
@ -437,4 +438,5 @@ CONFIG_MGMT_CMDS = (
"meshsite", "meshsite",
"meshuser", "meshuser",
"meshtoken", "meshtoken",
"meshdomain",
) )

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
SCRIPT_VERSION="20" SCRIPT_VERSION="21"
SCRIPT_URL='https://raw.githubusercontent.com/amidaware/tacticalrmm/master/backup.sh' SCRIPT_URL='https://raw.githubusercontent.com/amidaware/tacticalrmm/master/backup.sh'
GREEN='\033[0;32m' GREEN='\033[0;32m'
@ -27,10 +27,6 @@ if [ $EUID -eq 0 ]; then
exit 1 exit 1
fi fi
POSTGRES_USER=$(grep -w USER /rmm/api/tacticalrmm/tacticalrmm/local_settings.py | sed 's/^.*: //' | sed 's/.//' | sed -r 's/.{2}$//')
POSTGRES_PW=$(grep -w PASSWORD /rmm/api/tacticalrmm/tacticalrmm/local_settings.py | sed 's/^.*: //' | sed 's/.//' | sed -r 's/.{2}$//')
if [ ! -d /rmmbackups ]; then if [ ! -d /rmmbackups ]; then
sudo mkdir /rmmbackups sudo mkdir /rmmbackups
sudo chown ${USER}:${USER} /rmmbackups sudo chown ${USER}:${USER} /rmmbackups
@ -56,6 +52,8 @@ mkdir ${tmp_dir}/systemd
mkdir ${tmp_dir}/rmm mkdir ${tmp_dir}/rmm
mkdir ${tmp_dir}/confd mkdir ${tmp_dir}/confd
POSTGRES_USER=$(/rmm/api/env/bin/python /rmm/api/tacticalrmm/manage.py get_config dbuser)
POSTGRES_PW=$(/rmm/api/env/bin/python /rmm/api/tacticalrmm/manage.py get_config dbpw)
pg_dump --dbname=postgresql://"${POSTGRES_USER}":"${POSTGRES_PW}"@127.0.0.1:5432/tacticalrmm | gzip -9 > ${tmp_dir}/postgres/db-${dt_now}.psql.gz pg_dump --dbname=postgresql://"${POSTGRES_USER}":"${POSTGRES_PW}"@127.0.0.1:5432/tacticalrmm | gzip -9 > ${tmp_dir}/postgres/db-${dt_now}.psql.gz
@ -64,14 +62,13 @@ mongodump --gzip --out=${tmp_dir}/meshcentral/mongo
sudo tar -czvf ${tmp_dir}/certs/etc-letsencrypt.tar.gz -C /etc/letsencrypt . sudo tar -czvf ${tmp_dir}/certs/etc-letsencrypt.tar.gz -C /etc/letsencrypt .
sudo tar -czvf ${tmp_dir}/nginx/etc-nginx.tar.gz -C /etc/nginx . for i in rmm frontend meshcentral; do
sudo cp /etc/nginx/sites-available/${i}.conf ${tmp_dir}/nginx/
done
sudo tar -czvf ${tmp_dir}/confd/etc-confd.tar.gz -C /etc/conf.d . sudo tar -czvf ${tmp_dir}/confd/etc-confd.tar.gz -C /etc/conf.d .
sudo cp ${sysd}/rmm.service ${sysd}/celery.service ${sysd}/celerybeat.service ${sysd}/meshcentral.service ${sysd}/nats.service ${sysd}/daphne.service ${tmp_dir}/systemd/ sudo cp ${sysd}/rmm.service ${sysd}/celery.service ${sysd}/celerybeat.service ${sysd}/meshcentral.service ${sysd}/nats.service ${sysd}/daphne.service ${sysd}/nats-api.service ${tmp_dir}/systemd/
if [ -f "${sysd}/nats-api.service" ]; then
sudo cp ${sysd}/nats-api.service ${tmp_dir}/systemd/
fi
cat /rmm/api/tacticalrmm/tacticalrmm/private/log/django_debug.log | gzip -9 > ${tmp_dir}/rmm/debug.log.gz cat /rmm/api/tacticalrmm/tacticalrmm/private/log/django_debug.log | gzip -9 > ${tmp_dir}/rmm/debug.log.gz
cp /rmm/api/tacticalrmm/tacticalrmm/local_settings.py ${tmp_dir}/rmm/ cp /rmm/api/tacticalrmm/tacticalrmm/local_settings.py ${tmp_dir}/rmm/

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
SCRIPT_VERSION="44" SCRIPT_VERSION="45"
SCRIPT_URL='https://raw.githubusercontent.com/amidaware/tacticalrmm/master/restore.sh' SCRIPT_URL='https://raw.githubusercontent.com/amidaware/tacticalrmm/master/restore.sh'
sudo apt update sudo apt update
@ -139,13 +139,51 @@ echo "${nginxrepo}" | sudo tee /etc/apt/sources.list.d/nginx.list > /dev/null
sudo apt update sudo apt update
sudo apt install -y nginx sudo apt install -y nginx
sudo systemctl stop nginx sudo systemctl stop nginx
sudo rm -rf /etc/nginx
sudo mkdir /etc/nginx
sudo tar -xzf $tmp_dir/nginx/etc-nginx.tar.gz -C /etc/nginx
rmmdomain=$(grep server_name /etc/nginx/sites-available/rmm.conf | grep -v 301 | head -1 | tr -d " \t" | sed 's/.*server_name//' | tr -d ';') nginxdefaultconf='/etc/nginx/nginx.conf'
frontenddomain=$(grep server_name /etc/nginx/sites-available/frontend.conf | grep -v 301 | head -1 | tr -d " \t" | sed 's/.*server_name//' | tr -d ';')
meshdomain=$(grep server_name /etc/nginx/sites-available/meshcentral.conf | grep -v 301 | head -1 | tr -d " \t" | sed 's/.*server_name//' | tr -d ';') nginxconf="$(cat << EOF
worker_rlimit_nofile 1000000;
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 4096;
}
http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
server_names_hash_bucket_size 64;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
EOF
)"
echo "${nginxconf}" | sudo tee $nginxdefaultconf > /dev/null
for i in sites-available sites-enabled; do
sudo mkdir -p /etc/nginx/$i
done
for i in rmm frontend meshcentral; do
sudo cp ${tmp_dir}/nginx/${i}.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/${i}.conf /etc/nginx/sites-enabled/${i}.conf
done
rmmdomain=$(/rmm/api/env/bin/python /rmm/api/tacticalrmm/manage.py get_config api)
frontenddomain=$(/rmm/api/env/bin/python /rmm/api/tacticalrmm/manage.py get_config webdomain)
meshdomain=$(/rmm/api/env/bin/python /rmm/api/tacticalrmm/manage.py get_config meshdomain)
print_green 'Restoring hosts file' print_green 'Restoring hosts file'
@ -218,8 +256,7 @@ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add
echo "$mongodb_repo" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list echo "$mongodb_repo" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update sudo apt update
sudo apt install -y mongodb-org sudo apt install -y mongodb-org
sudo systemctl enable mongod sudo systemctl enable --now mongod
sudo systemctl restart mongod
sleep 5 sleep 5
mongorestore --gzip $tmp_dir/meshcentral/mongo mongorestore --gzip $tmp_dir/meshcentral/mongo