0
0
Fork 0
mirror of https://github.com/atmoz/sftp.git synced 2024-11-17 12:51:33 -05:00

Backward compatibility with legacy config path

This commit is contained in:
Adrian Dvergsdal 2017-06-25 14:05:22 +02:00
parent 177d7aedde
commit c4fd217a7e
3 changed files with 45 additions and 9 deletions

View file

@ -12,7 +12,7 @@ This is an automated build linked with the [debian](https://hub.docker.com/_/deb
# Usage # Usage
- Required: define users as command arguments, STDIN or mounted in `/etc/sftp-users.conf` - Required: define users as command arguments, STDIN or mounted in `/etc/sftp/users.conf`
(syntax: `user:pass[:e][:uid[:gid[:dir1[,dir2]...]]]...`). (syntax: `user:pass[:e][:uid[:gid[:dir1[,dir2]...]]]...`).
- Set UID/GID manually for your users if you want them to make changes to - Set UID/GID manually for your users if you want them to make changes to
your mounted volumes with permissions matching your host filesystem. your mounted volumes with permissions matching your host filesystem.
@ -74,7 +74,7 @@ OpenSSH client, run: `sftp -P 2222 foo@<host-ip>`
``` ```
docker run \ docker run \
-v /host/users.conf:/etc/sftp/sftp-users.conf:ro \ -v /host/users.conf:/etc/sftp/users.conf:ro \
-v mySftpVolume:/home \ -v mySftpVolume:/home \
-v /host/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key \ -v /host/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key \
-v /host/ssh_host_rsa_key.pub:/etc/ssh/ssh_host_rsa_key.pub \ -v /host/ssh_host_rsa_key.pub:/etc/ssh/ssh_host_rsa_key.pub \

View file

@ -2,8 +2,9 @@
set -e set -e
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
userConfPath="/etc/sftp/sftp-users.conf" userConfPath="/etc/sftp/users.conf"
userConfFinalPath="/var/run/sftp/sftp-users.conf" userConfPathLegacy="/etc/sftp-users.conf"
userConfFinalPath="/var/run/sftp/users.conf"
function printHelp() { function printHelp() {
echo "Add users as command arguments, STDIN or mounted in $userConfPath" echo "Add users as command arguments, STDIN or mounted in $userConfPath"
@ -96,8 +97,15 @@ if [ "$1" == "--readme" ]; then
exit 0 exit 0
fi fi
# Backward compatibility with legacy config path
if [ ! -f "$userConfPath" -a -f "$userConfPathLegacy" ]; then
mkdir -p "$(dirname $userConfPath)"
ln -s "$userConfPathLegacy" "$userConfPath"
fi
# Create users only on first run # Create users only on first run
if [ ! -f "$userConfFinalPath" ]; then if [ ! -f "$userConfFinalPath" ]; then
mkdir -p "$(dirname $userConfFinalPath)"
# Append mounted config to final config # Append mounted config to final config
if [ -f "$userConfPath" ]; then if [ -f "$userConfPath" ]; then

View file

@ -45,7 +45,7 @@ function beforeTest() {
echo "test::$(id -u):$(id -g):dir1,dir2" >> "$tmpDir/users" echo "test::$(id -u):$(id -g):dir1,dir2" >> "$tmpDir/users"
$sudo docker run \ $sudo docker run \
-v "$tmpDir/users:/etc/sftp-users.conf:ro" \ -v "$tmpDir/users:/etc/sftp/users.conf:ro" \
-v "$scriptDir/id_rsa.pub":/home/test/.ssh/keys/id_rsa.pub:ro \ -v "$scriptDir/id_rsa.pub":/home/test/.ssh/keys/id_rsa.pub:ro \
-v "$tmpDir":/home/test/share \ -v "$tmpDir":/home/test/share \
--name "$sftpContainerName" \ --name "$sftpContainerName" \
@ -96,19 +96,19 @@ function runSftpCommands() {
function waitForServer() { function waitForServer() {
containerName="$1" containerName="$1"
echo -n "Waiting for $containerName to open port 22 " echo -n "Waiting for $containerName to open port 22 ..."
for i in {1..30}; do for i in {1..30}; do
sleep 1 sleep 1
ip="$(getSftpIp $containerName)" ip="$(getSftpIp $containerName)"
echo -n "." echo -n "."
if nc -z $ip 22; then if [ -n "$ip" ] && nc -z $ip 22; then
echo " OK" echo " OPEN"
return 0; return 0;
fi fi
done done
echo " FAIL" echo " TIMEOUT"
return 1 return 1
} }
@ -189,6 +189,34 @@ function testMinimalContainerStart() {
fi fi
} }
function testLegacyConfigPath() {
$skipAllTests && skip && return 0
tmpContainerName="$sftpContainerName""_legacy"
echo "test::$(id -u):$(id -g)" >> "$tmpDir/legacy_users"
$sudo docker run \
-v "$tmpDir/legacy_users:/etc/sftp-users.conf:ro" \
--name "$tmpContainerName" \
--expose 22 \
-d "$sftpImageName" \
> "$redirect"
waitForServer $tmpContainerName
ps="$($sudo docker ps -q -f name="$tmpContainerName")"
assertNotEqual "$ps" ""
if [ "$output" != "quiet" ]; then
$sudo docker logs "$tmpContainerName"
fi
if [ "$cleanup" == "cleanup" ]; then
$sudo docker rm -fv "$tmpContainerName" > "$redirect"
fi
}
# Bind-mount folder using script in /etc/sftp.d/ # Bind-mount folder using script in /etc/sftp.d/
function testCustomContainerStart() { function testCustomContainerStart() {
$skipAllTests && skip && return 0 $skipAllTests && skip && return 0