1
0
mirror of https://github.com/bingohuang/docker-labs.git synced 2025-10-04 09:23:21 +08:00

Add TLS certificates for machine drivers (#73)

This commit is contained in:
Marcos Nils
2016-12-27 18:53:50 +02:00
committed by GitHub
parent 93740dc9f5
commit dea778440e
8 changed files with 168 additions and 27 deletions

View File

@@ -180,7 +180,6 @@ func ResizeConnection(name string, cols, rows uint) error {
}
func CreateInstance(session *Session, dindImage string) (*Instance, error) {
h := &container.HostConfig{NetworkMode: container.NetworkMode(session.Id), Privileged: true}
h.Resources.PidsLimit = int64(500)
h.Resources.Memory = 4092 * Megabyte

View File

@@ -2,6 +2,7 @@ package services
import (
"context"
"crypto/tls"
"io"
"log"
"os"
@@ -29,6 +30,9 @@ type Instance struct {
Cpu string `json:"cpu"`
Ports []uint16 `json:"ports"`
tempPorts []uint16 `json:"-"`
ServerCert []byte `json:"server_cert"`
ServerKey []byte `json:"server_key"`
cert *tls.Certificate `json:"-"`
}
func (i *Instance) setUsedPort(port uint16) {
@@ -43,6 +47,25 @@ func (i *Instance) setUsedPort(port uint16) {
i.tempPorts = append(i.tempPorts, port)
}
func (i *Instance) SetCertificate(cert, key []byte) (*tls.Certificate, error) {
i.ServerCert = cert
i.ServerKey = key
c, e := tls.X509KeyPair(i.ServerCert, i.ServerKey)
if e != nil {
return nil, e
}
i.cert = &c
// We store sessions as soon as we set instance keys
if err := saveSessionsToDisk(); err != nil {
return nil, err
}
return i.cert, nil
}
func (i *Instance) GetCertificate() *tls.Certificate {
return i.cert
}
func (i *Instance) IsConnected() bool {
return i.conn != nil
@@ -131,6 +154,18 @@ func (i *Instance) Attach() {
func GetInstance(session *Session, name string) *Instance {
return session.Instances[name]
}
func FindInstanceByIP(ip string) *Instance {
for _, s := range sessions {
for _, i := range s.Instances {
if i.IP == ip {
return i
}
}
}
return nil
}
func DeleteInstance(session *Session, instance *Instance) error {
if instance.conn != nil {
instance.conn.Close()

View File

@@ -304,6 +304,14 @@ func LoadSessionsFromDisk() error {
for _, i := range s.Instances {
// wire the session back to the instance
i.session = s
if i.ServerCert != nil && i.ServerKey != nil {
_, err := i.SetCertificate(i.ServerCert, i.ServerKey)
if err != nil {
log.Println(err)
return err
}
}
}
// Connect PWD daemon to the new network