Create install.sh
This commit is contained in:
parent
49a050c803
commit
41ecb26f61
1 changed files with 85 additions and 0 deletions
85
install.sh
Normal file
85
install.sh
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
#!/bin/bash
|
||||
|
||||
#=================================================================================
|
||||
# M365 Mailbox Backup Tool - Automatic Installation Script (v2.0 - Final English)
|
||||
#=================================================================================
|
||||
|
||||
# --- Color Codes ---
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo -e "${RED}Please run this script with 'sudo': sudo ./install.sh${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=== M365 Backup Tool Installation Started ==="
|
||||
|
||||
# --- User Input Block ---
|
||||
IP_ADDR=$(hostname -I | awk '{print $1}')
|
||||
REDIRECT_URI="https://$IP_ADDR/get_token"
|
||||
echo "---------------------------------------------------------------------"
|
||||
echo "IMPORTANT: Please go to your Azure AD App Registration and add the following"
|
||||
echo "Redirect URI under the 'Web' platform section:"
|
||||
echo ""
|
||||
echo "$REDIRECT_URI"
|
||||
echo ""
|
||||
echo "---------------------------------------------------------------------"
|
||||
read -p "Press Enter after you have added the Redirect URI in the Azure Portal..."
|
||||
|
||||
echo -n "Enter your Azure Tenant ID: "
|
||||
read TENANT_ID
|
||||
echo -n "Enter your Application (Client) ID: "
|
||||
read CLIENT_ID
|
||||
echo -n "Enter your Client Secret Value (will not be visible): "
|
||||
read -s CLIENT_SECRET
|
||||
echo ""
|
||||
echo -n "Enter comma-separated emails of allowed admins (e.g., admin1@company.com): "
|
||||
read ALLOWED_ADMINS
|
||||
echo ""
|
||||
echo "Credentials received."
|
||||
|
||||
# --- System Dependency Installation ---
|
||||
echo "--> Updating system and installing required packages (nginx, redis, python3-venv)..."
|
||||
apt-get update > /dev/null 2>&1
|
||||
apt-get install -y nginx redis-server python3-pip python3-venv > /dev/null 2>&1
|
||||
|
||||
# --- Project Directory and Virtual Environment ---
|
||||
PROJECT_DIR="/opt/m365-backup-tool"
|
||||
USERNAME=${SUDO_USER:-$(whoami)}
|
||||
|
||||
echo "--> Creating project directory: $PROJECT_DIR"
|
||||
mkdir -p "$PROJECT_DIR"
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
echo "--> Creating Python virtual environment..."
|
||||
python3 -m venv venv
|
||||
|
||||
echo "--> Installing Python libraries..."
|
||||
source venv/bin/activate
|
||||
pip install Flask gunicorn "celery[redis]" msal requests python-decouple > /dev/null 2>&1
|
||||
deactivate
|
||||
|
||||
# --- Application File Creation ---
|
||||
|
||||
# .env file
|
||||
echo "--> Creating .env file for credentials..."
|
||||
cat <<EOF > .env
|
||||
TENANT_ID=${TENANT_ID}
|
||||
CLIENT_ID=${CLIENT_ID}
|
||||
CLIENT_SECRET=${CLIENT_SECRET}
|
||||
FLASK_SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(24))')
|
||||
ALLOWED_ADMINS=${ALLOWED_ADMINS}
|
||||
REDIRECT_URI=${REDIRECT_URI}
|
||||
EOF
|
||||
|
||||
# app.py file
|
||||
echo "--> Creating main application file (app.py)..."
|
||||
cat <<'EOF' > app.py
|
||||
import os, re, msal, requests, json, secrets
|
||||
from flask import Flask, request, redirect, url_for, render_template, send_from_directory, session
|
||||
from celery import Celery
|
||||
from email import policy
|
||||
from email.parser import BytesParser
|
||||
from datetime
|
||||
Loading…
Reference in a new issue