小改造gotty,使之适合接收经过一层加密的URL

当然,比起密码设置,这个安全性也不是特别高,

但比起直接传参数。

还是要专业一些的。

其实现思路分两种:

第一种是在gotty.js之内加入解url的函数。

第二种在是go源代码时,加入同等的解密函数。

哈,第一种快,只要懂js。

第二种要懂go。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

但,就算是第一种,你以为,只要更改resources目录下的gotty.js就可以了么?

否!!!这里只是一个js的原文件,而gotty的实现思路,是将resources下的资源文件,

通过一个叫go-bindata的东东,

把静态文件封装到go的源文件中来实现文件打包,并通过统一的接口来调用。

不信的话,看与app.go平行的resource.go文件前几行:

// Code generated by go-bindata.
// sources:
// bindata/static/favicon.png
// bindata/static/index.html
// bindata/static/js/gotty.js
// bindata/static/js/hterm.js
// DO NOT EDIT!

package app

import (
	"bytes"
	"compress/gzip"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func bindataRead(data []byte, name string) ([]byte, error) {
	gz, err := gzip.NewReader(bytes.NewBuffer(data))
	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}

	var buf bytes.Buffer
	_, err = io.Copy(&buf, gz)
	clErr := gz.Close()

	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}
	if clErr != nil {
		return nil, err
	}

	return buf.Bytes(), nil
}

type asset struct {
	bytes []byte
	info  os.FileInfo
}

type bindataFileInfo struct {
	name    string
	size    int64
	mode    os.FileMode
	modTime time.Time
}

func (fi bindataFileInfo) Name() string {
	return fi.name
}
func (fi bindataFileInfo) Size() int64 {
	return fi.size
}
func (fi bindataFileInfo) Mode() os.FileMode {
	return fi.mode
}
func (fi bindataFileInfo) ModTime() time.Time {
	return fi.modTime
}
func (fi bindataFileInfo) IsDir() bool {
	return false
}
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

  

so,为了向gotty.js中加入几行,我得先改gotty.js里的文件,

然后,通过go-bindata将这个js文件更新到代码中。

https://www.b612.me/golang/103.html

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

go-bindata通过把静态文件封装到go的源文件中来实现文件打包,并通过统一的接口来调用

 

安装

go get github.com/jteeuwen/go-bindata/...
go get github.com/elazarl/go-bindata-assetfs/...
go install
 

使用

go-bindata  -pkg main -o data/bindata.go data/

上述命令便能把data中文件打包为bindata.go
或下述命令

go-bindata-assetfs data/...

使用相对路径获得文件数据

datas, err := Asset("data/someting")

猜你喜欢

转载自www.cnblogs.com/aguncn/p/10694281.html