mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-11-07 15:19:44 +00:00
change branch
This commit is contained in:
parent
0bb624debc
commit
4ee1c81ea7
@ -86,29 +86,26 @@ func InitRouter() *gin.Engine {
|
|||||||
v1AppsGroup.Use()
|
v1AppsGroup.Use()
|
||||||
{
|
{
|
||||||
v1AppsGroup.GET("/", v1.AppList) //list
|
v1AppsGroup.GET("/", v1.AppList) //list
|
||||||
|
|
||||||
v1AppsGroup.GET("/usage", v1.AppUsageList)
|
|
||||||
}
|
}
|
||||||
v1ContainerGroup := v1Group.Group("/container")
|
v1ContainerGroup := v1Group.Group("/container")
|
||||||
v1ContainerGroup.Use()
|
v1ContainerGroup.Use()
|
||||||
{
|
{
|
||||||
v1ContainerGroup.GET("/", v1.MyAppList) ///my/list
|
v1ContainerGroup.GET("/", v1.MyAppList) ///my/list
|
||||||
v1ContainerGroup.POST("/", v1.InstallApp) //app/install
|
v1ContainerGroup.GET("/usage", v1.AppUsageList)
|
||||||
v1ContainerGroup.DELETE("/:id", v1.UnInstallApp) //app/uninstall/:id
|
v1ContainerGroup.GET("/:id", v1.ContainerUpdateInfo) ///update/:id/info
|
||||||
|
v1ContainerGroup.GET("/:id/logs", v1.ContainerLog) // /app/logs/:id
|
||||||
//v1ContainerGroup.GET("/:id", v1.ContainerInfo) // /app/info/:id
|
|
||||||
v1ContainerGroup.GET("/:id", v1.ContainerUpdateInfo) ///update/:id/info
|
|
||||||
v1ContainerGroup.PUT("/:id", v1.UpdateSetting) ///update/:id/setting
|
|
||||||
|
|
||||||
v1ContainerGroup.GET("/:id/logs", v1.ContainerLog) // /app/logs/:id
|
|
||||||
// there are problems, temporarily do not deal with
|
|
||||||
v1ContainerGroup.GET("/:id/terminal", v1.DockerTerminal) //app/terminal/:id
|
|
||||||
v1ContainerGroup.PUT("/:id/state", v1.ChangAppState) // /app/state/:id
|
|
||||||
|
|
||||||
v1ContainerGroup.GET("/networks", v1.GetDockerNetworks) //app/install/config
|
v1ContainerGroup.GET("/networks", v1.GetDockerNetworks) //app/install/config
|
||||||
|
|
||||||
v1ContainerGroup.GET("/:id/state", v1.GetContainerState) //app/state/:id ?state=install_progress
|
v1ContainerGroup.GET("/:id/state", v1.GetContainerState) //app/state/:id ?state=install_progress
|
||||||
|
// there are problems, temporarily do not deal with
|
||||||
|
v1ContainerGroup.GET("/:id/terminal", v1.DockerTerminal) //app/terminal/:id
|
||||||
|
v1ContainerGroup.POST("/", v1.InstallApp) //app/install
|
||||||
|
//v1ContainerGroup.GET("/:id", v1.ContainerInfo) // /app/info/:id
|
||||||
|
|
||||||
|
v1ContainerGroup.PUT("/:id", v1.UpdateSetting) ///update/:id/setting
|
||||||
|
|
||||||
|
v1ContainerGroup.PUT("/:id/state", v1.ChangAppState) // /app/state/:id
|
||||||
|
v1ContainerGroup.DELETE("/:id", v1.UnInstallApp) //app/uninstall/:id
|
||||||
//Not used
|
//Not used
|
||||||
v1ContainerGroup.PUT("/:id/latest", v1.PutAppUpdate)
|
v1ContainerGroup.PUT("/:id/latest", v1.PutAppUpdate)
|
||||||
//Not used
|
//Not used
|
||||||
@ -162,8 +159,8 @@ func InitRouter() *gin.Engine {
|
|||||||
v1FileGroup.GET("/", v1.GetDownloadSingleFile) //download/:path
|
v1FileGroup.GET("/", v1.GetDownloadSingleFile) //download/:path
|
||||||
v1FileGroup.POST("/", v1.PostCreateFile)
|
v1FileGroup.POST("/", v1.PostCreateFile)
|
||||||
v1FileGroup.PUT("/", v1.PutFileContent)
|
v1FileGroup.PUT("/", v1.PutFileContent)
|
||||||
|
v1FileGroup.PUT("/name", v1.RenamePath)
|
||||||
v1FileGroup.PUT("/name", v1.RenamePath) //file/rename
|
//file/rename
|
||||||
v1FileGroup.GET("/content", v1.GetFilerContent) //file/read
|
v1FileGroup.GET("/content", v1.GetFilerContent) //file/read
|
||||||
|
|
||||||
//File uploads need to be handled separately, and will not be modified here
|
//File uploads need to be handled separately, and will not be modified here
|
||||||
@ -174,12 +171,14 @@ func InitRouter() *gin.Engine {
|
|||||||
v1FolderGroup := v1Group.Group("/folder")
|
v1FolderGroup := v1Group.Group("/folder")
|
||||||
v1FolderGroup.Use()
|
v1FolderGroup.Use()
|
||||||
{
|
{
|
||||||
|
v1FolderGroup.PUT("/name", v1.RenamePath)
|
||||||
v1FolderGroup.GET("/", v1.DirPath) ///file/dirpath
|
v1FolderGroup.GET("/", v1.DirPath) ///file/dirpath
|
||||||
v1FolderGroup.POST("/", v1.MkdirAll) ///file/mkdir
|
v1FolderGroup.POST("/", v1.MkdirAll) ///file/mkdir
|
||||||
}
|
}
|
||||||
v1BatchGroup := v1Group.Group("/batch")
|
v1BatchGroup := v1Group.Group("/batch")
|
||||||
v1BatchGroup.Use()
|
v1BatchGroup.Use()
|
||||||
{
|
{
|
||||||
|
|
||||||
v1BatchGroup.DELETE("/", v1.DeleteFile) //file/delete
|
v1BatchGroup.DELETE("/", v1.DeleteFile) //file/delete
|
||||||
v1BatchGroup.DELETE("/:id/task", v1.DeleteOperateFileOrDir)
|
v1BatchGroup.DELETE("/:id/task", v1.DeleteOperateFileOrDir)
|
||||||
v1BatchGroup.POST("/task", v1.PostOperateFileOrDir) //file/operate
|
v1BatchGroup.POST("/task", v1.PostOperateFileOrDir) //file/operate
|
||||||
|
|||||||
@ -28,9 +28,7 @@ var diskMap = make(map[string]string)
|
|||||||
// @Success 200 {string} string "ok"
|
// @Success 200 {string} string "ok"
|
||||||
// @Router /disk/list [get]
|
// @Router /disk/list [get]
|
||||||
func GetDiskList(c *gin.Context) {
|
func GetDiskList(c *gin.Context) {
|
||||||
js := make(map[string]string)
|
t := c.DefaultQuery("type", "")
|
||||||
c.BindJSON(&js)
|
|
||||||
t := js["type"]
|
|
||||||
list := service.MyService.Disk().LSBLK(false)
|
list := service.MyService.Disk().LSBLK(false)
|
||||||
if t == "usb" {
|
if t == "usb" {
|
||||||
data := []model.DriveUSB{}
|
data := []model.DriveUSB{}
|
||||||
|
|||||||
@ -114,25 +114,6 @@ func WsSsh(c *gin.Context) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//安装进度推送
|
|
||||||
func SpeedPush(c *gin.Context) {
|
|
||||||
//token := c.Query("token")
|
|
||||||
//if len(token) == 0 || token != config.UserInfo.Token {
|
|
||||||
// c.JSON(http.StatusOK, model.Result{Success: common_err.ERROR_AUTH_TOKEN, Message: common_err.GetMsg(common_err.ERROR_AUTH_TOKEN)})
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
|
|
||||||
//ws, _ := upgrader.Upgrade(c.Writer, c.Request, nil)
|
|
||||||
//defer ws.Close()
|
|
||||||
//
|
|
||||||
//for {
|
|
||||||
// select {
|
|
||||||
// case msg := <-WSMSG:
|
|
||||||
// ws.WriteMessage(websocket.TextMessage, []byte(fmt.Sprintln(msg)))
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Summary 安装app(该接口需要post json数据)
|
// @Summary 安装app(该接口需要post json数据)
|
||||||
// @Produce application/json
|
// @Produce application/json
|
||||||
// @Accept application/json
|
// @Accept application/json
|
||||||
@ -764,7 +745,7 @@ func ContainerLog(c *gin.Context) {
|
|||||||
// @Router /app/state/{id} [get]
|
// @Router /app/state/{id} [get]
|
||||||
func GetContainerState(c *gin.Context) {
|
func GetContainerState(c *gin.Context) {
|
||||||
id := c.Param("id")
|
id := c.Param("id")
|
||||||
t := c.DefaultQuery("type", "0")
|
//t := c.DefaultQuery("type", "0")
|
||||||
containerInfo, e := service.MyService.App().GetSimpleContainerInfo(id)
|
containerInfo, e := service.MyService.App().GetSimpleContainerInfo(id)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
c.JSON(http.StatusOK, model.Result{Success: common_err.ERROR, Message: e.Error()})
|
c.JSON(http.StatusOK, model.Result{Success: common_err.ERROR, Message: e.Error()})
|
||||||
@ -775,10 +756,10 @@ func GetContainerState(c *gin.Context) {
|
|||||||
|
|
||||||
data["state"] = containerInfo.State
|
data["state"] = containerInfo.State
|
||||||
|
|
||||||
if t == "1" {
|
// if t == "1" {
|
||||||
appInfo := service.MyService.App().GetAppDBInfo(id)
|
// appInfo := service.MyService.App().GetAppDBInfo(id)
|
||||||
data["app"] = appInfo
|
// data["app"] = appInfo
|
||||||
}
|
// }
|
||||||
|
|
||||||
c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: data})
|
c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: data})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,13 +92,13 @@ func GetLocalFile(c *gin.Context) {
|
|||||||
// @Accept application/json
|
// @Accept application/json
|
||||||
// @Tags file
|
// @Tags file
|
||||||
// @Security ApiKeyAuth
|
// @Security ApiKeyAuth
|
||||||
// @Param t query string false "Compression format" Enums(zip,tar,targz)
|
// @Param format query string false "Compression format" Enums(zip,tar,targz)
|
||||||
// @Param files query string true "file list eg: filename1,filename2,filename3 "
|
// @Param files query string true "file list eg: filename1,filename2,filename3 "
|
||||||
// @Success 200 {string} string "ok"
|
// @Success 200 {string} string "ok"
|
||||||
// @Router /file/download [get]
|
// @Router /file/download [get]
|
||||||
func GetDownloadFile(c *gin.Context) {
|
func GetDownloadFile(c *gin.Context) {
|
||||||
|
|
||||||
t := c.Query("t")
|
t := c.Query("format")
|
||||||
|
|
||||||
files := c.Query("files")
|
files := c.Query("files")
|
||||||
|
|
||||||
@ -184,8 +184,22 @@ func GetDownloadFile(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetDownloadSingleFile(c *gin.Context) {
|
func GetDownloadSingleFile(c *gin.Context) {
|
||||||
filePath := c.Param("path")
|
filePath := c.Query("path")
|
||||||
fileTmp, _ := os.Open(filePath)
|
if len(filePath) == 0 {
|
||||||
|
c.JSON(http.StatusOK, model.Result{
|
||||||
|
Success: common_err.INVALID_PARAMS,
|
||||||
|
Message: common_err.GetMsg(common_err.INVALID_PARAMS),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fileTmp, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusOK, model.Result{
|
||||||
|
Success: common_err.FILE_DOES_NOT_EXIST,
|
||||||
|
Message: common_err.GetMsg(common_err.FILE_DOES_NOT_EXIST),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
defer fileTmp.Close()
|
defer fileTmp.Close()
|
||||||
|
|
||||||
fileName := path.Base(filePath)
|
fileName := path.Base(filePath)
|
||||||
|
|||||||
@ -230,7 +230,7 @@ func PostKillCasaOS(c *gin.Context) {
|
|||||||
// @Success 200 {string} string "ok"
|
// @Success 200 {string} string "ok"
|
||||||
// @Router /sys/usb/off [put]
|
// @Router /sys/usb/off [put]
|
||||||
func PutSystemUSBAutoMount(c *gin.Context) {
|
func PutSystemUSBAutoMount(c *gin.Context) {
|
||||||
status := c.Param("state")
|
status := c.Query("state")
|
||||||
if status == "on" {
|
if status == "on" {
|
||||||
service.MyService.System().UpdateUSBAutoMount("True")
|
service.MyService.System().UpdateUSBAutoMount("True")
|
||||||
service.MyService.System().ExecUSBAutoMountShell("True")
|
service.MyService.System().ExecUSBAutoMountShell("True")
|
||||||
|
|||||||
@ -197,6 +197,9 @@ func PutUserInfo(c *gin.Context) {
|
|||||||
user.Password = encryption.GetMD5ByStr(json.Password)
|
user.Password = encryption.GetMD5ByStr(json.Password)
|
||||||
service.MyService.User().UpdateUserPassword(user)
|
service.MyService.User().UpdateUserPassword(user)
|
||||||
}
|
}
|
||||||
|
if len(json.Email) == 0 {
|
||||||
|
json.Email = user.Email
|
||||||
|
}
|
||||||
if len(json.Avatar) == 0 {
|
if len(json.Avatar) == 0 {
|
||||||
json.Avatar = user.Avatar
|
json.Avatar = user.Avatar
|
||||||
}
|
}
|
||||||
@ -206,7 +209,7 @@ func PutUserInfo(c *gin.Context) {
|
|||||||
if len(json.Description) == 0 {
|
if len(json.Description) == 0 {
|
||||||
json.Description = user.Description
|
json.Description = user.Description
|
||||||
}
|
}
|
||||||
if len(user.Nickname) == 0 {
|
if len(json.Nickname) == 0 {
|
||||||
json.Nickname = user.Nickname
|
json.Nickname = user.Nickname
|
||||||
}
|
}
|
||||||
service.MyService.User().UpdateUser(json)
|
service.MyService.User().UpdateUser(json)
|
||||||
@ -333,12 +336,12 @@ func GetUserInfo(c *gin.Context) {
|
|||||||
* @router:
|
* @router:
|
||||||
*/
|
*/
|
||||||
func GetUserInfoByUsername(c *gin.Context) {
|
func GetUserInfoByUsername(c *gin.Context) {
|
||||||
Username := c.Param("Username")
|
username := c.Param("username")
|
||||||
if len(Username) == 0 {
|
if len(username) == 0 {
|
||||||
c.JSON(http.StatusOK, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
c.JSON(http.StatusOK, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
user := service.MyService.User().GetUserInfoByUserName(Username)
|
user := service.MyService.User().GetUserInfoByUserName(username)
|
||||||
if user.Id == 0 {
|
if user.Id == 0 {
|
||||||
c.JSON(http.StatusOK, model.Result{Success: common_err.USER_NOT_EXIST, Message: common_err.GetMsg(common_err.USER_NOT_EXIST)})
|
c.JSON(http.StatusOK, model.Result{Success: common_err.USER_NOT_EXIST, Message: common_err.GetMsg(common_err.USER_NOT_EXIST)})
|
||||||
return
|
return
|
||||||
@ -550,10 +553,11 @@ func PostUserUploadImage(c *gin.Context) {
|
|||||||
c.JSON(http.StatusOK, model.Result{Success: common_err.USER_NOT_EXIST, Message: common_err.GetMsg(common_err.USER_NOT_EXIST)})
|
c.JSON(http.StatusOK, model.Result{Success: common_err.USER_NOT_EXIST, Message: common_err.GetMsg(common_err.USER_NOT_EXIST)})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
path := config.AppInfo.UserDataPath + "/" + strconv.Itoa(user.Id) + "/" + key + ext
|
|
||||||
if t == "avatar" {
|
if t == "avatar" {
|
||||||
path = config.AppInfo.UserDataPath + "/" + strconv.Itoa(user.Id) + "/avatar" + ext
|
key = "avatar"
|
||||||
}
|
}
|
||||||
|
path := config.AppInfo.UserDataPath + "/" + strconv.Itoa(user.Id) + "/" + key + ext
|
||||||
|
|
||||||
c.SaveUploadedFile(f, path)
|
c.SaveUploadedFile(f, path)
|
||||||
data := make(map[string]string, 3)
|
data := make(map[string]string, 3)
|
||||||
data["path"] = path
|
data["path"] = path
|
||||||
|
|||||||
@ -30,10 +30,10 @@ type AppService interface {
|
|||||||
SaveContainer(m model2.AppListDBModel)
|
SaveContainer(m model2.AppListDBModel)
|
||||||
GetUninstallInfo(id string) model2.AppListDBModel
|
GetUninstallInfo(id string) model2.AppListDBModel
|
||||||
DeleteApp(id string)
|
DeleteApp(id string)
|
||||||
GetContainerInfo(name string) (types.Container, error)
|
GetContainerInfo(id string) (types.Container, error)
|
||||||
GetAppDBInfo(id string) model2.AppListDBModel
|
GetAppDBInfo(id string) model2.AppListDBModel
|
||||||
UpdateApp(m model2.AppListDBModel)
|
UpdateApp(m model2.AppListDBModel)
|
||||||
GetSimpleContainerInfo(name string) (types.Container, error)
|
GetSimpleContainerInfo(id string) (types.Container, error)
|
||||||
DelAppConfigDir(path string)
|
DelAppConfigDir(path string)
|
||||||
GetSystemAppList() []types.Container
|
GetSystemAppList() []types.Container
|
||||||
GetHardwareUsageStream()
|
GetHardwareUsageStream()
|
||||||
@ -271,14 +271,14 @@ func (a *appStruct) GetAllDBApps() []model2.AppListDBModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//获取我的应用列表
|
//获取我的应用列表
|
||||||
func (a *appStruct) GetContainerInfo(name string) (types.Container, error) {
|
func (a *appStruct) GetContainerInfo(id string) (types.Container, error) {
|
||||||
//获取docker应用
|
//获取docker应用
|
||||||
cli, err := client2.NewClientWithOpts(client2.FromEnv)
|
cli, err := client2.NewClientWithOpts(client2.FromEnv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
loger.Error("Failed to init client", zap.Any("err", err))
|
loger.Error("Failed to init client", zap.Any("err", err))
|
||||||
}
|
}
|
||||||
filters := filters.NewArgs()
|
filters := filters.NewArgs()
|
||||||
filters.Add("name", name)
|
filters.Add("id", id)
|
||||||
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: filters})
|
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: filters})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
loger.Error("Failed to get container_list", zap.Any("err", err))
|
loger.Error("Failed to get container_list", zap.Any("err", err))
|
||||||
@ -291,7 +291,7 @@ func (a *appStruct) GetContainerInfo(name string) (types.Container, error) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *appStruct) GetSimpleContainerInfo(name string) (types.Container, error) {
|
func (a *appStruct) GetSimpleContainerInfo(id string) (types.Container, error) {
|
||||||
//获取docker应用
|
//获取docker应用
|
||||||
cli, err := client2.NewClientWithOpts(client2.FromEnv)
|
cli, err := client2.NewClientWithOpts(client2.FromEnv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -299,7 +299,7 @@ func (a *appStruct) GetSimpleContainerInfo(name string) (types.Container, error)
|
|||||||
}
|
}
|
||||||
defer cli.Close()
|
defer cli.Close()
|
||||||
filters := filters.NewArgs()
|
filters := filters.NewArgs()
|
||||||
filters.Add("name", name)
|
filters.Add("id", id)
|
||||||
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: filters})
|
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: filters})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.Container{}, err
|
return types.Container{}, err
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
* @Author: LinkLeong link@icewhale.com
|
* @Author: LinkLeong link@icewhale.com
|
||||||
* @Date: 2022-03-18 11:40:55
|
* @Date: 2022-03-18 11:40:55
|
||||||
* @LastEditors: LinkLeong
|
* @LastEditors: LinkLeong
|
||||||
* @LastEditTime: 2022-07-11 18:36:43
|
* @LastEditTime: 2022-07-12 10:05:37
|
||||||
* @FilePath: /CasaOS/service/user.go
|
* @FilePath: /CasaOS/service/user.go
|
||||||
* @Description:
|
* @Description:
|
||||||
* @Website: https://www.casaos.io
|
* @Website: https://www.casaos.io
|
||||||
@ -76,12 +76,12 @@ func (u *userService) GetUserAllInfoByName(userName string) (m model.UserDBModel
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (u *userService) GetUserInfoById(id string) (m model.UserDBModel) {
|
func (u *userService) GetUserInfoById(id string) (m model.UserDBModel) {
|
||||||
u.db.Select("username", "id", "role", "nickname", "description", "avatar").Where("id= ?", id).First(&m)
|
u.db.Select("username", "id", "role", "nickname", "description", "avatar", "email").Where("id= ?", id).First(&m)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *userService) GetUserInfoByUserName(userName string) (m model.UserDBModel) {
|
func (u *userService) GetUserInfoByUserName(userName string) (m model.UserDBModel) {
|
||||||
u.db.Select("username", "id", "role", "nickname", "description", "avatar").Where("username= ?", userName).First(&m)
|
u.db.Select("username", "id", "role", "nickname", "description", "avatar", "email").Where("username= ?", userName).First(&m)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user