Documentation
¶
Index ¶
- Constants
- Variables
- func FileDeserializer(filePath string) (outputMap map[string]any, err error)
- func NewCypherSecretKey() (string, error)
- func ReadServerPrivateIpAddress() (ipAddress tkValueObject.IpAddress, err error)
- func ReadServerPublicIpAddress() (ipAddress tkValueObject.IpAddress, err error)
- func StringDeserializer(serializedString string, serializationFormat string) (outputMap map[string]any, err error)
- func TrustedCidrsReader() (trustedCidrBlocks []tkValueObject.CidrBlock, err error)
- type CertificateSettings
- type Cypher
- type DnsLookup
- type DnsLookupSettings
- type FileClerk
- func (clerk FileClerk) CompressDir(sourcePath string, compressionFormatPtr *string) (compressedFilePath string, err error)
- func (clerk FileClerk) CompressFile(sourcePath string, compressionFormatPtr *string) (compressedFilePath string, err error)
- func (clerk FileClerk) CopyDir(sourcePath, targetPath string) error
- func (clerk FileClerk) CopyFile(sourcePath, targetPath string) error
- func (clerk FileClerk) CreateDir(dirPath string) error
- func (clerk FileClerk) CreateFile(filePath string) error
- func (clerk FileClerk) CreateSymlink(sourcePath, targetPath string, shouldOverwrite bool) error
- func (clerk FileClerk) DecompressDir(sourcePath string, targetPathPtr *string, shouldKeepSourceFilePtr *bool) (decompressedDirPath string, err error)
- func (clerk FileClerk) DecompressFile(sourcePath string, targetPathPtr *string, shouldKeepSourceFilePtr *bool) (decompressedFilePath string, err error)
- func (clerk FileClerk) DeleteDir(dirPath string) error
- func (clerk FileClerk) DeleteFile(filePath string) error
- func (clerk FileClerk) DeleteFileContent(filePath string) error
- func (clerk FileClerk) FileContentRegexReplace(filePath tkValueObject.UnixAbsoluteFilePath, regexPattern *regexp.Regexp, ...) (replacementCount int, err error)
- func (clerk FileClerk) FileContentRegexSearch(filePath tkValueObject.UnixAbsoluteFilePath, regexPattern *regexp.Regexp) (regexSearchFindings []FileContentRegexFindings, err error)
- func (FileClerk) FileExists(filePath string) bool
- func (clerk FileClerk) IsDir(filePath string) bool
- func (clerk FileClerk) IsFile(filePath string) bool
- func (FileClerk) IsSymlink(sourcePath string) bool
- func (clerk FileClerk) IsSymlinkTo(sourcePath string, targetPath string) bool
- func (clerk FileClerk) MoveDir(sourcePath, targetPath string) error
- func (clerk FileClerk) MoveFile(sourcePath, targetPath string) error
- func (clerk FileClerk) OverwriteFile(sourcePath, targetPath string) error
- func (clerk FileClerk) ReadFileContent(filePath string, maxContentSizeBytesPtr *int64) (string, error)
- func (FileClerk) RemoveSymlink(symlinkPath string) error
- func (clerk FileClerk) RenameFile(sourcePath, targetPath string) error
- func (clerk FileClerk) TruncateFileContent(filePath string) error
- func (clerk FileClerk) UpdateFileContent(filePath, newContent string, shouldOverwrite bool) error
- func (clerk FileClerk) UpdateFileOwnership(filePath string, userId, groupId int) error
- func (clerk FileClerk) UpdateFilePermissions(filePath string, permissionsPtr *int) error
- type FileContentRegexFindings
- type PrivateKeySettings
- type PublicIpAddressResolver
- type ReadThrough
- type Shell
- type ShellError
- type ShellEscape
- type ShellSettings
- type Synthesizer
- func (synth *Synthesizer) CACertificatePemFactory(settings CertificateSettings) (certPem string, keyPem string, err error)
- func (synth *Synthesizer) CertificatePemFactory(settings CertificateSettings) (certPem string, keyPem string, err error)
- func (synth *Synthesizer) CharsetPresenceGuarantor(originalString []byte, charset string) []byte
- func (synth *Synthesizer) MailAddressFactory(username *string) string
- func (synth *Synthesizer) PasswordFactory(desiredLength int, shouldIncludeSymbols bool) string
- func (synth *Synthesizer) PrivateKeyPemFactory(settings PrivateKeySettings) (keyPem string, err error)
- func (synth *Synthesizer) SelfSignedCertificatePairFactory(commonName *tkValueObject.Fqdn, altNames []tkValueObject.Fqdn) (certPair tls.Certificate, err error)
- func (synth *Synthesizer) SelfSignedCertificatePairPemFactory(commonName *tkValueObject.Fqdn, altNames []tkValueObject.Fqdn) (certPem string, keyPem string, err error)
- func (synth *Synthesizer) UsernameFactory() string
Constants ¶
const ( SerializationFormatJson = "json" SerializationFormatYaml = "yaml" )
const ( ReadThroughCertPairCertPathEnvVarName string = "CERTIFICATE_PAIR_CERT_PATH" ReadThroughCertPairKeyPathEnvVarName string = "CERTIFICATE_PAIR_KEY_PATH" ReadThroughPkiDirEnvVarName string = "PKI_DIR" )
const ( CharsetLowercaseLetters string = "abcdefghijklmnopqrstuvwxyz" CharsetUppercaseLetters string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" CharsetNumbers string = "0123456789" CharsetSymbols string = "!@#$%^&*()_+" )
const ( TrustedIpsEnvVarName string = "TRUSTED_IPS" TrustedCidrsEnvVarName string = "TRUSTED_CIDRS" )
const CypherNewSecretKeyLength = 32
const (
RegexLargeFileThresholdBytes int64 = 10 * 1024 * 1024
)
const (
ServerPublicIpAddressEnvVarName string = "SERVER_PUBLIC_IP_ADDR"
)
Variables ¶
var ( ErrSourceFileMissing = errors.New("SourceFileNotFound") ErrTargetFileExists = errors.New("TargetFileAlreadyExists") ErrFileMissing = errors.New("FileNotFound") ErrFileEmpty = errors.New("FileEmpty") ErrReplacementWouldTruncateFile = errors.New("ReplacementWouldTruncateFile") ErrDirCompressionWrongFormat = errors.New("DirectoryCompressionMustUseTarFormat") ErrCompressedFileMissing = errors.New("CompressedFileNotFound") ErrSourceDirMissing = errors.New("SourceDirNotFound") ErrTargetDirExists = errors.New("TargetDirAlreadyExists") ErrSourcePathMissing = errors.New("SourcePathNotFound") ErrSymlinkExists = errors.New("SymlinkAlreadyExists") ErrTargetPathExists = errors.New("TargetPathAlreadyExists") ErrRegexPatternMissing = errors.New("RegexPatternCannotBeNil") ErrUnsupportedCompressionFormat = errors.New("UnsupportedCompressionFormat") ErrTargetIsDirectory = errors.New("TargetIsDirectory") ErrSourceIsDirectory = errors.New("SourceIsDirectory") )
Functions ¶
func FileDeserializer ¶ added in v0.0.2
func NewCypherSecretKey ¶ added in v0.1.7
NewCypherSecretKey generates a cryptographically secure random 32-byte secret key, encodes it in base64 for safe storage and transmission, and returns it as a string. This key is suitable for AES-GCM encryption and should be kept confidential.
func ReadServerPrivateIpAddress ¶ added in v0.0.6
func ReadServerPrivateIpAddress() (ipAddress tkValueObject.IpAddress, err error)
func ReadServerPublicIpAddress ¶ added in v0.0.6
func ReadServerPublicIpAddress() (ipAddress tkValueObject.IpAddress, err error)
func StringDeserializer ¶ added in v0.0.2
func TrustedCidrsReader ¶ added in v0.2.7
func TrustedCidrsReader() (trustedCidrBlocks []tkValueObject.CidrBlock, err error)
Types ¶
type CertificateSettings ¶ added in v0.2.0
type CertificateSettings struct {
CommonName *tkValueObject.Fqdn
AltNames []tkValueObject.Fqdn
IsCA bool
MaxPathLengthPtr *int
HasMaxPathLengthZero bool
}
type Cypher ¶ added in v0.1.7
type Cypher struct {
// contains filtered or unexported fields
}
func NewCypher ¶ added in v0.1.7
NewCypher creates a new Cypher instance with the provided base64-encoded secret key. The key must be a valid base64 string that decodes to exactly 16, 24, or 32 bytes for AES encryption. Use NewCypherSecretKey to generate a suitable key if needed. Returns an error if the key is invalid, providing fail-fast validation.
type DnsLookup ¶ added in v0.1.8
type DnsLookup struct {
// contains filtered or unexported fields
}
func NewDnsLookup ¶ added in v0.1.8
func NewDnsLookup(settings DnsLookupSettings) *DnsLookup
func (*DnsLookup) Execute ¶ added in v0.1.8
func (lookup *DnsLookup) Execute( hostname tkValueObject.UnixHostname, recordType *tkValueObject.DnsRecordType, ) ([]string, error)
type DnsLookupSettings ¶ added in v0.2.9
type DnsLookupSettings struct {
PrimaryResolver tkValueObject.IpAddress
SecondaryResolver tkValueObject.IpAddress
QueryTimeoutSecs uint
DialTimeoutMs uint
}
type FileClerk ¶ added in v0.0.7
type FileClerk struct{}
func (FileClerk) CompressDir ¶ added in v0.0.7
func (FileClerk) CompressFile ¶ added in v0.0.7
func (FileClerk) CreateFile ¶ added in v0.0.7
func (FileClerk) CreateSymlink ¶ added in v0.0.7
func (FileClerk) DecompressDir ¶ added in v0.0.7
func (FileClerk) DecompressFile ¶ added in v0.0.7
func (FileClerk) DeleteFile ¶ added in v0.0.7
func (FileClerk) DeleteFileContent ¶ added in v0.0.7
func (FileClerk) FileContentRegexReplace ¶ added in v0.3.0
func (clerk FileClerk) FileContentRegexReplace( filePath tkValueObject.UnixAbsoluteFilePath, regexPattern *regexp.Regexp, replacement string, ) (replacementCount int, err error)
FileContentRegexReplace atomically substitutes regex matches in a file's content. Empty source files and directories are rejected; symlinks are followed. Replacing everything with "" is rejected as a call-site bug because it would silently truncate the source. Use TruncateFileContent to intentionally empty a file or strip only non-whitespace content.
Files at or above RegexLargeFileThresholdBytes are processed line-by-line, so multi-line patterns only match in smaller files. Original line terminators are preserved unchanged.
func (FileClerk) FileContentRegexSearch ¶ added in v0.2.9
func (clerk FileClerk) FileContentRegexSearch( filePath tkValueObject.UnixAbsoluteFilePath, regexPattern *regexp.Regexp, ) (regexSearchFindings []FileContentRegexFindings, err error)
FileContentRegexSearch finds every regex match in a file and returns each match's 1-based inclusive line range plus capture groups.
Files below RegexLargeFileThresholdBytes are matched in a single regex pass; patterns with per-line anchors (^ / $) need the (?m) flag. Multi-line matches get a proper LineNumRange spanning every line they touch.
Larger files fall back to bufio.Scanner streaming, which splits on newlines — multi-line patterns only match within a single line and LineNumRange is always [n, n].
func (FileClerk) FileExists ¶ added in v0.0.7
func (FileClerk) IsSymlinkTo ¶ added in v0.0.7
func (FileClerk) OverwriteFile ¶ added in v0.3.0
OverwriteFile atomically replaces targetPath's underlying file with sourcePath's content. If targetPath is a symlink, the chain is resolved via filepath.EvalSymlinks so the rename modifies the underlying file's content rather than replacing the symlink path entry (which would leave the original target untouched and orphan any other references to it). EvSymlinks also handles relative symlink targets and walks multi-level chains, neither of which os.Readlink does on its own.
func (FileClerk) ReadFileContent ¶ added in v0.0.7
func (FileClerk) RemoveSymlink ¶ added in v0.0.7
func (FileClerk) RenameFile ¶ added in v0.0.7
func (FileClerk) TruncateFileContent ¶ added in v0.0.7
func (FileClerk) UpdateFileContent ¶ added in v0.0.7
func (FileClerk) UpdateFileOwnership ¶ added in v0.0.7
type FileContentRegexFindings ¶ added in v0.3.0
FileContentRegexFindings holds one regex match plus its 1-based line range and capture groups. LineNumRange is [start, end] inclusive; a single-line match has start == end.
type PrivateKeySettings ¶ added in v0.2.0
type PrivateKeySettings struct {
Algorithm tkValueObject.PrivateKeyAlgorithm
BitSize int
}
type PublicIpAddressResolver ¶ added in v0.2.9
type PublicIpAddressResolver struct {
// contains filtered or unexported fields
}
func NewPublicIpAddressResolver ¶ added in v0.2.9
func NewPublicIpAddressResolver() *PublicIpAddressResolver
func (*PublicIpAddressResolver) Resolve ¶ added in v0.2.9
func (resolver *PublicIpAddressResolver) Resolve() ( ipAddress tkValueObject.IpAddress, err error, )
type ReadThrough ¶ added in v0.1.0
type ReadThrough struct {
}
Provides methods for reading information that when not found, are generated on the fly.
func (*ReadThrough) CertPairFilePathsReader ¶ added in v0.1.0
func (rt *ReadThrough) CertPairFilePathsReader() ( certPath tkValueObject.UnixAbsoluteFilePath, keyPath tkValueObject.UnixAbsoluteFilePath, err error, )
Attempts to retrieve the certificate pair file paths from the environment variables "CERTIFICATE_PAIR_CERT_PATH" and "CERTIFICATE_PAIR_KEY_PATH", otherwise generates a self-signed certificate pair on local 'pki' directory (or the directory specified by the environment variable "PKI_DIR") and returns the absolute paths to the generated files.
type Shell ¶ added in v0.0.6
type Shell struct {
// contains filtered or unexported fields
}
func NewShell ¶ added in v0.0.6
func NewShell(settings ShellSettings) Shell
type ShellError ¶ added in v0.0.6
func (*ShellError) Error ¶ added in v0.0.6
func (e *ShellError) Error() string
type ShellEscape ¶ added in v0.0.7
type ShellEscape struct {
}
func (ShellEscape) Quote ¶ added in v0.0.7
func (ShellEscape) Quote(inputStr string) string
func (ShellEscape) StripUnsafe ¶ added in v0.0.7
func (ShellEscape) StripUnsafe(inputStr string) string
type ShellSettings ¶ added in v0.0.6
type Synthesizer ¶
type Synthesizer struct{}
func (*Synthesizer) CACertificatePemFactory ¶ added in v0.2.0
func (synth *Synthesizer) CACertificatePemFactory( settings CertificateSettings, ) (certPem string, keyPem string, err error)
func (*Synthesizer) CertificatePemFactory ¶ added in v0.2.0
func (synth *Synthesizer) CertificatePemFactory( settings CertificateSettings, ) (certPem string, keyPem string, err error)
func (*Synthesizer) CharsetPresenceGuarantor ¶
func (synth *Synthesizer) CharsetPresenceGuarantor( originalString []byte, charset string, ) []byte
func (*Synthesizer) MailAddressFactory ¶
func (synth *Synthesizer) MailAddressFactory(username *string) string
func (*Synthesizer) PasswordFactory ¶
func (synth *Synthesizer) PasswordFactory( desiredLength int, shouldIncludeSymbols bool, ) string
func (*Synthesizer) PrivateKeyPemFactory ¶ added in v0.2.0
func (synth *Synthesizer) PrivateKeyPemFactory( settings PrivateKeySettings, ) (keyPem string, err error)
func (*Synthesizer) SelfSignedCertificatePairFactory ¶ added in v0.1.0
func (synth *Synthesizer) SelfSignedCertificatePairFactory( commonName *tkValueObject.Fqdn, altNames []tkValueObject.Fqdn, ) (certPair tls.Certificate, err error)
func (*Synthesizer) SelfSignedCertificatePairPemFactory ¶ added in v0.1.0
func (synth *Synthesizer) SelfSignedCertificatePairPemFactory( commonName *tkValueObject.Fqdn, altNames []tkValueObject.Fqdn, ) (certPem string, keyPem string, err error)
func (*Synthesizer) UsernameFactory ¶
func (synth *Synthesizer) UsernameFactory() string