Skip to content

Commit 5b946a6

Browse files
authored
handle duplicate server nicknames (#99)
If the argument to `--server-address` is a server nickname that is not unique, throw an error. User can either edit nicknames to be unique in the `wiretap.conf` file, or specify the actual server API address instead
1 parent 166eda2 commit 5b946a6

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

src/cmd/add_client.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,21 @@ func (c addClientCmdConfig) Run() {
143143
}
144144
} else {
145145
// Get leaf server info
146+
var i int
147+
duplicate := make(map[string]int)
146148
ip := net.ParseIP(c.serverAddress)
147149
if ip == nil {
148150
for idx, peer := range baseConfigE2EE.GetPeers() {
149151
if peer.GetNickname() == c.serverAddress {
150-
c.serverAddress = baseConfigE2EE.GetPeers()[idx].GetApiAddr().String()
152+
duplicate[peer.GetNickname()]++
153+
i = idx
151154
}
152155
}
156+
if duplicate[c.serverAddress] >= 2 {
157+
check("failed to resolve API address", errors.New("there are multiple servers with the nickname "+c.serverAddress))
158+
} else {
159+
c.serverAddress = baseConfigE2EE.GetPeers()[i].GetApiAddr().String()
160+
}
153161
}
154162
leafApiAddr, err := netip.ParseAddr(c.serverAddress)
155163
check("invalid server address", err)

src/cmd/add_server.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,16 +205,22 @@ func (c addServerCmdConfig) Run() {
205205
check("failed to set addresses", err)
206206
} else {
207207
// Get leaf server info
208+
var i int
209+
duplicate := make(map[string]int)
208210
ip := net.ParseIP(c.serverAddress)
209211
if ip == nil {
210-
fmt.Println("Server Nickname: "+c.serverAddress)
211212
for idx, peer := range clientConfigE2EE.GetPeers() {
212213
if peer.GetNickname() == c.serverAddress {
213-
c.serverAddress = clientConfigE2EE.GetPeers()[idx].GetApiAddr().String()
214+
duplicate[peer.GetNickname()]++
215+
i = idx
214216
}
215217
}
218+
if duplicate[c.serverAddress] >= 2 {
219+
check("failed to resolve API address", errors.New("there are multiple servers with the nickname "+c.serverAddress))
220+
} else {
221+
c.serverAddress = clientConfigE2EE.GetPeers()[i].GetApiAddr().String()
222+
}
216223
}
217-
fmt.Println("Server API: "+c.serverAddress)
218224
leafApiAddr, err := netip.ParseAddr(c.serverAddress)
219225
check("invalid server address", err)
220226
leafApiAddrPort := netip.AddrPortFrom(leafApiAddr, uint16(ApiPort))

0 commit comments

Comments
 (0)