mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
* Add multiple string support to SPF optimizer Notes: * This implements [RFC 4408][rfc] for the SPF optimizer. Allowing for more SPF records to fit within the 10 lookups by using multiple strings. * By default the max size of the TXT remains at 255. Meaning users will still only get a single 255 length string unless they modify `txtMaxSize` and opt into this feature. * The general recommendation when using multiple strings for TXT records is to keep the size within a single UDP packet. It seems like the maximum size for this depends on a bunch of factors that are sometimes outside of your control. A similar tool has a [formula for estimating the maximum allowed size][formula]. However I felt giving a user configurable size would fit with the current configuration style that dnscontrol has. Similar to how dnscontrol recommends only flattening a record if absolutely needed, I can see this length being increased by only enough to get you within 10 lookups. [rfc]: https://tools.ietf.org/html/rfc4408#section-3.1.3 [formula]: https://github.com/oasys/mkspf/blob/master/Overhead.md * Add a nice comment for the Chunks function
326 lines
12 KiB
Go
326 lines
12 KiB
Go
// Code generated by "esc"; DO NOT EDIT.
|
|
|
|
package js
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
"encoding/base64"
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"os"
|
|
"path"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type _escLocalFS struct{}
|
|
|
|
var _escLocal _escLocalFS
|
|
|
|
type _escStaticFS struct{}
|
|
|
|
var _escStatic _escStaticFS
|
|
|
|
type _escDirectory struct {
|
|
fs http.FileSystem
|
|
name string
|
|
}
|
|
|
|
type _escFile struct {
|
|
compressed string
|
|
size int64
|
|
modtime int64
|
|
local string
|
|
isDir bool
|
|
|
|
once sync.Once
|
|
data []byte
|
|
name string
|
|
}
|
|
|
|
func (_escLocalFS) Open(name string) (http.File, error) {
|
|
f, present := _escData[path.Clean(name)]
|
|
if !present {
|
|
return nil, os.ErrNotExist
|
|
}
|
|
return os.Open(f.local)
|
|
}
|
|
|
|
func (_escStaticFS) prepare(name string) (*_escFile, error) {
|
|
f, present := _escData[path.Clean(name)]
|
|
if !present {
|
|
return nil, os.ErrNotExist
|
|
}
|
|
var err error
|
|
f.once.Do(func() {
|
|
f.name = path.Base(name)
|
|
if f.size == 0 {
|
|
return
|
|
}
|
|
var gr *gzip.Reader
|
|
b64 := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(f.compressed))
|
|
gr, err = gzip.NewReader(b64)
|
|
if err != nil {
|
|
return
|
|
}
|
|
f.data, err = ioutil.ReadAll(gr)
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return f, nil
|
|
}
|
|
|
|
func (fs _escStaticFS) Open(name string) (http.File, error) {
|
|
f, err := fs.prepare(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return f.File()
|
|
}
|
|
|
|
func (dir _escDirectory) Open(name string) (http.File, error) {
|
|
return dir.fs.Open(dir.name + name)
|
|
}
|
|
|
|
func (f *_escFile) File() (http.File, error) {
|
|
type httpFile struct {
|
|
*bytes.Reader
|
|
*_escFile
|
|
}
|
|
return &httpFile{
|
|
Reader: bytes.NewReader(f.data),
|
|
_escFile: f,
|
|
}, nil
|
|
}
|
|
|
|
func (f *_escFile) Close() error {
|
|
return nil
|
|
}
|
|
|
|
func (f *_escFile) Readdir(count int) ([]os.FileInfo, error) {
|
|
if !f.isDir {
|
|
return nil, fmt.Errorf(" escFile.Readdir: '%s' is not directory", f.name)
|
|
}
|
|
|
|
fis, ok := _escDirs[f.local]
|
|
if !ok {
|
|
return nil, fmt.Errorf(" escFile.Readdir: '%s' is directory, but we have no info about content of this dir, local=%s", f.name, f.local)
|
|
}
|
|
limit := count
|
|
if count <= 0 || limit > len(fis) {
|
|
limit = len(fis)
|
|
}
|
|
|
|
if len(fis) == 0 && count > 0 {
|
|
return nil, io.EOF
|
|
}
|
|
|
|
return fis[0:limit], nil
|
|
}
|
|
|
|
func (f *_escFile) Stat() (os.FileInfo, error) {
|
|
return f, nil
|
|
}
|
|
|
|
func (f *_escFile) Name() string {
|
|
return f.name
|
|
}
|
|
|
|
func (f *_escFile) Size() int64 {
|
|
return f.size
|
|
}
|
|
|
|
func (f *_escFile) Mode() os.FileMode {
|
|
return 0
|
|
}
|
|
|
|
func (f *_escFile) ModTime() time.Time {
|
|
return time.Unix(f.modtime, 0)
|
|
}
|
|
|
|
func (f *_escFile) IsDir() bool {
|
|
return f.isDir
|
|
}
|
|
|
|
func (f *_escFile) Sys() interface{} {
|
|
return f
|
|
}
|
|
|
|
// _escFS returns a http.Filesystem for the embedded assets. If useLocal is true,
|
|
// the filesystem's contents are instead used.
|
|
func _escFS(useLocal bool) http.FileSystem {
|
|
if useLocal {
|
|
return _escLocal
|
|
}
|
|
return _escStatic
|
|
}
|
|
|
|
// _escDir returns a http.Filesystem for the embedded assets on a given prefix dir.
|
|
// If useLocal is true, the filesystem's contents are instead used.
|
|
func _escDir(useLocal bool, name string) http.FileSystem {
|
|
if useLocal {
|
|
return _escDirectory{fs: _escLocal, name: name}
|
|
}
|
|
return _escDirectory{fs: _escStatic, name: name}
|
|
}
|
|
|
|
// _escFSByte returns the named file from the embedded assets. If useLocal is
|
|
// true, the filesystem's contents are instead used.
|
|
func _escFSByte(useLocal bool, name string) ([]byte, error) {
|
|
if useLocal {
|
|
f, err := _escLocal.Open(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
b, err := ioutil.ReadAll(f)
|
|
_ = f.Close()
|
|
return b, err
|
|
}
|
|
f, err := _escStatic.prepare(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return f.data, nil
|
|
}
|
|
|
|
// _escFSMustByte is the same as _escFSByte, but panics if name is not present.
|
|
func _escFSMustByte(useLocal bool, name string) []byte {
|
|
b, err := _escFSByte(useLocal, name)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return b
|
|
}
|
|
|
|
// _escFSString is the string version of _escFSByte.
|
|
func _escFSString(useLocal bool, name string) (string, error) {
|
|
b, err := _escFSByte(useLocal, name)
|
|
return string(b), err
|
|
}
|
|
|
|
// _escFSMustString is the string version of _escFSMustByte.
|
|
func _escFSMustString(useLocal bool, name string) string {
|
|
return string(_escFSMustByte(useLocal, name))
|
|
}
|
|
|
|
var _escData = map[string]*_escFile{
|
|
|
|
"/helpers.js": {
|
|
name: "helpers.js",
|
|
local: "pkg/js/helpers.js",
|
|
size: 24193,
|
|
modtime: 0,
|
|
compressed: `
|
|
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
|
|
NmaBXgAA
|
|
`,
|
|
},
|
|
}
|
|
|
|
var _escDirs = map[string][]os.FileInfo{}
|