75 lines
2.3 KiB
Go
75 lines
2.3 KiB
Go
package admin
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"io"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/lejianwen/rustdesk-api/v2/global"
|
|
"github.com/lejianwen/rustdesk-api/v2/http/response"
|
|
"github.com/lejianwen/rustdesk-api/v2/service"
|
|
)
|
|
|
|
// UploadConfigFile загружает конфигурационный файл для использования в генерации клиента
|
|
// @Tags 客户端编译
|
|
// @Summary 上传配置文件
|
|
// @Description 上传自定义配置文件(无限制,任何文件都可以上传)
|
|
// @Accept multipart/form-data
|
|
// @Produce json
|
|
// @Param file formData file true "配置文件"
|
|
// @Success 200 {object} response.Response{data=object{file_content=string}}
|
|
// @Failure 500 {object} response.Response
|
|
// @Router /admin/client_build/upload_config [post]
|
|
// @Security token
|
|
func (ct *ClientBuild) UploadConfigFile(c *gin.Context) {
|
|
u := service.AllService.UserService.CurUser(c)
|
|
if u.Id == 0 {
|
|
response.Fail(c, 101, response.TranslateMsg(c, "UserNotFound"))
|
|
return
|
|
}
|
|
|
|
// Получаем загруженный файл
|
|
file, err := c.FormFile("file")
|
|
if err != nil {
|
|
response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+": file is required")
|
|
return
|
|
}
|
|
|
|
// Открываем файл
|
|
src, err := file.Open()
|
|
if err != nil {
|
|
response.Fail(c, 101, response.TranslateMsg(c, "OperationFailed")+": "+err.Error())
|
|
return
|
|
}
|
|
defer src.Close()
|
|
|
|
// Читаем содержимое файла
|
|
fileContent, err := io.ReadAll(src)
|
|
if err != nil {
|
|
response.Fail(c, 101, response.TranslateMsg(c, "OperationFailed")+": "+err.Error())
|
|
return
|
|
}
|
|
|
|
// Кодируем в base64 для передачи в JSON
|
|
fileContentBase64 := base64.StdEncoding.EncodeToString(fileContent)
|
|
|
|
// Опционально: сохраняем файл для справки
|
|
uploadDir := filepath.Join(global.Config.Gin.ResourcesPath, "uploads", "configs")
|
|
if err := os.MkdirAll(uploadDir, 0755); err == nil {
|
|
dst := filepath.Join(uploadDir, file.Filename)
|
|
if err := c.SaveUploadedFile(file, dst); err == nil {
|
|
// Файл сохранен
|
|
}
|
|
}
|
|
|
|
response.Success(c, gin.H{
|
|
"file_name": file.Filename,
|
|
"file_size": file.Size,
|
|
"file_content": fileContentBase64,
|
|
"message": "File uploaded successfully. Use file_content in custom_config_file field.",
|
|
})
|
|
}
|
|
|