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

Add reverse proxy endpoint.

It works by using the Host of the request. When it receives something in
the form of: `<node>.<session>.play-with-docker.com` it does a reverse
proxy http request to `node`, validating that the `node` actually belongs
to the `session`.
If the node has a prefix `ip` and continues with a valid IP address
where the dots where replaces by underscores (like `ip10_0_0_1`) then it
will remove the `ip` prefix and and replace the underscores by dots, and
assume it is an ip address.
This commit is contained in:
Jonathan Leibiusky @xetorthio
2016-11-17 17:37:40 -03:00
parent a85bb4a1d7
commit ec9d34ffda
4 changed files with 57 additions and 0 deletions

View File

@@ -52,6 +52,17 @@ func CreateNetwork(name string) error {
return nil
}
func ConnectNetwork(containerId, networkId string) error {
err := c.NetworkConnect(context.Background(), networkId, containerId, &network.EndpointSettings{})
if err != nil {
log.Printf("Connection container to network err [%s]\n", err)
return err
}
return nil
}
func DeleteNetwork(id string) error {
err := c.NetworkRemove(context.Background(), id)

View File

@@ -109,6 +109,12 @@ func NewSession() (*Session, error) {
return nil, err
}
// Connect PWD daemon to the new network
if err := ConnectNetwork("pwd", s.Id); err != nil {
log.Println("ERROR NETWORKING")
return nil, err
}
// We store sessions as soon as we create one so we don't delete new sessions on an api restart
if err := saveSessionsToDisk(); err != nil {
return nil, err