main.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //go:generate go-bindata template/
  2. package main
  3. import (
  4. "fmt"
  5. "net"
  6. "os"
  7. "google.golang.org/grpc"
  8. "github.com/Sirupsen/logrus"
  9. "github.com/cad/ovpm"
  10. "github.com/cad/ovpm/api"
  11. "github.com/cad/ovpm/pb"
  12. "github.com/urfave/cli"
  13. )
  14. var action string
  15. func main() {
  16. app := cli.NewApp()
  17. app.Name = "ovpmd"
  18. app.Usage = "OpenVPN Manager Daemon"
  19. app.Version = ovpm.Version
  20. app.Flags = []cli.Flag{
  21. cli.BoolFlag{
  22. Name: "verbose",
  23. Usage: "verbose output",
  24. },
  25. cli.StringFlag{
  26. Name: "port",
  27. Usage: "port number for daemon to listen on",
  28. },
  29. }
  30. app.Before = func(c *cli.Context) error {
  31. logrus.SetLevel(logrus.InfoLevel)
  32. if c.GlobalBool("verbose") {
  33. logrus.SetLevel(logrus.DebugLevel)
  34. }
  35. return nil
  36. }
  37. app.Action = func(c *cli.Context) error {
  38. port := c.String("port")
  39. if port == "" {
  40. port = "9090"
  41. }
  42. lis, err := net.Listen("tcp", fmt.Sprintf(":%s", port))
  43. if err != nil {
  44. logrus.Fatalf("could not listen to port %s: %v", port, err)
  45. }
  46. s := grpc.NewServer()
  47. pb.RegisterUserServiceServer(s, &api.UserService{})
  48. pb.RegisterVPNServiceServer(s, &api.VPNService{})
  49. logrus.Infof("OVPM is running :%s ...", port)
  50. s.Serve(lis)
  51. return nil
  52. }
  53. app.Run(os.Args)
  54. ovpm.CloseDB()
  55. }
  56. func stringInSlice(a string, list []string) bool {
  57. for _, b := range list {
  58. if b == a {
  59. return true
  60. }
  61. }
  62. return false
  63. }