diff --git a/Makefile b/Makefile index 753e414..37741d5 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ LOG := log/ ETC := etc/ USR := usr/ LOCAL := local/ -VERSION := 0.32.08 +VERSION := 0.32.081 GO111MODULE=on diff --git a/config/helpers/tunconf_outproxy.go b/config/helpers/tunconf_outproxy.go index 2785704..97b9d17 100644 --- a/config/helpers/tunconf_outproxy.go +++ b/config/helpers/tunconf_outproxy.go @@ -50,7 +50,69 @@ func NewOutProxyFromConf(config *i2ptunconf.Conf) (*outproxy.OutProxy, error) { } // NewOutProxyFromConfig generates a new OutProxy from a config file -func NewOutProxyFromConfig(iniFile, SamHost, SamPort string, label ...string) (*outproxy.OutProxy, error) { +func NewOutProxyFromConfig(iniFile, SamHost, SamPort string, label ...string) (*outproxy.HttpOutProxy, error) { + if iniFile != "none" { + config, err := i2ptunconf.NewI2PTunConf(iniFile, label...) + if err != nil { + return nil, err + } + if SamHost != "" && SamHost != "127.0.0.1" && SamHost != "localhost" { + config.SamHost = config.GetSAMHost(SamHost, config.SamHost) + } + if SamPort != "" && SamPort != "7656" { + config.SamPort = config.GetSAMPort(SamPort, config.SamPort) + } + return NewHttpOutProxyFromConf(config) + } + return nil, nil +} + +// NewOutProxyFromConf generates a SAMforwarder from *i2ptunconf.Conf +func NewHttpOutProxyFromConf(config *i2ptunconf.Conf) (*outproxy.HttpOutProxy, error) { + if config != nil { + return outproxy.NewHttpOutProxydFromOptions( + outproxy.SetHttpType(config.Type), + outproxy.SetHttpSaveFile(config.SaveFile), + outproxy.SetHttpFilePath(config.SaveDirectory), + outproxy.SetHttpHost(config.TargetHost), + outproxy.SetHttpPort(config.TargetPort), + outproxy.SetHttpSAMHost(config.SamHost), + outproxy.SetHttpSAMPort(config.SamPort), + outproxy.SetHttpSigType(config.SigType), + outproxy.SetHttpName(config.TunName), + outproxy.SetHttpInLength(config.InLength), + outproxy.SetHttpOutLength(config.OutLength), + outproxy.SetHttpInVariance(config.InVariance), + outproxy.SetHttpOutVariance(config.OutVariance), + outproxy.SetHttpInQuantity(config.InQuantity), + outproxy.SetHttpOutQuantity(config.OutQuantity), + outproxy.SetHttpInBackups(config.InBackupQuantity), + outproxy.SetHttpOutBackups(config.OutBackupQuantity), + outproxy.SetHttpEncrypt(config.EncryptLeaseSet), + outproxy.SetHttpLeaseSetKey(config.LeaseSetKey), + outproxy.SetHttpLeaseSetPrivateKey(config.LeaseSetPrivateKey), + outproxy.SetHttpLeaseSetPrivateSigningKey(config.LeaseSetPrivateSigningKey), + outproxy.SetHttpAllowZeroIn(config.InAllowZeroHop), + outproxy.SetHttpAllowZeroOut(config.OutAllowZeroHop), + outproxy.SetHttpFastRecieve(config.FastRecieve), + outproxy.SetHttpCompress(config.UseCompression), + outproxy.SetHttpReduceIdle(config.ReduceIdle), + outproxy.SetHttpReduceIdleTimeMs(config.ReduceIdleTime), + outproxy.SetHttpReduceIdleQuantity(config.ReduceIdleQuantity), + outproxy.SetHttpCloseIdle(config.CloseIdle), + outproxy.SetHttpCloseIdleTimeMs(config.CloseIdleTime), + outproxy.SetHttpAccessListType(config.AccessListType), + outproxy.SetHttpAccessList(config.AccessList), + outproxy.SetHttpMessageReliability(config.MessageReliability), + outproxy.SetHttpKeyFile(config.KeyFilePath), + //outproxy.SetHttpTargetForPort443(config.TargetForPort443), + ) + } + return nil, nil +} + +// NewOutProxyFromConfig generates a new OutProxy from a config file +func NewHttpOutProxyFromConfig(iniFile, SamHost, SamPort string, label ...string) (*outproxy.OutProxy, error) { if iniFile != "none" { config, err := i2ptunconf.NewI2PTunConf(iniFile, label...) if err != nil { diff --git a/manager/manager.go b/manager/manager.go index de433e4..d6890fa 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -191,6 +191,13 @@ func NewSAMManagerFromOptions(opts ...func(*SAMManager) error) (*SAMManager, err } else { return nil, e } + case "outproxyhttp": + if f, e := samtunnelhandler.NewTunnelHandler(i2ptunhelper.NewHttpOutProxyFromConfig(s.config.FilePath, s.SamHost, s.SamPort, label)); e == nil { + log.Println("found outproxy under", label) + s.handlerMux = s.handlerMux.Append(f) + } else { + return nil, e + } /*case "vpnserver": if f, e := samtunnelhandler.NewTunnelHandler(samforwardervpnserver.NewSAMVPNForwarderFromConfig(s.config.FilePath, s.SamHost, s.SamPort, label)); e == nil { log.Println("found vpnserver under", label) @@ -285,13 +292,13 @@ func NewSAMManagerFromOptions(opts ...func(*SAMManager) error) (*SAMManager, err } else { return nil, e } - /*case "outproxyhttp": - if f, e := samtunnelhandler.NewTunnelHandler(i2ptunhelper.NewEepHttpdFromConf(s.config)); e == nil { - log.Println("found default udpclient") - s.handlerMux = s.handlerMux.Append(f) - } else { - return nil, e - }*s/ + case "outproxyhttp": + if f, e := samtunnelhandler.NewTunnelHandler(i2ptunhelper.NewHttpOutProxyFromConf(s.config)); e == nil { + log.Println("found default udpclient") + s.handlerMux = s.handlerMux.Append(f) + } else { + return nil, e + } /*case "vpnserver": if f, e := samtunnelhandler.NewTunnelHandler(samforwardervpnserver.NewSAMVPNForwarderFromConf(s.config)); e == nil { log.Println("found default vpnserver")