github.com/pwn-term/docker@v0.0.0-20210616085119-6e977cce2565/moby/api/server/router/container/container.go (about) 1 package container // import "github.com/docker/docker/api/server/router/container" 2 3 import ( 4 "github.com/docker/docker/api/server/httputils" 5 "github.com/docker/docker/api/server/router" 6 ) 7 8 // containerRouter is a router to talk with the container controller 9 type containerRouter struct { 10 backend Backend 11 decoder httputils.ContainerDecoder 12 routes []router.Route 13 cgroup2 bool 14 } 15 16 // NewRouter initializes a new container router 17 func NewRouter(b Backend, decoder httputils.ContainerDecoder, cgroup2 bool) router.Router { 18 r := &containerRouter{ 19 backend: b, 20 decoder: decoder, 21 cgroup2: cgroup2, 22 } 23 r.initRoutes() 24 return r 25 } 26 27 // Routes returns the available routes to the container controller 28 func (r *containerRouter) Routes() []router.Route { 29 return r.routes 30 } 31 32 // initRoutes initializes the routes in container router 33 func (r *containerRouter) initRoutes() { 34 r.routes = []router.Route{ 35 // HEAD 36 router.NewHeadRoute("/containers/{name:.*}/archive", r.headContainersArchive), 37 // GET 38 router.NewGetRoute("/containers/json", r.getContainersJSON), 39 router.NewGetRoute("/containers/{name:.*}/export", r.getContainersExport), 40 router.NewGetRoute("/containers/{name:.*}/changes", r.getContainersChanges), 41 router.NewGetRoute("/containers/{name:.*}/json", r.getContainersByName), 42 router.NewGetRoute("/containers/{name:.*}/top", r.getContainersTop), 43 router.NewGetRoute("/containers/{name:.*}/logs", r.getContainersLogs), 44 router.NewGetRoute("/containers/{name:.*}/stats", r.getContainersStats), 45 router.NewGetRoute("/containers/{name:.*}/attach/ws", r.wsContainersAttach), 46 router.NewGetRoute("/exec/{id:.*}/json", r.getExecByID), 47 router.NewGetRoute("/containers/{name:.*}/archive", r.getContainersArchive), 48 // POST 49 router.NewPostRoute("/containers/create", r.postContainersCreate), 50 router.NewPostRoute("/containers/{name:.*}/kill", r.postContainersKill), 51 router.NewPostRoute("/containers/{name:.*}/pause", r.postContainersPause), 52 router.NewPostRoute("/containers/{name:.*}/unpause", r.postContainersUnpause), 53 router.NewPostRoute("/containers/{name:.*}/restart", r.postContainersRestart), 54 router.NewPostRoute("/containers/{name:.*}/start", r.postContainersStart), 55 router.NewPostRoute("/containers/{name:.*}/stop", r.postContainersStop), 56 router.NewPostRoute("/containers/{name:.*}/wait", r.postContainersWait), 57 router.NewPostRoute("/containers/{name:.*}/resize", r.postContainersResize), 58 router.NewPostRoute("/containers/{name:.*}/attach", r.postContainersAttach), 59 router.NewPostRoute("/containers/{name:.*}/copy", r.postContainersCopy), // Deprecated since 1.8, Errors out since 1.12 60 router.NewPostRoute("/containers/{name:.*}/exec", r.postContainerExecCreate), 61 router.NewPostRoute("/exec/{name:.*}/start", r.postContainerExecStart), 62 router.NewPostRoute("/exec/{name:.*}/resize", r.postContainerExecResize), 63 router.NewPostRoute("/containers/{name:.*}/rename", r.postContainerRename), 64 router.NewPostRoute("/containers/{name:.*}/update", r.postContainerUpdate), 65 router.NewPostRoute("/containers/prune", r.postContainersPrune), 66 router.NewPostRoute("/commit", r.postCommit), 67 // PUT 68 router.NewPutRoute("/containers/{name:.*}/archive", r.putContainersArchive), 69 // DELETE 70 router.NewDeleteRoute("/containers/{name:.*}", r.deleteContainers), 71 } 72 }