| 137 | } |
| 138 | |
| 139 | func (n *networkHandler) getConfiguredBackend( |
| 140 | appConfig config.AppConfig, |
| 141 | backendLogger log.Logger, |
| 142 | backendRequestsCounter metrics.Counter, |
| 143 | backendErrorCounter metrics.Counter, |
| 144 | ) (backend sshserver.NetworkConnectionHandler, failureReason error) { |
| 145 | switch appConfig.Backend { |
| 146 | case "docker": |
| 147 | backend, failureReason = docker.New( |
| 148 | n.remoteAddr, |
| 149 | n.connectionID, |
| 150 | appConfig.Docker, |
| 151 | backendLogger.WithLabel("backend", "docker"), |
| 152 | backendRequestsCounter, |
| 153 | backendErrorCounter, |
| 154 | ) |
| 155 | case "kubernetes": |
| 156 | backend, failureReason = kubernetes.New( |
| 157 | n.remoteAddr, |
| 158 | n.connectionID, |
| 159 | appConfig.Kubernetes, |
| 160 | backendLogger.WithLabel("backend", "kubernetes"), |
| 161 | backendRequestsCounter, |
| 162 | backendErrorCounter, |
| 163 | ) |
| 164 | case "sshproxy": |
| 165 | backend, failureReason = sshproxy.New( |
| 166 | n.remoteAddr, |
| 167 | n.connectionID, |
| 168 | appConfig.SSHProxy, |
| 169 | backendLogger.WithLabel("backend", "sshproxy"), |
| 170 | backendRequestsCounter, |
| 171 | backendErrorCounter, |
| 172 | ) |
| 173 | default: |
| 174 | failureReason = fmt.Errorf("invalid backend: %s", appConfig.Backend) |
| 175 | } |
| 176 | return backend, failureReason |
| 177 | } |
| 178 | |
| 179 | func (n *networkHandler) loadConnectionSpecificConfig( |
| 180 | meta metadata.ConnectionAuthenticatedMetadata, |