#!/bin/bash
#
# openssh - holder
#
# Copyright 20209 Luigi Santivetti <luigi.santivetti@gmail.com>

# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

_OPENSSH_DKRC_SERVICE_="openssh"
_OPENSSH_DKRC_IMAGE_="${host_name}-img-${_OPENSSH_DKRC_SERVICE_}"
_OPENSSH_DKRC_CONTAINER_="${host_name}-con-${_OPENSSH_DKRC_SERVICE_}"
_OPENSSH_DKRC_CONTEXT_="${mod_docker_d}"
_OPENSSH_DKRC_DOCKERFILE_="Dockerfile"
# If trying to reach from within the docker network, it must be on the same
# subnet.
_OPENSSH_IP_="172.28.0.4"
_OPENSSH_PORT_="2222"
_OPENSSH_MIRROR_D_="$HOME/__vc/mirror"
_OPENSSH_MIRROR_CON_D_="/mirror"
_OPENSSH_TOD_D_="$HOME/tod"
_OPENSSH_TOD_CON_D_="/tod"
_OPENSSH_GIT_USER_="githuser"
_OPENSSH_GIT_GID_="$(stat -c '%g' "${_OPENSSH_MIRROR_D_}")"
_OPENSSH_GIT_UID_="$(stat -c '%u' "${_OPENSSH_MIRROR_D_}")"
_OPENSSH_CLIENT_PUBKEY_="/client_rsa_id.pub"
_OPENSSH_TOD_EXEC_="${_OPENSSH_TOD_CON_D_}/tod.container.openssh"
_OPENSSH_LOG_D_="${log_d}"
