5 Commits

Author SHA1 Message Date
a555dbd563 readme
--HG--
branch : nmdc-ircfrontend
2017-05-28 17:43:52 +12:00
f076aeaeda quirks support
--HG--
branch : nmdc-ircfrontend
2017-05-28 17:36:31 +12:00
1056493211 bump copyright year
--HG--
branch : nmdc-ircfrontend
2017-05-28 13:45:05 +12:00
ddcd65fa47 Added tag release-1.2.2 for changeset 111d6e41507d
--HG--
branch : nmdc-ircfrontend
2017-05-28 13:39:48 +12:00
d21b18fc75 fix bad patch for bounds check in previous
--HG--
branch : nmdc-ircfrontend
2017-05-28 13:38:56 +12:00
5 changed files with 43 additions and 5 deletions

View File

@@ -2,3 +2,4 @@ da295cede46d95848348292e04e54fa5a5713ae3 release-1.0.0
34892054c34384edeafa2b04a483697d7d8a73a3 release-1.1.0
3586b48a5abfdbdeef310f2e154b06f4d16d38bb release-1.2.0
49dcc63e80e98f8c2ce3bb029fe0c41a6426678f release-1.2.1
111d6e41507dd0f374860b936d18a651a7cb09ce release-1.2.2

View File

@@ -43,6 +43,8 @@ Tags: nmdc, AGPLv3
=COMPATIBILITY=
*This section was last updated on or around the release of 1.2.0. Current compatibility may differ.*
NMDC's smaller community has standardised around comparatively few protocol implementations by means of necessity. In comparison, there are a lot of IRC client implementations with slightly differing interpretations of the protocol.
Everything works:
@@ -65,6 +67,9 @@ Unusable:
=CHANGELOG=
2017-05-28 1.2.3
- Fix a regression with userlist display on HexChat (other IRC client compatibility unknown)
2017-05-27 1.2.2
- Update libnmdc to 0.14
- Fix a crash that could occur if the server is scanned by a non-irc client

View File

@@ -1,7 +1,7 @@
package main
/*
Copyright (C) 2016 The `nmdc-ircfrontend' author(s)
Copyright (C) 2016-2017 The `nmdc-ircfrontend' author(s)
Copyright (C) 2013 Harry Jeffery
This program is free software: you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
package main
/*
Copyright (C) 2016 The `nmdc-ircfrontend' author(s)
Copyright (C) 2016-2017 The `nmdc-ircfrontend' author(s)
Copyright (C) 2013 Harry Jeffery
This program is free software: you can redistribute it and/or modify
@@ -40,6 +40,30 @@ const (
CSJoined
)
type Quirks struct {
SendNamesOnWho bool
}
func DefaultQuirks() Quirks {
return Quirks{
SendNamesOnWho: false,
}
}
func HexChatQuirks() Quirks {
return Quirks{
SendNamesOnWho: true,
}
}
func GetQuirksForClient(ver string) Quirks {
if strings.Contains(ver, "HexChat") {
return HexChatQuirks()
} else {
return DefaultQuirks()
}
}
type Server struct {
name string
motd string
@@ -59,6 +83,8 @@ type Server struct {
recievedFirstServerMessage bool
recievedCtcpVersion bool
nickChangeAttempt int
quirks Quirks
}
func NewServer(name string, upstream libnmdc.HubAddress, conn net.Conn) *Server {
@@ -77,6 +103,7 @@ func NewServer(name string, upstream libnmdc.HubAddress, conn net.Conn) *Server
SkipAutoReconnect: true,
},
upstreamCloser: make(chan struct{}, 1),
quirks: DefaultQuirks(),
}
}
@@ -133,12 +160,12 @@ func (s *Server) RunWorker() {
// Client sent a command
fields := strings.Fields(string(line))
if len(fields) < 2 {
if len(fields) == 0 {
return
}
if strings.HasPrefix(fields[0], ":") {
fields = fields[1:]
fields[0] = fields[0][1:]
}
s.handleCommand(strings.ToUpper(fields[0]), fields[1:])
@@ -439,6 +466,7 @@ func (s *Server) handleRegisteredCommand(command string, args []string) {
versionString := message[9:]
versionString = versionString[:len(versionString)-1]
s.SetClientSoftwareVersion(versionString)
s.quirks = GetQuirksForClient(versionString)
return
}
@@ -636,6 +664,10 @@ func (s *Server) handleJoinedCommand(command string, args []string) {
// s.sendWho(args[0])
// s.sendNames() // fixes hexchat, but andchat always sends WHO /immediately/ after NAMES end, causing an infinite loop
if s.quirks.SendNamesOnWho {
s.sendNames()
}
case "MODE":
if len(args) < 1 {
s.reply(errMoreArgs)

View File

@@ -1,7 +1,7 @@
package main
/*
Copyright (C) 2016 The `nmdc-ircfrontend' author(s)
Copyright (C) 2016-2017 The `nmdc-ircfrontend' author(s)
Copyright (C) 2013 Harry Jeffery
This program is free software: you can redistribute it and/or modify