Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify listen address for RPC service #4331

Closed
2 tasks done
xlc opened this issue Apr 30, 2024 · 2 comments · Fixed by #4792
Closed
2 tasks done

Specify listen address for RPC service #4331

xlc opened this issue Apr 30, 2024 · 2 comments · Fixed by #4792
Labels
I5-enhancement An additional feature request.

Comments

@xlc
Copy link
Contributor

xlc commented Apr 30, 2024

Is there an existing issue?

  • I have searched the existing issues

Experiencing problems? Have you tried our Stack Exchange first?

  • This is not a support question.

Motivation

AcalaNetwork/Acala#2743

Request

Should allow user to specify listen address for RPC service

Solution

No response

Are you willing to help with this request?

Yes!

@xlc xlc added the I5-enhancement An additional feature request. label Apr 30, 2024
@bkchr
Copy link
Member

bkchr commented May 12, 2024

CC @niklasad1

@niklasad1
Copy link
Member

niklasad1 commented May 13, 2024

Yes, I agree we should support this.

The question is really whether we should support several listening addresses such [ipv4, ipv6] that came up in another issue IIRC but as first step we could make it --rpc-listen-addr <SocketAddr>.

The CLI needs to ensure that the --rpc-port and --rpc-listen-addr can't be used together because those are conflicting.

github-merge-queue bot pushed a commit that referenced this issue Aug 28, 2024
…rpc-endpoint` CLI option (#4792)

Close #3488,
#4331

This changes/adds the following:

1. The default setting is that substrate starts a rpc server that
listens to localhost both Ipv4 and Ipv6 on the same port. Ipv6 is
allowed to fail because some platforms may not support it
2. A new RPC CLI option `--experimental-rpc-endpoint` which allow to
configure arbitrary listen addresses including the port, if this is
enabled no other interfaces are enabled.
3. If the local addr is not found for any of the sockets the server is
not started throws an error.
4. Remove the deny_unsafe from the RPC implementations instead this is
an extension to allow different polices for different interfaces/sockets
such one may enable unsafe on local interface and safe on only the
external interface.

So for instance in this PR it's now possible to start up three RPC
endpoints as follows:
```
$ polkadot --experimental-rpc-endpoint "listen-addr=127.0.0.1:9944,rpc-methods=unsafe" --experimental-rpc-endpoint "listen-addr=0.0.0.0:9945,rpc-methods=safe,rate-limit=100" --experimental-rpc-endpoint "listen-addr=[::1]:9944,optional=true"
```

#### Needs to be addressed

~1. Support binding to a random port if it's fails with the default
stuff for backward compatible reasons~
~2. How to sync that the rpc CLI params and that the rpc-listen-addr
align, hard to maintain...~
~3. Add similar warning prints for exposing unsafe methods on external
interfaces..~
~4. Inline todos + the hacky String conversion from rpc params.~

#### Cons with this PR

Manual strings parsing impl more error-prone than relying on clap....

//cc @jsdw @BulatSaif @PierreBesson @bkchr

---------

Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I5-enhancement An additional feature request.
Projects
None yet
3 participants