portainer/portainer

View on GitHub
api/chisel/key.go

Summary

Maintainability
A
0 mins
Test Coverage
package chisel

import (
    "encoding/base64"
    "fmt"
    "strconv"
    "strings"
)

// GenerateEdgeKey will generate a key that can be used by an Edge agent to register with a Portainer instance.
// The key represents the following data in this particular format:
// portainer_instance_url|tunnel_server_addr|tunnel_server_fingerprint|endpoint_ID
// The key returned by this function is a base64 encoded version of the data.
func (service *Service) GenerateEdgeKey(url, host string, endpointIdentifier int) string {
    keyInformation := []string{
        url,
        fmt.Sprintf("%s:%s", host, service.serverPort),
        service.serverFingerprint,
        strconv.Itoa(endpointIdentifier),
    }

    key := strings.Join(keyInformation, "|")
    return base64.RawStdEncoding.EncodeToString([]byte(key))
}