mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 14:50:55 +03:00
configs: add ACME section
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -36,6 +36,7 @@ import (
|
||||
|
||||
"github.com/drakkan/sftpgo/v2/internal/common"
|
||||
"github.com/drakkan/sftpgo/v2/internal/dataprovider"
|
||||
"github.com/drakkan/sftpgo/v2/internal/util"
|
||||
"github.com/drakkan/sftpgo/v2/internal/vfs"
|
||||
)
|
||||
|
||||
@@ -1059,3 +1060,70 @@ func TestRelativePath(t *testing.T) {
|
||||
rel = getPathRelativeTo("/dir3", "dir3")
|
||||
assert.Equal(t, "dir3", rel)
|
||||
}
|
||||
|
||||
func TestConfigsFromProvider(t *testing.T) {
|
||||
err := dataprovider.UpdateConfigs(nil, "", "", "")
|
||||
assert.NoError(t, err)
|
||||
c := Configuration{}
|
||||
err = c.loadFromProvider()
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, c.acmeDomain)
|
||||
configs := dataprovider.Configs{
|
||||
ACME: &dataprovider.ACMEConfigs{
|
||||
Domain: "domain.com",
|
||||
Email: "info@domain.com",
|
||||
HTTP01Challenge: dataprovider.ACMEHTTP01Challenge{Port: 80},
|
||||
Protocols: 2,
|
||||
},
|
||||
}
|
||||
err = dataprovider.UpdateConfigs(&configs, "", "", "")
|
||||
assert.NoError(t, err)
|
||||
util.CertsBasePath = ""
|
||||
// crt and key empty
|
||||
err = c.loadFromProvider()
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, c.acmeDomain)
|
||||
util.CertsBasePath = filepath.Clean(os.TempDir())
|
||||
// crt not found
|
||||
err = c.loadFromProvider()
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, c.acmeDomain)
|
||||
keyPairs := c.getKeyPairs(configDir)
|
||||
assert.Len(t, keyPairs, 0)
|
||||
crtPath := filepath.Join(util.CertsBasePath, util.SanitizeDomain(configs.ACME.Domain)+".crt")
|
||||
err = os.WriteFile(crtPath, nil, 0666)
|
||||
assert.NoError(t, err)
|
||||
// key not found
|
||||
err = c.loadFromProvider()
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, c.acmeDomain)
|
||||
keyPairs = c.getKeyPairs(configDir)
|
||||
assert.Len(t, keyPairs, 0)
|
||||
keyPath := filepath.Join(util.CertsBasePath, util.SanitizeDomain(configs.ACME.Domain)+".key")
|
||||
err = os.WriteFile(keyPath, nil, 0666)
|
||||
assert.NoError(t, err)
|
||||
// acme cert used
|
||||
err = c.loadFromProvider()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, configs.ACME.Domain, c.acmeDomain)
|
||||
keyPairs = c.getKeyPairs(configDir)
|
||||
assert.Len(t, keyPairs, 1)
|
||||
// protocols does not match
|
||||
configs.ACME.Protocols = 5
|
||||
err = dataprovider.UpdateConfigs(&configs, "", "", "")
|
||||
assert.NoError(t, err)
|
||||
c.acmeDomain = ""
|
||||
err = c.loadFromProvider()
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, c.acmeDomain)
|
||||
keyPairs = c.getKeyPairs(configDir)
|
||||
assert.Len(t, keyPairs, 0)
|
||||
|
||||
err = os.Remove(crtPath)
|
||||
assert.NoError(t, err)
|
||||
err = os.Remove(keyPath)
|
||||
assert.NoError(t, err)
|
||||
util.CertsBasePath = ""
|
||||
err = dataprovider.UpdateConfigs(nil, "", "", "")
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user