Elektra  0.9.3
Plugin: curlget

The curlget plugin is a resolver using libcurl to upload and download files from/to remote hosts. When mounted with a URL as configuration file there will be no changes to the file system. When mounted with a (local) path to a configuration a copy of the remote configuration is kept and used as fallback in kdbGet() if fetching the remote file from the server fails.

URL:

an URL has to be prefixed with the protocol. valid protocols: http://, https://, ftp://, ftps://, scp://, sftp://, smb:// (currently not supported)

Filename:

can bei either an URL or a local configuration file.

if the filename is an URL the plugin operates on temporary files only and keeps no local copy of the configuration. unless specified otherwise the URL is used for both upload and download.

rm /tmp/curltest.ini || $(exit 0)
sudo kdb mount -R curlget -c url/get="http://127.0.0.1:8000/curltest.ini",url/put="http://127.0.0.1:8000",user="thomas",password="pass",upload/method="POST",upload/postfield="file" /tmp/curltest.ini system/curl ini
kdb ls system/curl
#> system/curl/section1
#> system/curl/section1/key1
stat /tmp/curltest.ini
# RET:0
kdb set system/curl/section1/key2 val2
sudo kdb umount system/curl
stat /tmp/curltest.ini
# RET:0
cat /tmp/curltest.ini
#> [section1]
#> key1=val1
#> key2=val2
rm /tmp/curltest.ini || $(exit 0)
sudo kdb mount -R curlget -c url/put="http://127.0.0.1:8000",user="thomas",password="pass",upload/method="POST",upload/postfield="file" "http://127.0.0.1:8000/curltest.ini" system/curl ini
kdb ls system/curl
#> system/curl/section1
#> system/curl/section1/key1
#> system/curl/section1/key2
stat /tmp/curltest.ini
# RET:1
mv /tmp/httproot/curltest.ini /tmp/httproot/curltest.ini_moved
kdb ls system/curl
# RET:5
mv /tmp/httproot/curltest.ini_moved /tmp/httproot/curltest.ini
kdb rm system/curl/section1/key2
sudo kdb umount system/curl
cat /tmp/httproot/curltest.ini
#> [section1]
#> key1=val1
kdb mount -R curlget -c url/get="http://127.0.0.1:8000/curltest.ini",url/put="http://127.0.0.1:8000",user="thomas",password="pass",upload/method="POST",upload/postfield="file" /tmp/curltest.ini system/curl ini
kdb mount -R curlget -c url/put="http://127.0.0.1:8000",user="thomas",password="pass",upload/method="POST",upload/postfield="file" "http://127.0.0.1:8000/curltest.ini" system/curl ini
kdb mount -R curlget -c url/get="ftp://127.0.0.1:21/test.ini",url/put="ftp://127.0.0.1:21/test.ini",user="thomas",password="pass",upload/method="FTP" /tmp/curltest.ini system/curl ini