diff options
Diffstat (limited to 'src/docker.go')
-rw-r--r-- | src/docker.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/docker.go b/src/docker.go new file mode 100644 index 0000000..846a77e --- /dev/null +++ b/src/docker.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "log" + "os" + + "github.com/docker/docker/api/types/container" + "github.com/docker/docker/api/types/network" + "github.com/docker/docker/client" +) + +const ( + fixedDockerVersion = "1.38" +) + +var ( + dockerCtx context.Context + dockerCLI *client.Client +) + +func setupContext() { + if dockerCtx == nil { + dockerCtx = context.Background() + } +} + +func setupDockerCLI() (err error) { + os.Setenv("DOCKER_API_VERSION", "1.27") + if dockerCLI == nil { + dockerCLI, err = client.NewEnvClient() + } + return err +} + +func spawnCompanion(username string) string { + log.Println("Spwaning a new companion container") + // setup the context and the docker cli connection + setupContext() + setupDockerCLI() + + Config := &container.Config{ + // docker socket + // companion seed + Image: "circus-companion:latest", + // + // username + // accesscode + // sessionsalt + // vpnremote address + // vpnrempte port + Cmd: []string{"-username", username, "-accesscode", accesscode}, + } + + HostConfig := &container.HostConfig{ + // ports (nat.PortMap) + } + + NetworkingConfig := &network.NetworkingConfig{ + // network + } + + _, err := dockerCLI.ContainerCreate(dockerCtx, Config, HostConfig, NetworkingConfig, "") + if err != nil { + panic(err) + } + + return accesscode +} |