Adds support for standard, human-readable I2P hostnames in addition to Base32 ones. It effectively fixes this TODO, and is intended to be built off of by a later SAM integration PR. Some improvements have also been made to general hostname validation logic, in terms of conforming to naming rules and the like.
An example: foo.i2p may be used instead of xmrdoc6k4licya7zsnba5s7vugzo72blcpukkvqno75o4ruhaqla.b32.i2p.
To my knowledge, the changes made here do not render existing I2P documentation for Monero (i.e. this) outdated; I do plan on updating the docs on a later date, however modifications can instead be made sooner if necessary.
Adds support for standard, human-readable I2P hostnames in addition to Base32 ones. It effectively fixes [this TODO](https://github.com/monero-project/monero/blob/master/src/net/i2p_address.cpp#L47C9-L47C46), and is intended to be built off of by a later [SAM](https://i2p.net/en/docs/api/samv3/) integration PR. Some improvements have also been made to general hostname validation logic, in terms of conforming to [naming rules](https://i2p.net/en/docs/overview/naming/#naming-rules) and the like.
An example: `foo.i2p` may be used instead of `xmrdoc6k4licya7zsnba5s7vugzo72blcpukkvqno75o4ruhaqla.b32.i2p`.
To my knowledge, the changes made here do not render existing I2P documentation for Monero (i.e. [this](https://github.com/monero-project/monero/blob/master/docs/ANONYMITY_NETWORKS.md)) outdated; I do plan on updating the docs on a later date, however modifications can instead be made sooner if necessary.