123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package main
- import (
- "context"
- "fmt"
- "github.com/importcjj/sensitive"
- "go.mongodb.org/mongo-driver/bson/primitive"
- "google.golang.org/grpc"
- "gopkg.in/yaml.v3"
- "io/ioutil"
- "log"
- "net"
- "sensitiveWords.udp/proto_grpc"
- "sensitiveWords.udp/util"
- "strings"
- )
- const (
- PORT = ":50051"
- YAMLFILE = "./server.yaml"
- )
- var YamlConfig YAMLConfig
- var MixDataMgo *util.MongodbSim
- var Filter *sensitive.Filter
- func init() {
- yamlFile, err := ioutil.ReadFile(YAMLFILE)
- if err != nil {
- log.Fatalln("load conf error")
- }
- err = yaml.Unmarshal(yamlFile, &YamlConfig)
- if err != nil {
- fmt.Println(err.Error())
- }
- log.Printf("%#v", YamlConfig)
- MixDataMgo = &util.MongodbSim{
- MongodbAddr: YamlConfig.MixdataMgoAddr,
- Size: YamlConfig.MongodbPoolSize,
- DbName: YamlConfig.DbName,
- UserName: YamlConfig.UserName,
- PassWord: YamlConfig.PassWord,
- }
- 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
- start_id,endid:="",""
- 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++
- //Filter = sensitive.New()
- //runtime.GC()
- }
- log.Println("init ok", initnum)
- }
- func main() {
- lis, err := net.Listen("tcp", PORT)
- if err != nil {
- log.Fatalf("failed to listen: %v", err)
- }
- s := grpc.NewServer()
- proto_grpc.RegisterSensitiveWordsServer(s, &server{})
- log.Println("server start:", PORT)
- if err := s.Serve(lis); err != nil {
- log.Fatalf("failed to serve: %v", err)
- }
- }
- type server struct {
- proto_grpc.SensitiveWordsServer
- }
- func (s *server) Search(ctx context.Context, in *proto_grpc.Request) (*proto_grpc.ResultSensitiveWords, error) {
- text := in.GetText()
- log.Println(text)
- findAll := Filter.FindAll(text)
- return &proto_grpc.ResultSensitiveWords{SensitiveWords: strings.Join(findAll, ",")}, nil
- }
- type YAMLConfig struct {
- MixdataMgoAddr string `yaml:"mixdataMgoAddr"`
- UserName string `yaml:"userName"`
- PassWord string `yaml:"passWord"`
- DbName string `yaml:"dbName"`
- MongodbPoolSize int `yaml:"mongodbPoolSize"`
- TaskGteId string `yaml:"taskGteId"`
- TaskLteId string `yaml:"taskLteId"`
- }
- func StringTOBsonId(id string) primitive.ObjectID {
- objectId, _ := primitive.ObjectIDFromHex(id)
- return objectId
- }
- func BsonTOStringId(id interface{}) string {
- return id.(primitive.ObjectID).Hex()
- }
|