parent
fb3826cee5
commit
b275a394e2
8
aerc.go
8
aerc.go
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
|
@ -9,12 +10,12 @@ import (
|
||||||
|
|
||||||
"github.com/mattn/go-isatty"
|
"github.com/mattn/go-isatty"
|
||||||
|
|
||||||
"git.sr.ht/~sircmpwn/aerc2/config"
|
|
||||||
"git.sr.ht/~sircmpwn/aerc2/commands"
|
"git.sr.ht/~sircmpwn/aerc2/commands"
|
||||||
"git.sr.ht/~sircmpwn/aerc2/commands/account"
|
"git.sr.ht/~sircmpwn/aerc2/commands/account"
|
||||||
"git.sr.ht/~sircmpwn/aerc2/commands/compose"
|
"git.sr.ht/~sircmpwn/aerc2/commands/compose"
|
||||||
"git.sr.ht/~sircmpwn/aerc2/commands/msgview"
|
"git.sr.ht/~sircmpwn/aerc2/commands/msgview"
|
||||||
"git.sr.ht/~sircmpwn/aerc2/commands/terminal"
|
"git.sr.ht/~sircmpwn/aerc2/commands/terminal"
|
||||||
|
"git.sr.ht/~sircmpwn/aerc2/config"
|
||||||
libui "git.sr.ht/~sircmpwn/aerc2/lib/ui"
|
libui "git.sr.ht/~sircmpwn/aerc2/lib/ui"
|
||||||
"git.sr.ht/~sircmpwn/aerc2/widgets"
|
"git.sr.ht/~sircmpwn/aerc2/widgets"
|
||||||
)
|
)
|
||||||
|
@ -61,7 +62,8 @@ func main() {
|
||||||
|
|
||||||
conf, err := config.LoadConfig(nil)
|
conf, err := config.LoadConfig(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
fmt.Printf("Failed to load config: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -73,7 +75,7 @@ func main() {
|
||||||
for i, set := range cmds {
|
for i, set := range cmds {
|
||||||
err := set.ExecuteCommand(aerc, cmd)
|
err := set.ExecuteCommand(aerc, cmd)
|
||||||
if _, ok := err.(commands.NoSuchCommand); ok {
|
if _, ok := err.(commands.NoSuchCommand); ok {
|
||||||
if i == len(cmds) - 1 {
|
if i == len(cmds)-1 {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -3,6 +3,7 @@ package config
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -142,7 +143,12 @@ func LoadConfig(root *string) (*AercConfig, error) {
|
||||||
_root := path.Join(xdg.ConfigHome(), "aerc")
|
_root := path.Join(xdg.ConfigHome(), "aerc")
|
||||||
root = &_root
|
root = &_root
|
||||||
}
|
}
|
||||||
file, err := ini.Load(path.Join(*root, "aerc.conf"))
|
filename := path.Join(*root, "accounts.conf")
|
||||||
|
if err := checkConfigPerms(filename); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
filename = path.Join(*root, "aerc.conf")
|
||||||
|
file, err := ini.Load(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -289,3 +295,22 @@ func LoadConfig(root *string) (*AercConfig, error) {
|
||||||
config.Bindings.Global.Globals = false
|
config.Bindings.Global.Globals = false
|
||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// checkConfigPerms checks for too open permissions
|
||||||
|
// printing the fix on stdout and returning an error
|
||||||
|
func checkConfigPerms(filename string) error {
|
||||||
|
info, err := os.Stat(filename)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
perms := info.Mode().Perm()
|
||||||
|
goPerms := perms >> 3
|
||||||
|
// group or others have read access
|
||||||
|
if goPerms&0x44 != 0 {
|
||||||
|
fmt.Printf("The file %v has too open permissions.\n", filename)
|
||||||
|
fmt.Println("This is a security issue (it contains passwords).")
|
||||||
|
fmt.Printf("To fix it, run `chmod 600 %v`\n", filename)
|
||||||
|
return errors.New("account.conf permissions too lax")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue