config

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2024 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package config defines .brief/config.xml.

Index

Constants

View Source
const (
	// E.g. RFC 8314 3.1.
	DefaultPOP3Port = 995

	DefaultPOP3PortSTARTTLS = 110
)
View Source
const (
	// port 25 is not recommended
	DefaultSMTPPort         = 465
	DefaultSMTPPortSTARTTLS = 587
)

Cf. RFC 8314

View Source
const AliasRegexp = `^:[_a-z][-.0-9_a-z]*$`

Variables

View Source
var ErrInvarianceViolation = errors.New("invariance violation")
View Source
var ErrNotEnabled = errors.New("not enabled")

Functions

func Name

func Name() string

Name() returns the relative, slash-delimited name of the config XML file.

func ParseEMailAddress

func ParseEMailAddress(text string) (*netmail.Address, error)

TODO self-implement ((with option to expect chevrons and (quoted) display names)

func Write

func Write(fsys vfs.FS, cnf *Config) error

Types

type Address

type Address struct {
	// E.g. "info@jfrech.com"
	EMailAddress string `xml:"e-mail-address"`

	// E.g. "Jonathan Frech"
	DisplayName string `xml:"display-name,omitempty"`

	// E.g. "jfrech"
	// Alias MUST NOT contain an at sign "@" character (unicode character U+40).
	Alias Alias `xml:"alias,omitempty"`

	Notes []Note `xml:"note"`

	POP3Enabled bool   `xml:"pop3-enabled,omitempty"`
	POP3Host    string `xml:"pop3-host,omitempty"`
	// POP3Port defaults to 995 (or 110 if POP3UseSTARTTLS)
	POP3Port        int  `xml:"pop3-port,omitempty"`
	POP3UseSTARTTLS bool `xml:"pop3-use-starttls,omitempty"`
	// POP3Username defaults to EMailAddress
	POP3Username string           `xml:"pop3-username,omitempty"`
	POP3Password vault.Ciphertext `xml:"pop3-password,omitempty"`

	SMTPEnabled bool   `xml:"smtp-enabled,omitempty"`
	SMTPHost    string `xml:"smtp-host,omitempty"`
	// SMTPPort defaults to 465 (or 587 if SMTPUseSTARTTLS). Port 25 is discouraged for e-mail clients.
	SMTPPort        int  `xml:"smtp-port,omitempty"`
	SMTPUseSTARTTLS bool `xml:"smtp-use-starttls,omitempty"`
	// SMTPUsername defaults to EMailAddress
	SMTPUsername string           `xml:"smtp-username,omitempty"`
	SMTPPassword vault.Ciphertext `xml:"smtp-password,omitempty"`
}

func (*Address) Clone

func (oldaddr *Address) Clone() *Address

func (*Address) EffectivePOP3Host

func (address *Address) EffectivePOP3Host() string

func (*Address) EffectivePOP3HostPort

func (address *Address) EffectivePOP3HostPort() string

func (*Address) EffectivePOP3Port

func (address *Address) EffectivePOP3Port() int

func (*Address) EffectivePOP3Username

func (address *Address) EffectivePOP3Username() string

func (*Address) EffectiveSMTPHost

func (address *Address) EffectiveSMTPHost() string

func (*Address) EffectiveSMTPHostPort

func (address *Address) EffectiveSMTPHostPort() string

func (*Address) EffectiveSMTPPort

func (address *Address) EffectiveSMTPPort() int

func (*Address) EffectiveSMTPUsername

func (address *Address) EffectiveSMTPUsername() string

func (*Address) NetAddress deprecated

func (address *Address) NetAddress() *netmail.Address

Deprecated: TODO

func (*Address) NetmailAddress

func (addr *Address) NetmailAddress() *netmail.Address

func (*Address) POP3Client

func (address *Address) POP3Client(crypter vault.Crypter) (*pop3.Client, error)

func (*Address) POP3IsZero

func (addr *Address) POP3IsZero() bool

func (*Address) SMTPAvailable

func (addr *Address) SMTPAvailable() bool

func (*Address) SMTPIsZero

func (addr *Address) SMTPIsZero() bool

func (*Address) SMTPSendMail

func (address *Address) SMTPSendMail(crypter vault.Crypter) (SMTPSendMailFunc, error)

func (*Address) URLPOP3

func (address *Address) URLPOP3() *url.URL

Cf. RFC 2384

func (*Address) URLSMTP

func (address *Address) URLSMTP() *url.URL

Cf. https://datatracker.ietf.org/doc/html/draft-earhart-url-smtp-00 [accessed 2023-05-13] Cf. (*Address).URLPOP3

type Alias

type Alias string

func ParseAlias

func ParseAlias(text string) (Alias, error)

func (Alias) MarshalText

func (alias Alias) MarshalText() ([]byte, error)

func (*Alias) UnmarshalText

func (alias *Alias) UnmarshalText(text []byte) error

type Config

type Config struct {
	XMLName xml.Name `xml:"brief-config"`

	Vault *vault.Vault

	IndexAllowSymlinks bool `xml:"index-allow-symlinks,omitempty"`

	Addresses []*Address `xml:"address"`
}

func Read

func Read(fsys vfs.FS) (*Config, error)

func (*Config) Clone

func (oldcnf *Config) Clone() *Config

(*Config).Clone returns a deep clone.

func (*Config) DealiasFunc

func (cnf *Config) DealiasFunc() DealiasFunc

func (*Config) Editor

func (cnf *Config) Editor() string

func (*Config) EnaliasFunc

func (cnf *Config) EnaliasFunc() EnaliasFunc

func (*Config) LookupAddressish

func (cnf *Config) LookupAddressish(addressish string) (*Address, error)

[2023-04-29, jfrech] XXX This is implemented by linear search.

func (*Config) LookupAlias

func (cnf *Config) LookupAlias(alias Alias) (*Address, error)

[2023-07-24, jfrech] XXX This is implemented by linear search.

func (*Config) LookupNetmailAddress

func (cnf *Config) LookupNetmailAddress(addr *netmail.Address) (*Address, error)

ignores addr.Name [2023-07-24, jfrech] XXX This is implemented by linear search.

func (*Config) NetmailAddressish deprecated

func (cnf *Config) NetmailAddressish(addressish string) (*netmail.Address, error)

Deprecated: TODO ugly name

func (*Config) Recrypt

func (oldcnf *Config) Recrypt(newv *vault.Vault, recrypt vault.RecryptFunc) (*Config, error)

(*Config).Recrypt returns a deep clone.

func (*Config) SanitiseAddress

func (cnf *Config) SanitiseAddress(address *mail.Address) *mail.Address

func (*Config) SanitiseAddresses

func (cnf *Config) SanitiseAddresses(addresses []*mail.Address) []*mail.Address

type DealiasFunc

type DealiasFunc func(Alias) (*netmail.Address, error)

type EnaliasFunc

type EnaliasFunc func(*netmail.Address) (alias Alias, newdisplayname string, err error)

type Note

type Note struct {
	Timestamp time.Time `xml:"t,attr"`
	Text      string    `xml:",innerxml"`
}

type SMTPSendMailFunc

type SMTPSendMailFunc = func(from string, to []string, msg []byte) error

Cf. https://pkg.go.dev/net/smtp@go1.20.3#SendMail [accessed 2023-04-29]

Directories

Path Synopsis
Package vault implements Brief's password manager.
Package vault implements Brief's password manager.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL