#This is configuration for matterbridge.
###################################################################
#IRC section
###################################################################
#REQUIRED to start IRC section
[irc]

#You can configure multiple servers "[irc.name]" or "[irc.name2]"
#In this example we use [irc.freenode]
#REQUIRED
[irc.freenode]
#irc server to connect to. 
#REQUIRED
Server="irc.freenode.net:6667"

#Enable to use TLS connection to your irc server. 
#OPTIONAL (default false)
UseTLS=false

#Enable SASL (PLAIN) authentication. (freenode requires this from eg AWS hosts)
#It uses NickServNick and NickServPassword as login and password
#OPTIONAL (default false)
UseSASL=false

#Enable to not verify the certificate on your irc server. i
#e.g. when using selfsigned certificates
#OPTIONAL (default false)
SkipTLSVerify=true

#Your nick on irc. 
#REQUIRED
Nick="matterbot"

#If you registered your bot with a service like Nickserv on freenode. 
#Also being used when UseSASL=true
#OPTIONAL
NickServNick="nickserv"
NickServPassword="secret"

#RemoteNickFormat defines how remote users appear on this bridge 
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
#OPTIONAL (default {BRIDGE}-{NICK})
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Nicks you want to ignore. 
#Messages from those users will not be sent to other bridges.
#OPTIONAL
IgnoreNicks="ircspammer1 ircspammer2"

###################################################################
#XMPP section
###################################################################
[xmpp]

#You can configure multiple servers "[xmpp.name]" or "[xmpp.name2]"
#In this example we use [xmpp.jabber]
#REQUIRED
[xmpp.jabber]
#xmpp server to connect to. 
#REQUIRED
Server="jabber.example.com:5222"

#Jid
#REQUIRED
Jid="user@example.com"

#Password
#REQUIRED
Password="yourpass"

#MUC
#REQUIRED
Muc="conference.jabber.example.com"

#Your nick in the rooms
#REQUIRED
Nick="xmppbot"


###################################################################
#mattermost section
###################################################################
[mattermost]
#You can configure multiple servers "[mattermost.name]" or "[mattermost.name2]"
#In this example we use [mattermost.work]
#REQUIRED

[mattermost.work]
#### Settings for webhook matterbridge.
#### These settings will not be used when useAPI is enabled

#Url is your incoming webhook url as specified in mattermost. 
#See account settings - integrations - incoming webhooks on mattermost.
#REQUIRED (unless useAPI=true)
URL="https://yourdomain/hooks/yourhookkey"

#Address to listen on for outgoing webhook requests from mattermost.
#See account settings - integrations - outgoing webhooks on mattermost.
#This setting will not be used when using -plus switch which doesn't use 
#webhooks
#REQUIRED (unless useAPI=true)
BindAddress="0.0.0.0:9999"

#Icon that will be showed in mattermost. 
#OPTIONAL
IconURL="http://youricon.png"

#### Settings for matterbridge -plus
#### Thse settings will only be used when using the -plus switch.

#### Settings for using matterbridge API
#OPTIONAL
useAPI=false

#The mattermost hostname. 
#REQUIRED (when useAPI=true)
Server="yourmattermostserver.domain"

#Your team on mattermost. 
#REQUIRED (when useAPI=true)
Team="yourteam"

#login/pass of your bot. 
#Use a dedicated user for this and not your own! 
#REQUIRED (when useAPI=true)
Login="yourlogin"
Password="yourpass"

#Enable this to make a http connection (instead of https) to your mattermost. 
#OPTIONAL (default false)
NoTLS=false

#### Shared settings for matterbridge and -plus

#Enable to not verify the certificate on your mattermost server. 
#e.g. when using selfsigned certificates
#OPTIONAL (default false)
SkipTLSVerify=true

#Enable to show IRC joins/parts in mattermost. 
#OPTIONAL (default false)
ShowJoinPart=false

#Whether to prefix messages from other bridges to mattermost with the sender's nick. 
#Useful if username overrides for incoming webhooks isn't enabled on the 
#mattermost server. If you set PrefixMessagesWithNick to true, each message 
#from bridge to Mattermost will by default be prefixed by "bridge-" + nick. You can, 
#however, modify how the messages appear, by setting (and modifying) RemoteNickFormat 
#OPTIONAL (default false)
PrefixMessagesWithNick=false

#RemoteNickFormat defines how remote users appear on this bridge 
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
#OPTIONAL (default {BRIDGE}-{NICK})
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#how to format the list of IRC nicks when displayed in mattermost. 
#Possible options are "table" and "plain"
#OPTIONAL (default plain)
NickFormatter="plain"
#How many nicks to list per row for formatters that support this. 
#OPTIONAL (default 4)
NicksPerRow=4

#Nicks you want to ignore. Messages from those users will not be bridged.
#OPTIONAL 
IgnoreNicks="mmbot spammer2"

###################################################################
#Gitter section
#Best to make a dedicated gitter account for the bot.
###################################################################

[gitter]

#You can configure multiple servers "[gitter.name]" or "[gitter.name2]"
#In this example we use [gitter.myproject]
#REQUIRED
[gitter.myproject]
#Token to connect with Gitter API
#You can get your token by going to https://developer.gitter.im/docs/welcome and SIGN IN
#REQUIRED
Token="Yourtokenhere"

#Nicks you want to ignore. Messages of those users will not be bridged.
#OPTIONAL 
IgnoreNicks="spammer1 spammer2"

#RemoteNickFormat defines how remote users appear on this bridge 
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
#OPTIONAL (default {BRIDGE}-{NICK})
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

###################################################################
#slack section
###################################################################
[slack]

#You can configure multiple servers "[slack.name]" or "[slack.name2]"
#In this example we use [slack.hobby]
#REQUIRED
[slack.hobby]
#### Settings for webhook matterbridge.
#### These settings will not be used when useAPI is enabled

#Url is your incoming webhook url as specified in slack
#See account settings - integrations - incoming webhooks on slack
#REQUIRED (unless useAPI=true)
URL="https://hooks.slack.com/services/yourhook"

#Address to listen on for outgoing webhook requests from slack
#See account settings - integrations - outgoing webhooks on slack
#This setting will not be used when useAPI is eanbled
#webhooks
#REQUIRED (unless useAPI=true)
BindAddress="0.0.0.0:9999"

#Icon that will be showed in slack
#OPTIONAL
IconURL="http://youricon.png"

#### Settings for using slack API
#OPTIONAL
useAPI=false

#Token to connect with the Slack API
#REQUIRED (when useAPI=true)
Token="yourslacktoken"

#### Shared settings for webhooks and API

#Whether to prefix messages from other bridges to mattermost with the sender's nick. 
#Useful if username overrides for incoming webhooks isn't enabled on the 
#slack server. If you set PrefixMessagesWithNick to true, each message 
#from bridge to Slack will by default be prefixed by "bridge-" + nick. You can, 
#however, modify how the messages appear, by setting (and modifying) RemoteNickFormat 
#OPTIONAL (default false)
PrefixMessagesWithNick=false

#RemoteNickFormat defines how remote users appear on this bridge 
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#OPTIONAL (default {BRIDGE}-{NICK})
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#how to format the list of IRC nicks when displayed in slack
#Possible options are "table" and "plain"
#OPTIONAL (default plain)
NickFormatter="plain"
#How many nicks to list per row for formatters that support this. 
#OPTIONAL (default 4)
NicksPerRow=4

#Nicks you want to ignore. Messages from those users will not be bridged.
#OPTIONAL 
IgnoreNicks="mmbot spammer2"

###################################################################
#discord section
###################################################################
[discord]

#You can configure multiple servers "[discord.name]" or "[discord.name2]"
#In this example we use [discord.game]
#REQUIRED
[discord.game]
#Token to connect with Discord API
#You can get your token by following the instructions on 
#https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token
#The "Bot" tag needs to be added before the token
#REQUIRED
Token="Bot Yourtokenhere"

#REQUIRED
Server="yourservername"

#Nicks you want to ignore. Messages of those users will not be bridged.
#OPTIONAL 
IgnoreNicks="spammer1 spammer2"

#RemoteNickFormat defines how remote users appear on this bridge 
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
#OPTIONAL (default {BRIDGE}-{NICK})
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


###################################################################
#Gateway configuration
###################################################################

#You can specify multiple gateways using [[gateway]]
#Each gateway has a [[gateway.in]] and a [[gateway.out]]
#[[gateway.in]] specifies the account and channels we will receive messages from.
#[[gateway.out]] specifies the account and channels we will send the messages
#from [[gateway.in]] to.
#
#Most of the time [[gateway.in]] and [[gateway.out]] are the same if you 
#want bidirectional bridging.

#REQUIRED
[[gateway]]
#OPTIONAL (not used for now)
name="gateway1"
#Enable enables this gateway
##OPTIONAL (default false)
enable=true

    #[[gateway.in]] specifies the account and channels we will receive messages from.
    #The following example bridges between mattermost and irc
    [[gateway.in]]

    #account specified above
    #REQUIRED
    account="irc.freenode"
    #channel to connect on that account
    #How to specify them for the different bridges:
    #
    #irc        - #channel (# is required)
    #mattermost - channel (the channel name as seen in the URL, not the displayname)
    #gitter     - username/room 
    #xmpp       - channel
    #slack      - channel (the channel name as seen in the URL, not the displayname)
    #discord    - channel (without the #)
    #REQUIRED
    channel="#testing"

    [[gateway.in]]
    account="mattermost.work"
    channel="off-topic"

    [[gateway.out]]
    account="irc.freenode"
    channel="#testing"

    [[gateway.out]]
    account="mattermost.work"
    channel="off-topic"