main.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/grpc-ecosystem/go-grpc-prometheus"
  6. "github.com/importcjj/sensitive"
  7. "github.com/prometheus/client_golang/prometheus"
  8. "github.com/prometheus/client_golang/prometheus/promhttp"
  9. "google.golang.org/grpc"
  10. "gopkg.in/olivere/elastic.v1"
  11. "gopkg.in/yaml.v3"
  12. "io/ioutil"
  13. "log"
  14. "net"
  15. "net/http"
  16. "sensitiveWords.udp/proto_grpc"
  17. "sensitiveWords.udp/util"
  18. "strings"
  19. )
  20. const (
  21. YAMLFILE = "./server.yaml"
  22. )
  23. var YamlConfig YAMLConfig
  24. var Filter *sensitive.Filter
  25. var es_type, es_index string
  26. var Client_Es *elastic.Client
  27. var MixDataMgo *util.MongodbSim
  28. var (
  29. // Create a metrics registry.
  30. reg = prometheus.NewRegistry()
  31. // Create some standard server metrics.
  32. grpcMetrics = grpc_prometheus.NewServerMetrics()
  33. customizedCounterMetric = prometheus.NewCounterVec(prometheus.CounterOpts{
  34. Name: "demo_server_search_method_handle_count",
  35. Help: "Total number of RPCs handled on the server.",
  36. }, []string{"name"})
  37. )
  38. func init() {
  39. return
  40. yamlFile, err := ioutil.ReadFile(YAMLFILE)
  41. if err != nil {
  42. log.Fatalln("load conf error")
  43. }
  44. err = yaml.Unmarshal(yamlFile, &YamlConfig)
  45. if err != nil {
  46. fmt.Println(err.Error())
  47. }
  48. log.Printf("%#v", YamlConfig)
  49. MixDataMgo = &util.MongodbSim{
  50. MongodbAddr: YamlConfig.MixdataMgoAddr,
  51. Size: YamlConfig.MongodbPoolSize,
  52. DbName: YamlConfig.DbName,
  53. UserName: YamlConfig.UserName,
  54. PassWord: YamlConfig.PassWord,
  55. }
  56. MixDataMgo.InitPool()
  57. Client_Es ,_= elastic.NewClient(http.DefaultClient, "http://192.168.3.11:9800")
  58. es_type, es_index = "azktest","azktest"
  59. //政府采购 - 公共资源 (23 25)
  60. reg.MustRegister(grpcMetrics, customizedCounterMetric)
  61. }
  62. func main() {
  63. MixDataMgo = &util.MongodbSim{
  64. MongodbAddr: "192.168.3.207:27092",
  65. Size: 20,
  66. DbName: "zhengkun",
  67. UserName: "",
  68. PassWord: "",
  69. }
  70. MixDataMgo.InitPool()
  71. Client_Es ,_= elastic.NewClient(http.DefaultClient, "http://192.168.3.11:9800")
  72. es_type, es_index = "azktest","azktest"
  73. temporaryTest()
  74. return
  75. //淡赌跑断
  76. //if YamlConfig.IsAddTask == 0 {
  77. // initSensitiveWordsData() //初始化敏感词数据
  78. //} else {
  79. // go addTaskSensitiveWordsData() //增量-改配置文件
  80. //}
  81. lis, err := net.Listen("tcp", YamlConfig.Port)
  82. if err != nil {
  83. log.Fatalf("failed to listen: %v", err)
  84. }
  85. defer lis.Close()
  86. // Create a HTTP server for prometheus.
  87. httpServer := &http.Server{
  88. Handler: promhttp.HandlerFor(reg, promhttp.HandlerOpts{}),
  89. Addr: fmt.Sprintf("0.0.0.0:%d",
  90. 2092),
  91. }
  92. grpcServer := grpc.NewServer(
  93. //grpc.StreamInterceptor(grpcMetrics.StreamServerInterceptor()),
  94. grpc.UnaryInterceptor(grpcMetrics.UnaryServerInterceptor()))
  95. proto_grpc.RegisterSensitiveWordsServer(grpcServer, &server{})
  96. // Initialize all metrics.
  97. grpcMetrics.InitializeMetrics(grpcServer)
  98. // Start your http server for prometheus.
  99. go func() {
  100. if err := httpServer.ListenAndServe(); err != nil {
  101. log.Fatal("Unable to start a http server.")
  102. }
  103. }()
  104. log.Println("server start:", YamlConfig.Port)
  105. if err := grpcServer.Serve(lis); err != nil {
  106. log.Fatalf("failed to serve: %v", err)
  107. }
  108. }
  109. //协议方法---等
  110. type server struct {
  111. proto_grpc.SensitiveWordsServer
  112. }
  113. func (s *server) Search(ctx context.Context, in *proto_grpc.Request) (*proto_grpc.ResultSensitiveWords, error) {
  114. customizedCounterMetric.WithLabelValues("search_server").Inc()
  115. text := in.GetText()
  116. //log.Println(text)
  117. findAll := Filter.FindAll(text)
  118. rada := strings.Join(findAll, ",")
  119. return &proto_grpc.ResultSensitiveWords{SensitiveWords: rada}, nil
  120. }
  121. func (s *server) Registration(ctx context.Context, in *proto_grpc.NumberOfRegistrations) (*proto_grpc.RequestComplete, error) {
  122. customizedCounterMetric.WithLabelValues("Registration").Inc()
  123. return &proto_grpc.RequestComplete{Text: "ok"}, nil
  124. }
  125. type YAMLConfig struct {
  126. MixdataMgoAddr string `yaml:"mixdataMgoAddr"`
  127. UserName string `yaml:"userName"`
  128. PassWord string `yaml:"passWord"`
  129. DbName string `yaml:"dbName"`
  130. MongodbPoolSize int `yaml:"mongodbPoolSize"`
  131. TaskGteId string `yaml:"taskGteId"`
  132. TaskLteId string `yaml:"taskLteId"`
  133. IsAddTask int `yaml:"isAddTask"`
  134. Port string `yaml:"port"`
  135. }