implemented pledge and unveil on openbsd
This commit is contained in:
parent
3f1752e961
commit
0c4376ec32
205 changed files with 19126 additions and 4610 deletions
|
|
@ -1,3 +1,6 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
// crypto parts taken from https://github.com/filosottile/age
|
||||
|
||||
package crypto
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
|
||||
package crypto
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
|
||||
package crypto
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
// crypto parts taken from https://github.com/filosottile/age
|
||||
|
||||
package crypto
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
|
||||
package crypto
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
// crypto parts taken from https://github.com/filosottile/age
|
||||
|
||||
package crypto
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
// crypto parts taken from https://github.com/filosottile/age
|
||||
|
||||
package crypto
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
|
||||
package filter
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
|
||||
package filter
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -38,6 +38,31 @@ func TryParse(url string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func Paths(url string) (paths []string) {
|
||||
u, err := neturl.Parse(url)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
switch u.Scheme {
|
||||
case "file":
|
||||
paths = append(paths, u.Path)
|
||||
case "sftp":
|
||||
q, err := neturl.ParseQuery(u.RawQuery)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
known, err := sftp.KnownHosts(q)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
paths = append(paths, known)
|
||||
if key := q.Get(sftp.KeyParam); key != "" {
|
||||
paths = append(paths, key)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func FS(url string, key []byte, re *regexp.Regexp, block bool) (provider.FS, error) {
|
||||
u, err := neturl.Parse(url)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
// Copyright (C) 2022 Marius Schellenberger
|
||||
|
||||
package sftp
|
||||
|
||||
import (
|
||||
|
|
|
|||
|
|
@ -205,6 +205,8 @@ func (fs *FS) path(p string) string {
|
|||
return filepath.Join(fs.root, filepath.FromSlash(path.Clean("/"+p)))
|
||||
}
|
||||
|
||||
const KeyParam = "key"
|
||||
|
||||
func sshConfig(u *url.URL) (c *ssh.ClientConfig, err error) {
|
||||
if u.User == nil {
|
||||
return nil, errors.New("missing username")
|
||||
|
|
@ -223,13 +225,9 @@ func sshConfig(u *url.URL) (c *ssh.ClientConfig, err error) {
|
|||
User: u.User.Username(),
|
||||
Timeout: time.Second * 30,
|
||||
}
|
||||
known := q.Get("known_hosts")
|
||||
if known == "" {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error reading user home: %w", err)
|
||||
}
|
||||
known = filepath.Join(home, ".ssh", "known_hosts")
|
||||
known, err := KnownHosts(q)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
c.HostKeyCallback, err = knownhosts.New(known)
|
||||
if err != nil {
|
||||
|
|
@ -238,7 +236,7 @@ func sshConfig(u *url.URL) (c *ssh.ClientConfig, err error) {
|
|||
if pw, ok := u.User.Password(); ok {
|
||||
c.Auth = []ssh.AuthMethod{ssh.Password(pw)}
|
||||
} else {
|
||||
buf, err := os.ReadFile(q.Get("key"))
|
||||
buf, err := os.ReadFile(q.Get(KeyParam))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -247,3 +245,15 @@ func sshConfig(u *url.URL) (c *ssh.ClientConfig, err error) {
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
func KnownHosts(q url.Values) (string, error) {
|
||||
known := q.Get("known_hosts")
|
||||
if known == "" {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("error reading user home: %w", err)
|
||||
}
|
||||
known = filepath.Join(home, ".ssh", "known_hosts")
|
||||
}
|
||||
return known, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue