github.com/Kong/go-pdk@v0.11.0/server/os.go (about) 1 package server 2 3 import ( 4 "flag" 5 "log" 6 "net" 7 "os" 8 "path" 9 10 "github.com/ugorji/go/codec" 11 ) 12 13 var ( 14 kongPrefix = flag.String("kong-prefix", "/usr/local/kong", "Kong prefix path (specified by the -p argument commonly used in the kong cli)") 15 dump = flag.Bool("dump", false, "Dump info about plugins") 16 help = flag.Bool("help", false, "Show usage info") 17 ) 18 19 func parseCli() { 20 flag.Parse() 21 22 if *help { 23 flag.Usage() 24 os.Exit(2) 25 } 26 } 27 28 func getName() (name string, err error) { 29 execPath, err := os.Executable() 30 if err != nil { 31 return 32 } 33 34 name = path.Base(execPath) 35 return 36 } 37 38 func getSocketPath() (pth string, err error) { 39 name, err := getName() 40 if err != nil { 41 return 42 } 43 44 pth = path.Join(*kongPrefix, name+".socket") 45 return 46 } 47 48 func openSocket() (listener net.Listener, err error) { 49 socketPath, err := getSocketPath() 50 if err != nil { 51 return 52 } 53 54 err = os.Remove(socketPath) 55 if err != nil && !os.IsNotExist(err) { 56 log.Printf(`removing "%s": %s`, socketPath, err) 57 return 58 } 59 60 listener, err = net.Listen("unix", socketPath) 61 if err != nil { 62 log.Printf(`listen("%s"): %s`, socketPath, err) 63 return 64 } 65 66 log.Printf("Listening on socket: %s", socketPath) 67 return 68 } 69 70 type serverInfo struct { 71 Protocol string 72 SocketPath string 73 Plugins []pluginInfo 74 } 75 76 func dumpInfo(rh *rpcHandler) { 77 info, err := rh.getInfo() 78 if err != nil { 79 log.Printf("getting plugin info: %s", err) 80 return 81 } 82 83 socketPath, err := getSocketPath() 84 if err != nil { 85 log.Printf("getting Socket path: %s", err) 86 return 87 } 88 89 var handle codec.JsonHandle 90 enc := codec.NewEncoder(os.Stdout, &handle) 91 err = enc.Encode(serverInfo{ 92 Protocol: "ProtoBuf:1", 93 SocketPath: socketPath, 94 Plugins: []pluginInfo{info}, 95 }) 96 if err != nil { 97 log.Printf("encoding plugin info: %s", err) 98 } 99 os.Stdout.WriteString("\n") 100 } 101