mirror of
				https://codeberg.org/cunicu/cunicu.git
				synced 2025-10-31 12:16:23 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"flag"
 | |
| 	"os"
 | |
| 	"os/signal"
 | |
| 	"syscall"
 | |
| 
 | |
| 	log "github.com/sirupsen/logrus"
 | |
| 
 | |
| 	"riasc.eu/wice/pkg/socket"
 | |
| )
 | |
| 
 | |
| var sockPath = flag.String("socket", "/var/run/wice.go", "Unix control and monitoring socket")
 | |
| 
 | |
| func setupLogging() {
 | |
| 	log.SetFormatter(&log.TextFormatter{
 | |
| 		// ForceColors:  true,
 | |
| 		// DisableQuote: true,
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func setupSignals() chan os.Signal {
 | |
| 	ch := make(chan os.Signal, 1)
 | |
| 	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
 | |
| 
 | |
| 	return ch
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	setupLogging()
 | |
| 	signals := setupSignals()
 | |
| 
 | |
| 	flag.Parse()
 | |
| 
 | |
| 	subCommand := flag.Arg(0)
 | |
| 
 | |
| 	switch subCommand {
 | |
| 	case "monitor":
 | |
| 		monitor(signals)
 | |
| 
 | |
| 	default:
 | |
| 		log.Fatalf("Unknown subcommand: %s", subCommand)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func monitor(signals chan os.Signal) {
 | |
| 	logger := log.WithField("logger", "events")
 | |
| 
 | |
| 	sock, err := socket.Connect(*sockPath)
 | |
| 	if err != nil {
 | |
| 		log.WithError(err).Fatalf("Failed to connect to control socket: %s", err)
 | |
| 	}
 | |
| 
 | |
| 	for {
 | |
| 		select {
 | |
| 		case sig := <-signals:
 | |
| 			log.Info("Received signal: %s", sig)
 | |
| 			os.Exit(0)
 | |
| 
 | |
| 		case evt := <-sock.Events:
 | |
| 			evt.Log(logger, "Event")
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
