added close-on-idle

This commit is contained in:
idk
2018-08-03 01:17:08 -04:00
parent 81140a27ad
commit 7d820ba44a
7 changed files with 120 additions and 19 deletions

View File

@ -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-----

View File

@ -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),
)

View File

@ -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 {

View File

@ -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

View File

@ -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",

View File

@ -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 {

View File

@ -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 {