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

[PR-586] Allow setting outgoing IP per user #588

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

justjanne
Copy link
Contributor

In Short

  • Adds a database column to the quasseluser table for per-user outgoing IPs
  • Binds to that IP when creating new outgoing sockets

Impact

Criteria Rank Reason
Impact ★☆☆ 1/3 Allows separating outgoing users by IP, useful as IPv6 identd alternative
Risk ★★★ 3/3 Changes network socket creation, might cause IRC connectivity to fail
Intrusiveness ★☆☆ 1/3 Changes localized to a few classes

Rationale

Currently, Quassel supports identd for per-user ident to allow owners of larger quassel cores to avoid a ban of one user affecting the others. Many networks have stopped supporting this, though, instead opting to move to IPv6 based alternatives.

With this change, the operator of a Quassel Core can set an IPv6 for each individual user, which will be used for outgoing IRC connections, allowing bans against one user to avoid affecting other users.

@justjanne
Copy link
Contributor Author

Due to the risk involved with this change, I’d like to subject it to significant testing before we merge it and roll it out.

@justjanne
Copy link
Contributor Author

To use this functionality, you’ll first have to assign the corresponding IPs to an interface.

For example, you can assign a whole block with

ip route add local 2a01:4f8:241:4712::/64 dev enp40s0

@phuzion
Copy link
Contributor

phuzion commented Jul 19, 2021

When merged, this may at least partially resolve bug 125.

Perhaps a way to make this "per network" as requested in the bug would be to bind the IP address to an identity, not to a user? Not sure if that adds any complexity to the logic of this PR, but I figured I'd throw out the idea.

@justjanne justjanne marked this pull request as draft April 25, 2022 14:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants