GetTUNASyncManager returns the manager from config
(cfg *Config)
| 30 | |
| 31 | // GetTUNASyncManager returns the manager from config |
| 32 | func GetTUNASyncManager(cfg *Config) *Manager { |
| 33 | if manager != nil { |
| 34 | return manager |
| 35 | } |
| 36 | |
| 37 | // create gin engine |
| 38 | if !cfg.Debug { |
| 39 | gin.SetMode(gin.ReleaseMode) |
| 40 | } |
| 41 | s := &Manager{ |
| 42 | cfg: cfg, |
| 43 | adapter: nil, |
| 44 | } |
| 45 | |
| 46 | s.engine = gin.New() |
| 47 | s.engine.Use(gin.Recovery()) |
| 48 | if cfg.Debug { |
| 49 | s.engine.Use(gin.Logger()) |
| 50 | } |
| 51 | |
| 52 | if cfg.Files.CACert != "" { |
| 53 | httpClient, err := CreateHTTPClient(cfg.Files.CACert) |
| 54 | if err != nil { |
| 55 | logger.Errorf("Error initializing HTTP client: %s", err.Error()) |
| 56 | return nil |
| 57 | } |
| 58 | s.httpClient = httpClient |
| 59 | } |
| 60 | |
| 61 | if cfg.Files.DBFile != "" { |
| 62 | adapter, err := makeDBAdapter(cfg.Files.DBType, cfg.Files.DBFile) |
| 63 | if err != nil { |
| 64 | logger.Errorf("Error initializing DB adapter: %s", err.Error()) |
| 65 | return nil |
| 66 | } |
| 67 | s.setDBAdapter(adapter) |
| 68 | } |
| 69 | |
| 70 | // common log middleware |
| 71 | s.engine.Use(contextErrorLogger) |
| 72 | |
| 73 | s.engine.GET("/ping", func(c *gin.Context) { |
| 74 | c.JSON(http.StatusOK, gin.H{_infoKey: "pong"}) |
| 75 | }) |
| 76 | // list jobs, status page |
| 77 | s.engine.GET("/jobs", s.listAllJobs) |
| 78 | // flush disabled jobs |
| 79 | s.engine.DELETE("/jobs/disabled", s.flushDisabledJobs) |
| 80 | |
| 81 | // list workers |
| 82 | s.engine.GET("/workers", s.listWorkers) |
| 83 | // worker online |
| 84 | s.engine.POST("/workers", s.registerWorker) |
| 85 | |
| 86 | // workerID should be valid in this route group |
| 87 | workerValidateGroup := s.engine.Group("/workers", s.workerIDValidator) |
| 88 | { |
| 89 | // delete specified worker |