123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*
- * @Author: LinkLeong link@icewhale.org
- * @Date: 2022-11-15 15:51:44
- * @LastEditors: LinkLeong
- * @LastEditTime: 2022-11-15 15:55:16
- * @FilePath: /CasaOS/route/init.go
- * @Description:
- * @Website: https://www.casaos.io
- * Copyright (c) 2022 by icewhale, All Rights Reserved.
- */
- package route
- import (
- "encoding/json"
- "fmt"
- "os"
- "strings"
- "time"
- file1 "github.com/IceWhaleTech/CasaOS-Common/utils/file"
- "github.com/IceWhaleTech/CasaOS-Common/utils/logger"
- "github.com/IceWhaleTech/CasaOS/common"
- "github.com/IceWhaleTech/CasaOS/model"
- "github.com/IceWhaleTech/CasaOS/pkg/config"
- "github.com/IceWhaleTech/CasaOS/pkg/samba"
- "github.com/IceWhaleTech/CasaOS/pkg/utils/encryption"
- "github.com/IceWhaleTech/CasaOS/pkg/utils/file"
- v1 "github.com/IceWhaleTech/CasaOS/route/v1"
- "github.com/IceWhaleTech/CasaOS/service"
- "go.uber.org/zap"
- )
- func InitFunction() {
- go InitNetworkMount()
- go InitInfo()
- go InitZerotier()
- }
- func InitInfo() {
- mb := model.BaseInfo{}
- if file.Exists(config.AppInfo.DBPath + "/baseinfo.conf") {
- err := json.Unmarshal(file.ReadFullFile(config.AppInfo.DBPath+"/baseinfo.conf"), &mb)
- if err != nil {
- logger.Error("baseinfo.conf", zap.String("error", err.Error()))
- }
- }
- if file.Exists("/etc/CHANNEL") {
- channel := file.ReadFullFile("/etc/CHANNEL")
- mb.Channel = string(channel)
- }
- mac, err := service.MyService.System().GetMacAddress()
- if err != nil {
- logger.Error("GetMacAddress", zap.String("error", err.Error()))
- }
- mb.Hash = encryption.GetMD5ByStr(mac)
- mb.Version = common.VERSION
- osRelease, _ := file1.ReadOSRelease()
- mb.DriveModel = osRelease["MODEL"]
- if len(mb.DriveModel) == 0 {
- mb.DriveModel = "Casa"
- }
- os.Remove(config.AppInfo.DBPath + "/baseinfo.conf")
- by, err := json.Marshal(mb)
- if err != nil {
- logger.Error("init info err", zap.Any("err", err))
- return
- }
- file.WriteToFullPath(by, config.AppInfo.DBPath+"/baseinfo.conf", 0o666)
- }
- func InitNetworkMount() {
- time.Sleep(time.Second * 10)
- connections := service.MyService.Connections().GetConnectionsList()
- for _, v := range connections {
- connection := service.MyService.Connections().GetConnectionByID(fmt.Sprint(v.ID))
- directories, err := samba.GetSambaSharesList(connection.Host, connection.Port, connection.Username, connection.Password)
- if err != nil {
- service.MyService.Connections().DeleteConnection(fmt.Sprint(connection.ID))
- logger.Error("mount samba err", zap.Any("err", err), zap.Any("info", connection))
- continue
- }
- baseHostPath := "/mnt/" + connection.Host
- mountPointList, err := service.MyService.System().GetDirPath(baseHostPath)
- if err != nil {
- logger.Error("get mount point err", zap.Any("err", err))
- continue
- }
- for _, v := range mountPointList {
- service.MyService.Connections().UnmountSmaba(v.Path)
- }
- os.RemoveAll(baseHostPath)
- file.IsNotExistMkDir(baseHostPath)
- for _, v := range directories {
- mountPoint := baseHostPath + "/" + v
- file.IsNotExistMkDir(mountPoint)
- service.MyService.Connections().MountSmaba(connection.Username, connection.Host, v, connection.Port, mountPoint, connection.Password)
- }
- connection.Directories = strings.Join(directories, ",")
- service.MyService.Connections().UpdateConnection(&connection)
- }
- err := service.MyService.Storage().CheckAndMountAll()
- if err != nil {
- logger.Error("mount storage err", zap.Any("err", err))
- }
- }
- func InitZerotier() {
- v1.CheckNetwork()
- }
|