Selaa lähdekoodia

feat:增加打开方式、更新按钮

master-opt
yuan_rh 4 vuotta sitten
vanhempi
commit
c157c2ed71
4 muutettua tiedostoa jossa 205 lisäystä ja 0 poistoa
  1. +2
    -0
      config/config.go
  2. +74
    -0
      handle/handle.go
  3. +3
    -0
      main.go
  4. +126
    -0
      websocket/websocket.go

+ 2
- 0
config/config.go Näytä tiedosto

@@ -20,6 +20,8 @@ var GobalIpfsUrl ="localhost:5001"
//ipfs引导节点默认网关,安装目录下 bin/fts.ini 可配
var ServerIpfsUrl = "10.240.10.238:5001"

var UpdaterName ="探索者更新.exe"

//var EtcdUrl="127.0.0.1:2379"




+ 74
- 0
handle/handle.go Näytä tiedosto

@@ -94,6 +94,29 @@ func InitLocalWorkSpace(conn *websocket.Conn,userId,projectName string) (error){
return nil
}

/**
初始化本地客户端配置
*/
func InitClientConfig(ipfsApi,ipfsBootstrap string) error{

//空格路径处理
ipfsPath=strings.Replace(os.Getenv("IPFS-PATH"),"\"","",1)+"\\ipfs.exe"


config.ServerIpfsUrl = ipfsApi
log.Println("初始化客户端配置项IPFS—API:"+config.ServerIpfsUrl)
ipfsBootstraps := strings.Split(ipfsBootstrap,";")
for _, simpleBootstrap := range ipfsBootstraps {
log.Println("增加引导节点:"+simpleBootstrap)
cmd := exec.Command(ipfsPath,"bootstrap", "add", simpleBootstrap)
err :=cmd.Run()
if err!=nil{
return err
}
}
return nil
}

/**
下载指令
@param hash ipfs哈希值
@@ -446,6 +469,7 @@ func UploadCommand(conn *websocket.Conn,absolutePath,fileName,projectName,dir st
//本地文件夹拷贝
err = sh.Get(prog.Hash,fmt.Sprint((absoluteDir+"\\"+fileName)))


if err != nil {
log.Println(err)
return err
@@ -601,6 +625,54 @@ func SubscriptionFileChange(conn *websocket.Conn, projectName string) error{
return nil
}

/**
打开方式
*/
func OpenFileWith(filePath string) error{

//判断文件有效性
_,err := os.Stat(filePath)
if err!=nil{
return err
}

//filePath = strings.Replace(filePath," ","~1",1)

cmd := exec.Command("rundll32.exe","shell32.dll,OpenAs_RunDLL",filePath);

err =cmd.Run()
if err!=nil{
log.Println(err)
return err
}
return nil
}

/**
手动检查软件更新
0:不强制更新
1:强制更新
*/
func CheckForUpdates(forceUpdate string) error{

tszdir :=os.Getenv("TSZDIR")

//判断文件有效性
_,err := os.Stat(tszdir+config.UpdaterName)
if err!=nil{
return err
}

cmd := exec.Command(tszdir+config.UpdaterName,"/checknow");
err =cmd.Run()
if err!=nil{
log.Println(err)
return err
}
return nil

}

func walkfunc(path string, info os.FileInfo, err error) error {

if info.IsDir()==false{
@@ -635,3 +707,5 @@ func walkfunc(path string, info os.FileInfo, err error) error {






+ 3
- 0
main.go Näytä tiedosto

@@ -46,6 +46,9 @@ func main() {
http.HandleFunc("/download", websocket.DownloadHandler)
http.HandleFunc("/init", websocket.InitLocalWorkSpaceHandler)
http.HandleFunc("/getFolderFileInfo", websocket.GetFolderFileInfoHandler)
http.HandleFunc("/openFileWith", websocket.OpenFileWithHandler)
http.HandleFunc("/checkForUpdates", websocket.CheckForUpdatesHandler)
http.HandleFunc("/initClientConfig", websocket.InitClientConfigHandler)

//服务端启动
log.Println("服务启动成功,监听端口7777,等待连接。")


+ 126
- 0
websocket/websocket.go Näytä tiedosto

@@ -133,6 +133,132 @@ ERR:
conn.Close()
}

func OpenFileWithHandler(w http.ResponseWriter, r *http.Request) {
//w.Write([]byte("hello"))
//收到http请求(upgrade),完成websocket协议转换
//在应答的header中放上upgrade:websoket
var (
conn *websocket.Conn
err error
//msgType int
data []byte
)
if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
//报错了,直接返回底层的websocket链接就会终断掉
return
}
//得到了websocket.Conn长连接的对象,实现数据的收发
for {
//Text(json), Binary
//if _, data, err = conn.ReadMessage(); err != nil {
if _, data, err = conn.ReadMessage(); err != nil {
//报错关闭websocket
goto ERR
}
//发送数据,判断返回值是否报错
log.Println("param OpenFileWithHandler:"+string(data))

err := handle.OpenFileWith(string(data))
if err!=nil{
log.Println(err)
if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil {
log.Println(err)
goto ERR
}
goto ERR
}

goto ERR
}
//error的标签
ERR:
conn.Close()
}

func CheckForUpdatesHandler(w http.ResponseWriter, r *http.Request) {
//w.Write([]byte("hello"))
//收到http请求(upgrade),完成websocket协议转换
//在应答的header中放上upgrade:websoket
var (
conn *websocket.Conn
err error
//msgType int
data []byte
)
if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
//报错了,直接返回底层的websocket链接就会终断掉
return
}
//得到了websocket.Conn长连接的对象,实现数据的收发
for {
//Text(json), Binary
//if _, data, err = conn.ReadMessage(); err != nil {
if _, data, err = conn.ReadMessage(); err != nil {
//报错关闭websocket
goto ERR
}
//发送数据,判断返回值是否报错
log.Println("param CheckForUpdatesHandler:"+string(data))

err := handle.CheckForUpdates(string(data))
if err!=nil{
log.Println(err)
if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil {
log.Println(err)
goto ERR
}
goto ERR
}

goto ERR
}
//error的标签
ERR:
conn.Close()
}

func InitClientConfigHandler(w http.ResponseWriter, r *http.Request) {
//w.Write([]byte("hello"))
//收到http请求(upgrade),完成websocket协议转换
//在应答的header中放上upgrade:websoket
var (
conn *websocket.Conn
err error
//msgType int
data []byte
)
if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
//报错了,直接返回底层的websocket链接就会终断掉
return
}
//得到了websocket.Conn长连接的对象,实现数据的收发
for {
//Text(json), Binary
//if _, data, err = conn.ReadMessage(); err != nil {
if _, data, err = conn.ReadMessage(); err != nil {
//报错关闭websocket
goto ERR
}
//发送数据,判断返回值是否报错
log.Println("param InitClientConfigHandler:"+string(data))
params :=strings.Split(string(data),"|")
err := handle.InitClientConfig(params[0],params[1])
if err!=nil{
log.Println(err)
if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil {
log.Println(err)
goto ERR
}
goto ERR
}

goto ERR
}
//error的标签
ERR:
conn.Close()
}

func GetFolderFileInfoHandler(w http.ResponseWriter, r *http.Request) {
//w.Write([]byte("hello"))
//收到http请求(upgrade),完成websocket协议转换


Ladataan…
Peruuta
Tallenna