#!/bin/bash clear echo -e "\e[1;36m" cat << "EOF" ███████╗███████╗██████╗ ██╗ ██╗ █████╗ ██╗ ██╗██████╗ ██╗ ████████╗██████╗ █████╗ ██╔════╝██╔════╝██╔══██╗╚██╗ ██╔╝██╔══██╗ ██║ ██║██╔══██╗██║ ╚══██╔══╝██╔══██╗██╔══██╗ █████╗ █████╗ ██║ ██║ ╚████╔╝ ███████║ ██║ ██║██████╔╝██║ ██║ ██████╔╝███████║ ██╔══╝ ██╔══╝ ██║ ██║ ╚██╔╝ ██╔══██║ ██║ ██║██╔══██╗██║ ██║ ██╔══██╗██╔══██║ ██║ ███████╗██████╔╝ ██║ ██║ ██║ ╚██████╔╝██║ ██║███████╗██║ ██║ ██║██║ ██║ ╚═╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ EOF echo -e "\e[0m" echo -e "\e[1;35mFEDYA ULTRA PRO SERVER v4.9 — MULTILANGUAGE\e[0m" echo -e "\e[1;34m══════════════════════════════════════════════════════════════════════\e[0m" echo # Проверка за root права [ "$EUID" -ne 0 ] && { echo -e "\e[1;31m❌ sudo required!\e[0m"; exit 1; } # Събиране на потребителски настройки echo -e "\e[1;33m⚙️ Server Configuration:\e[0m" read -p "$(echo -e '\e[1;36m📁 Files directory\e[0m [\e[1;32m/var/www/files\e[0m]: ')" DIR DIR=${DIR:-"/var/www/files"} mkdir -p "$DIR" read -p "$(echo -e '\e[1;36m🌐 Port\e[0m [\e[1;32m8080\e[0m]: ')" PORT PORT=${PORT:-"8080"} read -p "$(echo -e '\e[1;36m🏷️ Server name\e[0m [\e[1;32mFedya'\''s File Server\e[0m]: ')" NAME NAME=${NAME:-"Fedya's File Server"} read -p "$(echo -e '\e[1;36m🌍 Language (bg/en)\e[0m [\e[1;32men\e[0m]: ')" LANG LANG=${LANG:-"en"} read -p "$(echo -e '\e[1;36m🔧 Install as systemd service?\e[0m [\e[1;32mY\e[0m/n]: ')" SVC [[ "$SVC" =~ ^[Nn]$ ]] && SERVICE=false || SERVICE=true echo -e "\n\e[1;33m📦 Installing Go...\e[0m" apt update -qq && apt install -y golang-go &>/dev/null || true # Подготовка на временна директория TMP=$(mktemp -d) cd "$TMP" echo -e "\e[1;33m🔨 Creating Go server...\e[0m" # Създаване на Go код с поддръжка на два езика cat > main.go <<'EOF' package main import ( "archive/zip" "crypto/rand" "encoding/hex" "fmt" "html/template" "image" "image/jpeg" _ "image/gif" _ "image/png" "io" "log" "net/http" "os" "path" "path/filepath" "sort" "strings" "time" ) var ( fileDir string absFileDir string port string serverName string lang string tmpl *template.Template links = make(map[string]struct { Path string Expiry time.Time OneTime bool Used bool }) ) func init() { fileDir = os.Getenv("FILE_DIR") if fileDir == "" { fileDir = "/var/www/files" } port = os.Getenv("PORT") if port == "" { port = "8080" } serverName = os.Getenv("SERVER_NAME") if serverName == "" { serverName = "Fedya's File Server" } lang = os.Getenv("LANG") if lang == "" { lang = "en" } var err error fileDir, err = filepath.Abs(fileDir) if err != nil { log.Fatalf("Error getting absolute path: %v", err) } absFileDir = fileDir // Create base directories os.MkdirAll(filepath.Join(fileDir, "pdf"), 0755) os.MkdirAll(filepath.Join(fileDir, "images"), 0755) // Choose template based on language if lang == "bg" { tmpl = template.Must(template.New("index").Parse(htmlBG)) } else { tmpl = template.Must(template.New("index").Parse(htmlEN)) } } const htmlBG = `
| Име | Размер | Дата | Действия |
|---|---|---|---|
| ⬆️ Назад | |||
|
{{if .Thumb}}
|
{{.Size}} | {{.Date}} | {{if not .Dir}} {{else}} — {{end}} |
| Name | Size | Date | Actions |
|---|---|---|---|
| ⬆️ Back | |||
|
{{if .Thumb}}
|
{{.Size}} | {{.Date}} | {{if not .Dir}} {{else}} — {{end}} |