mirror of
				https://github.com/XZB-1248/Spark
				synced 2025-10-30 02:31:50 +08:00 
			
		
		
		
	initial commit
This commit is contained in:
		
							
								
								
									
										59
									
								
								client/common/common.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								client/common/common.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| package common | ||||
|  | ||||
| import ( | ||||
| 	"Spark/client/config" | ||||
| 	"Spark/modules" | ||||
| 	"Spark/utils" | ||||
| 	"encoding/hex" | ||||
| 	ws "github.com/gorilla/websocket" | ||||
| 	"github.com/imroc/req/v3" | ||||
| 	"sync" | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| type Conn struct { | ||||
| 	*ws.Conn | ||||
| 	Secret []byte | ||||
| } | ||||
|  | ||||
| var WSConn *Conn | ||||
| var lock = sync.Mutex{} | ||||
|  | ||||
| func SendPack(pack interface{}, wsConn *Conn) error { | ||||
| 	lock.Lock() | ||||
| 	defer lock.Unlock() | ||||
| 	data, err := utils.JSON.Marshal(pack) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	data, err = utils.Encrypt(data, wsConn.Secret) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if len(data) > 1024 { | ||||
| 		_, err = req.C().R(). | ||||
| 			SetBody(data). | ||||
| 			SetHeader(`Secret`, hex.EncodeToString(wsConn.Secret)). | ||||
| 			Send(`POST`, config.GetBaseURL(false)+`/ws`) | ||||
| 		return err | ||||
| 	} | ||||
| 	wsConn.SetWriteDeadline(time.Now().Add(5 * time.Second)) | ||||
| 	defer wsConn.SetWriteDeadline(time.Time{}) | ||||
| 	return wsConn.WriteMessage(ws.BinaryMessage, data) | ||||
| } | ||||
|  | ||||
| func SendCb(pack, prev modules.Packet, wsConn *Conn) error { | ||||
| 	if prev.Data != nil { | ||||
| 		trigger, ok := prev.Data[`event`] | ||||
| 		if ok { | ||||
| 			if pack.Data == nil { | ||||
| 				pack.Data = map[string]interface{}{ | ||||
| 					`callback`: trigger, | ||||
| 				} | ||||
| 			} else { | ||||
| 				pack.Data[`callback`] = trigger | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return SendPack(pack, wsConn) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 XZB
					XZB