| 123456789101112131415161718192021222324252627282930313233343536373839404142 | package backupimport (	"bytes"	"net/http"	"time"	"github.com/0xJacky/Nginx-UI/internal/backup"	"github.com/gin-gonic/gin"	"github.com/uozi-tech/cosy")// CreateBackup creates a backup of nginx-ui and nginx configurations// and sends files directly for downloadfunc CreateBackup(c *gin.Context) {	result, err := backup.Backup()	if err != nil {		cosy.ErrHandler(c, err)		return	}	// Concatenate Key and IV	securityToken := result.AESKey + ":" + result.AESIv	// Prepare response content	reader := bytes.NewReader(result.BackupContent)	modTime := time.Now()	// Set HTTP headers for file download	fileName := result.BackupName	c.Header("Content-Description", "File Transfer")	c.Header("Content-Type", "application/zip")	c.Header("Content-Disposition", "attachment; filename="+fileName)	c.Header("Content-Transfer-Encoding", "binary")	c.Header("X-Backup-Security", securityToken) // Pass security token in header	c.Header("Expires", "0")	c.Header("Cache-Control", "must-revalidate")	c.Header("Pragma", "public")	// Send file content	http.ServeContent(c.Writer, c.Request, fileName, modTime, reader)}
 |