Browse Source

Merge pull request #1590 from slingamn/ircgo_bump

bump irc-go again
tags/v2.6.0-rc1
Shivaram Lingamneni 3 years ago
parent
commit
de31430fdc
No account linked to committer's email address

+ 1
- 1
go.mod View File

@@ -10,7 +10,7 @@ require (
10 10
 	github.com/go-sql-driver/mysql v1.5.0
11 11
 	github.com/go-test/deep v1.0.6 // indirect
12 12
 	github.com/gorilla/websocket v1.4.2
13
-	github.com/goshuirc/irc-go v0.0.0-20210304031553-cf78e9176f96
13
+	github.com/goshuirc/irc-go v0.0.0-20210311004346-ea7a188a73fe
14 14
 	github.com/onsi/ginkgo v1.12.0 // indirect
15 15
 	github.com/onsi/gomega v1.9.0 // indirect
16 16
 	github.com/oragono/confusables v0.0.0-20201108231250-4ab98ab61fb1

+ 2
- 0
go.sum View File

@@ -42,6 +42,8 @@ github.com/goshuirc/irc-go v0.0.0-20210301225436-2c4b83d64847 h1:MmsZRpAsMxyw0P5
42 42
 github.com/goshuirc/irc-go v0.0.0-20210301225436-2c4b83d64847/go.mod h1:q/JhvvKLmif3y9q8MDQM+gRCnjEKnu5ClF298TTXJug=
43 43
 github.com/goshuirc/irc-go v0.0.0-20210304031553-cf78e9176f96 h1:sihI3HsrJWyS4MtBmxh5W4gDZD34SWodkWyUvJltswY=
44 44
 github.com/goshuirc/irc-go v0.0.0-20210304031553-cf78e9176f96/go.mod h1:q/JhvvKLmif3y9q8MDQM+gRCnjEKnu5ClF298TTXJug=
45
+github.com/goshuirc/irc-go v0.0.0-20210311004346-ea7a188a73fe h1:5UsPgeXJBkFgJK3Ml0nj6ljasjd26xiUxALnDJHmipE=
46
+github.com/goshuirc/irc-go v0.0.0-20210311004346-ea7a188a73fe/go.mod h1:q/JhvvKLmif3y9q8MDQM+gRCnjEKnu5ClF298TTXJug=
45 47
 github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
46 48
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
47 49
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=

+ 3
- 3
irc/client.go View File

@@ -1667,7 +1667,7 @@ func (session *Session) sendFromClientInternal(blocking bool, serverTime time.Ti
1667 1667
 	return session.SendRawMessage(msg, blocking)
1668 1668
 }
1669 1669
 
1670
-func composeMultilineBatch(batchID, fromNickMask, fromAccount string, tags map[string]string, command, target string, message utils.SplitMessage) (result []ircmsg.IRCMessage) {
1670
+func composeMultilineBatch(batchID, fromNickMask, fromAccount string, tags map[string]string, command, target string, message utils.SplitMessage) (result []ircmsg.Message) {
1671 1671
 	batchStart := ircmsg.MakeMessage(tags, fromNickMask, "BATCH", "+"+batchID, caps.MultilineBatchType, target)
1672 1672
 	batchStart.SetTag("time", message.Time.Format(IRCv3TimestampFormat))
1673 1673
 	batchStart.SetTag("msgid", message.Msgid)
@@ -1707,7 +1707,7 @@ var (
1707 1707
 )
1708 1708
 
1709 1709
 // SendRawMessage sends a raw message to the client.
1710
-func (session *Session) SendRawMessage(message ircmsg.IRCMessage, blocking bool) error {
1710
+func (session *Session) SendRawMessage(message ircmsg.Message, blocking bool) error {
1711 1711
 	// use dumb hack to force the last param to be a trailing param if required
1712 1712
 	config := session.client.server.Config()
1713 1713
 	if config.Server.Compatibility.forceTrailing && commandsThatMustUseTrailing[message.Command] {
@@ -1769,7 +1769,7 @@ func (session *Session) Send(tags map[string]string, prefix string, command stri
1769 1769
 	return session.SendRawMessage(msg, false)
1770 1770
 }
1771 1771
 
1772
-func (session *Session) setTimeTag(msg *ircmsg.IRCMessage, serverTime time.Time) {
1772
+func (session *Session) setTimeTag(msg *ircmsg.Message, serverTime time.Time) {
1773 1773
 	if session.capabilities.Has(caps.ServerTime) && !msg.HasTag("time") {
1774 1774
 		if serverTime.IsZero() {
1775 1775
 			serverTime = time.Now()

+ 2
- 2
irc/commands.go View File

@@ -11,7 +11,7 @@ import (
11 11
 
12 12
 // Command represents a command accepted from a client.
13 13
 type Command struct {
14
-	handler        func(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool
14
+	handler        func(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool
15 15
 	usablePreReg   bool
16 16
 	allowedInBatch bool // allowed in client-to-server batches
17 17
 	minParams      int
@@ -19,7 +19,7 @@ type Command struct {
19 19
 }
20 20
 
21 21
 // Run runs this command with the given client/message.
22
-func (cmd *Command) Run(server *Server, client *Client, session *Session, msg ircmsg.IRCMessage) (exiting bool) {
22
+func (cmd *Command) Run(server *Server, client *Client, session *Session, msg ircmsg.Message) (exiting bool) {
23 23
 	rb := NewResponseBuffer(session)
24 24
 	rb.Label = GetLabel(msg)
25 25
 

+ 71
- 71
irc/handlers.go View File

@@ -138,7 +138,7 @@ func (server *Server) sendLoginSnomask(nickMask, accountName string) {
138 138
 }
139 139
 
140 140
 // AUTHENTICATE [<mechanism>|<data>|*]
141
-func authenticateHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
141
+func authenticateHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
142 142
 	session := rb.session
143 143
 	config := server.Config()
144 144
 	details := client.Details()
@@ -340,7 +340,7 @@ func authExternalHandler(server *Server, client *Client, mechanism string, value
340 340
 }
341 341
 
342 342
 // AWAY [<message>]
343
-func awayHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
343
+func awayHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
344 344
 	var isAway bool
345 345
 	var awayMessage string
346 346
 	if len(msg.Params) > 0 {
@@ -377,7 +377,7 @@ func dispatchAwayNotify(client *Client, isAway bool, awayMessage string) {
377 377
 }
378 378
 
379 379
 // BATCH {+,-}reference-tag type [params...]
380
-func batchHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
380
+func batchHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
381 381
 	tag := msg.Params[0]
382 382
 	fail := false
383 383
 	sendErrors := rb.session.batch.command != "NOTICE"
@@ -421,7 +421,7 @@ func batchHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
421 421
 }
422 422
 
423 423
 // BRB [message]
424
-func brbHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
424
+func brbHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
425 425
 	success, duration := client.brbTimer.Enable()
426 426
 	if !success {
427 427
 		rb.Add(nil, server.name, "FAIL", "BRB", "CANNOT_BRB", client.t("Your client does not support BRB"))
@@ -446,7 +446,7 @@ func brbHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Respo
446 446
 }
447 447
 
448 448
 // CAP <subcmd> [<caps>]
449
-func capHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
449
+func capHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
450 450
 	details := client.Details()
451 451
 	subCommand := strings.ToUpper(msg.Params[0])
452 452
 	toAdd := caps.NewSet()
@@ -564,7 +564,7 @@ func capHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Respo
564 564
 // e.g., CHATHISTORY #ircv3 AFTER id=ytNBbt565yt4r3err3 10
565 565
 // CHATHISTORY <target> BETWEEN <query> <query> <direction> [<limit>]
566 566
 // e.g., CHATHISTORY #ircv3 BETWEEN timestamp=YYYY-MM-DDThh:mm:ss.sssZ timestamp=YYYY-MM-DDThh:mm:ss.sssZ + 100
567
-func chathistoryHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) (exiting bool) {
567
+func chathistoryHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) (exiting bool) {
568 568
 	var items []history.Item
569 569
 	unknown_command := false
570 570
 	var target string
@@ -702,7 +702,7 @@ func chathistoryHandler(server *Server, client *Client, msg ircmsg.IRCMessage, r
702 702
 }
703 703
 
704 704
 // DEBUG <subcmd>
705
-func debugHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
705
+func debugHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
706 706
 	param := strings.ToUpper(msg.Params[0])
707 707
 
708 708
 	switch param {
@@ -775,7 +775,7 @@ func debugHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
775 775
 	return false
776 776
 }
777 777
 
778
-func defconHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
778
+func defconHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
779 779
 	if len(msg.Params) > 0 {
780 780
 		level, err := strconv.Atoi(msg.Params[0])
781 781
 		if err == nil && 1 <= level && level <= 5 {
@@ -823,7 +823,7 @@ func formatBanForListing(client *Client, key string, info IPBanInfo) string {
823 823
 
824 824
 // DLINE [ANDKILL] [MYSELF] [duration] <ip>/<net> [ON <server>] [reason [| oper reason]]
825 825
 // DLINE LIST
826
-func dlineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
826
+func dlineHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
827 827
 	// check oper permissions
828 828
 	oper := client.Oper()
829 829
 	if !oper.HasRoleCapab("ban") {
@@ -962,7 +962,7 @@ func dlineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
962 962
 }
963 963
 
964 964
 // EXTJWT <target> [service_name]
965
-func extjwtHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
965
+func extjwtHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
966 966
 	accountName := client.AccountName()
967 967
 	if accountName == "*" {
968 968
 		accountName = ""
@@ -1030,7 +1030,7 @@ func extjwtHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
1030 1030
 
1031 1031
 // HELP [<query>]
1032 1032
 // HELPOP [<query>]
1033
-func helpHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1033
+func helpHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1034 1034
 	if len(msg.Params) == 0 {
1035 1035
 		client.sendHelp("HELPOP", client.t(`HELPOP <argument>
1036 1036
 
@@ -1065,7 +1065,7 @@ Get an explanation of <argument>, or "index" for a list of help topics.`), rb)
1065 1065
 // e.g., HISTORY #ubuntu 10
1066 1066
 // HISTORY me 15
1067 1067
 // HISTORY #darwin 1h
1068
-func historyHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1068
+func historyHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1069 1069
 	config := server.Config()
1070 1070
 	if !config.History.Enabled {
1071 1071
 		rb.Notice(client.t("This command has been disabled by the server administrators"))
@@ -1093,7 +1093,7 @@ func historyHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *R
1093 1093
 }
1094 1094
 
1095 1095
 // INFO
1096
-func infoHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1096
+func infoHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1097 1097
 	nick := client.Nick()
1098 1098
 	// we do the below so that the human-readable lines in info can be translated.
1099 1099
 	for _, line := range infoString1 {
@@ -1133,7 +1133,7 @@ func infoHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
1133 1133
 
1134 1134
 // INVITE <nickname> <channel>
1135 1135
 // UNINVITE <nickname> <channel>
1136
-func inviteHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1136
+func inviteHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1137 1137
 	invite := msg.Command == "INVITE"
1138 1138
 	nickname := msg.Params[0]
1139 1139
 	channelName := msg.Params[1]
@@ -1160,7 +1160,7 @@ func inviteHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
1160 1160
 }
1161 1161
 
1162 1162
 // ISON <nick>{ <nick>}
1163
-func isonHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1163
+func isonHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1164 1164
 	var nicks = msg.Params
1165 1165
 
1166 1166
 	ison := make([]string, 0, len(msg.Params))
@@ -1176,7 +1176,7 @@ func isonHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
1176 1176
 }
1177 1177
 
1178 1178
 // JOIN <channel>{,<channel>} [<key>{,<key>}]
1179
-func joinHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1179
+func joinHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1180 1180
 	// #1417: allow `JOIN 0` with a confirmation code
1181 1181
 	if msg.Params[0] == "0" {
1182 1182
 		expectedCode := utils.ConfirmationCode("", rb.session.ctime)
@@ -1253,7 +1253,7 @@ func sendJoinError(client *Client, name string, rb *ResponseBuffer, err error) {
1253 1253
 }
1254 1254
 
1255 1255
 // SAJOIN [nick] #channel{,#channel}
1256
-func sajoinHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1256
+func sajoinHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1257 1257
 	var target *Client
1258 1258
 	var channelString string
1259 1259
 	if strings.HasPrefix(msg.Params[0], "#") {
@@ -1288,7 +1288,7 @@ func sajoinHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
1288 1288
 }
1289 1289
 
1290 1290
 // KICK <channel>{,<channel>} <user>{,<user>} [<comment>]
1291
-func kickHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1291
+func kickHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1292 1292
 	hasPrivs := client.HasRoleCapabs("samode")
1293 1293
 	channels := strings.Split(msg.Params[0], ",")
1294 1294
 	users := strings.Split(msg.Params[1], ",")
@@ -1339,7 +1339,7 @@ func kickHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
1339 1339
 }
1340 1340
 
1341 1341
 // KILL <nickname> <comment>
1342
-func killHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1342
+func killHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1343 1343
 	nickname := msg.Params[0]
1344 1344
 	comment := "<no reason supplied>"
1345 1345
 	if len(msg.Params) > 1 {
@@ -1365,7 +1365,7 @@ func killHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
1365 1365
 
1366 1366
 // KLINE [ANDKILL] [MYSELF] [duration] <mask> [ON <server>] [reason [| oper reason]]
1367 1367
 // KLINE LIST
1368
-func klineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1368
+func klineHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1369 1369
 	details := client.Details()
1370 1370
 	// check oper permissions
1371 1371
 	oper := client.Oper()
@@ -1507,7 +1507,7 @@ func klineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
1507 1507
 }
1508 1508
 
1509 1509
 // LANGUAGE <code>{ <code>}
1510
-func languageHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1510
+func languageHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1511 1511
 	nick := client.Nick()
1512 1512
 	alreadyDoneLanguages := make(map[string]bool)
1513 1513
 	var appliedLanguages []string
@@ -1561,7 +1561,7 @@ func languageHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *
1561 1561
 }
1562 1562
 
1563 1563
 // LIST [<channel>{,<channel>}] [<elistcond>{,<elistcond>}]
1564
-func listHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1564
+func listHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1565 1565
 	config := server.Config()
1566 1566
 	if time.Since(client.ctime) < config.Channels.ListDelay && client.Account() == "" && !client.HasMode(modes.Operator) {
1567 1567
 		remaining := time.Until(client.ctime.Add(config.Channels.ListDelay))
@@ -1649,13 +1649,13 @@ func listHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
1649 1649
 }
1650 1650
 
1651 1651
 // LUSERS [<mask> [<server>]]
1652
-func lusersHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1652
+func lusersHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1653 1653
 	server.Lusers(client, rb)
1654 1654
 	return false
1655 1655
 }
1656 1656
 
1657 1657
 // MODE <target> [<modestring> [<mode arguments>...]]
1658
-func modeHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1658
+func modeHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1659 1659
 	if 0 < len(msg.Params[0]) && msg.Params[0][0] == '#' {
1660 1660
 		return cmodeHandler(server, client, msg, rb)
1661 1661
 	}
@@ -1663,7 +1663,7 @@ func modeHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
1663 1663
 }
1664 1664
 
1665 1665
 // MODE <channel> [<modestring> [<mode arguments>...]]
1666
-func cmodeHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1666
+func cmodeHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1667 1667
 	channel := server.channels.Get(msg.Params[0])
1668 1668
 
1669 1669
 	if channel == nil {
@@ -1721,7 +1721,7 @@ func announceCmodeChanges(channel *Channel, applied modes.ModeChanges, source, a
1721 1721
 }
1722 1722
 
1723 1723
 // MODE <client> [<modestring> [<mode arguments>...]]
1724
-func umodeHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1724
+func umodeHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1725 1725
 	cDetails := client.Details()
1726 1726
 	target := server.clients.Get(msg.Params[0])
1727 1727
 	if target == nil {
@@ -1793,7 +1793,7 @@ func (server *Server) getCurrentNick(nick string) (result string) {
1793 1793
 }
1794 1794
 
1795 1795
 // MONITOR <subcmd> [params...]
1796
-func monitorHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1796
+func monitorHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1797 1797
 	handler, exists := monitorSubcommands[strings.ToLower(msg.Params[0])]
1798 1798
 
1799 1799
 	if !exists {
@@ -1805,7 +1805,7 @@ func monitorHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *R
1805 1805
 }
1806 1806
 
1807 1807
 // MONITOR - <target>{,<target>}
1808
-func monitorRemoveHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1808
+func monitorRemoveHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1809 1809
 	if len(msg.Params) < 2 {
1810 1810
 		rb.Add(nil, server.name, ERR_NEEDMOREPARAMS, client.Nick(), msg.Command, client.t("Not enough parameters"))
1811 1811
 		return false
@@ -1820,7 +1820,7 @@ func monitorRemoveHandler(server *Server, client *Client, msg ircmsg.IRCMessage,
1820 1820
 }
1821 1821
 
1822 1822
 // MONITOR + <target>{,<target>}
1823
-func monitorAddHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1823
+func monitorAddHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1824 1824
 	if len(msg.Params) < 2 {
1825 1825
 		rb.Add(nil, server.name, ERR_NEEDMOREPARAMS, client.Nick(), msg.Command, client.t("Not enough parameters"))
1826 1826
 		return false
@@ -1867,13 +1867,13 @@ func monitorAddHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb
1867 1867
 }
1868 1868
 
1869 1869
 // MONITOR C
1870
-func monitorClearHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1870
+func monitorClearHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1871 1871
 	server.monitorManager.RemoveAll(rb.session)
1872 1872
 	return false
1873 1873
 }
1874 1874
 
1875 1875
 // MONITOR L
1876
-func monitorListHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1876
+func monitorListHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1877 1877
 	nick := client.Nick()
1878 1878
 	monitorList := server.monitorManager.List(rb.session)
1879 1879
 
@@ -1898,7 +1898,7 @@ func monitorListHandler(server *Server, client *Client, msg ircmsg.IRCMessage, r
1898 1898
 }
1899 1899
 
1900 1900
 // MONITOR S
1901
-func monitorStatusHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1901
+func monitorStatusHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1902 1902
 	var online []string
1903 1903
 	var offline []string
1904 1904
 
@@ -1928,13 +1928,13 @@ func monitorStatusHandler(server *Server, client *Client, msg ircmsg.IRCMessage,
1928 1928
 }
1929 1929
 
1930 1930
 // MOTD
1931
-func motdHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1931
+func motdHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1932 1932
 	server.MOTD(client, rb)
1933 1933
 	return false
1934 1934
 }
1935 1935
 
1936 1936
 // NAMES [<channel>{,<channel>} [target]]
1937
-func namesHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1937
+func namesHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1938 1938
 	var channels []string
1939 1939
 	if len(msg.Params) > 0 {
1940 1940
 		channels = strings.Split(msg.Params[0], ",")
@@ -1968,7 +1968,7 @@ func namesHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
1968 1968
 }
1969 1969
 
1970 1970
 // NICK <nickname>
1971
-func nickHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
1971
+func nickHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
1972 1972
 	if client.registered {
1973 1973
 		if client.account == "" && server.Config().Accounts.NickReservation.ForbidAnonNickChanges {
1974 1974
 			rb.Add(nil, server.name, ERR_UNKNOWNERROR, client.Nick(), client.t("You may not change your nickname"))
@@ -2019,7 +2019,7 @@ func validateSplitMessageLen(msgType history.ItemType, source, target string, me
2019 2019
 }
2020 2020
 
2021 2021
 // helper to store a batched PRIVMSG in the session object
2022
-func absorbBatchedMessage(server *Server, client *Client, msg ircmsg.IRCMessage, batchTag string, histType history.ItemType, rb *ResponseBuffer) {
2022
+func absorbBatchedMessage(server *Server, client *Client, msg ircmsg.Message, batchTag string, histType history.ItemType, rb *ResponseBuffer) {
2023 2023
 	var errorCode, errorMessage string
2024 2024
 	defer func() {
2025 2025
 		if errorCode != "" {
@@ -2059,7 +2059,7 @@ func absorbBatchedMessage(server *Server, client *Client, msg ircmsg.IRCMessage,
2059 2059
 // NOTICE <target>{,<target>} <message>
2060 2060
 // PRIVMSG <target>{,<target>} <message>
2061 2061
 // TAGMSG <target>{,<target>}
2062
-func messageHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2062
+func messageHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2063 2063
 	histType, err := msgCommandToHistType(msg.Command)
2064 2064
 	if err != nil {
2065 2065
 		return false
@@ -2267,7 +2267,7 @@ func itemIsStorable(item *history.Item, config *Config) bool {
2267 2267
 }
2268 2268
 
2269 2269
 // NPC <target> <sourcenick> <message>
2270
-func npcHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2270
+func npcHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2271 2271
 	target := msg.Params[0]
2272 2272
 	fakeSource := msg.Params[1]
2273 2273
 	message := msg.Params[2:]
@@ -2278,7 +2278,7 @@ func npcHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Respo
2278 2278
 }
2279 2279
 
2280 2280
 // NPCA <target> <sourcenick> <message>
2281
-func npcaHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2281
+func npcaHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2282 2282
 	target := msg.Params[0]
2283 2283
 	fakeSource := msg.Params[1]
2284 2284
 	message := msg.Params[2:]
@@ -2289,7 +2289,7 @@ func npcaHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
2289 2289
 }
2290 2290
 
2291 2291
 // OPER <name> [password]
2292
-func operHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2292
+func operHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2293 2293
 	if client.HasMode(modes.Operator) {
2294 2294
 		rb.Add(nil, server.name, ERR_UNKNOWNERROR, client.Nick(), "OPER", client.t("You're already opered-up!"))
2295 2295
 		return false
@@ -2374,7 +2374,7 @@ func applyOper(client *Client, oper *Oper, rb *ResponseBuffer) {
2374 2374
 }
2375 2375
 
2376 2376
 // DEOPER
2377
-func deoperHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2377
+func deoperHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2378 2378
 	if client.Oper() == nil {
2379 2379
 		rb.Notice(client.t("Insufficient oper privs"))
2380 2380
 		return false
@@ -2385,7 +2385,7 @@ func deoperHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
2385 2385
 }
2386 2386
 
2387 2387
 // PART <channel>{,<channel>} [<reason>]
2388
-func partHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2388
+func partHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2389 2389
 	channels := strings.Split(msg.Params[0], ",")
2390 2390
 	var reason string
2391 2391
 	if len(msg.Params) > 1 {
@@ -2405,7 +2405,7 @@ func partHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
2405 2405
 }
2406 2406
 
2407 2407
 // PASS <password>
2408
-func passHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2408
+func passHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2409 2409
 	if client.registered {
2410 2410
 		rb.Add(nil, server.name, ERR_ALREADYREGISTRED, client.nick, client.t("You may not reregister"))
2411 2411
 		return false
@@ -2460,19 +2460,19 @@ func passHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
2460 2460
 }
2461 2461
 
2462 2462
 // PING [params...]
2463
-func pingHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2463
+func pingHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2464 2464
 	rb.Add(nil, server.name, "PONG", server.name, msg.Params[0])
2465 2465
 	return false
2466 2466
 }
2467 2467
 
2468 2468
 // PONG [params...]
2469
-func pongHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2469
+func pongHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2470 2470
 	// client gets touched when they send this command, so we don't need to do anything
2471 2471
 	return false
2472 2472
 }
2473 2473
 
2474 2474
 // QUIT [<reason>]
2475
-func quitHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2475
+func quitHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2476 2476
 	reason := "Quit"
2477 2477
 	if len(msg.Params) > 0 {
2478 2478
 		reason += ": " + msg.Params[0]
@@ -2482,7 +2482,7 @@ func quitHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Resp
2482 2482
 }
2483 2483
 
2484 2484
 // REGISTER < email | * > <password>
2485
-func registerHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) (exiting bool) {
2485
+func registerHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) (exiting bool) {
2486 2486
 	accountName := client.Nick()
2487 2487
 	if accountName == "*" {
2488 2488
 		accountName = client.preregNick
@@ -2551,7 +2551,7 @@ func registerHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *
2551 2551
 }
2552 2552
 
2553 2553
 // VERIFY <account> <code>
2554
-func verifyHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) (exiting bool) {
2554
+func verifyHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) (exiting bool) {
2555 2555
 	config := server.Config()
2556 2556
 	if !config.Accounts.Registration.Enabled {
2557 2557
 		rb.Add(nil, server.name, "FAIL", "VERIFY", "DISALLOWED", client.t("Account registration is disabled"))
@@ -2593,7 +2593,7 @@ func verifyHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
2593 2593
 }
2594 2594
 
2595 2595
 // REHASH
2596
-func rehashHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2596
+func rehashHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2597 2597
 	nick := client.Nick()
2598 2598
 	server.logger.Info("server", "REHASH command used by", nick)
2599 2599
 	err := server.rehash()
@@ -2611,7 +2611,7 @@ func rehashHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
2611 2611
 }
2612 2612
 
2613 2613
 // RELAYMSG <channel> <spoofed nick> :<message>
2614
-func relaymsgHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) (result bool) {
2614
+func relaymsgHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) (result bool) {
2615 2615
 	config := server.Config()
2616 2616
 	if !config.Server.Relaymsg.Enabled {
2617 2617
 		rb.Add(nil, server.name, "FAIL", "RELAYMSG", "NOT_ENABLED", client.t("RELAYMSG has been disabled"))
@@ -2680,7 +2680,7 @@ func relaymsgHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *
2680 2680
 }
2681 2681
 
2682 2682
 // RENAME <oldchan> <newchan> [<reason>]
2683
-func renameHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2683
+func renameHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2684 2684
 	oldName, newName := msg.Params[0], msg.Params[1]
2685 2685
 	var reason string
2686 2686
 	if 2 < len(msg.Params) {
@@ -2766,7 +2766,7 @@ func renameHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
2766 2766
 }
2767 2767
 
2768 2768
 // RESUME <token> [timestamp]
2769
-func resumeHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2769
+func resumeHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2770 2770
 	details := ResumeDetails{
2771 2771
 		PresentedToken: msg.Params[0],
2772 2772
 	}
@@ -2790,7 +2790,7 @@ func resumeHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
2790 2790
 }
2791 2791
 
2792 2792
 // SANICK <oldnick> <nickname>
2793
-func sanickHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2793
+func sanickHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2794 2794
 	targetNick := msg.Params[0]
2795 2795
 	target := server.clients.Get(targetNick)
2796 2796
 	if target == nil {
@@ -2802,7 +2802,7 @@ func sanickHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
2802 2802
 }
2803 2803
 
2804 2804
 // SCENE <target> <message>
2805
-func sceneHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2805
+func sceneHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2806 2806
 	target := msg.Params[0]
2807 2807
 	message := msg.Params[1:]
2808 2808
 
@@ -2812,7 +2812,7 @@ func sceneHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
2812 2812
 }
2813 2813
 
2814 2814
 // SETNAME <realname>
2815
-func setnameHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2815
+func setnameHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2816 2816
 	realname := msg.Params[0]
2817 2817
 	if len(msg.Params) != 1 {
2818 2818
 		// workaround for clients that turn unknown commands into raw IRC lines,
@@ -2840,19 +2840,19 @@ func setnameHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *R
2840 2840
 }
2841 2841
 
2842 2842
 // SUMMON [parameters]
2843
-func summonHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2843
+func summonHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2844 2844
 	rb.Add(nil, server.name, ERR_SUMMONDISABLED, client.Nick(), client.t("SUMMON has been disabled"))
2845 2845
 	return false
2846 2846
 }
2847 2847
 
2848 2848
 // TIME
2849
-func timeHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2849
+func timeHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2850 2850
 	rb.Add(nil, server.name, RPL_TIME, client.nick, server.name, time.Now().UTC().Format(time.RFC1123))
2851 2851
 	return false
2852 2852
 }
2853 2853
 
2854 2854
 // TOPIC <channel> [<topic>]
2855
-func topicHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2855
+func topicHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2856 2856
 	channel := server.channels.Get(msg.Params[0])
2857 2857
 	if channel == nil {
2858 2858
 		rb.Add(nil, server.name, ERR_NOSUCHCHANNEL, client.nick, utils.SafeErrorParam(msg.Params[0]), client.t("No such channel"))
@@ -2868,7 +2868,7 @@ func topicHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
2868 2868
 }
2869 2869
 
2870 2870
 // UNDLINE <ip>|<net>
2871
-func unDLineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2871
+func unDLineHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2872 2872
 	// check oper permissions
2873 2873
 	oper := client.Oper()
2874 2874
 	if !oper.HasRoleCapab("ban") {
@@ -2901,7 +2901,7 @@ func unDLineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *R
2901 2901
 }
2902 2902
 
2903 2903
 // UNKLINE <mask>
2904
-func unKLineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2904
+func unKLineHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2905 2905
 	details := client.Details()
2906 2906
 	// check oper permissions
2907 2907
 	oper := client.Oper()
@@ -2931,7 +2931,7 @@ func unKLineHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *R
2931 2931
 }
2932 2932
 
2933 2933
 // USER <username> * 0 <realname>
2934
-func userHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2934
+func userHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2935 2935
 	if client.registered {
2936 2936
 		rb.Add(nil, server.name, ERR_ALREADYREGISTRED, client.Nick(), client.t("You may not reregister"))
2937 2937
 		return false
@@ -2986,7 +2986,7 @@ func operStatusVisible(client, target *Client, hasPrivs bool) bool {
2986 2986
 }
2987 2987
 
2988 2988
 // USERHOST <nickname>{ <nickname>}
2989
-func userhostHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
2989
+func userhostHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
2990 2990
 	hasPrivs := client.HasMode(modes.Operator)
2991 2991
 	returnedClients := make(ClientSet)
2992 2992
 
@@ -3034,20 +3034,20 @@ func userhostHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *
3034 3034
 }
3035 3035
 
3036 3036
 // USERS [parameters]
3037
-func usersHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3037
+func usersHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3038 3038
 	rb.Add(nil, server.name, ERR_USERSDISABLED, client.Nick(), client.t("USERS has been disabled"))
3039 3039
 	return false
3040 3040
 }
3041 3041
 
3042 3042
 // VERSION
3043
-func versionHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3043
+func versionHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3044 3044
 	rb.Add(nil, server.name, RPL_VERSION, client.nick, Ver, server.name)
3045 3045
 	server.RplISupport(client, rb)
3046 3046
 	return false
3047 3047
 }
3048 3048
 
3049 3049
 // WEBIRC <password> <gateway> <hostname> <ip> [:flag1 flag2=x flag3]
3050
-func webircHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3050
+func webircHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3051 3051
 	// only allow unregistered clients to use this command
3052 3052
 	if client.registered || client.proxiedIP != nil {
3053 3053
 		return false
@@ -3221,7 +3221,7 @@ func (client *Client) rplWhoReply(channel *Channel, target *Client, rb *Response
3221 3221
 }
3222 3222
 
3223 3223
 // WHO <mask> [<filter>%<fields>,<type>]
3224
-func whoHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3224
+func whoHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3225 3225
 	mask := msg.Params[0]
3226 3226
 	var err error
3227 3227
 	if mask == "" {
@@ -3329,7 +3329,7 @@ func whoHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Respo
3329 3329
 }
3330 3330
 
3331 3331
 // WHOIS [<target>] <mask>{,<mask>}
3332
-func whoisHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3332
+func whoisHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3333 3333
 	var masksString string
3334 3334
 	//var target string
3335 3335
 
@@ -3390,7 +3390,7 @@ func whoisHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Res
3390 3390
 }
3391 3391
 
3392 3392
 // WHOWAS <nickname> [<count> [<server>]]
3393
-func whowasHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3393
+func whowasHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3394 3394
 	nicknames := strings.Split(msg.Params[0], ",")
3395 3395
 
3396 3396
 	// 0 means "all the entries", as does a negative number
@@ -3424,7 +3424,7 @@ func whowasHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Re
3424 3424
 }
3425 3425
 
3426 3426
 // ZNC <module> [params]
3427
-func zncHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3427
+func zncHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3428 3428
 	params := msg.Params[1:]
3429 3429
 	// #1205: compatibility with Palaver, which sends `ZNC *playback :play ...`
3430 3430
 	if len(params) == 1 && strings.IndexByte(params[0], ' ') != -1 {
@@ -3435,13 +3435,13 @@ func zncHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *Respo
3435 3435
 }
3436 3436
 
3437 3437
 // fake handler for unknown commands
3438
-func unknownCommandHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3438
+func unknownCommandHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3439 3439
 	rb.Add(nil, server.name, ERR_UNKNOWNCOMMAND, client.Nick(), utils.SafeErrorParam(msg.Command), client.t("Unknown command"))
3440 3440
 	return false
3441 3441
 }
3442 3442
 
3443 3443
 // fake handler for invalid utf8
3444
-func invalidUtf8Handler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
3444
+func invalidUtf8Handler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
3445 3445
 	rb.Add(nil, server.name, "FAIL", utils.SafeErrorParam(msg.Command), "INVALID_UTF8", client.t("Message rejected for containing invalid UTF-8"))
3446 3446
 	return false
3447 3447
 }

+ 1
- 1
irc/ircconn.go View File

@@ -45,7 +45,7 @@ type IRCConn interface {
45 45
 type IRCStreamConn struct {
46 46
 	conn *utils.WrappedConn
47 47
 
48
-	reader ircreader.IRCReader
48
+	reader ircreader.Reader
49 49
 }
50 50
 
51 51
 func NewIRCStreamConn(conn *utils.WrappedConn) *IRCStreamConn {

+ 4
- 4
irc/message_cache.go View File

@@ -42,7 +42,7 @@ type MessageCache struct {
42 42
 	splitMessage utils.SplitMessage
43 43
 }
44 44
 
45
-func addAllTags(msg *ircmsg.IRCMessage, tags map[string]string, serverTime time.Time, msgid, accountName string) {
45
+func addAllTags(msg *ircmsg.Message, tags map[string]string, serverTime time.Time, msgid, accountName string) {
46 46
 	msg.UpdateTags(tags)
47 47
 	msg.SetTag("time", serverTime.Format(IRCv3TimestampFormat))
48 48
 	if accountName != "*" {
@@ -73,7 +73,7 @@ func (m *MessageCache) Initialize(server *Server, serverTime time.Time, msgid st
73 73
 	m.command = command
74 74
 	m.params = params
75 75
 
76
-	var msg ircmsg.IRCMessage
76
+	var msg ircmsg.Message
77 77
 	config := server.Config()
78 78
 	if config.Server.Compatibility.forceTrailing && commandsThatMustUseTrailing[command] {
79 79
 		msg.ForceTrailing()
@@ -110,7 +110,7 @@ func (m *MessageCache) InitializeSplitMessage(server *Server, nickmask, accountN
110 110
 
111 111
 	if message.Is512() {
112 112
 		isTagmsg := command == "TAGMSG"
113
-		var msg ircmsg.IRCMessage
113
+		var msg ircmsg.Message
114 114
 		if forceTrailing {
115 115
 			msg.ForceTrailing()
116 116
 		}
@@ -136,7 +136,7 @@ func (m *MessageCache) InitializeSplitMessage(server *Server, nickmask, accountN
136 136
 			return
137 137
 		}
138 138
 	} else {
139
-		var msg ircmsg.IRCMessage
139
+		var msg ircmsg.Message
140 140
 		if forceTrailing {
141 141
 			msg.ForceTrailing()
142 142
 		}

+ 1
- 1
irc/monitor.go View File

@@ -105,7 +105,7 @@ func (manager *MonitorManager) List(session *Session) (nicks []string) {
105 105
 }
106 106
 
107 107
 var (
108
-	monitorSubcommands = map[string]func(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool{
108
+	monitorSubcommands = map[string]func(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool{
109 109
 		"-": monitorRemoveHandler,
110 110
 		"+": monitorAddHandler,
111 111
 		"c": monitorClearHandler,

+ 5
- 5
irc/responsebuffer.go View File

@@ -36,14 +36,14 @@ type ResponseBuffer struct {
36 36
 	// nested batch.)
37 37
 	nestedBatches []string
38 38
 
39
-	messages  []ircmsg.IRCMessage
39
+	messages  []ircmsg.Message
40 40
 	finalized bool
41 41
 	target    *Client
42 42
 	session   *Session
43 43
 }
44 44
 
45 45
 // GetLabel returns the label from the given message.
46
-func GetLabel(msg ircmsg.IRCMessage) string {
46
+func GetLabel(msg ircmsg.Message) string {
47 47
 	_, value := msg.GetTag(caps.LabelTagName)
48 48
 	return value
49 49
 }
@@ -57,7 +57,7 @@ func NewResponseBuffer(session *Session) *ResponseBuffer {
57 57
 	}
58 58
 }
59 59
 
60
-func (rb *ResponseBuffer) AddMessage(msg ircmsg.IRCMessage) {
60
+func (rb *ResponseBuffer) AddMessage(msg ircmsg.Message) {
61 61
 	if rb.finalized {
62 62
 		rb.target.server.logger.Error("internal", "message added to finalized ResponseBuffer, undefined behavior")
63 63
 		debug.PrintStack()
@@ -72,7 +72,7 @@ func (rb *ResponseBuffer) AddMessage(msg ircmsg.IRCMessage) {
72 72
 	rb.messages = append(rb.messages, msg)
73 73
 }
74 74
 
75
-func (rb *ResponseBuffer) setNestedBatchTag(msg *ircmsg.IRCMessage) {
75
+func (rb *ResponseBuffer) setNestedBatchTag(msg *ircmsg.Message) {
76 76
 	if 0 < len(rb.nestedBatches) {
77 77
 		msg.SetTag("batch", rb.nestedBatches[len(rb.nestedBatches)-1])
78 78
 	}
@@ -86,7 +86,7 @@ func (rb *ResponseBuffer) Add(tags map[string]string, prefix string, command str
86 86
 // Broadcast adds a standard new message to our queue, then sends an unlabeled copy
87 87
 // to all other sessions.
88 88
 func (rb *ResponseBuffer) Broadcast(tags map[string]string, prefix string, command string, params ...string) {
89
-	// can't reuse the IRCMessage object because of tag pollution :-\
89
+	// can't reuse the Message object because of tag pollution :-\
90 90
 	rb.Add(tags, prefix, command, params...)
91 91
 	for _, session := range rb.session.client.Sessions() {
92 92
 		if session != rb.session {

+ 1
- 1
irc/services.go View File

@@ -116,7 +116,7 @@ HELP returns information on the given command.`,
116 116
 }
117 117
 
118 118
 // generic handler for IRC commands like `/NICKSERV INFO`
119
-func serviceCmdHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
119
+func serviceCmdHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
120 120
 	service, ok := oragonoServicesByCommandAlias[msg.Command]
121 121
 	if !ok {
122 122
 		server.logger.Warning("internal", "can't handle unrecognized service", msg.Command)

+ 1
- 1
irc/uban.go View File

@@ -98,7 +98,7 @@ func parseUbanTarget(param string) (target ubanTarget, err error) {
98 98
 }
99 99
 
100 100
 // UBAN <subcommand> [target] [DURATION <duration>] [reason...]
101
-func ubanHandler(server *Server, client *Client, msg ircmsg.IRCMessage, rb *ResponseBuffer) bool {
101
+func ubanHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
102 102
 	subcommand := strings.ToLower(msg.Params[0])
103 103
 	params := msg.Params[1:]
104 104
 	var target ubanTarget

+ 26
- 26
vendor/github.com/goshuirc/irc-go/ircmsg/message.go View File

@@ -61,10 +61,10 @@ var (
61 61
 	ErrorBadParam = errors.New("Cannot have an empty param, a param with spaces, or a param that starts with ':' before the last parameter")
62 62
 )
63 63
 
64
-// IRCMessage represents an IRC message, as defined by the RFCs and as
64
+// Message represents an IRC message, as defined by the RFCs and as
65 65
 // extended by the IRCv3 Message Tags specification with the introduction
66 66
 // of message tags.
67
-type IRCMessage struct {
67
+type Message struct {
68 68
 	Prefix         string
69 69
 	Command        string
70 70
 	Params         []string
@@ -77,12 +77,12 @@ type IRCMessage struct {
77 77
 // will be encoded as a "trailing parameter" (preceded by a colon). This is
78 78
 // almost never necessary and should not be used except when having to interact
79 79
 // with broken implementations that don't correctly interpret IRC messages.
80
-func (msg *IRCMessage) ForceTrailing() {
80
+func (msg *Message) ForceTrailing() {
81 81
 	msg.forceTrailing = true
82 82
 }
83 83
 
84 84
 // GetTag returns whether a tag is present, and if so, what its value is.
85
-func (msg *IRCMessage) GetTag(tagName string) (present bool, value string) {
85
+func (msg *Message) GetTag(tagName string) (present bool, value string) {
86 86
 	if len(tagName) == 0 {
87 87
 		return
88 88
 	} else if tagName[0] == '+' {
@@ -95,13 +95,13 @@ func (msg *IRCMessage) GetTag(tagName string) (present bool, value string) {
95 95
 }
96 96
 
97 97
 // HasTag returns whether a tag is present.
98
-func (msg *IRCMessage) HasTag(tagName string) (present bool) {
98
+func (msg *Message) HasTag(tagName string) (present bool) {
99 99
 	present, _ = msg.GetTag(tagName)
100 100
 	return
101 101
 }
102 102
 
103 103
 // SetTag sets a tag.
104
-func (msg *IRCMessage) SetTag(tagName, tagValue string) {
104
+func (msg *Message) SetTag(tagName, tagValue string) {
105 105
 	if len(tagName) == 0 {
106 106
 		return
107 107
 	} else if tagName[0] == '+' {
@@ -118,7 +118,7 @@ func (msg *IRCMessage) SetTag(tagName, tagValue string) {
118 118
 }
119 119
 
120 120
 // DeleteTag deletes a tag.
121
-func (msg *IRCMessage) DeleteTag(tagName string) {
121
+func (msg *Message) DeleteTag(tagName string) {
122 122
 	if len(tagName) == 0 {
123 123
 		return
124 124
 	} else if tagName[0] == '+' {
@@ -129,14 +129,14 @@ func (msg *IRCMessage) DeleteTag(tagName string) {
129 129
 }
130 130
 
131 131
 // UpdateTags is a convenience to set multiple tags at once.
132
-func (msg *IRCMessage) UpdateTags(tags map[string]string) {
132
+func (msg *Message) UpdateTags(tags map[string]string) {
133 133
 	for name, value := range tags {
134 134
 		msg.SetTag(name, value)
135 135
 	}
136 136
 }
137 137
 
138 138
 // AllTags returns all tags as a single map.
139
-func (msg *IRCMessage) AllTags() (result map[string]string) {
139
+func (msg *Message) AllTags() (result map[string]string) {
140 140
 	result = make(map[string]string, len(msg.tags)+len(msg.clientOnlyTags))
141 141
 	for name, value := range msg.tags {
142 142
 		result[name] = value
@@ -148,23 +148,23 @@ func (msg *IRCMessage) AllTags() (result map[string]string) {
148 148
 }
149 149
 
150 150
 // ClientOnlyTags returns the client-only tags (the tags with the + prefix).
151
-// The returned map may be internal storage of the IRCMessage object and
151
+// The returned map may be internal storage of the Message object and
152 152
 // should not be modified.
153
-func (msg *IRCMessage) ClientOnlyTags() map[string]string {
153
+func (msg *Message) ClientOnlyTags() map[string]string {
154 154
 	return msg.clientOnlyTags
155 155
 }
156 156
 
157 157
 // ParseLine creates and returns a message from the given IRC line.
158
-func ParseLine(line string) (ircmsg IRCMessage, err error) {
158
+func ParseLine(line string) (ircmsg Message, err error) {
159 159
 	return parseLine(line, 0, 0)
160 160
 }
161 161
 
162
-// ParseLineStrict creates and returns an IRCMessage from the given IRC line,
162
+// ParseLineStrict creates and returns an Message from the given IRC line,
163 163
 // taking the maximum length into account and truncating the message as appropriate.
164 164
 // If fromClient is true, it enforces the client limit on tag data length (4094 bytes),
165 165
 // allowing the server to return ERR_INPUTTOOLONG as appropriate. If truncateLen is
166 166
 // nonzero, it is the length at which the non-tag portion of the message is truncated.
167
-func ParseLineStrict(line string, fromClient bool, truncateLen int) (ircmsg IRCMessage, err error) {
167
+func ParseLineStrict(line string, fromClient bool, truncateLen int) (ircmsg Message, err error) {
168 168
 	maxTagDataLength := MaxlenTagData
169 169
 	if fromClient {
170 170
 		maxTagDataLength = MaxlenClientTagData
@@ -180,7 +180,7 @@ func trimInitialSpaces(str string) string {
180 180
 	return str[i:]
181 181
 }
182 182
 
183
-func parseLine(line string, maxTagDataLength int, truncateLen int) (ircmsg IRCMessage, err error) {
183
+func parseLine(line string, maxTagDataLength int, truncateLen int) (ircmsg Message, err error) {
184 184
 	// remove either \n or \r\n from the end of the line:
185 185
 	line = strings.TrimSuffix(line, "\n")
186 186
 	line = strings.TrimSuffix(line, "\r")
@@ -279,7 +279,7 @@ func parseLine(line string, maxTagDataLength int, truncateLen int) (ircmsg IRCMe
279 279
 }
280 280
 
281 281
 // helper to parse tags
282
-func (ircmsg *IRCMessage) parseTags(tags string) (err error) {
282
+func (ircmsg *Message) parseTags(tags string) (err error) {
283 283
 	for 0 < len(tags) {
284 284
 		tagEnd := strings.IndexByte(tags, ';')
285 285
 		endPos := tagEnd
@@ -311,8 +311,8 @@ func (ircmsg *IRCMessage) parseTags(tags string) (err error) {
311 311
 	return nil
312 312
 }
313 313
 
314
-// MakeMessage provides a simple way to create a new IRCMessage.
315
-func MakeMessage(tags map[string]string, prefix string, command string, params ...string) (ircmsg IRCMessage) {
314
+// MakeMessage provides a simple way to create a new Message.
315
+func MakeMessage(tags map[string]string, prefix string, command string, params ...string) (ircmsg Message) {
316 316
 	ircmsg.Prefix = prefix
317 317
 	ircmsg.Command = command
318 318
 	ircmsg.Params = params
@@ -320,8 +320,8 @@ func MakeMessage(tags map[string]string, prefix string, command string, params .
320 320
 	return ircmsg
321 321
 }
322 322
 
323
-// Line returns a sendable line created from an IRCMessage.
324
-func (ircmsg *IRCMessage) Line() (result string, err error) {
323
+// Line returns a sendable line created from an Message.
324
+func (ircmsg *Message) Line() (result string, err error) {
325 325
 	bytes, err := ircmsg.line(0, 0, 0, 0)
326 326
 	if err == nil {
327 327
 		result = string(bytes)
@@ -329,17 +329,17 @@ func (ircmsg *IRCMessage) Line() (result string, err error) {
329 329
 	return
330 330
 }
331 331
 
332
-// LineBytes returns a sendable line created from an IRCMessage.
333
-func (ircmsg *IRCMessage) LineBytes() (result []byte, err error) {
332
+// LineBytes returns a sendable line created from an Message.
333
+func (ircmsg *Message) LineBytes() (result []byte, err error) {
334 334
 	result, err = ircmsg.line(0, 0, 0, 0)
335 335
 	return
336 336
 }
337 337
 
338
-// LineBytesStrict returns a sendable line, as a []byte, created from an IRCMessage.
338
+// LineBytesStrict returns a sendable line, as a []byte, created from an Message.
339 339
 // fromClient controls whether the server-side or client-side tag length limit
340 340
 // is enforced. If truncateLen is nonzero, it is the length at which the
341 341
 // non-tag portion of the message is truncated.
342
-func (ircmsg *IRCMessage) LineBytesStrict(fromClient bool, truncateLen int) ([]byte, error) {
342
+func (ircmsg *Message) LineBytesStrict(fromClient bool, truncateLen int) ([]byte, error) {
343 343
 	var tagLimit, clientOnlyTagDataLimit, serverAddedTagDataLimit int
344 344
 	if fromClient {
345 345
 		// enforce client max tags:
@@ -359,8 +359,8 @@ func paramRequiresTrailing(param string) bool {
359 359
 	return len(param) == 0 || strings.IndexByte(param, ' ') != -1 || param[0] == ':'
360 360
 }
361 361
 
362
-// line returns a sendable line created from an IRCMessage.
363
-func (ircmsg *IRCMessage) line(tagLimit, clientOnlyTagDataLimit, serverAddedTagDataLimit, truncateLen int) (result []byte, err error) {
362
+// line returns a sendable line created from an Message.
363
+func (ircmsg *Message) line(tagLimit, clientOnlyTagDataLimit, serverAddedTagDataLimit, truncateLen int) (result []byte, err error) {
364 364
 	if len(ircmsg.Command) == 0 {
365 365
 		return nil, ErrorCommandMissing
366 366
 	}

+ 1
- 1
vendor/github.com/goshuirc/irc-go/ircmsg/tags.go View File

@@ -30,7 +30,7 @@ func init() {
30 30
 // EscapeTagValue takes a value, and returns an escaped message tag value.
31 31
 //
32 32
 // This function is automatically used when lines are created from an
33
-// IRCMessage, so you don't need to call it yourself before creating a line.
33
+// Message, so you don't need to call it yourself before creating a line.
34 34
 func EscapeTagValue(inString string) string {
35 35
 	return valtoescape.Replace(inString)
36 36
 }

+ 9
- 9
vendor/github.com/goshuirc/irc-go/ircreader/ircreader.go View File

@@ -10,7 +10,7 @@ import (
10 10
 )
11 11
 
12 12
 /*
13
-IRCReader is an optimized line reader for IRC lines containing tags;
13
+Reader is an optimized line reader for IRC lines containing tags;
14 14
 most IRC lines will not approach the maximum line length (8191 bytes
15 15
 of tag data, plus 512 bytes of message data), so we want a buffered
16 16
 reader that can start with a smaller buffer and expand if necessary,
@@ -21,7 +21,7 @@ var (
21 21
 	ErrReadQ = errors.New("readQ exceeded (read too many bytes without terminating newline)")
22 22
 )
23 23
 
24
-type IRCReader struct {
24
+type Reader struct {
25 25
 	conn io.Reader
26 26
 
27 27
 	initialSize int
@@ -34,17 +34,17 @@ type IRCReader struct {
34 34
 	eof        bool
35 35
 }
36 36
 
37
-// Returns a new *IRCReader with sane buffer size limits.
38
-func NewIRCReader(conn io.Reader) *IRCReader {
39
-	var reader IRCReader
37
+// Returns a new *Reader with sane buffer size limits.
38
+func NewIRCReader(conn io.Reader) *Reader {
39
+	var reader Reader
40 40
 	reader.Initialize(conn, 512, 8192+1024)
41 41
 	return &reader
42 42
 }
43 43
 
44
-// "Placement new" for an IRCReader; initializes it with custom buffer size
44
+// "Placement new" for a Reader; initializes it with custom buffer size
45 45
 // limits.
46
-func (cc *IRCReader) Initialize(conn io.Reader, initialSize, maxSize int) {
47
-	*cc = IRCReader{}
46
+func (cc *Reader) Initialize(conn io.Reader, initialSize, maxSize int) {
47
+	*cc = Reader{}
48 48
 	cc.conn = conn
49 49
 	cc.initialSize = initialSize
50 50
 	cc.maxSize = maxSize
@@ -54,7 +54,7 @@ func (cc *IRCReader) Initialize(conn io.Reader, initialSize, maxSize int) {
54 54
 // or \r\n as the line terminator (but not \r in isolation). Passes through
55 55
 // errors from the underlying connection. Returns ErrReadQ if the buffer limit
56 56
 // was exceeded without a terminating \n.
57
-func (cc *IRCReader) ReadLine() ([]byte, error) {
57
+func (cc *Reader) ReadLine() ([]byte, error) {
58 58
 	for {
59 59
 		// try to find a terminated line in the buffered data already read
60 60
 		nlidx := bytes.IndexByte(cc.buf[cc.searchFrom:cc.end], '\n')

+ 1
- 1
vendor/modules.txt View File

@@ -21,7 +21,7 @@ github.com/go-sql-driver/mysql
21 21
 # github.com/gorilla/websocket v1.4.2 => github.com/oragono/websocket v1.4.2-oragono1
22 22
 ## explicit
23 23
 github.com/gorilla/websocket
24
-# github.com/goshuirc/irc-go v0.0.0-20210304031553-cf78e9176f96
24
+# github.com/goshuirc/irc-go v0.0.0-20210311004346-ea7a188a73fe
25 25
 ## explicit
26 26
 github.com/goshuirc/irc-go/ircfmt
27 27
 github.com/goshuirc/irc-go/ircmsg

Loading…
Cancel
Save