* Move `filterIP` from `hosts.go` to `dnscommon.go`
* Implement adding pools for fakedns.HolderMulti
* Implement per-client fakedns for DNS app
* Remove `dns.ClientWithIPOption` and replace with new programming model
* Implement JSON config support for new fakedns config
* Fix lint and tests
* Fix some codacy analysis
- Previously, without specifying the server IP, the remote address in the response to a UdpAssoicate command is `127.0.0.1`, which might break UDP for non-localhost clients.
- This commit changes it so that, localhost clients get responses with the corresponding loopback IP, non-localhost clients get responses with the corresponding `net.AnyIP` or `net.AnyIPv6`.
- The new behavior is also consistent with many other implementations. So the compatibility is guaranteed. It also makes specifying server IP optional.
- When you connect to a non-localhost socks5 server, in the response of a UdpAssociate from a socks5 server, the remote address may be `::` or `0.0.0.0`. The previous behavior is to connect to the remote address in the response, which obviously fails.
- This commit changes the behavior to dial to the outbound server's address when the remote address in the response is `::` or `0.0.0.0`.
- Rename `cmdUDPPort` to `cmdUDPAssociate` for clarity.
* Update protoc binary executable files to v3.13.0
* Write proto files in more standard way
* Make go generate & vprotogen compatible with protoc-gen-gofast
* Regenerate pb.go files according to new proto files
* Clean go.sum by running go mod tidy
* Implement mustEmbedUnimplementedServiceServer for gPRC services