grim/hgkeeper
Clone
Summary
Browse
Changes
Graph
Do not allow repositories in a repository
13 months ago, aklitzing
ebf8e3bd9e68
Do not allow repositories in a repository
It will be strange to support something like this
$ hg init ssh://hg.host.com/hgkeeper/keys
Reviewed at https://reviews.imfreedom.org/r/2423/
package
ssh
import
(
"errors"
"io/ioutil"
"path/filepath"
"go.uber.org/zap"
"golang.org/x/crypto/ssh"
)
func
(
s
*
Server
)
setHostKeysPath
(
hostKeysPath
string
)
error
{
files
,
err
:=
ioutil
.
ReadDir
(
hostKeysPath
)
if
err
!=
nil
{
return
err
}
found
:=
false
for
_
,
file
:=
range
files
{
if
!
file
.
Mode
().
IsDir
()
{
path
:=
filepath
.
Join
(
hostKeysPath
,
file
.
Name
())
data
,
err
:=
ioutil
.
ReadFile
(
path
)
if
err
!=
nil
{
zap
.
S
().
Warnf
(
"failed to read %s"
,
path
)
continue
}
key
,
err
:=
ssh
.
ParsePrivateKey
(
data
)
if
err
!=
nil
{
zap
.
S
().
Warnf
(
"%s is not an ssh private key"
,
path
)
continue
}
s
.
server
.
AddHostKey
(
key
)
found
=
true
zap
.
S
().
Infof
(
"added host key from %s"
,
path
)
}
}
if
!
found
{
return
errors
.
New
(
"failed to find a usable host key"
)
}
return
nil
}