diff --git a/device/awg/special_handshake_handler.go b/device/awg/special_handshake_handler.go index e582d97..d740879 100644 --- a/device/awg/special_handshake_handler.go +++ b/device/awg/special_handshake_handler.go @@ -1,9 +1,6 @@ package awg import ( - "errors" - "time" - "github.com/tevino/abool" "go.uber.org/atomic" ) @@ -21,25 +18,13 @@ var WaitResponse = struct { } type SpecialHandshakeHandler struct { - isFirstDone bool - SpecialJunk TagJunkPacketGenerators - ControlledJunk TagJunkPacketGenerators - - nextItime time.Time - ITimeout time.Duration // seconds + SpecialJunk TagJunkPacketGenerators IsSet bool } func (handler *SpecialHandshakeHandler) Validate() error { - var errs []error - if err := handler.SpecialJunk.Validate(); err != nil { - errs = append(errs, err) - } - if err := handler.ControlledJunk.Validate(); err != nil { - errs = append(errs, err) - } - return errors.Join(errs...) + return handler.SpecialJunk.Validate() } func (handler *SpecialHandshakeHandler) GenerateSpecialJunk() [][]byte { @@ -47,27 +32,5 @@ func (handler *SpecialHandshakeHandler) GenerateSpecialJunk() [][]byte { return nil } - // TODO: create tests - if !handler.isFirstDone { - handler.isFirstDone = true - } else if !handler.isTimeToSendSpecial() { - return nil - } - - rv := handler.SpecialJunk.GeneratePackets() - handler.nextItime = time.Now().Add(handler.ITimeout) - - return rv -} - -func (handler *SpecialHandshakeHandler) isTimeToSendSpecial() bool { - return time.Now().After(handler.nextItime) -} - -func (handler *SpecialHandshakeHandler) GenerateControlledJunk() [][]byte { - if !handler.ControlledJunk.IsDefined() { - return nil - } - - return handler.ControlledJunk.GeneratePackets() + return handler.SpecialJunk.GeneratePackets() } diff --git a/device/awg/tag_generator.go b/device/awg/tag_generator.go index 3924ccb..3a1d497 100644 --- a/device/awg/tag_generator.go +++ b/device/awg/tag_generator.go @@ -184,34 +184,6 @@ func newTimestampGenerator(param string) (Generator, error) { return &TimestampGenerator{}, nil } -type WaitTimeoutGenerator struct { - waitTimeout time.Duration -} - -func (wtg *WaitTimeoutGenerator) Generate() []byte { - time.Sleep(wtg.waitTimeout) - return []byte{} -} - -func (wtg *WaitTimeoutGenerator) Size() int { - return 0 -} - -func newWaitTimeoutGenerator(param string) (Generator, error) { - timeout, err := strconv.Atoi(param) - if err != nil { - return nil, fmt.Errorf("timeout parse int: %w", err) - } - - if timeout > 5000 { - return nil, fmt.Errorf("timeout must be less than 5000ms") - } - - return &WaitTimeoutGenerator{ - waitTimeout: time.Duration(timeout) * time.Millisecond, - }, nil -} - type PacketCounterGenerator struct { } diff --git a/device/awg/tag_parser.go b/device/awg/tag_parser.go index d36823f..06ba49b 100644 --- a/device/awg/tag_parser.go +++ b/device/awg/tag_parser.go @@ -12,14 +12,12 @@ type IpcFields struct{ Key, Value string } type EnumTag string const ( - BytesEnumTag EnumTag = "b" - CounterEnumTag EnumTag = "c" - TimestampEnumTag EnumTag = "t" - RandomBytesEnumTag EnumTag = "r" - RandomASCIIEnumTag EnumTag = "rc" - RandomDigitEnumTag EnumTag = "rd" - WaitTimeoutEnumTag EnumTag = "wt" - WaitResponseEnumTag EnumTag = "wr" + BytesEnumTag EnumTag = "b" + CounterEnumTag EnumTag = "c" + TimestampEnumTag EnumTag = "t" + RandomBytesEnumTag EnumTag = "r" + RandomASCIIEnumTag EnumTag = "rc" + RandomDigitEnumTag EnumTag = "rd" ) var generatorCreator = map[EnumTag]newGenerator{ @@ -29,8 +27,6 @@ var generatorCreator = map[EnumTag]newGenerator{ RandomBytesEnumTag: newRandomBytesGenerator, RandomASCIIEnumTag: newRandomASCIIGenerator, RandomDigitEnumTag: newRandomDigitGenerator, - WaitTimeoutEnumTag: newWaitTimeoutGenerator, - // WaitResponseEnumTag: newWaitResponseGenerator, } // helper map to determine enumTags are unique diff --git a/device/device.go b/device/device.go index fdb8620..46cf04e 100644 --- a/device/device.go +++ b/device/device.go @@ -847,7 +847,6 @@ func (device *Device) handlePostConfig(tempAwg *awg.Protocol) error { ipc.IpcErrorInvalid, "handshake handler validate: %w", err)) } else { device.awg.HandshakeHandler = tempAwg.HandshakeHandler - device.awg.HandshakeHandler.ControlledJunk.DefaultJunkCount = tempAwg.Cfg.JunkPacketCount device.awg.HandshakeHandler.SpecialJunk.DefaultJunkCount = tempAwg.Cfg.JunkPacketCount device.version = VersionAwgSpecialHandshake } diff --git a/device/device_test.go b/device/device_test.go index 8d7421e..2f66185 100644 --- a/device/device_test.go +++ b/device/device_test.go @@ -268,10 +268,6 @@ func TestAWGHandshakeDevicePing(t *testing.T) { "i2", "", "i3", "", "i4", "", - // "j1", "", - // "j2", "", - // "j3", "", - // "itime", "60", // "jc", "1", // "jmin", "500", // "jmax", "1000", diff --git a/device/send.go b/device/send.go index 89e793c..0861a04 100644 --- a/device/send.go +++ b/device/send.go @@ -133,12 +133,7 @@ func (peer *Peer) SendHandshakeInitiation(isRetry bool) error { peer.device.awg.Mux.RLock() // set junks depending on packet type junks = peer.device.awg.HandshakeHandler.GenerateSpecialJunk() - if junks == nil { - junks = peer.device.awg.HandshakeHandler.GenerateControlledJunk() - if junks != nil { - peer.device.log.Verbosef("%v - Controlled junks sent", peer) - } - } else { + if junks != nil { peer.device.log.Verbosef("%v - Special junks sent", peer) } peer.device.awg.Mux.RUnlock() diff --git a/device/uapi.go b/device/uapi.go index d7b74cd..6c4be05 100644 --- a/device/uapi.go +++ b/device/uapi.go @@ -135,13 +135,6 @@ func (device *Device) IpcGetOperation(w io.Writer) error { for _, field := range specialJunkIpcFields { sendf("%s=%s", field.Key, field.Value) } - controlledJunkIpcFields := device.awg.HandshakeHandler.ControlledJunk.IpcGetFields() - for _, field := range controlledJunkIpcFields { - sendf("%s=%s", field.Key, field.Value) - } - if device.awg.HandshakeHandler.ITimeout != 0 { - sendf("itime=%d", device.awg.HandshakeHandler.ITimeout/time.Second) - } } for _, peer := range device.peers.keyMap { @@ -413,34 +406,6 @@ func (device *Device) handleDeviceLine(key, value string, tempAwg *awg.Protocol) device.log.Verbosef("UAPI: Updating %s", key) tempAwg.HandshakeHandler.SpecialJunk.AppendGenerator(generators) tempAwg.HandshakeHandler.IsSet = true - case "j1", "j2", "j3": - if len(value) == 0 { - device.log.Verbosef("UAPI: received empty %s", key) - return nil - } - - generators, err := awg.ParseTagJunkGenerator(key, value) - if err != nil { - return ipcErrorf(ipc.IpcErrorInvalid, "invalid %s: %w", key, err) - } - device.log.Verbosef("UAPI: Updating %s", key) - - tempAwg.HandshakeHandler.ControlledJunk.AppendGenerator(generators) - tempAwg.HandshakeHandler.IsSet = true - case "itime": - if len(value) == 0 { - device.log.Verbosef("UAPI: received empty itime") - return nil - } - - itime, err := strconv.ParseInt(value, 10, 64) - if err != nil { - return ipcErrorf(ipc.IpcErrorInvalid, "parse itime %w", err) - } - device.log.Verbosef("UAPI: Updating itime") - - tempAwg.HandshakeHandler.ITimeout = time.Duration(itime) * time.Second - tempAwg.HandshakeHandler.IsSet = true default: return ipcErrorf(ipc.IpcErrorInvalid, "invalid UAPI device key: %v", key) }