tuonian 15 цаг өмнө
parent
commit
ada9d9436e
8 өөрчлөгдсөн 166 нэмэгдсэн , 19 устгасан
  1. 1 0
      .gitignore
  2. 13 13
      INFO.sh
  3. 2 1
      SynoBuildConf/build
  4. 1 1
      SynoBuildConf/install
  5. 2 3
      server/auth.go
  6. 139 0
      server/update.go
  7. 7 0
      ui/index.html
  8. 1 1
      ui/main.js

+ 1 - 0
.gitignore

@@ -1 +1,2 @@
 .idea
+build/

+ 13 - 13
INFO.sh

@@ -2,30 +2,30 @@
 
 source /toolkit/pkgscripts-ng/include/pkg_util.sh
 
-package="MyApplication"
-version="1.0-0001"
+package="WebToolBox"
+version="1.0-0002"
 os_min_ver="7.0-40000"
 startstop_restart_services="nginx.service"
 start_dep_services="nginx.service multi-user.target"
 #install_dep_packages="WebStation>=3.0.0-0323:PHP7.4>=7.4.18-0114:Apache2.4>=2.4.46-0122"
 install_dep_packages=""
-maintainer="MyCompany"
-maintainer_url="http://app.mycompany.com"
+maintainer="niantuo"
+maintainer_url="https://www.tonyandmoney.cn"
 distributor="MyCompany"
-distributor_url="http://app.mycompany.com"
+distributor_url="https://www.tonyandmoney.cn"
 silent_upgrade="no"
 arch="noarch"
-dsmappname="com.mycompany.app"
-displayname="Web example package"
-displayname_enu="Web example package"
-displayname_cht="Web 範例套件"
-description="This my sample package"
-description_enu="This my sample package"
-description_cht="這是我的範例套件"
+dsmappname="cn.tonyandmoney.app"
+displayname="Web工具箱"
+displayname_enu="Web Tool Box"
+displayname_cht="Web工具箱"
+description="Web 工具箱"
+description_enu="Web 工具箱"
+description_cht="Web 工具箱"
 #只有一个应用
 #dsmuidir="ui"
 #多目录时可配置,需要修改脚本,复制对应的目录
-dsmuidir="NginxUI:nginxui Trilium:trilium"
+dsmuidir="Main:ui NginxUI:nginxui Trilium:trilium"
 
 [ "$(caller)" != "0 NULL" ] && return 0
 

+ 2 - 1
SynoBuildConf/build

@@ -8,4 +8,5 @@ cd $dir
 export GOARCH=amd64
 export GOOS=linux
 export CGO_ENABLED=0
-go build -o ./build/app app.go
+go build -o ./build/auth.cgi server/auth.go
+go build -o ./build/update.cgi server/update.go

+ 1 - 1
SynoBuildConf/install

@@ -27,9 +27,9 @@ create_package_tgz() {
 
 create_spk() {
 	cp -av scripts $PKG_DIR/scripts
-	cp -av build/* $PKG_DIR/scripts/
 	cp -av conf $PKG_DIR
 	cp -av ui $PKG_DIR
+	cp -av build/* $PKG_DIR/
 	cp -av LICENSE $PKG_DIR
 	cp -av ui/icons/MyIcon_72.png  $PKG_DIR/PACKAGE_ICON.PNG
 	cp -av ui/icons/MyIcon_256.png $PKG_DIR/PACKAGE_ICON_256.PNG

+ 2 - 3
server/cgi.go → server/auth.go

@@ -1,4 +1,4 @@
-package server
+package main
 
 import (
 	"encoding/json"
@@ -10,7 +10,7 @@ import (
 	"syno-common/server/utils"
 )
 
-func Auth() (map[string]interface{}, error) {
+func main() {
 	// Todo:
 	// fix-up error handling with correct http responses (add --debug flag?/Synology's notifications?)
 	// worry about csrf
@@ -51,5 +51,4 @@ func Auth() (map[string]interface{}, error) {
 	data := resp.Data
 	jsonData, _ := json.Marshal(data)
 	fmt.Print(string(jsonData))
-	return data, nil
 }

+ 139 - 0
server/update.go

@@ -0,0 +1,139 @@
+package main
+
+import (
+	"fmt"
+	"html/template"
+	"io"
+	"log"
+	"net/http/cgi"
+	"os"
+	"os/user"
+	"path"
+	"syno-common/server/sso"
+	"syno-common/server/utils"
+)
+
+func main() {
+	// Todo:
+	// fix-up error handling with correct http responses (add --debug flag?/Synology's notifications?)
+	// worry about csrf
+	//dev = flag.Bool("dev", false, "Turns Authentication checks off")
+	//flag.Parse()
+
+	curDir := utils.GetCurDir()
+	var logF *os.File
+	var err error
+
+	logF, err = os.OpenFile(fmt.Sprintf("%v/commontools.log", curDir), os.O_CREATE|os.O_APPEND|os.O_RDWR, os.ModePerm)
+	if err == nil {
+		defer func() {
+			logF.Close()
+		}()
+		log.SetOutput(logF)
+	}
+	log.Println("initLog end")
+	log.Println("initLog end", curDir)
+	u, _ := user.Current()
+	if u != nil {
+		log.Println("user", u)
+	}
+
+	req, err := cgi.Request()
+	if err != nil {
+		log.Println("request fail", err)
+		utils.LogError("request fail!")
+	}
+
+	var method = os.Getenv("REQUEST_METHOD")
+	action := req.URL.Query().Get("action")
+	log.Println("req: ", method, action)
+	if method == "GET" {
+		RenderHTML("update.html")
+		log.Println("simple h5")
+		return
+	}
+
+	file, head, err := req.FormFile("file")
+	if err != nil {
+		log.Println("no files form is nil ", err)
+		utils.LogError("file is required!")
+	}
+	filenameWithSuffix := path.Base(head.Filename)
+	log.Println("filename", filenameWithSuffix)
+	uploadDir := path.Join(curDir, "uploads")
+	if !utils.FileIsExist(uploadDir) {
+		os.MkdirAll(uploadDir, 0777)
+	}
+	filePath := path.Join(uploadDir, filenameWithSuffix)
+	localFile, err := os.Create(filePath)
+	if err != nil {
+		log.Println("create file err", err)
+		utils.LogError("create file err")
+	}
+	defer localFile.Close()
+	_, err = io.Copy(localFile, file)
+	if err != nil {
+		log.Println("copy file err", err)
+		utils.LogError("copy file err")
+	}
+
+	if action == "portal" {
+		dstDir := path.Join(curDir, "web")
+		err = utils.Unzip(filePath, dstDir)
+		if err != nil {
+			log.Println("unzip fail", err)
+			utils.LogError("unzip fail")
+		}
+	}
+
+	utils.RespData(sso.RespJSON{
+		Data: filenameWithSuffix,
+		Code: 1,
+		Msg:  "success",
+	})
+}
+
+func RenderHTML(filename string) {
+	fmt.Print("Status: 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n")
+
+	htmlDir := path.Join(utils.GetCurDir(), "html")
+	if !utils.FileIsExist(htmlDir) {
+		htmlDir = path.Join(utils.GetCurDir(), "../", "html")
+	}
+	absPath := path.Join(htmlDir, filename)
+	if !utils.FileIsExist(absPath) {
+		utils.LogError("filename not exist ", filename)
+	}
+	log.Println("template path", absPath)
+
+	temp, err := template.ParseFiles(absPath)
+	if err != nil {
+		utils.LogError("ParseFiles error ", err.Error())
+	}
+
+	data := map[string]any{}
+
+	//var writer = StringWriter{}
+	err = temp.Execute(os.Stdout, data)
+	if err != nil {
+		log.Println("execute fail", err)
+		//utils.LogError("internal error")
+	}
+	//log.Println(writer.ToString())
+	//fmt.Print(writer.ToString())
+}
+
+type StringWriter struct {
+	Data []byte
+	Len  int
+}
+
+func (s *StringWriter) Write(p []byte) (n int, err error) {
+	s.Data = append(s.Data, p...)
+	s.Len = s.Len + len(p)
+	fmt.Println("Write", len(p))
+	return s.Len, nil
+}
+func (s *StringWriter) ToString() string {
+	return string(s.Data)
+}

+ 7 - 0
ui/index.html

@@ -6,5 +6,12 @@
 </head>
 <body>
 不知道是不是这样,还是哪样
+
+<form action="3rdparty/WebToolBox/auth.cgi?action=portal" method="post" enctype="multipart/form-data">
+    <div class="btns">
+        <button>登录</button>
+    </div>
+
+</form>
 </body>
 </html>

+ 1 - 1
ui/main.js

@@ -23,7 +23,7 @@ Ext.define('cn.tonyandmoney.app.Main', {
             items: [
                 new Ext.BoxComponent({
                     height: "100%",
-                    html: '<iframe src="3rdparty/ui/index.html”" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%"></iframe>'
+                    html: '<iframe src="3rdparty/WebToolBox/ui/index.html”" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%"></iframe>'
                 })
             ]
         }, cfg);