added close-on-idle
This commit is contained in:
@ -134,12 +134,12 @@ use of INI-like labels. For now, my workaround is to comment out the labels
|
||||
until I deal with this.
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAltjwooACgkQ11wDs5te
|
||||
FOE5dAf/QhC5NXrgmSgcOQPRcRSywTP+1OxIFv3Tkbkjj2WzsMzs7wg+eACf+bV1
|
||||
gPNiRgaP3RiLVnkBKLpG3yU3ExHOpkiaksCRsx07aqIwKXYV8/pUJiMTSU53cwxp
|
||||
tVwvzmOcbsOg0KmLr1pmjcsy+Y/5jMpRKM8+zPV0Q6Ml+hoX/2F56ZSeZBkIHDAZ
|
||||
lPuXjyKPec1wN4Sj6kiUaZl5UYcnPJ4K6CBw59W94X0cHXfJ0MBgfUiUtDfqyrMv
|
||||
jzTonGYJnRSZZHAaxn711ymDP7QYPK1TwPamtvv+Vd/fDyWFom9komCtcQVcjRAj
|
||||
Nl7RjS2nwkB9qT6D6wBSZytNNzQUcQ==
|
||||
=Pf1f
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAltj5U4ACgkQ11wDs5te
|
||||
FOE7PggAhbphEtGckbp6uDA4bRNXdnBdykPbE/UjVoQT6xHwrNS33Zfi7EXFMZ4U
|
||||
2bhcm+MeXYq3SceNhScq8L9rLJV2E2e63eLOg7chsjZ5z00zlme1w4qEcbisOmMq
|
||||
HUEkdFaeJOfEUcN6SpKe2c98ZtODtFM8yd02TRykUYvOzDIvQzKjUnqSjaSsDEKd
|
||||
x9SorAmvp/lzIpdUTvasewMaLxZYCMO1AICtL2M2H4zTICEawu7dAYNp9ikeu3pJ
|
||||
B7/jtC6EIHPUsbVaKgh8pjBHFVXnjYCFvcusF+EXuThqiHGMQSFEALJZJCMSXGz+
|
||||
wAfIke5BTVkpmbVc8sgJj2E4q0y04Q==
|
||||
=diBy
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -31,6 +31,8 @@ type Conf struct {
|
||||
reduceIdle bool
|
||||
reduceIdleTime int
|
||||
reduceIdleQuantity int
|
||||
closeIdle bool
|
||||
closeIdleTime int
|
||||
accessListType string
|
||||
accessList []string
|
||||
}
|
||||
@ -79,12 +81,12 @@ func (c *Conf) GetInt(key string) (int, bool) {
|
||||
}
|
||||
|
||||
func (c *Conf) AddAccessListMember(key string) {
|
||||
for _, item := range c.accessList {
|
||||
if item == key {
|
||||
return
|
||||
}
|
||||
}
|
||||
c.accessList = append(c.accessList, key)
|
||||
for _, item := range c.accessList {
|
||||
if item == key {
|
||||
return
|
||||
}
|
||||
}
|
||||
c.accessList = append(c.accessList, key)
|
||||
}
|
||||
|
||||
func NewI2PTunConf(iniFile string) (*Conf, error) {
|
||||
@ -213,6 +215,17 @@ func NewI2PTunConf(iniFile string) (*Conf, error) {
|
||||
c.reduceIdleQuantity = 3
|
||||
}
|
||||
|
||||
if v, ok := c.config.GetBool("i2cp.closeOnIdle"); ok {
|
||||
c.closeIdle = v
|
||||
} else {
|
||||
c.reduceIdle = false
|
||||
}
|
||||
if v, ok := c.config.GetInt("i2cp.closeIdleTime"); ok {
|
||||
c.closeIdleTime = (v / 2000) / 60
|
||||
} else {
|
||||
c.closeIdleTime = (6 * 60) * 2000
|
||||
}
|
||||
|
||||
if v, ok := c.config.GetBool("i2cp.enableBlackList"); ok {
|
||||
if v {
|
||||
c.accessListType = "blacklist"
|
||||
@ -261,6 +274,8 @@ func NewSAMForwarderFromConf(config *Conf) (*samforwarder.SAMForwarder, error) {
|
||||
samforwarder.SetReduceIdle(config.reduceIdle),
|
||||
samforwarder.SetReduceIdleTime(config.reduceIdleTime),
|
||||
samforwarder.SetReduceIdleQuantity(config.reduceIdleQuantity),
|
||||
samforwarder.SetCloseIdle(config.closeIdle),
|
||||
samforwarder.SetCloseIdleTime(config.closeIdleTime),
|
||||
samforwarder.SetAccessListType(config.accessListType),
|
||||
samforwarder.SetAccessList(config.accessList),
|
||||
)
|
||||
@ -296,6 +311,8 @@ func NewSAMForwarderFromConfig(iniFile, SamHost, SamPort string) (*samforwarder.
|
||||
samforwarder.SetReduceIdle(config.reduceIdle),
|
||||
samforwarder.SetReduceIdleTime(config.reduceIdleTime),
|
||||
samforwarder.SetReduceIdleQuantity(config.reduceIdleQuantity),
|
||||
samforwarder.SetCloseIdle(config.closeIdle),
|
||||
samforwarder.SetCloseIdleTime(config.closeIdleTime),
|
||||
samforwarder.SetAccessListType(config.accessListType),
|
||||
samforwarder.SetAccessList(config.accessList),
|
||||
)
|
||||
@ -331,6 +348,8 @@ func NewSAMSSUForwarderFromConfig(iniFile, SamHost, SamPort string) (*samforward
|
||||
samforwarderudp.SetReduceIdle(config.reduceIdle),
|
||||
samforwarderudp.SetReduceIdleTime(config.reduceIdleTime),
|
||||
samforwarderudp.SetReduceIdleQuantity(config.reduceIdleQuantity),
|
||||
samforwarderudp.SetCloseIdle(config.closeIdle),
|
||||
samforwarderudp.SetCloseIdleTime(config.closeIdleTime),
|
||||
samforwarderudp.SetAccessListType(config.accessListType),
|
||||
samforwarderudp.SetAccessList(config.accessList),
|
||||
)
|
||||
@ -362,6 +381,8 @@ func NewSAMSSUForwarderFromConf(config *Conf) (*samforwarderudp.SAMSSUForwarder,
|
||||
samforwarderudp.SetReduceIdle(config.reduceIdle),
|
||||
samforwarderudp.SetReduceIdleTime(config.reduceIdleTime),
|
||||
samforwarderudp.SetReduceIdleQuantity(config.reduceIdleQuantity),
|
||||
samforwarderudp.SetCloseIdle(config.closeIdle),
|
||||
samforwarderudp.SetCloseIdleTime(config.closeIdleTime),
|
||||
samforwarderudp.SetAccessListType(config.accessListType),
|
||||
samforwarderudp.SetAccessList(config.accessList),
|
||||
)
|
||||
|
@ -248,6 +248,40 @@ func SetReduceIdleTimeMs(u int) func(*SAMForwarder) error {
|
||||
}
|
||||
}
|
||||
|
||||
//SetCloseIdle tells the connection to close it's tunnels during extended idle time.
|
||||
func SetCloseIdle(b bool) func(*SAMForwarder) error {
|
||||
return func(c *SAMForwarder) error {
|
||||
if b {
|
||||
c.closeIdle = "true"
|
||||
return nil
|
||||
}
|
||||
c.closeIdle = "false"
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
//SetCloseIdleTime sets the time to wait before closing tunnels to idle levels
|
||||
func SetCloseIdleTime(u int) func(*SAMForwarder) error {
|
||||
return func(c *SAMForwarder) error {
|
||||
if u > 6 {
|
||||
c.closeIdleTime = strconv.Itoa((u * 60) * 1000)
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("Invalid reduce idle timeout(Measured in minutes)")
|
||||
}
|
||||
}
|
||||
|
||||
//SetCloseIdleTimeMs sets the time to wait before closing tunnels to idle levels in milliseconds
|
||||
func SetCloseIdleTimeMs(u int) func(*SAMForwarder) error {
|
||||
return func(c *SAMForwarder) error {
|
||||
if u > 300000 {
|
||||
c.closeIdleTime = strconv.Itoa(u)
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("Invalid reduce idle timeout(Measured in minutes)")
|
||||
}
|
||||
}
|
||||
|
||||
//SetReduceIdleQuantity sets minimum number of tunnels to reduce to during idle time
|
||||
func SetReduceIdleQuantity(u int) func(*SAMForwarder) error {
|
||||
return func(c *SAMForwarder) error {
|
||||
|
10
forwarder.go
10
forwarder.go
@ -35,7 +35,7 @@ type SAMForwarder struct {
|
||||
|
||||
// I2CP options
|
||||
encryptLeaseSet string
|
||||
LeaseSetKeys *sam3.I2PKeys
|
||||
LeaseSetKeys *sam3.I2PKeys
|
||||
inAllowZeroHop string
|
||||
outAllowZeroHop string
|
||||
inLength string
|
||||
@ -47,6 +47,8 @@ type SAMForwarder struct {
|
||||
inBackupQuantity string
|
||||
outBackupQuantity string
|
||||
useCompression string
|
||||
closeIdle string
|
||||
closeIdleTime string
|
||||
reduceIdle string
|
||||
reduceIdleTime string
|
||||
reduceIdleQuantity string
|
||||
@ -131,6 +133,8 @@ func (f *SAMForwarder) Serve() error {
|
||||
"i2cp.reduceOnIdle=" + f.reduceIdle,
|
||||
"i2cp.reduceIdleTime=" + f.reduceIdleTime,
|
||||
"i2cp.reduceQuantity=" + f.reduceIdleQuantity,
|
||||
"i2cp.closeOnIdle=" + f.closeIdle,
|
||||
"i2cp.closeIdleTime=" + f.closeIdleTime,
|
||||
f.accesslisttype(),
|
||||
f.accesslist(),
|
||||
}); err != nil {
|
||||
@ -180,11 +184,13 @@ func NewSAMForwarderFromOptions(opts ...func(*SAMForwarder) error) (*SAMForwarde
|
||||
s.outBackupQuantity = "3"
|
||||
s.inAllowZeroHop = "false"
|
||||
s.outAllowZeroHop = "false"
|
||||
s.encryptLeaseSet = "false"
|
||||
s.encryptLeaseSet = "false"
|
||||
s.useCompression = "true"
|
||||
s.reduceIdle = "false"
|
||||
s.reduceIdleTime = "15"
|
||||
s.reduceIdleQuantity = "4"
|
||||
s.closeIdle = "false"
|
||||
s.closeIdleTime = "30"
|
||||
for _, o := range opts {
|
||||
if err := o(&s); err != nil {
|
||||
return nil, err
|
||||
|
@ -54,8 +54,8 @@ func main() {
|
||||
udpMode := flag.Bool("udp", false,
|
||||
"UDP mode(true or false)")
|
||||
|
||||
//EncryptedLeasesetKeys := flag.String("lsk","none",
|
||||
// "path to saved encrypted leaseset keys")
|
||||
//EncryptedLeasesetKeys := flag.String("lsk","none",
|
||||
// "path to saved encrypted leaseset keys")
|
||||
TargetDir := flag.String("dir", "",
|
||||
"Directory to save tunnel configuration file in.")
|
||||
iniFile := flag.String("ini", "none",
|
||||
|
@ -259,6 +259,40 @@ func SetReduceIdleQuantity(u int) func(*SAMSSUForwarder) error {
|
||||
}
|
||||
}
|
||||
|
||||
//SetCloseIdle tells the connection to close it's tunnels during extended idle time.
|
||||
func SetCloseIdle(b bool) func(*SAMSSUForwarder) error {
|
||||
return func(c *SAMSSUForwarder) error {
|
||||
if b {
|
||||
c.closeIdle = "true"
|
||||
return nil
|
||||
}
|
||||
c.closeIdle = "false"
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
//SetCloseIdleTime sets the time to wait before closing tunnels to idle levels
|
||||
func SetCloseIdleTime(u int) func(*SAMSSUForwarder) error {
|
||||
return func(c *SAMSSUForwarder) error {
|
||||
if u > 6 {
|
||||
c.closeIdleTime = strconv.Itoa((u * 60) * 1000)
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("Invalid reduce idle timeout(Measured in minutes)")
|
||||
}
|
||||
}
|
||||
|
||||
//SetCloseIdleTimeMs sets the time to wait before closing tunnels to idle levels in milliseconds
|
||||
func SetCloseIdleTimeMs(u int) func(*SAMSSUForwarder) error {
|
||||
return func(c *SAMSSUForwarder) error {
|
||||
if u > 300000 {
|
||||
c.closeIdleTime = strconv.Itoa(u)
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("Invalid reduce idle timeout(Measured in minutes)")
|
||||
}
|
||||
}
|
||||
|
||||
//SetAccessListType tells the system to treat the accessList as a whitelist
|
||||
func SetAccessListType(s string) func(*SAMSSUForwarder) error {
|
||||
return func(c *SAMSSUForwarder) error {
|
||||
|
@ -46,6 +46,8 @@ type SAMSSUForwarder struct {
|
||||
inBackupQuantity string
|
||||
outBackupQuantity string
|
||||
useCompression string
|
||||
closeIdle string
|
||||
closeIdleTime string
|
||||
reduceIdle string
|
||||
reduceIdleTime string
|
||||
reduceIdleQuantity string
|
||||
@ -148,6 +150,8 @@ func (f *SAMSSUForwarder) Serve() error {
|
||||
"i2cp.reduceOnIdle=" + f.reduceIdle,
|
||||
"i2cp.reduceIdleTime=" + f.reduceIdleTime,
|
||||
"i2cp.reduceQuantity=" + f.reduceIdleQuantity,
|
||||
"i2cp.closeOnIdle=" + f.closeIdle,
|
||||
"i2cp.closeIdleTime=" + f.closeIdleTime,
|
||||
f.accesslisttype(),
|
||||
f.accesslist(),
|
||||
}, 0); err != nil {
|
||||
@ -190,9 +194,11 @@ func NewSAMSSUForwarderFromOptions(opts ...func(*SAMSSUForwarder) error) (*SAMSS
|
||||
s.inAllowZeroHop = "false"
|
||||
s.outAllowZeroHop = "false"
|
||||
s.useCompression = "true"
|
||||
s.encryptLeaseSet = "false"
|
||||
s.encryptLeaseSet = "false"
|
||||
s.reduceIdle = "false"
|
||||
s.reduceIdleTime = "15"
|
||||
s.closeIdle = "false"
|
||||
s.closeIdleTime = "30"
|
||||
s.reduceIdleQuantity = "4"
|
||||
for _, o := range opts {
|
||||
if err := o(&s); err != nil {
|
||||
|
Reference in New Issue
Block a user