-
Notifications
You must be signed in to change notification settings - Fork 617
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
IRC puppeting #667
Comments
I'd welcome support for this, but we have to do some changes to make this a reality. |
This all sounds super fucking rad @qaisjp! 🎉 It might take a bit to work through all these pieces as atomic feature requests, but my experience is that if you are patient in working things in, then others (incl myself in whatever way I can) would be really eager to support :) |
Slowly but steadily we can make this happen! 🙂 |
This sounds super awesome and I would love to see it happen! |
I've been looking into this, and I'm not sure what's the best way to go about this config-wise. Example base config to work off Take this simple bi-directional configuration that bridges between Discord and IRC.
Naming Discord already support puppets, but they are... "ephemeral". We don't want to people to use a We know that Discord puppets are not persistent, unlike IRC. So we could name our setting something like Flow of knowledge User information flows from And we probably want a configuration design that can gracefully support more than just IRC puppets. Suggestion What if we did something like this? I think including the term
What do you think? How should this be designed? Please give me feedback! I want to know if there's a better way to design the config. |
Hmm, as for naming, I always considered the webhook method as user "spoofing" while what you are proposing for IRC seems to be proper user "puppeteering". |
I only called it spoofing because when I wrote the issue I had not found a better word for it (which is 'puppeting') |
Hi all, Lately I've been working on an alternative implementation that allows doing this in a stateless fashion. It involves an IRCd extension and a separate command to translate relayed messages into PRIVMSGs, and allows user spoofing in a way fairly similar to e.g. Discord webhooks. Although this limits the UI slightly (virtual users can't be DMed for example because they aren't actually connected), it simplifies how much state relay bots need to track. I've tentatively placed the details in a repo: relaymsg.md. |
I'm running a private bridge just for myself to bridge three IRC rooms to private Telegram rooms. Is there a way I could have IRC PMs go to the bot's PM inside Telegram and responses like discussed above? ie user2@irc: Here's my reply to your PM. |
Not at the moment |
I'm not at my PC at the moment. Do private messages show up in the debug
log?
…On Thu, 6 Aug 2020, 7:46 pm Qais Patankar, ***@***.***> wrote:
I'm running a private bridge just for myself to bridge three IRC rooms to
private Telegram rooms. Is there a way I could have IRC PMs go to the bot's
PM inside Telegram and responses like discussed above? ie ***@***.***:
Here's my reply to your PM.
Not at the moment
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#667 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAKOQBMEWE27AB7UGRW4YA3R7J7G5ANCNFSM4GMXSKNA>
.
|
I've slowly been adding some of the smaller features — the long term aim is to replace my bridge entirely with matterbridge, yes |
I am not sure if this is the right place to ask, but are there any plans to support the RELAYMSG cap mentioned above (#667 (comment)) or merging the support back to upstream Matterbridge? I have been lately using a couple of Oragono based networks which would support it and make Matterbridge more pleasant to use on them. |
* irc: add support for stateless bridging via draft/relaymsg As discussed at #667 (comment) * irc: handle the draft/relaymsg tag in spoofed messages too * Apply suggestions from code review Co-authored-by: Wim <wim@42.be> * Run gofmt on irc.go * Document relaymsg in matterbridge.toml.sample Co-authored-by: Wim <wim@42.be>
The RELAYMSG cap is nice but I still plan to work on a stateful approach that makes it possible for users to actually show up in user lists. One problem with this stateful approach is that restarting the bridge causes a massive influx of joinquit spam. I'd like to solve this issue (in my bridge) before bringing this feature to matterbridge. I'm thinking of solving this problem by making it possible (but not required) for a separate process of matterbridge to "manage" the irc connections. We'd need to decide a way for matterbridge to communicate with this standalone "irc process".
The general idea is for the API/ABI to be fairly low level — examples of RPC functions would be:
The last RPC function being the magic that allows @42wim + anyone else — any comments or thoughts on the tech stack for this component? Additionally, Wim, you've expressed reservations about keeping the "make many connections" system, and mentioned you were interested in replacing it with an ircd such as Oragono. I imagine both systems could be abstracted away from matterbridge using this same RPC-based API. |
@qaisjp The same is happening when netsplit servers, i think this is not a problem but its by design, you cannot avoid that stuff and i personally think its ok, modern IRCd's having configuration options to hide these joins/quits, the only thing that you can do in that case is to have a specific quit message on matterbridge restart/terminate so ircd or bots could save the nicknames and not take action after on join. |
This is currently Oragono-specific, but would it be possible for a stateful bridge to generate SSL certificates for all bridged users and then register (with) those and set the accounts into Another idea would be for Matterbridge to pretend to be a IRC server, but that would practically require selfhosting IRC as at least freenode won't allow any third party to link that way to my understanding. It wouldn't resolve netsplits, for which there would be https://ircv3.net/specs/extensions/batch-3.2 which again requires a compatible client. I think IRC servers also generally have different linking protocols, so it wouldn't be universal solution (and Oragono doesn't even support that currently ergochat/ergo#26). |
Yes, but I've observed that a genuine netsplit happens less frequently than wanting to update the bridge or the bridge crashing.
Am I correct in believing that this idea is in line with the "IRCd mode" I mentioned at the very end of #667 (comment)?
It's unfortunate that Oragono does not yet support S2S. "IRCd mode" would have to wait on that feature from Oragono (unless there's an existing stable ircd that supports S2S and is written in Go). |
I am not sure, I have difficulties following the comment. |
The same exactly is happening with ircd/services/znc/etc.. servers, when they need update, they going down updating then going up, i think this is the most common way to make it, and it would not be a problem, also 1 or 2 maximum times per month its not huge problem. |
Yeah, the last bit in my comment is referencing a prior conversation on Discord where we discussed "[adding an] irc server to matterbridge, thinking about doing that anyway in other issue [...] like matterircd, but a cleaner one [...] integrating ircd opens up "easy" irc puppeting for the other protocols too". |
|
My vote goes to net/rpc + gob. We can do this over domain sockets, don't really need TCP or TLS I think. |
Wouldn't restarting the irc specific service still result in the big joinquit? Is the idea just that one might restart matterbridge more often? |
yes |
@qaisjp I guess the plan to integrate your go-discord-irc bridge with Matterbridge is postponed indefinitely? |
Yes, these days I have not had much motivation to work on open source. |
I'm game to take a crack at this one. It will be very useful for our community which still spans multiple services, including IRC which has been active since around 2013. I'll keep this thread updated. |
You could also try: https://github.com/OpenTTD/dibridge |
Oh neat, that is very interesting indeed. Thanks for sharing this :-) We'll survey the options for this, and glad to see we're not the only ones in this predicament (misery loves company). |
This project looks amazing. I don't use this project yet. I currently have a custom setup for three-way bridging.
My custom bridge for Discord/IRC which has some advanced features, namely, dummy accounts! See qaisjp/go-discord-irc.
I'd like to merge this into matterbridge.
Features:
~d, like
john~d`) ([Feature] Allow listing of members across bridges #361)qaisjp~d
on IRC will convert to a correct@qaisjp
on DIscord; mentioning@Some Weird Name
on Discord will translate toSome_Weird_Name~d
on IRC)name~d meant to say "...."
I currently have two instances of go-discord-irc deployed to two IRC servers / discord guilds:
The one with custom config has the following features:
~d
, making~
is ordinarily an illegal character, so this is a server with custom code~d
,~s
, etcThis would also solve the several issues for IRC/Discord, at least when dummy user support is enabled (see list above with tagged issues).
Thoughts? I am happy to send pull requests to the project to make this a reality.
I would need: support from the community (i.e, coping with any questions I have whilst learning the codebase and implementing features).
The aim is to deprecate my project completely and for me to move completely to matterbridge.
The text was updated successfully, but these errors were encountered: