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:
parent
177d7aedde
commit
c4fd217a7e
3 changed files with 45 additions and 9 deletions
|
@ -12,7 +12,7 @@ This is an automated build linked with the [debian](https://hub.docker.com/_/deb
|
|||
|
||||
# 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]...]]]...`).
|
||||
- Set UID/GID manually for your users if you want them to make changes to
|
||||
your mounted volumes with permissions matching your host filesystem.
|
||||
|
@ -74,7 +74,7 @@ OpenSSH client, run: `sftp -P 2222 foo@<host-ip>`
|
|||
|
||||
```
|
||||
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 /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 \
|
||||
|
|
12
entrypoint
12
entrypoint
|
@ -2,8 +2,9 @@
|
|||
set -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
userConfPath="/etc/sftp/sftp-users.conf"
|
||||
userConfFinalPath="/var/run/sftp/sftp-users.conf"
|
||||
userConfPath="/etc/sftp/users.conf"
|
||||
userConfPathLegacy="/etc/sftp-users.conf"
|
||||
userConfFinalPath="/var/run/sftp/users.conf"
|
||||
|
||||
function printHelp() {
|
||||
echo "Add users as command arguments, STDIN or mounted in $userConfPath"
|
||||
|
@ -96,8 +97,15 @@ if [ "$1" == "--readme" ]; then
|
|||
exit 0
|
||||
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
|
||||
if [ ! -f "$userConfFinalPath" ]; then
|
||||
mkdir -p "$(dirname $userConfFinalPath)"
|
||||
|
||||
# Append mounted config to final config
|
||||
if [ -f "$userConfPath" ]; then
|
||||
|
|
38
tests/run
38
tests/run
|
@ -45,7 +45,7 @@ function beforeTest() {
|
|||
|
||||
echo "test::$(id -u):$(id -g):dir1,dir2" >> "$tmpDir/users"
|
||||
$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 "$tmpDir":/home/test/share \
|
||||
--name "$sftpContainerName" \
|
||||
|
@ -96,19 +96,19 @@ function runSftpCommands() {
|
|||
|
||||
function waitForServer() {
|
||||
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
|
||||
sleep 1
|
||||
ip="$(getSftpIp $containerName)"
|
||||
echo -n "."
|
||||
if nc -z $ip 22; then
|
||||
echo " OK"
|
||||
if [ -n "$ip" ] && nc -z $ip 22; then
|
||||
echo " OPEN"
|
||||
return 0;
|
||||
fi
|
||||
done
|
||||
|
||||
echo " FAIL"
|
||||
echo " TIMEOUT"
|
||||
return 1
|
||||
}
|
||||
|
||||
|
@ -189,6 +189,34 @@ function testMinimalContainerStart() {
|
|||
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/
|
||||
function testCustomContainerStart() {
|
||||
$skipAllTests && skip && return 0
|
||||
|
|
Loading…
Reference in a new issue