From 95ea9b34334e26ab3638597234ef548f8d03a672 Mon Sep 17 00:00:00 2001 From: guzeng Date: Sat, 21 Aug 2021 14:42:06 +0800 Subject: [PATCH] debug --- data.go | 44 +++++++++++++++++++++++++++++------ go.mod | 5 ++-- supplier.pb.go | 63 +++++++++++++++++++++++++++++++++++++++----------- supplier.proto | 19 ++++++++++----- 4 files changed, 102 insertions(+), 29 deletions(-) diff --git a/data.go b/data.go index 2420242..3a7c236 100644 --- a/data.go +++ b/data.go @@ -10,7 +10,7 @@ import ( "github.com/golang/protobuf/proto" ) -func SetResData(data interface{}, res *Params) { +func SetResData(data interface{}, res *Response) { res_data_json, err := json.Marshal(data) if err == nil { @@ -27,7 +27,7 @@ func SetResData(data interface{}, res *Params) { } -func SetReqData(arg interface{}) (*Params, error) { +func SetReqData(arg interface{}) (*Request, error) { data_json, err := json.Marshal(arg) if err != nil { return nil, err @@ -41,16 +41,16 @@ func SetReqData(arg interface{}) (*Params, error) { sign := Sign(encryData, now) - return &Params{proto.String(encryData), proto.String(now), proto.String(sign), nil}, nil + return &Request{proto.String(encryData), proto.String(now), proto.String(sign), nil}, nil } -func GetData(param *Params) (string, error) { - res_data := param.GetData() +func GetReqData(req *Request) (string, error) { + res_data := req.GetData() if res_data != "" { - time_int64, err := strconv.ParseInt(param.GetTime(), 10, 64) + time_int64, err := strconv.ParseInt(req.GetTime(), 10, 64) if err != nil { return "", err } @@ -62,7 +62,37 @@ func GetData(param *Params) (string, error) { return "", errors.New("返回时间错误") } - check_sign := CheckSign(param.GetSign(), res_data, param.GetTime()) + check_sign := CheckSign(req.GetSign(), res_data, req.GetTime()) + if !check_sign { + return "", errors.New("返回数据签名错误") + } + + //解密 + return crypter.DesDe(res_data, DES_KEY), nil + + } + + return "", nil +} + +func GetResData(res *Response) (string, error) { + res_data := res.GetData() + + if res_data != "" { + + time_int64, err := strconv.ParseInt(res.GetTime(), 10, 64) + if err != nil { + return "", err + } + + now_int64 := time.Now().Unix() + + if now_int64-time_int64 > 10 || time_int64-now_int64 > 10 { + //时间误差前后10秒,返回 + return "", errors.New("返回时间错误") + } + + check_sign := CheckSign(res.GetSign(), res_data, res.GetTime()) if !check_sign { return "", errors.New("返回数据签名错误") } diff --git a/go.mod b/go.mod index 2c59307..b9c83d4 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,9 @@ go 1.14 require ( git.tetele.net/tgo/conf v0.34.1 // indirect - git.tetele.net/tgo/crypter v0.2.2 // indirect - github.com/chai2010/protorpc v1.1.3 // indirect + git.tetele.net/tgo/crypter v0.2.2 + github.com/chai2010/protorpc v1.1.3 + github.com/golang/protobuf v1.0.0 golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect ) diff --git a/supplier.pb.go b/supplier.pb.go index 746ec69..c3f89c8 100644 --- a/supplier.pb.go +++ b/supplier.pb.go @@ -9,7 +9,8 @@ It is generated from these files: supplier.proto It has these top-level messages: - Params + Request + Response */ package supplierrpc @@ -27,32 +28,66 @@ import protorpc "github.com/chai2010/protorpc" var _ = proto.Marshal var _ = math.Inf -type Params struct { +// 配置信息请求结构 +type Request struct { Data *string `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"` Time *string `protobuf:"bytes,2,opt,name=time" json:"time,omitempty"` Sign *string `protobuf:"bytes,3,opt,name=sign" json:"sign,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *Params) Reset() { *m = Params{} } -func (m *Params) String() string { return proto.CompactTextString(m) } -func (*Params) ProtoMessage() {} +func (m *Request) Reset() { *m = Request{} } +func (m *Request) String() string { return proto.CompactTextString(m) } +func (*Request) ProtoMessage() {} -func (m *Params) GetData() string { +func (m *Request) GetData() string { if m != nil && m.Data != nil { return *m.Data } return "" } -func (m *Params) GetTime() string { +func (m *Request) GetTime() string { if m != nil && m.Time != nil { return *m.Time } return "" } -func (m *Params) GetSign() string { +func (m *Request) GetSign() string { + if m != nil && m.Sign != nil { + return *m.Sign + } + return "" +} + +// 配置信息响应结构 +type Response struct { + Data *string `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"` + Time *string `protobuf:"bytes,2,opt,name=time" json:"time,omitempty"` + Sign *string `protobuf:"bytes,3,opt,name=sign" json:"sign,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Response) Reset() { *m = Response{} } +func (m *Response) String() string { return proto.CompactTextString(m) } +func (*Response) ProtoMessage() {} + +func (m *Response) GetData() string { + if m != nil && m.Data != nil { + return *m.Data + } + return "" +} + +func (m *Response) GetTime() string { + if m != nil && m.Time != nil { + return *m.Time + } + return "" +} + +func (m *Response) GetSign() string { if m != nil && m.Sign != nil { return *m.Sign } @@ -63,9 +98,9 @@ func init() { } type SupplierService interface { - Get(in *Params, out *Params) error - GetByUuid(in *Params, out *Params) error - IsOpen(in *Params, out *Params) error + Get(in *Request, out *Response) error + GetByUuid(in *Request, out *Response) error + IsOpen(in *Request, out *Response) error } // AcceptSupplierServiceClient accepts connections on the listener and serves requests @@ -137,13 +172,13 @@ func NewSupplierServiceClient(conn io.ReadWriteCloser) (*SupplierServiceClient, return &SupplierServiceClient{c}, c } -func (c *SupplierServiceClient) Get(in *Params, out *Params) error { +func (c *SupplierServiceClient) Get(in *Request, out *Response) error { return c.Call("SupplierService.Get", in, out) } -func (c *SupplierServiceClient) GetByUuid(in *Params, out *Params) error { +func (c *SupplierServiceClient) GetByUuid(in *Request, out *Response) error { return c.Call("SupplierService.GetByUuid", in, out) } -func (c *SupplierServiceClient) IsOpen(in *Params, out *Params) error { +func (c *SupplierServiceClient) IsOpen(in *Request, out *Response) error { return c.Call("SupplierService.IsOpen", in, out) } diff --git a/supplier.proto b/supplier.proto index fae1b9c..6714836 100644 --- a/supplier.proto +++ b/supplier.proto @@ -1,16 +1,23 @@ syntax = "proto3"; package supplierrpc; - - -message Params { +// 配置信息请求结构 +message Request { string data = 1; string time = 2; string sign = 3; } + +// 配置信息响应结构 +message Response { + string data = 1; + string time = 2; + string sign = 3; +} + // rpc方法 service SupplierService { - rpc Get (Params) returns (Params); // 使用id查询 - rpc GetByUuid (Params) returns (Params); // 使用uuid查询 - rpc IsOpen (Params) returns (Params); // 是否营业中 + rpc Get (Request) returns (Response); // 使用id查询 + rpc GetByUuid (Request) returns (Response); // 使用uuid查询 + rpc IsOpen (Request) returns (Response); // 是否营业中 } \ No newline at end of file