package route import ( "os" "strconv" "strings" "github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/utils/command" "github.com/IceWhaleTech/CasaOS/pkg/utils/encryption" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" "github.com/IceWhaleTech/CasaOS/service" model2 "github.com/IceWhaleTech/CasaOS/service/model" uuid "github.com/satori/go.uuid" ) func InitFunction() { ShellInit() CheckSerialDiskMount() CheckToken2_11() ImportApplications() // Soon to be removed ChangeAPIUrl() MoveUserToDB() InitSamba() } func CheckSerialDiskMount() { // check mount point dbList := service.MyService.Disk().GetSerialAll() list := service.MyService.Disk().LSBLK(true) mountPoint := make(map[string]string, len(dbList)) //remount for _, v := range dbList { mountPoint[v.UUID] = v.MountPoint } for _, v := range list { command.ExecEnabledSMART(v.Path) if v.Children != nil { for _, h := range v.Children { if len(h.MountPoint) == 0 && len(v.Children) == 1 && h.FsType == "ext4" { if m, ok := mountPoint[h.UUID]; ok { //mount point check volume := m if !file.CheckNotExist(m) { for i := 0; file.CheckNotExist(volume); i++ { volume = m + strconv.Itoa(i+1) } } service.MyService.Disk().MountDisk(h.Path, volume) if volume != m { ms := model2.SerialDisk{} ms.UUID = v.UUID ms.MountPoint = volume service.MyService.Disk().UpdateMountPoint(ms) } } } } } } service.MyService.Disk().RemoveLSBLKCache() command.OnlyExec("source " + config.AppInfo.ShellPath + "/helper.sh ;AutoRemoveUnuseDir") } func ShellInit() { command.OnlyExec("curl -fsSL https://raw.githubusercontent.com/IceWhaleTech/get/main/assist.sh | bash") if !file.CheckNotExist("/casaOS") { command.OnlyExec("source /casaOS/server/shell/update.sh ;") command.OnlyExec("source " + config.AppInfo.ShellPath + "/delete-old-service.sh ;") } } func CheckToken2_11() { if len(config.ServerInfo.Token) == 0 { token := uuid.NewV4().String config.ServerInfo.Token = token() config.Cfg.Section("server").Key("Token").SetValue(token()) config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } if len(config.UserInfo.Description) == 0 { config.Cfg.Section("user").Key("Description").SetValue("nothing") config.UserInfo.Description = "nothing" config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } if service.MyService.System().GetSysInfo().KernelArch == "aarch64" && config.ServerInfo.USBAutoMount != "True" && strings.Contains(service.MyService.System().GetDeviceTree(), "Raspberry Pi") { service.MyService.System().UpdateUSBAutoMount("False") service.MyService.System().ExecUSBAutoMountShell("False") } // str := []string{} // str = append(str, "ddd") // str = append(str, "aaa") // ddd := strings.Join(str, "|") // config.Cfg.Section("file").Key("ShareDir").SetValue(ddd) // config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } func ImportApplications() { service.MyService.App().ImportApplications(true) } // 0.3.1 func ChangeAPIUrl() { newAPIUrl := "https://api.casaos.io/casaos-api" if config.ServerInfo.ServerApi == "https://api.casaos.zimaboard.com" { config.ServerInfo.ServerApi = newAPIUrl config.Cfg.Section("server").Key("ServerApi").SetValue(newAPIUrl) config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } } //0.3.3 //Transferring user data to the database func MoveUserToDB() { if len(config.UserInfo.UserName) > 0 && service.MyService.User().GetUserInfoByUserName(config.UserInfo.UserName).Id == 0 { user := model2.UserDBModel{} user.Username = config.UserInfo.UserName user.Email = config.UserInfo.Email user.Nickname = config.UserInfo.NickName user.Password = encryption.GetMD5ByStr(config.UserInfo.PWD) user.Role = "admin" user = service.MyService.User().CreateUser(user) if user.Id > 0 { userPath := config.AppInfo.UserDataPath + "/" + strconv.Itoa(user.Id) file.MkDir(userPath) os.Rename("/casaOS/server/conf/app_order.json", userPath+"/app_order.json") } } } func InitSamba() { if file.Exists("/etc/samba/smb.conf") { str := file.ReadLine(1, "/etc/samba/smb.conf") if strings.Contains(str, "# Copyright (c) 2021-2022 CasaOS Inc. All rights reserved.") { return } file.MoveFile("/etc/samba/smb.conf", "/etc/samba/smb.conf.bak") var smbConf = "" smbConf += `# Copyright (c) 2021-2022 CasaOS Inc. All rights reserved. # # # ______ _______ # ( __ \ ( ___ ) # | ( \ ) | ( ) | # | | ) | | | | | # | | | | | | | | # | | ) | | | | | # | (__/ ) | (___) | # (______/ (_______) # # _ _______ _________ # ( ( /| ( ___ ) \__ __/ # | \ ( | | ( ) | ) ( # | \ | | | | | | | | # | (\ \) | | | | | | | # | | \ | | | | | | | # | ) \ | | (___) | | | # |/ )_) (_______) )_( # # _______ _______ ______ _________ _______ # ( ) ( ___ ) ( __ \ \__ __/ ( ____ \ |\ /| # | () () | | ( ) | | ( \ ) ) ( | ( \/ ( \ / ) # | || || | | | | | | | ) | | | | (__ \ (_) / # | |(_)| | | | | | | | | | | | | __) \ / # | | | | | | | | | | ) | | | | ( ) ( # | ) ( | | (___) | | (__/ ) ___) (___ | ) | | # |/ \| (_______) (______/ \_______/ |/ \_/ # # # IMPORTANT: CasaOS will not provide technical support for any issues # caused by unauthorized modification to the configuration. [global] ## fruit settings min protocol = SMB2 ea support = yes vfs objects = fruit streams_xattr fruit:metadata = stream fruit:model = Macmini fruit:veto_appledouble = no fruit:posix_rename = yes fruit:zero_file_id = yes fruit:wipe_intentionally_left_blank_rfork = yes fruit:delete_empty_adfiles = yes map to guest = bad user include=/etc/samba/smb.casa.conf ` file.WriteToPath([]byte(smbConf), "/etc/samba", "smb.conf") } }