1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
|
#interface:port to bind to. (default "127.0.0.1:6667")
bind = "127.0.0.1:6667"
#enable debug logging (default false)
debug = false
#enable trace logging (default false)
trace = false
#enable gops agent (https://github.com/google/gops)
#used to track down memory leaks/cpu profiling
#default false
gops = false
#TLS interface:port to bind to. (e.g 127.0.0.1:6697) (deault "")
#
#TLSBind = "127.0.0.1:6697"
#directory to look for key.pem and cert.pem. (default ".")
#
#TLSDir = "/etc/pki/tls/matterircd/"
# Specify the full path for your key and cert
#TLSKey = "/etc/pki/tls/matterircd/key.pem"
#TLSCert = "/etc/pki/tls/matterircd/cer.pem"
# Override handshake timeout (in seconds)
#HandshakeTimeout = 10
# Override client timeout (in seconds)
#ClientTimeout = 10
#PasteBufferTimeout specifies the amount of time in milliseconds that
#messages get kept in matterircd internal buffer before being sent to
#mattermost or slack.
#Messages that will be received in this time will be concatenated together
#So this can be used to paste stuff like ansi-art or code.
#Default 0 (is disabled)
#Depending on how fast you type 2500 is a good number
PasteBufferTimeout = 2500
##################################
##### MATTERMOST EXAMPLE #########
##################################
[mattermost]
#specify default mattermost server/instance (default "")
#
#DefaultServer = "chat.mycompany.com"
#specify default mattermost team (default "")
#
#DefaultTeam = "mycompany"
#use http connection to mattermost (default false)
Insecure = false
#an array of channels that only will be joined on IRC. JoinExlude and JoinInclude will not be checked
#regexp is supported
#If it's empty, it means all channels get joined (except those defined in JoinExclude)
#Messages that get sent to unjoined channels (but you're joined on mattermost) will
#get sent to the &messages channel.
#default ""
#
#JoinOnly = ["#onlythischannel"]
#an array of channels that won't be joined on IRC.
#regexp is supported
#Messages that get sent to unjoined channels (but you're joined on mattermost) will
#get sent to the &messages channel.
#You can still /JOIN exclude channels.
#default ""
#
#JoinExclude = ["#town-square","#boringchannel","#.*marketing.*"]
#an array of channels that will override the settings in JoinExclude
#regexp is supported
#If it's empty, it means all channels get joined (except those defined in JoinExclude)
#Messages that get sent to unjoined channels (but you're joined on mattermost) will
#get sent to the &messages channel.
#default ""
#
#JoinInclude = ["#devops","#myteam-marketing"]
#PartFake: a bool that defines if you do a /LEAVE or /PART on IRC it will also
#actually leave the channel on mattermost.
#if false it actually leaves the channel on mattermost
#if true it removes the channel from irc, but you're still joined on mattermost, messages
#of this channel will be sent to &messages channel
#Default false
#
PartFake = true
#only allow connection to specified mattermost server/instances.
#Array, default empty
#
#Restrict = ["chat.mycompany.com"]
#skip verification of mattermost certificate chain and hostname (default false)
SkipTLSVerify = false
#also add the main team prefix to the channel name #team/channel (default false)
PrefixMainTeam = false
#Only mark a conversation as viewed when you reply to that conversation or
#channel. This prevents Mattermost from clearing mobile app notifications
#instantly. Note that this prevents you from always appearing as online
#(anti-idle support is turned off unless ForceAntiIdle) (default false)
DisableAutoView = false
# Force and enable anti-idle. Useful for when DisableAutoView.
# ForceAntiIdle = true
# AntiIdleChannel = "town-square"
# AntiIdleInterval = 60
# If users set a Nickname, matterircd could either choose that or the Username
# to display in the IRC client. The option PreferNickname controls that, the
# default being to show the Username. (default false)
PreferNickname = false
# Disable showing parent post / replies
HideReplies = false
# Shorten replies to approximately this length
ShortenRepliesTo = 0
# Enable Unicode.
Unicode = false
# Disable showing reactions
HideReactions = false
#Only join direct/group messages when someone talks. This stops from cluttering your
#irc client with lots of windows.
#If set to true dm/group messages will be joined on startup and not only on talk in the channel.
JoinDM = false
#This will add a number between 000 and fff to each message
#This number will be referenced when a message is edited/deleted/threaded/reaction
#For more information see prefixcontext.md
PrefixContext = false
# Same as PrefixContext but with the message context at the end.
SuffixContext = false
# If either PrefixContext or SuffixContext specify which thread ID to use. Default is the
# matterircd generated @@([0-9][a-f]){3}. Uncomment to use Mattermost's message/parent thread IDs instead.
#ThreadContext = "mattermost"
# Similar to the above, but also show the message post IDs in addition to the parent thread ID.
#ThreadContext = "mattermost+post"
#Show Context for multi-line messages and only show it at the end.
ShowContextMulti = false
#This will show (mention yournick) after a message if it contains one of the words configured
#in your mattermost "word that trigger mentions" notifications.
ShowMentions = false
# Channel wide default mentions @channel, @all, and @here are shown as IRC NOTICEs.
# This disables that making them appear as normal PRIVMSGs.
#DisableDefaultMentions = true
# Enable syntax highlighting for code blocks.
# Formatter and Style are passed through to the chroma v2 package.
# https://github.com/alecthomas/chroma/blob/master/formatters/tty_indexed.go#L262
# terminal/terminal8 for 8-colors, terminal16, terminal256, terminal16m (16M true-colour).
# https://github.com/alecthomas/chroma/tree/master/styles
# These are different colour schemes/styles. E.g. pygments, emacs, autumn, etc.
SyntaxHighlighting = "terminal256:pygments"
# Path to file to store last viewed information. This is useful for replying only
# the messages missed.
LastViewedSaveFile = "matterircd-lastsaved.db"
#############################
##### SLACK EXAMPLE #########
#############################
[slack]
#deny specific users from connecting.
#As we only connect using tokens, this will first do a ccnnection to see what username the token is from. If this
#username is on the DenyUsers the user will be disconnected.
#Array, default empty
#
#DenyUsers = ["username"]
#https://get.slack.help/hc/en-us/articles/212281468-Direct-messages-and-group-DMs
#Only join direct/group messages when someone talks. This stops from cluttering your
#irc client with lots of windows.
#If set to true dm/group messages will be joined on startup and not only on talk in the channel.
JoinDM = false
#only allow connection to specific slack sites. (eg for myslack.slack.com just specify myslack)
#As we only connect using tokens, this will first do a ccnnection to see what team the token is from. If this
#team isn't in the Restrict list, the user will be disconnected.
#Array, default empty
#
#Restrict = ["myslack"]
# This will add the slack DisplayName as prefix to every message if the DisplayName differs from the Username
# More info about username/displayname see https://api.slack.com/changelog/2017-09-the-one-about-usernames
# Default false
UseDisplayName = false
#an array of channels that only will be joined on IRC. JoinExlude and JoinInclude will not be checked
#regexp is supported
#If it's empty, it means all channels get joined (except those defined in JoinExclude)
#Messages that get sent to unjoined channels (but you're joined on mattermost) will
#get sent to the &messages channel.
#default ""
#
#JoinOnly = ["#onlythischannel"]
#an array of channels that won't be joined on IRC.
#regexp is supported
#Messages that get sent to unjoined channels (but you're joined on mattermost) will
#get sent to the &messages channel.
#You can still /JOIN exclude channels.
#default ""
#
#JoinExclude = ["#town-square","#boringchannel","#.*marketing.*"]
#an array of channels that will override the settings in JoinExclude
#regexp is supported
#If it's empty, it means all channels get joined (except those defined in JoinExclude)
#Messages that get sent to unjoined channels (but you're joined on mattermost) will
#get sent to the &messages channel.
#default ""
#
#JoinInclude = ["#devops","#myteam-marketing"]
#This will add a number between 000 and fff to each message
#This number will be referenced when a message is edited/deleted/threaded/reaction
PrefixContext = false
#############################
##### MASTODON EXAMPLE ######
#############################
[mastodon]
#Go to https://yourmastodonserver/settings/applications/new
#Use matterircd as application name (default read/write/follow scopes are ok)
#Click on submit
#After submitting it'll show you the Client Key (we call it clientID),
#the client secret and Your access token
#
#Fill those in below with your server
#Connect to matterircd and /msg mastodon login
#
#server="https://mastodon.social"
#clientID="clientidstring"
#clientSecret="clientsecretstring"
#accessToken="accesstokenstring"
|