From 468c609481326d9d97d063ccf6d6f17ce1d0a43a Mon Sep 17 00:00:00 2001 From: boyce <6549168@qq.com> Date: Sat, 27 Jul 2019 17:34:05 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sysmodule/DBModule.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sysmodule/DBModule.go b/sysmodule/DBModule.go index 2e9f04a..6224c81 100644 --- a/sysmodule/DBModule.go +++ b/sysmodule/DBModule.go @@ -23,13 +23,13 @@ const ( // DBModule ... type DBModule struct { service.BaseModule - db *sql.DB - url string - username string - password string - dbname string - maxconn int - PrintTime time.Duration + db *sql.DB + url string + username string + password string + dbname string + maxconn int + PrintTime time.Duration syncExecuteFun chan SyncFun syncCoroutineNum int } @@ -373,7 +373,7 @@ func (slf *DBModule) QueryEx(query string, args ...interface{}) (*DataSetList, e TimeFuncPass := time.Since(TimeFuncStart) if slf.IsPrintTimeLog(TimeFuncPass) { - service.GetLogger().Printf(service.LEVER_INFO, "DBModule QueryEx Time %s , Query :%s , args :%+v",TimeFuncPass,query,args) + service.GetLogger().Printf(service.LEVER_INFO, "DBModule QueryEx Time %s , Query :%s , args :%+v", TimeFuncPass, query, args) } if err != nil { service.GetLogger().Printf(service.LEVER_ERROR, "Query:%s(%v)", query, err) @@ -514,7 +514,7 @@ func (slf *DBModule) RunExecuteDBCoroutine() { func (slf *DataSetList) UnMarshal(args ...interface{}) error { if len(slf.dataSetList) != len(args) { - return errors.New("Data set len(%d) is not equal to args!") + return errors.New(fmt.Sprintf("Data set len(%d,%d) is not equal to args!", len(slf.dataSetList), len(args))) } for _, out := range args { From 7bbfc9e21db0d11ffc5a16ae1f9e6535dffffcc3 Mon Sep 17 00:00:00 2001 From: boyce <6549168@qq.com> Date: Sat, 27 Jul 2019 18:41:38 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=98=B2=E6=AD=A2SQL=E6=B3=A8=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sysmodule/DBModule.go | 67 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/sysmodule/DBModule.go b/sysmodule/DBModule.go index 6224c81..5b9a3ad 100644 --- a/sysmodule/DBModule.go +++ b/sysmodule/DBModule.go @@ -241,14 +241,12 @@ func (slf *DBResult) mapSingle2interface(m map[string]string, v reflect.Value) e return nil } - -func (slf *DBModule) SetQuerySlowTime(Time time.Duration){ +func (slf *DBModule) SetQuerySlowTime(Time time.Duration) { slf.PrintTime = Time } - -func (slf *DBModule) IsPrintTimeLog(Time time.Duration)bool{ - if slf.PrintTime != 0 && Time >= slf.PrintTime{ +func (slf *DBModule) IsPrintTimeLog(Time time.Duration) bool { + if slf.PrintTime != 0 && Time >= slf.PrintTime { return true } return false @@ -337,8 +335,52 @@ func (slf *SyncQueryDBResultEx) Get(timeoutMs int) (*DataSetList, error) { return nil, fmt.Errorf("Getting the return result timeout [%d]ms", timeoutMs) } +func (slf *DBModule) CheckArgs(args ...interface{}) error { + for _, val := range args { + if reflect.TypeOf(val).Kind() == reflect.String { + retVal := val.(string) + if strings.Contains(retVal, "-") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(retVal, "&") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(retVal, "=") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(retVal, "%") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(retVal, "'") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(strings.ToLower(retVal), "delete ") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(strings.ToLower(retVal), "truncate ") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(strings.ToLower(retVal), " or ") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + if strings.Contains(strings.ToLower(retVal), "from ") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } + } + } + + return nil +} + // Query ... func (slf *DBModule) Query(query string, args ...interface{}) DBResult { + if slf.CheckArgs(args) != nil { + ret := DBResult{} + service.GetLogger().Printf(service.LEVER_ERROR, "CheckArgs is error :%s", query) + ret.Err = fmt.Errorf("CheckArgs is error!") + return ret + } + if slf.db == nil { ret := DBResult{} service.GetLogger().Printf(service.LEVER_ERROR, "cannot connect database:%s", query) @@ -363,6 +405,11 @@ func (slf *DBModule) QueryEx(query string, args ...interface{}) (*DataSetList, e datasetList.tag = "json" datasetList.blur = true + if slf.CheckArgs(args) != nil { + service.GetLogger().Printf(service.LEVER_ERROR, "CheckArgs is error :%s", query) + return &datasetList, fmt.Errorf("CheckArgs is error!") + } + if slf.db == nil { service.GetLogger().Printf(service.LEVER_ERROR, "cannot connect database:%s", query) return &datasetList, fmt.Errorf("cannot connect database!") @@ -372,7 +419,7 @@ func (slf *DBModule) QueryEx(query string, args ...interface{}) (*DataSetList, e rows, err := slf.db.Query(query, args...) TimeFuncPass := time.Since(TimeFuncStart) - if slf.IsPrintTimeLog(TimeFuncPass) { + if slf.IsPrintTimeLog(TimeFuncPass) { service.GetLogger().Printf(service.LEVER_INFO, "DBModule QueryEx Time %s , Query :%s , args :%+v", TimeFuncPass, query, args) } if err != nil { @@ -454,11 +501,17 @@ func (slf *DBModule) Exec(query string, args ...interface{}) (*DBResultEx, error return ret, fmt.Errorf("cannot connect database!") } + if slf.CheckArgs(args) != nil { + service.GetLogger().Printf(service.LEVER_ERROR, "CheckArgs is error :%s", query) + //return ret, fmt.Errorf("cannot connect database!") + return ret, fmt.Errorf("CheckArgs is error!") + } + TimeFuncStart := time.Now() res, err := slf.db.Exec(query, args...) TimeFuncPass := time.Since(TimeFuncStart) if slf.IsPrintTimeLog(TimeFuncPass) { - service.GetLogger().Printf(service.LEVER_INFO, "DBModule QueryEx Time %s , Query :%s , args :%+v",TimeFuncPass,query,args) + service.GetLogger().Printf(service.LEVER_INFO, "DBModule QueryEx Time %s , Query :%s , args :%+v", TimeFuncPass, query, args) } if err != nil { service.GetLogger().Printf(service.LEVER_ERROR, "Exec:%s(%v)", query, err) From 716a8e0946bd4543efa7795b1039e200e96142b1 Mon Sep 17 00:00:00 2001 From: boyce <6549168@qq.com> Date: Sat, 27 Jul 2019 18:49:00 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sysmodule/DBModule.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sysmodule/DBModule.go b/sysmodule/DBModule.go index 5b9a3ad..94b75b9 100644 --- a/sysmodule/DBModule.go +++ b/sysmodule/DBModule.go @@ -342,6 +342,9 @@ func (slf *DBModule) CheckArgs(args ...interface{}) error { if strings.Contains(retVal, "-") == true { return fmt.Errorf("CheckArgs is error arg is %+v", retVal) } + if strings.Contains(retVal, "#") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } if strings.Contains(retVal, "&") == true { return fmt.Errorf("CheckArgs is error arg is %+v", retVal) } @@ -366,6 +369,9 @@ func (slf *DBModule) CheckArgs(args ...interface{}) error { if strings.Contains(strings.ToLower(retVal), "from ") == true { return fmt.Errorf("CheckArgs is error arg is %+v", retVal) } + if strings.Contains(strings.ToLower(retVal), "set ") == true { + return fmt.Errorf("CheckArgs is error arg is %+v", retVal) + } } } From 05c5f0a935e150ea6adcbe91f3aa8866b0e266de Mon Sep 17 00:00:00 2001 From: boyce <6549168@qq.com> Date: Mon, 29 Jul 2019 20:50:24 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=AE=BE=E4=B8=BA30=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rpc/client.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpc/client.go b/rpc/client.go index 9a6137f..7865491 100644 --- a/rpc/client.go +++ b/rpc/client.go @@ -347,9 +347,9 @@ func (client *Client) Call(serviceMethod string, args interface{}, reply interfa select { case call := <-client.Go(serviceMethod, args, reply, make(chan *Call, 1), false).Done: return call.Error - case <-time.After(15 * time.Second): + case <-time.After(30 * time.Second): } //call := <-client.Go(serviceMethod, args, reply, make(chan *Call, 1)).Done - return errors.New(fmt.Sprintf("Call RPC %s is time out 10s", serviceMethod)) + return errors.New(fmt.Sprintf("Call RPC %s is time out 30s", serviceMethod)) } From 9871b93e1023f5d0e37b04a7d5e5770d46e5486b Mon Sep 17 00:00:00 2001 From: Haki Date: Tue, 30 Jul 2019 10:12:28 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90get?= =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81=E8=BF=87=E6=BB=A4=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sysservice/httpserverervice.go | 36 ++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/sysservice/httpserverervice.go b/sysservice/httpserverervice.go index d07eaa1..2725a05 100644 --- a/sysservice/httpserverervice.go +++ b/sysservice/httpserverervice.go @@ -130,23 +130,6 @@ func (slf *HttpServerService) staticServer(w http.ResponseWriter, r *http.Reques w.Write([]byte(msg)) } - // 在这儿处理例外路由接口 - var errRet error - for _, filter := range slf.httpfiltrateList { - ret := filter(r.URL.Path, w, r) - if ret == nil { - errRet = nil - break - } else { - errRet = ret - } - } - - if errRet != nil { - w.Write([]byte(errRet.Error())) - return - } - nowpath, _ := os.Getwd() upath := r.URL.Path destLocalPath := nowpath + upath @@ -163,6 +146,24 @@ func (slf *HttpServerService) staticServer(w http.ResponseWriter, r *http.Reques } //上传资源 case "POST": + + // 在这儿处理例外路由接口 + var errRet error + for _, filter := range slf.httpfiltrateList { + ret := filter(r.URL.Path, w, r) + if ret == nil { + errRet = nil + break + } else { + errRet = ret + } + } + + if errRet != nil { + w.Write([]byte(errRet.Error())) + return + } + r.ParseMultipartForm(32 << 20) // max memory is set to 32MB resourceFile, resourceFileHeader, err := r.FormFile("file") if err != nil { @@ -190,6 +191,7 @@ func (slf *HttpServerService) staticServer(w http.ResponseWriter, r *http.Reques defer localfd.Close() io.Copy(localfd, resourceFile) + writeResp(http.StatusOK, upath+fileName) }