module: add openssh
diff --git a/module/openssh/holder.sh b/module/openssh/holder.sh
new file mode 100644
index 0000000..85cc582
--- /dev/null
+++ b/module/openssh/holder.sh
@@ -0,0 +1,43 @@
+#!/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}"
diff --git a/module/openssh/module.sh b/module/openssh/module.sh
new file mode 100644
index 0000000..2244cea
--- /dev/null
+++ b/module/openssh/module.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+#
+# openssh - module
+#
+# 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.
+
+declare -r module="openssh"
+source $common_sh
+
+module_enable $module
+
+declare -r dockerfile_f="$mod_docker_d/Dockerfile"
+declare -r log_d="${mod_rootfs_d}/var/log/openssh"
+
+declare -ar mod_mor_dirs=( $log_d )
+declare -ar mod_more_files=( $dockerfile_f )
+declare -ar mod_more_trefs=( dockerfile_t )
+
+function tod_watch
+{
+	__watch_module_common || return $s_err
+}
+
+function tod_doins
+{
+	__doins_module_common || return $s_err
+}
+
+function tod_upins
+{
+	__upins_module_common || return $s_err
+}
+
+function tod_clins
+{
+	__clins_module_common || return $s_err
+}
diff --git a/module/openssh/scheme.sh b/module/openssh/scheme.sh
new file mode 100644
index 0000000..cdb2bb5
--- /dev/null
+++ b/module/openssh/scheme.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+#
+# openssh - scheme
+#
+# 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.
+
+# https://github.com/linuxserver/docker-openssh-server
+declare -r dockerfile_t="\
+FROM linuxserver/openssh-server:latest AS base
+RUN \\
+ echo \"**** upgrade runtime packages ****\" && \\
+ apk -U upgrade \\
+ echo \"**** install runtime packages: git ****\" && \\
+ apk add --no-cache --upgrade git && \\
+ echo \"**** install runtime packages: make ****\" && \\
+ apk add --no-cache --upgrade make && \\
+ echo \"**** install runtime packages: rsync ****\" && \\
+ apk add --no-cache --upgrade rsync && \\
+ echo \"**** install runtime packages: ffmpeg ****\" && \\
+ apk add --no-cache --upgrade ffmpeg && \\
+ echo \"**** install runtime packages: python3 ****\" && \\
+ apk add --no-cache --upgrade python3 && \\
+ echo \"**** install runtime packages: pip3 ****\" && \\
+ apk add --no-cache --upgrade py3-pip && \\
+ echo \"**** install runtime packages: virtualenv ****\" && \\
+ apk add --no-cache --upgrade py3-virtualenv && \\
+ echo \"**** install runtime packages: build-base ****\" && \\
+ apk add --no-cache --upgrade build-base && \\
+ echo \"**** install runtime packages: python3-dev ****\" && \\
+ apk add --no-cache --upgrade python3-dev && \\
+ echo \"**** install runtime packages: jpeg-dev ****\" && \\
+ apk add --no-cache --upgrade jpeg-dev && \\
+ echo \"**** install runtime packages: zlib-dev ****\" && \\
+ apk add --no-cache --upgrade zlib-dev
+
+RUN sed -i \"s%#PubkeyAuthentication yes%PubkeyAuthentication yes%g\" /etc/ssh/sshd_config"