about summary refs log tree commit diff
path: root/src/docker.go
diff options
context:
space:
mode:
authorEmile <hanemile@protonmail.com>2019-10-06 23:52:09 +0200
committerEmile <hanemile@protonmail.com>2019-10-06 23:52:09 +0200
commit72e86f736dca3b2da6f200d91a459c8faab3e288 (patch)
tree04780e81f2a244cd12f61d2cb999800fb64111d2 /src/docker.go
parent4444639dcb256b2928abc5f1e925f2529797c1f1 (diff)
basic setup
Diffstat (limited to 'src/docker.go')
-rw-r--r--src/docker.go69
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
+}