Files
go-sam-go/config.go
2025-05-29 19:47:50 -04:00

205 lines
3.9 KiB
Go

package sam3
import (
"strconv"
"github.com/go-i2p/go-sam-go/common"
)
// I2PConfig manages I2P configuration options
type I2PConfig struct {
*common.I2PConfig
}
// NewConfig creates a new I2PConfig
func NewConfig(opts ...func(*I2PConfig) error) (*I2PConfig, error) {
baseConfig, err := common.NewConfig()
if err != nil {
return nil, err
}
config := &I2PConfig{
I2PConfig: baseConfig,
}
for _, opt := range opts {
if err := opt(config); err != nil {
return nil, err
}
}
return config, nil
}
// All the configuration method forwards
func (f *I2PConfig) SetSAMAddress(addr string) {
f.I2PConfig.SetSAMAddress(addr)
}
func (f *I2PConfig) Sam() string {
return f.I2PConfig.Sam()
}
func (f *I2PConfig) SAMAddress() string {
return f.I2PConfig.SAMAddress()
}
func (f *I2PConfig) ID() string {
return f.I2PConfig.ID()
}
func (f *I2PConfig) Print() []string {
return f.I2PConfig.Print()
}
func (f *I2PConfig) SessionStyle() string {
return f.I2PConfig.SessionStyle()
}
func (f *I2PConfig) MinSAM() string {
return f.I2PConfig.MinSAM()
}
func (f *I2PConfig) MaxSAM() string {
return f.I2PConfig.MaxSAM()
}
func (f *I2PConfig) DestinationKey() string {
return f.I2PConfig.DestinationKey()
}
func (f *I2PConfig) SignatureType() string {
return f.I2PConfig.SignatureType()
}
func (f *I2PConfig) ToPort() string {
return f.I2PConfig.ToPort()
}
func (f *I2PConfig) Reduce() string {
return f.I2PConfig.Reduce()
}
func (f *I2PConfig) Reliability() string {
return f.I2PConfig.Reliability()
}
// Configuration option setters for all the missing Set* functions
func SetInAllowZeroHop(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
e.InAllowZeroHop = s == "true"
return nil
}
}
func SetOutAllowZeroHop(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
e.OutAllowZeroHop = s == "true"
return nil
}
}
func SetInLength(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.InLength = i
}
return nil
}
}
func SetOutLength(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.OutLength = i
}
return nil
}
}
func SetInQuantity(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.InQuantity = i
}
return nil
}
}
func SetOutQuantity(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.OutQuantity = i
}
return nil
}
}
func SetInVariance(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.InVariance = i
}
return nil
}
}
func SetOutVariance(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.OutVariance = i
}
return nil
}
}
func SetInBackupQuantity(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.InBackupQuantity = i
}
return nil
}
}
func SetOutBackupQuantity(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.OutBackupQuantity = i
}
return nil
}
}
func SetUseCompression(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
e.UseCompression = s == "true"
return nil
}
}
func SetReduceIdleTime(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.ReduceIdleTime = i
}
return nil
}
}
func SetCloseIdleTime(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
if i, err := strconv.Atoi(s); err == nil {
e.CloseIdleTime = i
}
return nil
}
}
func SetAccessListType(s string) func(*I2PConfig) error {
return func(e *I2PConfig) error {
e.AccessListType = s
return nil
}
}