diff --git a/Containers/mastercontainer/start.sh b/Containers/mastercontainer/start.sh index 6ded5bfd..ff124334 100755 --- a/Containers/mastercontainer/start.sh +++ b/Containers/mastercontainer/start.sh @@ -54,6 +54,21 @@ else sleep 10 fi +# Check for other options +if [ -n "$NEXTCLOUD_MOUNT" ]; then + if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/" \ + && ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/media/" \ + && ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/var/backups$" + then + echo "You've set NEXCLOUD_MOUNT but not to an allowed value. +The string must be equal to/start with '/mnt/' or '/media/' or be equal to '/var/backups'." + exit 1 + elif [ "$NEXTCLOUD_MOUNT" = "/mnt/ncdata" ] || echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/ncdata/"; then + echo "/mnt/ncdata and /mnt/ncdata/ are not allowed for NEXTCLOUD_MOUNT." + exit 1 + fi +fi + # Add important folders mkdir -p /mnt/docker-aio-config/data/ mkdir -p /mnt/docker-aio-config/session/ diff --git a/php/containers.json b/php/containers.json index b50fa006..ca1f65ad 100644 --- a/php/containers.json +++ b/php/containers.json @@ -98,6 +98,11 @@ "name": "nextcloud_aio_nextcloud_data", "location": "/mnt/ncdata", "writeable": true + }, + { + "name": "%NEXTCLOUD_MOUNT%", + "location": "%NEXTCLOUD_MOUNT%", + "writeable": true } ], "environmentVariables": [ diff --git a/php/src/ContainerDefinitionFetcher.php b/php/src/ContainerDefinitionFetcher.php index d84b7a7f..bed2b8c0 100644 --- a/php/src/ContainerDefinitionFetcher.php +++ b/php/src/ContainerDefinitionFetcher.php @@ -67,6 +67,18 @@ class ContainerDefinitionFetcher continue; } } + if($value['name'] === '%NEXTCLOUD_MOUNT%') { + $value['name'] = $this->configurationManager->GetNextcloudMount(); + if($value['name'] === '') { + continue; + } + } + if($value['location'] === '%NEXTCLOUD_MOUNT%') { + $value['location'] = $this->configurationManager->GetNextcloudMount(); + if($value['location'] === '') { + continue; + } + } $volumes->AddVolume( new ContainerVolume( $value['name'], diff --git a/php/src/Data/ConfigurationManager.php b/php/src/Data/ConfigurationManager.php index 075c7fef..ad70c99f 100644 --- a/php/src/Data/ConfigurationManager.php +++ b/php/src/Data/ConfigurationManager.php @@ -254,4 +254,27 @@ class ConfigurationManager return $config['backup-mode']; } + + public function GetNextcloudMount() : string { + $mount = getenv('NEXTCLOUD_MOUNT'); + if ($mount === false) { + $config = $this->GetConfig(); + if (!isset($config['nextcloud_mount'])) { + $config['nextcloud_mount'] = ''; + } + return $config['nextcloud_mount']; + } else { + if(file_exists(DataConst::GetConfigFile())) { + $config = $this->GetConfig(); + if (!isset($config['nextcloud_mount'])) { + $config['nextcloud_mount'] = ''; + } + if ($mount !== $config['nextcloud_mount']) { + $config['nextcloud_mount'] = $mount; + $this->WriteConfig($config); + } + } + return $mount; + } + } }