filter_rspamd.go
changeset 1 8a09170cd1e0
parent 0 7671ae88de2a
child 2 6f4d7e13e987
equal deleted inserted replaced
0:7671ae88de2a 1:8a09170cd1e0
    88 func txCleanup(s *session, args []string) {
    88 func txCleanup(s *session, args []string) {
    89 	s.control = nil
    89 	s.control = nil
    90 }
    90 }
    91 
    91 
    92 func filterCommit(s *session, args []string) {
    92 func filterCommit(s *session, args []string) {
    93 	token := args[5]
    93 	token := args[6]
    94 	reason := <-s.ch
    94 	reason := <-s.ch
    95 	if reason != "" {
    95 	if reason != "" {
    96 		stdout.Printf("filter-result|%s|%s|reject|%s\n",
    96 		stdout.Printf("filter-result|%s|%s|reject|%s\n",
    97 			token, s.id, reason)
    97 			token, s.id, reason)
    98 		return
    98 		return
    99 	}
    99 	}
   100 	stdout.Printf("filter-result|%s|%s|proceed\n", token, s.id)
   100 	stdout.Printf("filter-result|%s|%s|proceed\n", token, s.id)
   101 }
   101 }
   102 
   102 
   103 func filterDataLine(s *session, args []string) {
   103 func filterDataLine(s *session, args []string) {
   104 	token, line := args[5], args[7]
   104 	token, line := args[6], args[7]
   105 	if line != "." {
   105 	if line != "." {
   106 		s.payload.WriteString(line)
   106 		s.payload.WriteString(line)
   107 		s.payload.WriteString("\n")
   107 		s.payload.WriteString("\n")
   108 		return
   108 		return
   109 	}
   109 	}
   211 	sessions := map[string]*session{}
   211 	sessions := map[string]*session{}
   212 	var event, id string
   212 	var event, id string
   213 	stdin := bufio.NewScanner(os.Stdin)
   213 	stdin := bufio.NewScanner(os.Stdin)
   214 	for stdin.Scan() {
   214 	for stdin.Scan() {
   215 		fields := strings.Split(stdin.Text(), "|")
   215 		fields := strings.Split(stdin.Text(), "|")
   216 		switch fields[0] {
   216 		event, id = fields[4], fields[5]
   217 		case "report":
       
   218 			id = fields[5]
       
   219 		case "filter":
       
   220 			id = fields[6]
       
   221 		default:
       
   222 			log.Fatalf("Unknown kind: %s", fields[0])
       
   223 		}
       
   224 		event = fields[4]
       
   225 		switch event {
   217 		switch event {
   226 		case "link-disconnect":
   218 		case "link-disconnect":
   227 			delete(sessions, id)
   219 			delete(sessions, id)
   228 		case "link-connect":
   220 		case "link-connect":
   229 			sessions[id] = &session{
   221 			sessions[id] = &session{