rvcodns package - code.pfad.fr/rvcodns
import "code.pfad.fr/rvcodns"
package rvcodns provides a Go client for [Release Version Check over DNS (RVCoDNS)].
Example
// SPDX-FileCopyrightText: 2023 Olivier Charvin// SPDX-License-Identifier: CC0-1.0 package main import ( "fmt" "code.pfad.fr/rvcodns" ) var domain = "example.rvcodns.pfad.fr" func main() { releases, err := rvcodns.LookupReleases(domain) if err != nil { panic(err) // network or parsing error (to handle) } for _, r := range releases { fmt.Println(r.Version) // compare with own version (to inform the user about available updates) } }
Variables
var DefaultResolver = Resolver{net.DefaultResolver.LookupTXT}
DefaultResolver is the resolver used by the package-level LookupRelease function.
Functions
func DKIMQuotedPrintableEncode
func DKIMQuotedPrintableEncode(str string) string
DKIMQuotedPrintableEncode encodes a strings as a [DKIM-Quoted-Printable (RFC 6376)] string.
See [Value.String] for decoding.
Types
type Release
type Release struct {
Version string // decoded version string
Tags []Tag // raw tags in the order they appeared
}
Release represents a release record
func LookupReleases
func LookupReleases(domain string) ([]Release, error)
LookupReleases looks up and parses supported releases by DNS-querying _release.{domain}
LookupReleases uses context.Background internally; to specify the context, use [Resolver.LookupReleases].
func Parse
func Parse(record string) (Release, error)
Parse parses a DNS records into a [Release]
type Resolver
type Resolver struct {
LookupTXT func(ctx context.Context, name string) ([]string, error)
}
Resolver allows to specify the LookupTXT function to use (usually [net.DefaultResolver.LookupTXT])
func (Resolver) LookupReleases
func (r Resolver) LookupReleases(ctx context.Context, domain string) ([]Release, error)
LookupReleases looks up and parses supported releases by querying the DNS TXT "_release.{domain}" records.
type Tag
type Tag struct {
Key string
Value Value
}
Tag represents a key-value tag pair of the DNS record
type Value
type Value string
Value represents a raw DNS value. Use [Value.String] to get the decoded value.
func (Value) String
func (v Value) String() string
String parses the value as a [DKIM-Quoted-Printable (RFC 6376)] string. It removes whitespaces and decodes hex-octets "=XX".
See [DKIMQuotedPrintableEncode] for encoding.
Files
Directories
dkim-encode-pairs endodes key-value pairs for usage in [Release Version Check over DNS (RVCoDNS)].
get-releases retrieves and prints out the currently supported releases using [Release Version Check over DNS (RVCoDNS)].
Forge
git clone
https://codeberg.org/pfad.fr/rvcodns.git git@codeberg.org:pfad.fr/rvcodns.git