#!/bin/bash clear echo -e "\e[1;36m" cat << "EOF" ███████╗███████╗██████╗ ██╗ ██╗ █████╗ ██╗ ██╗██████╗ ██╗ ████████╗██████╗ █████╗ ██╔════╝██╔════╝██╔══██╗╚██╗ ██╔╝██╔══██╗ ██║ ██║██╔══██╗██║ ╚══██╔══╝██╔══██╗██╔══██╗ █████╗ █████╗ ██║ ██║ ╚████╔╝ ███████║ ██║ ██║██████╔╝██║ ██║ ██████╔╝███████║ ██╔══╝ ██╔══╝ ██║ ██║ ╚██╔╝ ██╔══██║ ██║ ██║██╔══██╗██║ ██║ ██╔══██╗██╔══██║ ██║ ███████╗██████╔╝ ██║ ██║ ██║ ╚██████╔╝██║ ██║███████╗██║ ██║ ██║██║ ██║ ╚═╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ EOF echo -e "\e[0m" echo -e "\e[1;35mFEDYA PRO FILE SERVER v5.0 — PROFESSIONAL EDITION\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🔧 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 Professional Go Server...\e[0m" # Създаване на PROFESSIONAL Go код с всички действия (FIXED VERSION) cat > main.go <<'EOF' package main import ( "archive/zip" "crypto/rand" "encoding/hex" "encoding/json" "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 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" } 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) tmpl = template.Must(template.New("index").Parse(html)) } const html = `
| Name | Size | Date | Actions |
|---|---|---|---|
| ⬆️ Back to Parent Directory | |||
|
{{if .Thumb}}
{{.Name}}
{{if .Dir}}Folder{{else if eq .Ext ".pdf"}}PDF Document{{else if .Img}}Image{{else}}File{{end}}
{{if not .Dir}}• {{.Ext}}{{end}}
|
{{.Size}}
{{if not .Dir}}
{{.Bytes}} bytes {{end}} |
{{.Date}}
{{.Time}} |
|