|
@@ -6,25 +6,28 @@ import (
|
|
|
"github.com/importcjj/sensitive"
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
"google.golang.org/grpc"
|
|
|
- "gopkg.in/yaml.v3"
|
|
|
+ "gopkg.in/yaml.v2"
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
|
+ "math/big"
|
|
|
"net"
|
|
|
- "runtime"
|
|
|
+ "net/http"
|
|
|
"sensitiveWords.udp/proto_grpc"
|
|
|
"sensitiveWords.udp/util"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
- "time"
|
|
|
+ "gopkg.in/olivere/elastic.v1"
|
|
|
)
|
|
|
|
|
|
const (
|
|
|
- PORT = ":50051"
|
|
|
YAMLFILE = "./server.yaml"
|
|
|
)
|
|
|
|
|
|
var YamlConfig YAMLConfig
|
|
|
var MixDataMgo *util.MongodbSim
|
|
|
var Filter *sensitive.Filter
|
|
|
+var es_type, es_index string
|
|
|
+var Client_Es *elastic.Client
|
|
|
|
|
|
func init() {
|
|
|
yamlFile, err := ioutil.ReadFile(YAMLFILE)
|
|
@@ -45,82 +48,59 @@ func init() {
|
|
|
}
|
|
|
MixDataMgo.InitPool()
|
|
|
|
|
|
- gteid, err := primitive.ObjectIDFromHex(YamlConfig.TaskGteId)
|
|
|
- if err != nil {
|
|
|
- log.Fatalln(err)
|
|
|
- }
|
|
|
- lteid, err := primitive.ObjectIDFromHex(YamlConfig.TaskLteId)
|
|
|
- if err != nil {
|
|
|
- log.Fatalln(err)
|
|
|
- }
|
|
|
- iter := MixDataMgo.GetMgoConn().C("unique_qyxy").Find(map[string]interface{}{
|
|
|
- "_id": map[string]interface{}{
|
|
|
- "$gte": gteid,
|
|
|
- "$lte": lteid,
|
|
|
- },
|
|
|
- }).Sort("_id").Iter()
|
|
|
- Filter = sensitive.New()
|
|
|
- var initnum uint
|
|
|
- saveIdArr ,start_id:= make([]map[string]string,0),""
|
|
|
- var m runtime.MemStats
|
|
|
- for tmp := map[string]interface{}{}; iter.Next(&tmp); tmp = map[string]interface{}{} {
|
|
|
- if start_id=="" {
|
|
|
- start_id = BsonTOStringId(tmp["_id"])
|
|
|
- }
|
|
|
- Filter.AddWord(tmp["qy_name"].(string))
|
|
|
- initnum++
|
|
|
- if initnum%10000==0 {
|
|
|
- runtime.ReadMemStats(&m)
|
|
|
- men :=toMegaBytes(m.HeapAlloc)
|
|
|
- log.Printf("current index %d\tos %.2f M",initnum, men)
|
|
|
- if men>500 {
|
|
|
- saveIdArr = append(saveIdArr, map[string]string{
|
|
|
- "start":start_id,
|
|
|
- "end":BsonTOStringId(tmp["_id"]),
|
|
|
- })
|
|
|
- runtime.GC()
|
|
|
- Filter = sensitive.New()
|
|
|
- start_id = ""
|
|
|
- time.Sleep(time.Second*5)
|
|
|
- }
|
|
|
- }
|
|
|
- break
|
|
|
+ Client_Es ,_= elastic.NewClient(http.DefaultClient, "http://192.168.3.11:9800")
|
|
|
+ es_type, es_index = "azktest","azktest"
|
|
|
|
|
|
- }
|
|
|
|
|
|
- saveIdArr = append(saveIdArr, map[string]string{
|
|
|
- "start":start_id,
|
|
|
- "end":"",
|
|
|
- })
|
|
|
+}
|
|
|
|
|
|
- for k,v:=range saveIdArr{
|
|
|
- log.Println("第",k,"段",v["start"],v["end"])
|
|
|
- }
|
|
|
|
|
|
- log.Println("init ok", initnum)
|
|
|
-}
|
|
|
|
|
|
+func main() {
|
|
|
|
|
|
-func toMegaBytes(bytes uint64) float64 {
|
|
|
- return float64(bytes) / 1024 / 1024
|
|
|
-}
|
|
|
+ //淡赌跑断
|
|
|
|
|
|
+ if YamlConfig.IsAddTask==0{
|
|
|
+ initSensitiveWordsData() //初始化敏感词数据
|
|
|
+ }else {
|
|
|
+ go addTaskSensitiveWordsData() //增量
|
|
|
+ }
|
|
|
|
|
|
|
|
|
-func main() {
|
|
|
- lis, err := net.Listen("tcp", PORT)
|
|
|
+ lis, err := net.Listen("tcp", YamlConfig.Port)
|
|
|
if err != nil {
|
|
|
log.Fatalf("failed to listen: %v", err)
|
|
|
}
|
|
|
s := grpc.NewServer()
|
|
|
proto_grpc.RegisterSensitiveWordsServer(s, &server{})
|
|
|
- log.Println("server start:", PORT)
|
|
|
+ log.Println("server start:", YamlConfig.Port)
|
|
|
if err := s.Serve(lis); err != nil {
|
|
|
log.Fatalf("failed to serve: %v", err)
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//协议方法---等
|
|
|
type server struct {
|
|
|
proto_grpc.SensitiveWordsServer
|
|
|
}
|
|
@@ -140,7 +120,15 @@ type YAMLConfig struct {
|
|
|
MongodbPoolSize int `yaml:"mongodbPoolSize"`
|
|
|
TaskGteId string `yaml:"taskGteId"`
|
|
|
TaskLteId string `yaml:"taskLteId"`
|
|
|
+ IsAddTask int `yaml:"isAddTask"`
|
|
|
+ Port string `yaml:"port"`
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//其他方法
|
|
|
func StringTOBsonId(id string) primitive.ObjectID {
|
|
|
objectId, _ := primitive.ObjectIDFromHex(id)
|
|
|
return objectId
|
|
@@ -148,4 +136,171 @@ func StringTOBsonId(id string) primitive.ObjectID {
|
|
|
|
|
|
func BsonTOStringId(id interface{}) string {
|
|
|
return id.(primitive.ObjectID).Hex()
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func toMegaBytes(bytes uint64) float64 {
|
|
|
+ return float64(bytes) / 1024 / 1024
|
|
|
+}
|
|
|
+
|
|
|
+func IntAll(num interface{}) int {
|
|
|
+ return IntAllDef(num, 0)
|
|
|
+}
|
|
|
+
|
|
|
+func Int64All(num interface{}) int64 {
|
|
|
+ if i, ok := num.(int64); ok {
|
|
|
+ return int64(i)
|
|
|
+ } else if i0, ok0 := num.(int32); ok0 {
|
|
|
+ return int64(i0)
|
|
|
+ } else if i1, ok1 := num.(float64); ok1 {
|
|
|
+ return int64(i1)
|
|
|
+ } else if i2, ok2 := num.(int); ok2 {
|
|
|
+ return int64(i2)
|
|
|
+ } else if i3, ok3 := num.(float32); ok3 {
|
|
|
+ return int64(i3)
|
|
|
+ } else if i4, ok4 := num.(string); ok4 {
|
|
|
+ i64, _ := strconv.ParseInt(i4, 10, 64)
|
|
|
+ //in, _ := strconv.Atoi(i4)
|
|
|
+ return i64
|
|
|
+ } else if i5, ok5 := num.(int16); ok5 {
|
|
|
+ return int64(i5)
|
|
|
+ } else if i6, ok6 := num.(int8); ok6 {
|
|
|
+ return int64(i6)
|
|
|
+ } else if i7, ok7 := num.(*big.Int); ok7 {
|
|
|
+ in, _ := strconv.ParseInt(fmt.Sprint(i7), 10, 64)
|
|
|
+ return int64(in)
|
|
|
+ } else if i8, ok8 := num.(*big.Float); ok8 {
|
|
|
+ in, _ := strconv.ParseInt(fmt.Sprint(i8), 10, 64)
|
|
|
+ return int64(in)
|
|
|
+ } else {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func Float64All(num interface{}) float64 {
|
|
|
+ if i, ok := num.(float64); ok {
|
|
|
+ return float64(i)
|
|
|
+ } else if i0, ok0 := num.(int32); ok0 {
|
|
|
+ return float64(i0)
|
|
|
+ } else if i1, ok1 := num.(int64); ok1 {
|
|
|
+ return float64(i1)
|
|
|
+ } else if i2, ok2 := num.(int); ok2 {
|
|
|
+ return float64(i2)
|
|
|
+ } else if i3, ok3 := num.(float32); ok3 {
|
|
|
+ return float64(i3)
|
|
|
+ } else if i4, ok4 := num.(string); ok4 {
|
|
|
+ in, _ := strconv.ParseFloat(i4, 64)
|
|
|
+ return in
|
|
|
+ } else if i5, ok5 := num.(int16); ok5 {
|
|
|
+ return float64(i5)
|
|
|
+ } else if i6, ok6 := num.(int8); ok6 {
|
|
|
+ return float64(i6)
|
|
|
+ } else if i6, ok6 := num.(uint); ok6 {
|
|
|
+ return float64(i6)
|
|
|
+ } else if i6, ok6 := num.(uint8); ok6 {
|
|
|
+ return float64(i6)
|
|
|
+ } else if i6, ok6 := num.(uint16); ok6 {
|
|
|
+ return float64(i6)
|
|
|
+ } else if i6, ok6 := num.(uint32); ok6 {
|
|
|
+ return float64(i6)
|
|
|
+ } else if i6, ok6 := num.(uint64); ok6 {
|
|
|
+ return float64(i6)
|
|
|
+ } else if i7, ok7 := num.(*big.Float); ok7 {
|
|
|
+ in, _ := strconv.ParseFloat(fmt.Sprint(i7), 64)
|
|
|
+ return float64(in)
|
|
|
+ } else if i8, ok8 := num.(*big.Int); ok8 {
|
|
|
+ in, _ := strconv.ParseFloat(fmt.Sprint(i8), 64)
|
|
|
+ return float64(in)
|
|
|
+ } else {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func IntAllDef(num interface{}, defaultNum int) int {
|
|
|
+ if i, ok := num.(int); ok {
|
|
|
+ return int(i)
|
|
|
+ } else if i0, ok0 := num.(int32); ok0 {
|
|
|
+ return int(i0)
|
|
|
+ } else if i1, ok1 := num.(float64); ok1 {
|
|
|
+ return int(i1)
|
|
|
+ } else if i2, ok2 := num.(int64); ok2 {
|
|
|
+ return int(i2)
|
|
|
+ } else if i3, ok3 := num.(float32); ok3 {
|
|
|
+ return int(i3)
|
|
|
+ } else if i4, ok4 := num.(string); ok4 {
|
|
|
+ in, _ := strconv.Atoi(i4)
|
|
|
+ return int(in)
|
|
|
+ } else if i5, ok5 := num.(int16); ok5 {
|
|
|
+ return int(i5)
|
|
|
+ } else if i6, ok6 := num.(int8); ok6 {
|
|
|
+ return int(i6)
|
|
|
+ } else if i7, ok7 := num.(*big.Int); ok7 {
|
|
|
+ in, _ := strconv.Atoi(fmt.Sprint(i7))
|
|
|
+ return int(in)
|
|
|
+ } else if i8, ok8 := num.(*big.Float); ok8 {
|
|
|
+ in, _ := strconv.Atoi(fmt.Sprint(i8))
|
|
|
+ return int(in)
|
|
|
+ } else {
|
|
|
+ return defaultNum
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func ObjToString(old interface{}) string {
|
|
|
+ if nil == old {
|
|
|
+ return ""
|
|
|
+ } else {
|
|
|
+ r, _ := old.(string)
|
|
|
+ return r
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func ObjToStringDef(old interface{}, defaultstr string) string {
|
|
|
+ if nil == old {
|
|
|
+ return defaultstr
|
|
|
+ } else {
|
|
|
+ r, _ := old.(string)
|
|
|
+ if r == "" {
|
|
|
+ return defaultstr
|
|
|
+ }
|
|
|
+ return r
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//对象数组转成string数组
|
|
|
+func ObjArrToStringArr(old []interface{}) []string {
|
|
|
+ if old != nil {
|
|
|
+ new := make([]string, len(old))
|
|
|
+ for i, v := range old {
|
|
|
+ new[i] = v.(string)
|
|
|
+ }
|
|
|
+ return new
|
|
|
+ } else {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//对象数组转成map数组
|
|
|
+func ObjArrToMapArr(old []interface{}) []map[string]interface{} {
|
|
|
+ if old != nil {
|
|
|
+ new := make([]map[string]interface{}, len(old))
|
|
|
+ for i, v := range old {
|
|
|
+ new[i] = v.(map[string]interface{})
|
|
|
+ }
|
|
|
+ return new
|
|
|
+ } else {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//map数组转成对象数组
|
|
|
+func MapArrToObjArr(old []map[string]interface{}) []interface{} {
|
|
|
+ if old != nil {
|
|
|
+ new := make([]interface{}, len(old))
|
|
|
+ for i, v := range old {
|
|
|
+ new[i] = v
|
|
|
+ }
|
|
|
+ return new
|
|
|
+ } else {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+}
|