implemented pledge and unveil on openbsd

This commit is contained in:
ston1th 2022-10-08 17:48:16 +02:00
commit 0c4376ec32
205 changed files with 19126 additions and 4610 deletions

View file

@ -1,3 +1,6 @@
// Copyright (C) 2022 Marius Schellenberger
// crypto parts taken from https://github.com/filosottile/age
package crypto
import (

View file

@ -1,3 +1,5 @@
// Copyright (C) 2022 Marius Schellenberger
package crypto
import (

View file

@ -1,3 +1,5 @@
// Copyright (C) 2022 Marius Schellenberger
package crypto
import (

View file

@ -1,3 +1,6 @@
// Copyright (C) 2022 Marius Schellenberger
// crypto parts taken from https://github.com/filosottile/age
package crypto
import (

View file

@ -1,3 +1,5 @@
// Copyright (C) 2022 Marius Schellenberger
package crypto
import (

View file

@ -1,3 +1,6 @@
// Copyright (C) 2022 Marius Schellenberger
// crypto parts taken from https://github.com/filosottile/age
package crypto
import (

View file

@ -1,3 +1,6 @@
// Copyright (C) 2022 Marius Schellenberger
// crypto parts taken from https://github.com/filosottile/age
package crypto
import (

View file

@ -1,3 +1,5 @@
// Copyright (C) 2022 Marius Schellenberger
package filter
import (

View file

@ -1,3 +1,5 @@
// Copyright (C) 2022 Marius Schellenberger
package filter
import (

View file

@ -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 {

View file

@ -1,4 +1,5 @@
// Copyright (C) 2022 Marius Schellenberger
package sftp
import (

View file

@ -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
}