41 lines
911 B
Nim
41 lines
911 B
Nim
|
## Nim-Codex
|
||
|
## Copyright (c) 2022 Status Research & Development GmbH
|
||
|
## Licensed under either of
|
||
|
## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
|
||
|
## * MIT license ([LICENSE-MIT](LICENSE-MIT))
|
||
|
## at your option.
|
||
|
## This file may not be copied, modified, or distributed except according to
|
||
|
## those terms.
|
||
|
|
||
|
import pkg/upraises
|
||
|
push: {.upraises: [].}
|
||
|
|
||
|
import std/strutils
|
||
|
import std/options
|
||
|
|
||
|
import pkg/libp2p
|
||
|
import pkg/stew/shims/net
|
||
|
|
||
|
func remapAddr*(
|
||
|
address: MultiAddress,
|
||
|
ip: Option[ValidIpAddress] = ValidIpAddress.none,
|
||
|
port: Option[Port] = Port.none): MultiAddress =
|
||
|
## Remap addresses to new IP and/or Port
|
||
|
##
|
||
|
|
||
|
var
|
||
|
parts = ($address).split("/")
|
||
|
|
||
|
parts[2] = if ip.isSome:
|
||
|
$ip.get
|
||
|
else:
|
||
|
parts[2]
|
||
|
|
||
|
parts[4] = if port.isSome:
|
||
|
$port.get
|
||
|
else:
|
||
|
parts[4]
|
||
|
|
||
|
MultiAddress.init(parts.join("/"))
|
||
|
.expect("Should construct multiaddress")
|