ScuttleBot

scuttlebot / internal / ergo / ircdconfig.go
Source Blame History 166 lines
c369cd5… lmata 1 package ergo
c369cd5… lmata 2
c369cd5… lmata 3 import (
c369cd5… lmata 4 "bytes"
c369cd5… lmata 5 "text/template"
c369cd5… lmata 6
c369cd5… lmata 7 "github.com/conflicthq/scuttlebot/internal/config"
4e1758e… lmata 8 "golang.org/x/crypto/bcrypt"
c369cd5… lmata 9 )
c369cd5… lmata 10
c369cd5… lmata 11 var ircdTemplate = template.Must(template.New("ircd").Parse(`# Generated by scuttlebot — do not edit manually.
c369cd5… lmata 12 network:
c369cd5… lmata 13 name: {{.NetworkName}}
c369cd5… lmata 14
c369cd5… lmata 15 server:
c369cd5… lmata 16 name: {{.ServerName}}
c369cd5… lmata 17 listeners:
c369cd5… lmata 18 "{{.IRCAddr}}": {}
18e8fef… lmata 19 {{- if .TLSDomain}}
18e8fef… lmata 20 "{{.TLSAddr}}":
18e8fef… lmata 21 tls:
18e8fef… lmata 22 autocert: true
18e8fef… lmata 23 min-tls-version: 1.2
18e8fef… lmata 24 {{- end}}
c369cd5… lmata 25 casemapping: ascii
c369cd5… lmata 26 enforce-utf8: true
c8d9310… lmata 27 max-sendq: 96k
c369cd5… lmata 28 relaymsg:
c3c693d… noreply 29 enabled: true
c3c693d… noreply 30 separators: /
c3c693d… noreply 31 available-to-chanops: false
c369cd5… lmata 32 ip-cloaking:
c369cd5… lmata 33 enabled: false
c369cd5… lmata 34 lookup-hostnames: false
c369cd5… lmata 35
c369cd5… lmata 36 datastore:
c8d9310… lmata 37 path: ./ircd.db
c369cd5… lmata 38 autoupgrade: true
c369cd5… lmata 39 {{- if .HistoryEnabled}}
c369cd5… lmata 40 {{- if .PostgresDSN}}
c369cd5… lmata 41 postgresql:
c369cd5… lmata 42 enabled: true
c369cd5… lmata 43 dsn: "{{.PostgresDSN}}"
c369cd5… lmata 44 {{- else if .MySQLEnabled}}
c369cd5… lmata 45 mysql:
c369cd5… lmata 46 enabled: true
c369cd5… lmata 47 host: "{{.MySQL.Host}}"
c369cd5… lmata 48 port: {{.MySQL.Port}}
c369cd5… lmata 49 user: "{{.MySQL.User}}"
c369cd5… lmata 50 password: "{{.MySQL.Password}}"
c369cd5… lmata 51 history-database: "{{.MySQL.Database}}"
c369cd5… lmata 52 {{- end}}
c369cd5… lmata 53 {{- end}}
c369cd5… lmata 54
c369cd5… lmata 55 accounts:
c369cd5… lmata 56 registration:
c369cd5… lmata 57 enabled: true
c369cd5… lmata 58 allow-before-connect: true
c369cd5… lmata 59 throttling:
c369cd5… lmata 60 enabled: false
c369cd5… lmata 61 authentication-enabled: true
c369cd5… lmata 62 require-sasl:
c669cc3… lmata 63 enabled: {{.RequireSASL}}
c369cd5… lmata 64
c369cd5… lmata 65 channels:
c369cd5… lmata 66 registration:
c369cd5… lmata 67 enabled: true
c669cc3… lmata 68 default-modes: "{{.DefaultChannelModes}}"
c369cd5… lmata 69
c369cd5… lmata 70 history:
c369cd5… lmata 71 enabled: {{.HistoryEnabled}}
c369cd5… lmata 72 {{- if .HistoryEnabled}}
c369cd5… lmata 73 channel-length: 2048
c369cd5… lmata 74 client-length: 256
c369cd5… lmata 75 autoresize-window: 3d
c369cd5… lmata 76 autoreplay-on-join: 0
c369cd5… lmata 77 chathistory-maxmessages: 1000
c369cd5… lmata 78 znc-maxmessages: 2048
c369cd5… lmata 79 restrictions:
c369cd5… lmata 80 expire-time: 7d
c369cd5… lmata 81 query-cutoff: none
c369cd5… lmata 82 persistent:
c369cd5… lmata 83 enabled: {{.HistoryEnabled}}
c369cd5… lmata 84 unregistered-channels: false
c369cd5… lmata 85 registered-channels: opt-in
c369cd5… lmata 86 direct-messages: opt-in
c369cd5… lmata 87 {{- end}}
c669cc3… lmata 88
a408eee… lmata 89 opers:
a408eee… lmata 90 scuttlebot:
a408eee… lmata 91 class: server-admin
a408eee… lmata 92 whois-line: is a scuttlebot system operator
4e1758e… lmata 93 password: "{{.OperPassHash}}"
a408eee… lmata 94
a408eee… lmata 95 oper-classes:
a408eee… lmata 96 server-admin:
a408eee… lmata 97 title: Server Admin
a408eee… lmata 98 capabilities:
a408eee… lmata 99 - samode
a408eee… lmata 100 - chanreg
a408eee… lmata 101
c369cd5… lmata 102 api:
c369cd5… lmata 103 enabled: true
c369cd5… lmata 104 listener: "{{.APIAddr}}"
c369cd5… lmata 105 bearer-tokens:
c369cd5… lmata 106 - "{{.APIToken}}"
c369cd5… lmata 107
c369cd5… lmata 108 logging:
c369cd5… lmata 109 - method: stderr
c369cd5… lmata 110 type: "* -userinput -useroutput"
c369cd5… lmata 111 level: warn
c369cd5… lmata 112
c369cd5… lmata 113 limits:
c369cd5… lmata 114 nicklen: 32
c369cd5… lmata 115 channellen: 64
c369cd5… lmata 116 awaylen: 200
c369cd5… lmata 117 kicklen: 255
c369cd5… lmata 118 topiclen: 512
c369cd5… lmata 119
c369cd5… lmata 120 `))
c369cd5… lmata 121
c369cd5… lmata 122 type ircdTemplateData struct {
c669cc3… lmata 123 NetworkName string
c669cc3… lmata 124 ServerName string
c669cc3… lmata 125 IRCAddr string
18e8fef… lmata 126 TLSDomain string
18e8fef… lmata 127 TLSAddr string
c669cc3… lmata 128 DataDir string
c669cc3… lmata 129 APIAddr string
c669cc3… lmata 130 APIToken string
4e1758e… lmata 131 OperPassHash string // bcrypt hash of APIToken for oper password
c669cc3… lmata 132 HistoryEnabled bool
c669cc3… lmata 133 PostgresDSN string
c669cc3… lmata 134 MySQLEnabled bool
c669cc3… lmata 135 MySQL config.MySQLConfig
c669cc3… lmata 136 RequireSASL bool
c669cc3… lmata 137 DefaultChannelModes string
c369cd5… lmata 138 }
c369cd5… lmata 139
c369cd5… lmata 140 // GenerateConfig renders an ircd.yaml from the given ErgoConfig.
c369cd5… lmata 141 func GenerateConfig(cfg config.ErgoConfig) ([]byte, error) {
4e1758e… lmata 142 operHash, _ := bcrypt.GenerateFromPassword([]byte(cfg.APIToken), bcrypt.MinCost)
c369cd5… lmata 143 data := ircdTemplateData{
c669cc3… lmata 144 NetworkName: cfg.NetworkName,
c669cc3… lmata 145 ServerName: cfg.ServerName,
c669cc3… lmata 146 IRCAddr: cfg.IRCAddr,
18e8fef… lmata 147 TLSDomain: cfg.TLSDomain,
18e8fef… lmata 148 TLSAddr: cfg.TLSAddr,
c669cc3… lmata 149 DataDir: cfg.DataDir,
c669cc3… lmata 150 APIAddr: cfg.APIAddr,
c669cc3… lmata 151 APIToken: cfg.APIToken,
4e1758e… lmata 152 OperPassHash: string(operHash),
c669cc3… lmata 153 HistoryEnabled: cfg.History.Enabled,
c669cc3… lmata 154 PostgresDSN: cfg.History.PostgresDSN,
c669cc3… lmata 155 MySQLEnabled: cfg.History.MySQL.Host != "" && cfg.History.PostgresDSN == "",
c669cc3… lmata 156 MySQL: cfg.History.MySQL,
c669cc3… lmata 157 RequireSASL: cfg.RequireSASL,
c669cc3… lmata 158 DefaultChannelModes: cfg.DefaultChannelModes,
c369cd5… lmata 159 }
c369cd5… lmata 160
c369cd5… lmata 161 var buf bytes.Buffer
c369cd5… lmata 162 if err := ircdTemplate.Execute(&buf, data); err != nil {
c369cd5… lmata 163 return nil, err
c369cd5… lmata 164 }
c369cd5… lmata 165 return buf.Bytes(), nil
c369cd5… lmata 166 }

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button