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

ngIRCd protocol support #479

Merged
merged 55 commits into from Jul 7, 2017

Conversation

Projects
None yet
1 participant
@jlu5
Owner

jlu5 commented Jul 3, 2017

Do not merge yet! This will eventually close #340.

Tentative checklist

  • Get initial connection bits working

  • Implement handlers

    • Inbound CHANINFO
    • Inbound AWAY
    • Inbound INVITE
    • Inbound JOIN
    • Inbound KICK
    • Inbound KILL
    • Inbound PING - needs testing!
    • Inbound PRIVMSG
    • Inbound MODE
    • Inbound NICK (client introduction)
    • Inbound NICK (nick changes)
    • Inbound NOTICE
    • Inbound PART - inherited
    • Inbound QUIT - inherited
    • Inbound NJOIN
    • Inbound SQUIT
    • Inbound SERVER (ie leaf introductions)
    • Inbound TOPIC
    • Inbound METADATA
      • Host changes
      • Services account changes
  • Implement commands

    • _ping_uplink(self) / PONG handler
    • spawn_client(self, nick, ident='null', host='null', realhost=None, modes=set(), server=None, ip='0.0.0.0', realname=None, ts=None, opertype=None, manipulatable=False)
    • away(self, source, text)
    • invite(self, source, target, channel)
    • join(self, source, channel)
    • kick(self, source, channel, target, reason=None)
    • kill(self, source, target, reason)
    • knock(self, source, target, text)
    • message(self, source, target, text) - inherited
    • mode(self, source, target, modes, ts=None)
    • nick(self, source, newnick)
    • notice(self, source, target, text) - inherited
    • numeric(self, source, numeric, target, text)
    • part(self, client, channel, reason=None) - inherited
    • quit(self, source, reason) - inherited
    • sjoin(self, server, channel, users, ts=None, modes=set())
    • spawn_server(self, name, sid=None, uplink=None, desc=None)
    • squit(self, source, target, text='No reason given')
    • topic(self, source, target, text) - inherited
    • topic_burst(self, source, target, text)
    • update_client(self, source, field, text)
  • Fill in mode definitions

  • Fix up outbound mode/njoin wrapping

  • Figure out how host cloaking works

  • Complete this checklist

@jlu5 jlu5 added this to the v2.0 milestone Jul 3, 2017

@jlu5 jlu5 referenced this pull request Jul 3, 2017

Closed

ngircd support #340

jlu5 added some commits Jul 3, 2017

protocols: move 005 handling code to IRCCommonProtocol
Also enable extended server negotiation for ngIRCd, which really just passes 005 between servers (nifty!)
ngircd: send our own server negotiation info to complete the connection
Aside from the 376, none of this is /required/, but it's best to be consistent...

jlu5 added some commits Jul 5, 2017

IRCS2SProtocol: expand nicks to UIDs in handle_kill
This allows this handler to work natively on ngIRCd.
ngircd: ignore KILLs not meant for us
ngIRCd sends QUIT after a successful KILL, so trying to remove the target twice is erroneous and will cause a crash.

TODO: what happens if an external KILL is never responded to for whatever reason?
Merge remote-tracking branch 'origin/beta' into wip/ngircd
Conflicts:
	protocols/ircs2s_common.py
	protocols/ts6.py
IRCS2SProtocol: handle both killpath-based and preformatted kill reasons
Also drop the override in protocols/inspircd, as it is no longer needed.
Move handle_mode into IRCS2SProtocol
TODO: clean up protocols/unreal to use more of this code as well

@jlu5 jlu5 merged commit 57c86c6 into devel Jul 7, 2017

2 checks passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details
continuous-integration/travis-ci/push The Travis CI build passed
Details

@jlu5 jlu5 deleted the wip/ngircd branch Jul 7, 2017

@jlu5 jlu5 changed the title from [WIP] ngIRCd protocol support to ngIRCd protocol support Jul 20, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment