浏览代码

V0.3.3 (#334)

* switch branches

* update user interface

* switch branch

* switch branch

* change branch

* submit 0.3.3

* Update UI

* update version function

* Update UI

* Update user.go

* update disk

* update person info interface

* Update main.go

* Update UI

* update alpha

* updata ui

* Update assist.sh

* Update assist.sh

* update update function

* add upload sh

* Update init.go

* upload shell script

* Update system.go

* update update.sh

* Update init.go

* update update.sh

* update update.sh

* Update update.sh

* Update system.go

* Update system.go

* update UI

* Update CHANGELOG.md
link 3 年之前
父节点
当前提交
752134942a
共有 23 个文件被更改,包括 487 次插入164 次删除
  1. 1 1
      CHANGELOG.md
  2. 5 3
      alpha.md
  3. 1 1
      conf/conf.conf.sample
  4. 4 1
      pkg/utils/version/version.go
  5. 7 3
      route/init.go
  6. 20 13
      route/periodical.go
  7. 1 1
      route/v1/disk.go
  8. 16 11
      route/v1/system.go
  9. 20 11
      route/v1/user.go
  10. 1 2
      service/system.go
  11. 0 47
      shell/assist.sh
  12. 105 0
      shell/delete-old-service.sh
  13. 0 32
      shell/tools.sh
  14. 268 0
      shell/update.sh
  15. 1 1
      types/system.go
  16. 34 34
      web/index.html
  17. 1 1
      web/js/12.js
  18. 1 1
      web/js/13.js
  19. 1 1
      web/js/14.js
  20. 0 0
      web/js/3.js
  21. 0 0
      web/js/4.js
  22. 0 0
      web/js/9.js
  23. 0 0
      web/js/app.js

+ 1 - 1
CHANGELOG.md

@@ -18,7 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-## [0.3.3-pre] -
+## [0.3.3-pre] - 2022-07-01(UTC)
 
 ### Added
 

+ 5 - 3
alpha.md

@@ -2,7 +2,7 @@
  * @Author: LinkLeong link@icewhale.com
  * @Date: 2022-06-27 11:37:26
  * @LastEditors: LinkLeong
- * @LastEditTime: 2022-06-27 16:57:38
+ * @LastEditTime: 2022-06-30 14:16:31
  * @FilePath: /CasaOS/alpha.md
  * @Description: 
  * @Website: https://www.casaos.io
@@ -17,7 +17,7 @@ There is a risk of data loss in non-release versions, so please be careful to ba
 
 ## Install/Update
 
-``` curl -fsSL https://get.casaos.io/casaos_new.sh | bash -v v0.3.3-alpha ```
+``` curl -fsSL https://get.casaos.io | bash -v v0.3.3-alpha ```
 
 ## Check change log
 
@@ -27,7 +27,9 @@ There is a risk of data loss in non-release versions, so please be careful to ba
 
 [Design drawings](https://www.figma.com/file/pvlGobvuWEvbCb3GLqXfim/CasaOS-V0.3.3)
 
-## 提交issue 需要打标签
+## Feedback questions
+
+Go [here]() to give feedback on your question, note that try to match the picture or video
 
 
 ## Retest after update

+ 1 - 1
conf/conf.conf.sample

@@ -14,7 +14,7 @@ UserDataPath = /var/lib/casaos/conf
 TempPath    = /var/lib/casaos/temp
 
 [server]
-HttpPort = 8089
+HttpPort = 80
 UDPPort = 
 RunMode = release
 ServerApi = https://api.casaos.io/casaos-api

+ 4 - 1
pkg/utils/version/version.go

@@ -2,7 +2,7 @@
  * @Author: LinkLeong link@icewhale.com
  * @Date: 2022-05-13 18:15:46
  * @LastEditors: LinkLeong
- * @LastEditTime: 2022-06-22 15:24:01
+ * @LastEditTime: 2022-06-29 14:29:34
  * @FilePath: /CasaOS/pkg/utils/version/version.go
  * @Description:
  * @Website: https://www.casaos.io
@@ -39,6 +39,9 @@ func IsNeedUpdate(version model.Version) (bool, model.Version) {
 		if a > b {
 			return true, version
 		}
+		if a < b {
+			return false, version
+		}
 	}
 	return false, version
 }

+ 7 - 3
route/init.go

@@ -25,7 +25,7 @@ import (
 
 func InitFunction() {
 	go checkSystemApp()
-	Update2_3()
+	ShellInit()
 	CheckSerialDiskMount()
 
 	CheckToken2_11()
@@ -200,8 +200,12 @@ func CheckSerialDiskMount() {
 	service.MyService.Disk().RemoveLSBLKCache()
 	command.OnlyExec("source " + config.AppInfo.ShellPath + "/helper.sh ;AutoRemoveUnuseDir")
 }
-func Update2_3() {
-	command.OnlyExec("source " + config.AppInfo.ShellPath + "/assist.sh")
+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() {

+ 20 - 13
route/periodical.go

@@ -1,8 +1,18 @@
+/*
+ * @Author: LinkLeong link@icewhale.com
+ * @Date: 2022-07-01 15:11:36
+ * @LastEditors: LinkLeong
+ * @LastEditTime: 2022-07-01 15:16:00
+ * @FilePath: /CasaOS/route/periodical.go
+ * @Description:
+ * @Website: https://www.casaos.io
+ * Copyright (c) 2022 by icewhale, All Rights Reserved.
+ */
 /*
  * @Author: LinkLeong link@icewhale.com
  * @Date: 2022-05-27 15:55:36
  * @LastEditors: LinkLeong
- * @LastEditTime: 2022-06-24 17:18:46
+ * @LastEditTime: 2022-06-29 16:47:19
  * @FilePath: /CasaOS/route/periodical.go
  * @Description:
  * @Website: https://www.casaos.io
@@ -96,16 +106,16 @@ func SendDiskBySocket() {
 			findSystem += 1
 			continue
 		}
-		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || list[i].Tran == "ata" {
+		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || (list[i].Tran == "ata" && list[i].Type == "disk") {
 			temp := service.MyService.Disk().SmartCTL(list[i].Path)
 			if reflect.DeepEqual(temp, model.SmartctlA{}) {
-				continue
+				healthy = true
+			} else {
+				healthy = temp.SmartStatus.Passed
 			}
 
 			//list[i].Temperature = temp.Temperature.Current
-			if !temp.SmartStatus.Passed {
-				healthy = false
-			}
+
 			if len(list[i].Children) > 0 {
 				for _, v := range list[i].Children {
 					s, _ := strconv.ParseUint(v.FSSize, 10, 64)
@@ -219,15 +229,12 @@ func SendAllHardwareStatusBySocket() {
 			findSystem += 1
 			continue
 		}
-		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || list[i].Tran == "ata" {
+		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || (list[i].Tran == "ata" && list[i].Type == "disk") {
 			temp := service.MyService.Disk().SmartCTL(list[i].Path)
 			if reflect.DeepEqual(temp, model.SmartctlA{}) {
-				continue
-			}
-
-			//list[i].Temperature = temp.Temperature.Current
-			if !temp.SmartStatus.Passed {
-				healthy = false
+				healthy = true
+			} else {
+				healthy = temp.SmartStatus.Passed
 			}
 			if len(list[i].Children) > 0 {
 				for _, v := range list[i].Children {

+ 1 - 1
route/v1/disk.go

@@ -111,7 +111,7 @@ func GetDiskList(c *gin.Context) {
 			continue
 		}
 
-		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || list[i].Tran == "ata" {
+		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || (list[i].Tran == "ata" && list[i].Type == "disk") {
 			temp := service.MyService.Disk().SmartCTL(list[i].Path)
 			if reflect.DeepEqual(temp, model.SmartctlA{}) {
 				temp.SmartStatus.Passed = true

+ 16 - 11
route/v1/system.go

@@ -14,6 +14,7 @@ import (
 	"github.com/IceWhaleTech/CasaOS/model"
 	"github.com/IceWhaleTech/CasaOS/pkg/config"
 	"github.com/IceWhaleTech/CasaOS/pkg/utils/common_err"
+	"github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
 	port2 "github.com/IceWhaleTech/CasaOS/pkg/utils/port"
 	"github.com/IceWhaleTech/CasaOS/pkg/utils/version"
 	"github.com/IceWhaleTech/CasaOS/service"
@@ -21,6 +22,7 @@ import (
 	"github.com/IceWhaleTech/CasaOS/types"
 	"github.com/gin-gonic/gin"
 	uuid "github.com/satori/go.uuid"
+	"go.uber.org/zap"
 )
 
 // @Summary check version
@@ -66,7 +68,7 @@ func SystemUpdate(c *gin.Context) {
 
 //Get system config
 func GetSystemConfig(c *gin.Context) {
-	c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: json.RawMessage(config.SystemConfigInfo.ConfigStr)})
+	c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: ""})
 }
 
 // @Summary  get logs
@@ -344,6 +346,8 @@ func GetSystemUtilization(c *gin.Context) {
 							s, _ := strconv.ParseUint(v.FSSize, 10, 64)
 							a, _ := strconv.ParseUint(v.FSAvail, 10, 64)
 							u, _ := strconv.ParseUint(v.FSUsed, 10, 64)
+							loger.Info("disk info", zap.Any("/ total:", s))
+							loger.Info("disk path", zap.Any("path", v.Path))
 							summary.Size += s
 							summary.Avail += a
 							summary.Used += u
@@ -356,6 +360,8 @@ func GetSystemUtilization(c *gin.Context) {
 						s, _ := strconv.ParseUint(list[i].Children[j].FSSize, 10, 64)
 						a, _ := strconv.ParseUint(list[i].Children[j].FSAvail, 10, 64)
 						u, _ := strconv.ParseUint(list[i].Children[j].FSUsed, 10, 64)
+						loger.Info("disk info", zap.Any("/ total:", s))
+						loger.Info("disk path", zap.Any("path", list[i].Path))
 						summary.Size += s
 						summary.Avail += a
 						summary.Used += u
@@ -370,21 +376,20 @@ func GetSystemUtilization(c *gin.Context) {
 			findSystem += 1
 			continue
 		}
-		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || list[i].Tran == "ata" {
+		if list[i].Tran == "sata" || list[i].Tran == "nvme" || list[i].Tran == "spi" || list[i].Tran == "sas" || strings.Contains(list[i].SubSystems, "virtio") || (list[i].Tran == "ata" && list[i].Type == "disk") {
 			temp := service.MyService.Disk().SmartCTL(list[i].Path)
 			if reflect.DeepEqual(temp, model.SmartctlA{}) {
-				continue
-			}
-
-			//list[i].Temperature = temp.Temperature.Current
-			if !temp.SmartStatus.Passed {
-				healthy = false
+				healthy = true
+			} else {
+				healthy = temp.SmartStatus.Passed
 			}
 			if len(list[i].Children) > 0 {
 				for _, v := range list[i].Children {
 					s, _ := strconv.ParseUint(v.FSSize, 10, 64)
 					a, _ := strconv.ParseUint(v.FSAvail, 10, 64)
 					u, _ := strconv.ParseUint(v.FSUsed, 10, 64)
+					loger.Info("disk info", zap.Any("/ total:", s))
+					loger.Info("disk path", zap.Any("path", list[i].Path))
 					summary.Size += s
 					summary.Avail += a
 					summary.Used += u
@@ -545,9 +550,9 @@ func GetSystemNetInfo(c *gin.Context) {
 // @Success 200 {string} string "ok"
 // @Router /guide/check [get]
 func GetGuideCheck(c *gin.Context) {
-	initUser := false
-	if !config.UserInfo.Initialized {
-		initUser = true
+	initUser := true
+	if service.MyService.User().GetUserCount() > 0 {
+		initUser = false
 	}
 	data := make(map[string]interface{}, 1)
 	data["need_init_user"] = initUser

+ 20 - 11
route/v1/user.go

@@ -195,7 +195,7 @@ func PutUserName(c *gin.Context) {
 	c.BindJSON(&json)
 	//userName := json["user_name"]
 	username := json["username"]
-	id := json["id"]
+	id := json["user_id"]
 	if len(username) == 0 {
 		c.JSON(http.StatusOK, model.Result{Success: common_err.ERROR, Message: common_err.GetMsg(common_err.ERROR)})
 		return
@@ -225,7 +225,7 @@ func PutUserPwd(c *gin.Context) {
 	c.BindJSON(&json)
 	oldPwd := json["old_pwd"]
 	pwd := json["pwd"]
-	id := json["id"]
+	id := json["user_id"]
 	if len(oldPwd) == 0 || len(pwd) == 0 {
 		c.JSON(http.StatusOK, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
 		return
@@ -260,7 +260,7 @@ func PutUserNick(c *gin.Context) {
 	json := make(map[string]string)
 	c.BindJSON(&json)
 	nickName := json["nick_name"]
-	id := json["id"]
+	id := json["user_id"]
 	if len(nickName) == 0 {
 		c.JSON(http.StatusOK, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
 		return
@@ -290,7 +290,7 @@ func PutUserDesc(c *gin.Context) {
 	//	id := c.GetHeader("user_id")
 	json := make(map[string]string)
 	c.BindJSON(&json)
-	id := json["id"]
+	id := json["user_id"]
 	desc := json["description"]
 	if len(desc) == 0 {
 		c.JSON(http.StatusOK, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
@@ -319,18 +319,27 @@ func PutUserDesc(c *gin.Context) {
 // @Success 200 {string} string "ok"
 // @Router /user/person/info [post]
 func PostUserPersonInfo(c *gin.Context) {
-	desc := c.PostForm("description")
-	nickName := c.PostForm("nick_name")
+	json := make(map[string]string)
+	c.BindJSON(&json)
+	desc := json["description"]
+	nickName := json["nick_name"]
+	id := json["user_id"]
 	if len(desc) == 0 || len(nickName) == 0 {
 		c.JSON(http.StatusOK, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
 		return
 	}
+	user := service.MyService.User().GetUserInfoById(id)
+	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)})
+		return
+	}
 	//user_service.SetUser("", "", "", "", desc, nickName)
-	data := make(map[string]string, 2)
-	data["description"] = config.UserInfo.Description
-	data["nick_name"] = config.UserInfo.NickName
+	user.NickName = nickName
+	user.Description = desc
+	service.MyService.User().UpdateUser(user)
 	go service.MyService.Casa().PushUserInfo()
-	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: user})
 }
 
 // @Summary get user info
@@ -711,7 +720,7 @@ func Set_Name_Pwd(c *gin.Context) {
 	}
 	user := model2.UserDBModel{}
 	user.UserName = username
-	user.Password = encryption.GetMD5ByStr(config.UserInfo.PWD)
+	user.Password = encryption.GetMD5ByStr(pwd)
 	user.Role = "admin"
 
 	user = service.MyService.User().CreateUser(user)

+ 1 - 2
service/system.go

@@ -208,9 +208,8 @@ func (c *systemService) GetNet(physics bool) []string {
 }
 
 func (s *systemService) UpdateSystemVersion(version string) {
-	//command2.OnlyExec("curl -fsSL https://get.casaos.io | bash")
+	command2.OnlyExec("curl -fsSL https://raw.githubusercontent.com/IceWhaleTech/get/main/update.sh | bash")
 	//s.log.Error(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version)
-	command2.ExecResultStrArray("source " + config.AppInfo.ShellPath + "/tools.sh ;update " + version)
 	//s.log.Error(command2.ExecResultStr(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version))
 }
 func (s *systemService) UpdateAssist() {

+ 0 - 47
shell/assist.sh

@@ -1,50 +1,3 @@
 #!/bin/bash
-###
- # @Author: LinkLeong link@icewhale.com
- # @Date: 2022-02-17 18:53:29
- # @LastEditors: LinkLeong
- # @LastEditTime: 2022-06-27 14:14:26
- # @FilePath: /CasaOS/shell/assist.sh
- # @Description: 
- # @Website: https://www.casaos.io
- # Copyright (c) 2022 by icewhale, All Rights Reserved. 
-### 
 
 
-
-# add in v0.2.5
-
-readonly CASA_DEPANDS="curl smartmontools parted fdisk ntfs-3g"
-
-version_0_2_5() {
-  install_depends "$CASA_DEPANDS"
-}
-version_0_2_11() {
-  sysctl -w net.core.rmem_max=2500000
-}
-
-#Install Depends
-install_depends() {
-    ((EUID)) && sudo_cmd="sudo"
-    if [[ ! -x "$(command -v '$1')" ]]; then
-        packagesNeeded=$1
-        if [ -x "$(command -v apk)" ]; then
-            $sudo_cmd apk add --no-cache $packagesNeeded
-        elif [ -x "$(command -v apt-get)" ]; then
-            $sudo_cmd apt-get -y -q install $packagesNeeded
-        elif [ -x "$(command -v dnf)" ]; then
-            $sudo_cmd dnf install $packagesNeeded
-        elif [ -x "$(command -v zypper)" ]; then
-            $sudo_cmd zypper install $packagesNeeded
-        fi
-    fi
-}
-
-mvfoder() {
-   #移动脚本
-   
-}
-
-version_0_2_5
-
-version_0_2_11

+ 105 - 0
shell/delete-old-service.sh

@@ -0,0 +1,105 @@
+#!/bin/bash
+###
+ # @Author:  LinkLeong link@icewhale.com
+ # @Date: 2022-06-30 10:08:33
+ # @LastEditors: LinkLeong
+ # @LastEditTime: 2022-07-01 11:17:54
+ # @FilePath: /CasaOS/shell/delete-old-service.sh
+ # @Description:
+### 
+
+((EUID)) && sudo_cmd="sudo"
+
+# SYSTEM INFO
+readonly UNAME_M="$(uname -m)"
+
+# CasaOS PATHS
+readonly CASA_REPO=IceWhaleTech/CasaOS
+readonly CASA_UNZIP_TEMP_FOLDER=/tmp/casaos
+readonly CASA_BIN=casaos
+readonly CASA_BIN_PATH=/usr/bin/casaos
+readonly CASA_CONF_PATH=/etc/casaos.conf
+readonly CASA_SERVICE_PATH=/etc/systemd/system/casaos.service
+readonly CASA_HELPER_PATH=/usr/share/casaos/shell/
+readonly CASA_USER_CONF_PATH=/var/lib/casaos/conf/
+readonly CASA_DB_PATH=/var/lib/casaos/db/
+readonly CASA_TEMP_PATH=/var/lib/casaos/temp/
+readonly CASA_LOGS_PATH=/var/log/casaos/
+readonly CASA_PACKAGE_EXT=".tar.gz"
+readonly CASA_RELEASE_API="https://api.github.com/repos/${CASA_REPO}/releases"
+readonly CASA_OPENWRT_DOCS="https://github.com/IceWhaleTech/CasaOS-OpenWrt"
+
+readonly COLOUR_RESET='\e[0m'
+readonly aCOLOUR=(
+    '\e[38;5;154m' # green  	| Lines, bullets and separators
+    '\e[1m'        # Bold white	| Main descriptions
+    '\e[90m'       # Grey		| Credits
+    '\e[91m'       # Red		| Update notifications Alert
+    '\e[33m'       # Yellow		| Emphasis
+)
+
+Target_Arch=""
+Target_Distro="debian"
+Target_OS="linux"
+Casa_Tag=""
+
+
+#######################################
+# Custom printing function
+# Globals:
+#   None
+# Arguments:
+#   $1 0:OK   1:FAILED  2:INFO  3:NOTICE
+#   message
+# Returns:
+#   None
+#######################################
+
+Show() {
+    # OK
+    if (($1 == 0)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]}  OK  $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    # FAILED
+    elif (($1 == 1)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[3]}FAILED$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    # INFO
+    elif (($1 == 2)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]} INFO $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    # NOTICE
+    elif (($1 == 3)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[4]}NOTICE$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    fi
+}
+
+Warn() {
+    echo -e "${aCOLOUR[3]}$1$COLOUR_RESET"
+}
+
+# 0 Check_exist
+Check_Exist() {
+    #Create Dir
+    Show 2 "Create Folders."
+    ${sudo_cmd} mkdir -p ${CASA_HELPER_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_LOGS_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_USER_CONF_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_DB_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_TEMP_PATH}
+
+   
+    Show 2 "Start cleaning up the old version."
+    
+    ${sudo_cmd} rm -rf /usr/lib/systemd/system/casaos.service
+    
+    ${sudo_cmd} rm -rf /lib/systemd/system/casaos.service
+    
+    ${sudo_cmd} rm -rf /usr/local/bin/${CASA_BIN}
+    
+    #Clean
+    if [[ -d "/casaOS" ]]; then
+        ${sudo_cmd} rm -rf /casaOS
+    fi
+    Show 0 "Clearance completed."    
+
+    $sudo_cmd systemctl restart ${CASA_BIN}
+}
+Check_Exist

+ 0 - 32
shell/tools.sh

@@ -1,32 +0,0 @@
-#!/bin/bash
-###
- # @Author: LinkLeong link@icewhale.com
- # @Date: 2021-12-06 17:12:32
- # @LastEditors: LinkLeong
- # @LastEditTime: 2022-06-27 14:23:15
- # @FilePath: /CasaOS/shell/tools.sh
- # @Description: 
- # @Website: https://www.casaos.io
- # Copyright (c) 2022 by icewhale, All Rights Reserved. 
-### 
-
-#######################################
-# Custom printing function
-# Globals:
-#   None
-# Arguments:
-#   $1 0:OK   1:FAILED
-#   message
-# Returns:
-#   None
-#######################################
-
-
-run_external_script() {
-  assist.sh
-}
-
-update() {
-  curl -fsSL https://get.icewhale.io/casaos.sh | bash
-  run_external_script
-}

+ 268 - 0
shell/update.sh

@@ -0,0 +1,268 @@
+#!/bin/bash
+###
+ # @Author:  LinkLeong link@icewhale.com
+ # @Date: 2022-06-30 10:08:33
+ # @LastEditors: LinkLeong
+ # @LastEditTime: 2022-07-01 11:18:07
+ # @FilePath: /CasaOS/shell/update.sh
+ # @Description:
+### 
+
+((EUID)) && sudo_cmd="sudo"
+
+# SYSTEM INFO
+readonly UNAME_M="$(uname -m)"
+
+# CasaOS PATHS
+readonly CASA_REPO=IceWhaleTech/CasaOS
+readonly CASA_UNZIP_TEMP_FOLDER=/tmp/casaos
+readonly CASA_BIN=casaos
+readonly CASA_BIN_PATH=/usr/bin/casaos
+readonly CASA_CONF_PATH=/etc/casaos.conf
+readonly CASA_SERVICE_PATH=/etc/systemd/system/casaos.service
+readonly CASA_HELPER_PATH=/usr/share/casaos/shell/
+readonly CASA_USER_CONF_PATH=/var/lib/casaos/conf/
+readonly CASA_DB_PATH=/var/lib/casaos/db/
+readonly CASA_TEMP_PATH=/var/lib/casaos/temp/
+readonly CASA_LOGS_PATH=/var/log/casaos/
+readonly CASA_PACKAGE_EXT=".tar.gz"
+readonly CASA_RELEASE_API="https://api.github.com/repos/${CASA_REPO}/releases"
+readonly CASA_OPENWRT_DOCS="https://github.com/IceWhaleTech/CasaOS-OpenWrt"
+
+readonly COLOUR_RESET='\e[0m'
+readonly aCOLOUR=(
+    '\e[38;5;154m' # green  	| Lines, bullets and separators
+    '\e[1m'        # Bold white	| Main descriptions
+    '\e[90m'       # Grey		| Credits
+    '\e[91m'       # Red		| Update notifications Alert
+    '\e[33m'       # Yellow		| Emphasis
+)
+
+Target_Arch=""
+Target_Distro="debian"
+Target_OS="linux"
+Casa_Tag=""
+
+
+#######################################
+# Custom printing function
+# Globals:
+#   None
+# Arguments:
+#   $1 0:OK   1:FAILED  2:INFO  3:NOTICE
+#   message
+# Returns:
+#   None
+#######################################
+
+Show() {
+    # OK
+    if (($1 == 0)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]}  OK  $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    # FAILED
+    elif (($1 == 1)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[3]}FAILED$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    # INFO
+    elif (($1 == 2)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]} INFO $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    # NOTICE
+    elif (($1 == 3)); then
+        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[4]}NOTICE$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
+    fi
+}
+
+Warn() {
+    echo -e "${aCOLOUR[3]}$1$COLOUR_RESET"
+}
+
+# 0 Check_exist
+Check_Exist() {
+    #Create Dir
+    Show 2 "Create Folders."
+    ${sudo_cmd} mkdir -p ${CASA_HELPER_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_LOGS_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_USER_CONF_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_DB_PATH}
+    ${sudo_cmd} mkdir -p ${CASA_TEMP_PATH}
+
+   
+    Show 2 "Start cleaning up the old version."
+
+    ${sudo_cmd} rm -rf /usr/lib/systemd/system/casaos.service
+    
+    ${sudo_cmd} rm -rf /lib/systemd/system/casaos.service
+
+    if [[ -f "/casaOS/server/conf/conf.ini" ]]; then
+        ${sudo_cmd} cp -rf /casaOS/server/conf/conf.ini ${CASA_CONF_PATH}
+        ${sudo_cmd} cp -rf /casaOS/server/conf/*.json ${CASA_USER_CONF_PATH}
+    fi
+
+    if [[ -d "/casaOS/server/db" ]]; then
+        ${sudo_cmd} cp -rf /casaOS/server/db/* ${CASA_DB_PATH}
+    fi
+
+    Show 0 "Clearance completed."
+
+}
+
+# 1 Check Arch
+Check_Arch() {
+    case $UNAME_M in
+    *aarch64*)
+        Target_Arch="arm64"
+        ;;
+    *64*)
+        Target_Arch="amd64"
+        ;;
+    *armv7*)
+        Target_Arch="arm-7"
+        ;;
+    *)
+        Show 1 "Aborted, unsupported or unknown architecture: $UNAME_M"
+        exit 1
+        ;;
+    esac
+    Show 0 "Your hardware architecture is : $UNAME_M"
+}
+
+
+
+#Download CasaOS Package
+Download_CasaOS() {
+    Show 2 "Downloading CasaOS for ${Target_OS}/${Target_Arch}..."
+    Net_Getter="curl -fsSLk"
+    Casa_Package="${Target_OS}-${Target_Arch}-casaos${CASA_PACKAGE_EXT}"
+    if [[ ! -n "$version" ]]; then
+        Casa_Tag="$(${Net_Getter} ${CASA_RELEASE_API}/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')"
+    elif [[ $version == "pre" ]]; then
+        Casa_Tag="$(${net_getter} ${CASA_RELEASE_API} | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g' | sed -n '1p')"
+    else
+        Casa_Tag="$version"
+    fi
+    Casa_Package_URL="https://github.com/${CASA_REPO}/releases/download/${Casa_Tag}/${Casa_Package}"
+    echo
+    # Remove Temp File
+    ${sudo_cmd} rm -rf "$PREFIX/tmp/${Casa_Package}"
+    # Download Package
+    ${Net_Getter} "${Casa_Package_URL}" >"$PREFIX/tmp/${Casa_Package}"
+    if [[ $? -ne 0 ]]; then
+        Show 1 "Download failed, Please check if your internet connection is working and retry."
+        exit 1
+    else
+        Show 0 "Download successful!"
+    fi
+    #Extract CasaOS Package
+    Show 2 "Extracting..."
+    case "${Casa_Package}" in
+    *.zip) ${sudo_cmd} unzip -o "$PREFIX/tmp/${Casa_Package}" -d "$PREFIX/tmp/" ;;
+    *.tar.gz) ${sudo_cmd} tar -xzf "$PREFIX/tmp/${Casa_Package}" -C "$PREFIX/tmp/" ;;
+    esac
+    #Setting Executable Permissions
+    ${sudo_cmd} chmod +x "$PREFIX${CASA_UNZIP_TEMP_FOLDER}/${CASA_BIN}"
+
+}
+
+#Install Addons
+Install_Addons() {
+    Show 2 "Installing CasaOS Addons"
+    ${sudo_cmd} cp -rf "$PREFIX${CASA_UNZIP_TEMP_FOLDER}/shell/11-usb-mount.rules" "/etc/udev/rules.d/"
+    ${sudo_cmd} cp -rf "$PREFIX${CASA_UNZIP_TEMP_FOLDER}/shell/usb-mount@.service" "/etc/systemd/system/"
+    sync
+}
+
+#Clean Temp Files
+Clean_Temp_Files() {
+    Show 0 "Clean..."
+    ${sudo_cmd} rm -rf "$PREFIX${CASA_UNZIP_TEMP_FOLDER}"
+    sync
+}
+
+#Install CasaOS
+Install_CasaOS() {
+    Show 2 "Installing..."
+
+    # Install Bin
+    ${sudo_cmd} mv -f $PREFIX${CASA_UNZIP_TEMP_FOLDER}/${CASA_BIN} ${CASA_BIN_PATH}
+
+    # Install Helper
+    if [[ -d ${CASA_HELPER_PATH} ]]; then
+        ${sudo_cmd} rm -rf ${CASA_HELPER_PATH}*
+    fi
+    ${sudo_cmd} cp -rf $PREFIX${CASA_UNZIP_TEMP_FOLDER}/shell/* ${CASA_HELPER_PATH}
+    #Setting Executable Permissions
+    ${sudo_cmd} chmod +x $PREFIX${CASA_HELPER_PATH}*
+
+    # Install Conf
+    if [[ ! -f ${CASA_CONF_PATH} ]]; then
+        if [[ -f $PREFIX${CASA_UNZIP_TEMP_FOLDER}/conf/conf.ini.sample ]]; then
+            ${sudo_cmd} mv -f $PREFIX${CASA_UNZIP_TEMP_FOLDER}/conf/conf.ini.sample ${CASA_CONF_PATH}
+        else
+            ${sudo_cmd} mv -f $PREFIX${CASA_UNZIP_TEMP_FOLDER}/conf/conf.conf.sample ${CASA_CONF_PATH}
+        fi
+
+    fi
+    sync
+
+    if [[ ! -x "$(command -v ${CASA_BIN})" ]]; then
+        Show 1 "Installation failed, please try again."
+        exit 1
+    else
+        Show 0 "CasaOS Successfully installed."
+    fi
+}
+
+#Generate Service File
+Generate_Service() {
+    if [ -f ${CASA_SERVICE_PATH} ]; then
+        Show 2 "Try stop CasaOS system service."
+        # Stop before generation
+        if [[ $(systemctl is-active ${CASA_BIN} &>/dev/null) ]]; then
+            ${sudo_cmd} systemctl stop ${CASA_BIN}
+        fi
+    fi
+    Show 2 "Create system service for CasaOS."
+
+    ${sudo_cmd} tee ${CASA_SERVICE_PATH} >/dev/null <<EOF
+				[Unit]
+				Description=CasaOS Service
+				StartLimitIntervalSec=0
+
+				[Service]
+				Type=simple
+				LimitNOFILE=15210
+				Restart=always
+				RestartSec=1
+				User=root
+				ExecStart=${CASA_BIN_PATH} -c ${CASA_CONF_PATH}
+
+				[Install]
+				WantedBy=multi-user.target
+EOF
+    Show 0 "CasaOS service Successfully created."
+}
+
+# Start CasaOS
+Start_CasaOS() {
+    Show 2 "Create a system startup service for CasaOS."
+    $sudo_cmd systemctl daemon-reload
+    $sudo_cmd systemctl enable ${CASA_BIN}
+}
+
+Check_Arch
+
+# Step 7: Download CasaOS
+Check_Exist
+Download_CasaOS
+
+# Step 8: Install Addon
+Install_Addons
+
+# Step 9: Install CasaOS
+Install_CasaOS
+
+# Step 10: Generate_Service
+Generate_Service
+
+# Step 11: Start CasaOS
+Start_CasaOS
+Clean_Temp_Files

+ 1 - 1
types/system.go

@@ -2,7 +2,7 @@
  * @Author: LinkLeong link@icewhale.com
  * @Date: 2022-02-17 18:53:22
  * @LastEditors: LinkLeong
- * @LastEditTime: 2022-06-29 11:08:23
+ * @LastEditTime: 2022-07-01 15:15:09
  * @FilePath: /CasaOS/types/system.go
  * @Description:
  * @Website: https://www.casaos.io

+ 34 - 34
web/index.html

@@ -1,34 +1,34 @@
-<!DOCTYPE html>
-<html lang="">
-
-<head>
-  <meta charset="utf-8">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-  <meta name="robots" content="noindex">
-  <script>
-    if (document.URL.indexOf("ui") === -1) {
-      window.location.replace("ui")
-    }
-  </script>
-  <link rel="apple-touch-icon" sizes="180x180" href="/ui/img/icon/apple-touch-icon.png">
-  <link rel="manifest" href="/ui/site.webmanifest">
-  <meta name="msapplication-TileColor" content="#da532c">
-  <meta name="theme-color" content="#ffffff">
-  <link rel="icon" href="/ui/favicon.svg" type="image/svg+xml">
-
-  <title>
-    CasaOS
-  </title>
-<link href="/ui/css/10.3f6e4ac6.css" rel="prefetch"><link href="/ui/css/11.0cf49524.css" rel="prefetch"><link href="/ui/css/12.515410b8.css" rel="prefetch"><link href="/ui/css/13.8c31370d.css" rel="prefetch"><link href="/ui/css/14.3e385d0d.css" rel="prefetch"><link href="/ui/css/18.4aea6393.css" rel="prefetch"><link href="/ui/css/19.177dd094.css" rel="prefetch"><link href="/ui/css/3.e83a5e52.css" rel="prefetch"><link href="/ui/css/9.5e320549.css" rel="prefetch"><link href="/ui/js/0.js" rel="prefetch"><link href="/ui/js/1.js" rel="prefetch"><link href="/ui/js/10.js" rel="prefetch"><link href="/ui/js/11.js" rel="prefetch"><link href="/ui/js/12.js" rel="prefetch"><link href="/ui/js/13.js" rel="prefetch"><link href="/ui/js/14.js" rel="prefetch"><link href="/ui/js/15.js" rel="prefetch"><link href="/ui/js/16.js" rel="prefetch"><link href="/ui/js/17.js" rel="prefetch"><link href="/ui/js/18.js" rel="prefetch"><link href="/ui/js/19.js" rel="prefetch"><link href="/ui/js/2.js" rel="prefetch"><link href="/ui/js/20.js" rel="prefetch"><link href="/ui/js/3.js" rel="prefetch"><link href="/ui/js/4.js" rel="prefetch"><link href="/ui/js/5.js" rel="prefetch"><link href="/ui/js/6.js" rel="prefetch"><link href="/ui/js/7.js" rel="prefetch"><link href="/ui/js/8.js" rel="prefetch"><link href="/ui/js/9.js" rel="prefetch"><link href="/ui/css/app.1801b673.css" rel="preload" as="style"><link href="/ui/css/vendors~app.3967bc71.css" rel="preload" as="style"><link href="/ui/js/app.js" rel="preload" as="script"><link href="/ui/js/vendors~app.js" rel="preload" as="script"><link href="/ui/css/vendors~app.3967bc71.css" rel="stylesheet"><link href="/ui/css/app.1801b673.css" rel="stylesheet"></head>
-
-<body>
-  <noscript>
-    <strong>We're sorry but CasaOS doesn't work properly without JavaScript enabled.
-        Please enable it to continue.</strong>
-  </noscript>
-  <div id="app"></div>
-  <!-- built files will be auto injected -->
-<script type="text/javascript" src="/ui/js/vendors~app.js"></script><script type="text/javascript" src="/ui/js/app.js"></script></body>
-
-</html>
+<!DOCTYPE html>
+<html lang="">
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1">
+  <meta name="robots" content="noindex">
+  <script>
+    if (document.URL.indexOf("ui") === -1) {
+      window.location.replace("ui")
+    }
+  </script>
+  <link rel="apple-touch-icon" sizes="180x180" href="/ui/img/icon/apple-touch-icon.png">
+  <link rel="manifest" href="/ui/site.webmanifest">
+  <meta name="msapplication-TileColor" content="#da532c">
+  <meta name="theme-color" content="#ffffff">
+  <link rel="icon" href="/ui/favicon.svg" type="image/svg+xml">
+
+  <title>
+    CasaOS
+  </title>
+<link href="/ui/css/10.f0cf5fc3.css" rel="prefetch"><link href="/ui/css/11.32be8789.css" rel="prefetch"><link href="/ui/css/12.ee780c90.css" rel="prefetch"><link href="/ui/css/13.dc77452d.css" rel="prefetch"><link href="/ui/css/14.daa8e8be.css" rel="prefetch"><link href="/ui/css/18.1f93b660.css" rel="prefetch"><link href="/ui/css/19.046fd3d8.css" rel="prefetch"><link href="/ui/css/3.623fa25f.css" rel="prefetch"><link href="/ui/css/9.f27e442b.css" rel="prefetch"><link href="/ui/js/0.js" rel="prefetch"><link href="/ui/js/1.js" rel="prefetch"><link href="/ui/js/10.js" rel="prefetch"><link href="/ui/js/11.js" rel="prefetch"><link href="/ui/js/12.js" rel="prefetch"><link href="/ui/js/13.js" rel="prefetch"><link href="/ui/js/14.js" rel="prefetch"><link href="/ui/js/15.js" rel="prefetch"><link href="/ui/js/16.js" rel="prefetch"><link href="/ui/js/17.js" rel="prefetch"><link href="/ui/js/18.js" rel="prefetch"><link href="/ui/js/19.js" rel="prefetch"><link href="/ui/js/2.js" rel="prefetch"><link href="/ui/js/20.js" rel="prefetch"><link href="/ui/js/3.js" rel="prefetch"><link href="/ui/js/4.js" rel="prefetch"><link href="/ui/js/5.js" rel="prefetch"><link href="/ui/js/6.js" rel="prefetch"><link href="/ui/js/7.js" rel="prefetch"><link href="/ui/js/8.js" rel="prefetch"><link href="/ui/js/9.js" rel="prefetch"><link href="/ui/css/app.1fb33240.css" rel="preload" as="style"><link href="/ui/css/vendors~app.6b5df7e4.css" rel="preload" as="style"><link href="/ui/js/app.js" rel="preload" as="script"><link href="/ui/js/vendors~app.js" rel="preload" as="script"><link href="/ui/css/vendors~app.6b5df7e4.css" rel="stylesheet"><link href="/ui/css/app.1fb33240.css" rel="stylesheet"></head>
+
+<body>
+  <noscript>
+    <strong>We're sorry but CasaOS doesn't work properly without JavaScript enabled.
+        Please enable it to continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+<script type="text/javascript" src="/ui/js/vendors~app.js"></script><script type="text/javascript" src="/ui/js/app.js"></script></body>
+
+</html>

+ 1 - 1
web/js/12.js

@@ -18,7 +18,7 @@
 /*!**************************************************!*\
   !*** ./src/assets/background/preview-widget.svg ***!
   \**************************************************/
-/*! no static exports found */function(module,exports,__webpack_require__){eval('module.exports = __webpack_require__.p + "img/preview-widget.e228363c.svg";\n\n//# sourceURL=webpack:///./src/assets/background/preview-widget.svg?')},"./src/assets/background/wallpaper01.jpg":
+/*! no static exports found */function(module,exports,__webpack_require__){eval('module.exports = __webpack_require__.p + "img/preview-widget.5069b926.svg";\n\n//# sourceURL=webpack:///./src/assets/background/preview-widget.svg?')},"./src/assets/background/wallpaper01.jpg":
 /*!***********************************************!*\
   !*** ./src/assets/background/wallpaper01.jpg ***!
   \***********************************************/

文件差异内容过多而无法显示
+ 1 - 1
web/js/13.js


文件差异内容过多而无法显示
+ 1 - 1
web/js/14.js


文件差异内容过多而无法显示
+ 0 - 0
web/js/3.js


文件差异内容过多而无法显示
+ 0 - 0
web/js/4.js


文件差异内容过多而无法显示
+ 0 - 0
web/js/9.js


文件差异内容过多而无法显示
+ 0 - 0
web/js/app.js


部分文件因为文件数量过多而无法显示