mirror of https://gitee.com/godoos/godoos.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.2 KiB
125 lines
3.2 KiB
/*
|
|
* GodoOS - A lightweight cloud desktop
|
|
* Copyright (C) 2024 https://godoos.com
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 2.1 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package sys
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"godo/files"
|
|
"godo/libs"
|
|
"godo/webdav"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func ConfigHandler(w http.ResponseWriter, r *http.Request) {
|
|
var reqs []libs.ReqBody
|
|
err := json.NewDecoder(r.Body).Decode(&reqs)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "The params is error!")
|
|
return
|
|
}
|
|
for _, req := range reqs {
|
|
if req.Name == "osPath" {
|
|
reqPath := libs.GetString(req.Value)
|
|
osPath := libs.GetConfigString("osPath")
|
|
if reqPath != "" && osPath != reqPath {
|
|
if !libs.PathExists(reqPath) {
|
|
libs.ErrorMsg(w, "The Path is not exists!")
|
|
return
|
|
}
|
|
err = os.Chmod(reqPath, 0755)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "The Path chmod is error!")
|
|
return
|
|
}
|
|
libs.SetConfig(req)
|
|
err := files.InitOsSystem()
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "The InitOsSystem is error:"+err.Error())
|
|
return
|
|
}
|
|
|
|
}
|
|
} else if req.Name == "aiDir" {
|
|
aiPath := libs.GetString(req.Value)
|
|
aiDir := libs.GetConfigString("aiDir")
|
|
if aiPath != "" || aiDir != aiPath {
|
|
if !libs.PathExists(aiPath) {
|
|
libs.ErrorMsg(w, "The Path is not exists!")
|
|
return
|
|
}
|
|
err = os.Chmod(aiPath, 0755)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "The Path chmod is error!")
|
|
return
|
|
}
|
|
libs.SetConfig(req)
|
|
}
|
|
} else if req.Name == "ollamaDir" {
|
|
ollamaPath := req.Value.(string)
|
|
ollamaDir, ok := libs.GetConfig("ollamaDir")
|
|
if !ok || ollamaDir != ollamaPath {
|
|
if !libs.PathExists(ollamaPath) {
|
|
libs.ErrorMsg(w, "The Path is not exists!")
|
|
return
|
|
}
|
|
err = os.Chmod(ollamaPath, 0755)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "The Path chmod is error!")
|
|
return
|
|
}
|
|
libs.SetConfig(req)
|
|
}
|
|
} else if req.Name == "webdavClient" {
|
|
libs.SetConfig(req)
|
|
err := webdav.InitWebdav()
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "The webdav client init is error:"+err.Error())
|
|
return
|
|
}
|
|
} else {
|
|
libs.SetConfig(req)
|
|
}
|
|
}
|
|
err = libs.LoadConfig()
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "The LoadConfig is error:"+err.Error())
|
|
return
|
|
}
|
|
|
|
libs.SuccessMsg(w, "success", "The config set success!")
|
|
}
|
|
func SetIplist(req libs.ReqBody) error {
|
|
reqIplist, ok := req.Value.([]string)
|
|
if !ok {
|
|
return fmt.Errorf("unexpected type for iplist:%v", reqIplist)
|
|
}
|
|
if len(reqIplist) > 0 {
|
|
for _, ip := range reqIplist {
|
|
_, _, err := net.ParseCIDR(ip)
|
|
if err != nil {
|
|
return fmt.Errorf("the iplist is error:%s", err.Error())
|
|
}
|
|
}
|
|
libs.SetConfig(req)
|
|
}
|
|
return nil
|
|
}
|
|
|