~samwhited/xmpp

ref: ed13a4c4861ee84d693dae5b80cdf1d1674b57d4 xmpp/internal/integration/ejabberd/config.go -rw-r--r-- 3.2 KiB
ed13a4c4Sam Whited internal/integration/ejabberd: component support 11 months ago
                                                                                
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
// Copyright 2020 The Mellium Contributors.
// Use of this source code is governed by the BSD 2-clause
// license that can be found in the LICENSE file.

package ejabberd

import (
	"path/filepath"
	"text/template"
)

// Config contains options that can be written to a Prosody config file.
type Config struct {
	VHosts     []string
	C2SSocket  string
	S2SSocket  string
	CompSocket string
	Component  map[string]string
}

const inetrc = `{lookup,["file","native"]}.
{host,{127,0,0,1}, ["localhost","hostalias"]}.
{file, resolv, "/etc/resolv.conf"}.`

const cfgBase = `{{- if .VHosts }}
hosts:
{{- range .VHosts }}
  - {{.}}
{{- end }}

certfiles:
{{- range .VHosts }}
 - {{ filepathJoin $.ConfigDir . }}.crt
 - {{ filepathJoin $.ConfigDir . }}.key
{{- end }}
{{- end }}

loglevel: info

listen:
{{- if .C2SSocket }}
  -
    port: "unix:{{ .C2SSocket }}"
    ip: "::1"
    module: ejabberd_c2s
    max_stanza_size: 262144
    shaper: c2s_shaper
    access: c2s
    starttls_required: true
{{- end }}
{{- if .S2SSocket }}
  -
    port: "unix:{{ .S2SSocket }}"
    ip: "::1"
    module: ejabberd_s2s_in
    max_stanza_size: 524288
{{- end }}
{{- if .CompSocket }}
  -
    port: "unix:{{ $.CompSocket }}"
    ip: "::1"
    access: "all"
    module: ejabberd_service
    max_stanza_size: 524288
    hosts:
{{- range $domain, $secret := .Component }}
      '{{$domain}}':
        password: '{{ $secret }}'
{{- end }}
{{- end }}

s2s_use_starttls: optional

acl:
  local:
    user_regexp: ""
  loopback:
    ip:
      - 127.0.0.0/8
      - ::1/128

access_rules:
  local:
    allow: local
  c2s:
    deny: block
    allow: all
  trusted_network:
    allow: loopback

shaper:
  normal:
    rate: 3000
    burst_size: 20000
  fast: 100000

shaper_rules:
  max_user_sessions: 10
  max_user_offline_messages:
    5000: admin
    100: all
  c2s_shaper:
    none: admin
    normal: all
  s2s_shaper: fast

modules:
  mod_adhoc: {}
  mod_admin_extra: {}
  mod_announce:
    access: announce
  mod_avatar: {}
  mod_blocking: {}
  mod_bosh: {}
  mod_caps: {}
  mod_carboncopy: {}
  mod_client_state: {}
  mod_configure: {}
  mod_disco: {}
  mod_fail2ban: {}
  mod_http_api: {}
  mod_http_upload:
    put_url: https://@HOST@:5443/upload
  mod_last: {}
  mod_mam:
    assume_mam_usage: true
    default: always
  mod_muc:
    access:
      - allow
    access_admin:
      - allow: admin
    access_create: muc_create
    access_persistent: muc_create
    access_mam:
      - allow
    default_room_options:
      mam: true
  mod_muc_admin: {}
  mod_offline:
    access_max_user_messages: max_user_offline_messages
  mod_ping: {}
  mod_privacy: {}
  mod_private: {}
  mod_pubsub:
    access_createnode: pubsub_createnode
    plugins:
      - flat
      - pep
    force_node_config:
      ## Avoid buggy clients to make their bookmarks public
      storage:bookmarks:
        access_model: whitelist
  mod_register:
    ip_access: trusted_network
  mod_roster:
    versioning: true
  mod_s2s_dialback: {}
  mod_shared_roster: {}
  mod_stream_mgmt:
    resend_on_timeout: if_offline
  mod_time: {}
  mod_vcard: {}
  mod_vcard_xupdate: {}
  mod_version:
    show_os: false`

var cfgTmpl = template.Must(template.New("cfg").Funcs(template.FuncMap{
	"filepathJoin": filepath.Join,
}).Parse(cfgBase))