--- /dev/null
+# -*- python -*-
+# ex: set filetype=python:
+
+from buildbot.plugins import secrets, util, webhooks
+from buildbot.util import bytes2unicode
+import re
+import os
+from buildbot_config import E, configure
+import json
+
+class CustomBase(webhooks.base):
+ def getChanges(self, request):
+ try:
+ content = request.content.read()
+ args = json.loads(bytes2unicode(content))
+ except Exception as e:
+ raise ValueError("Error loading JSON: " + str(e))
+
+ args.setdefault("comments", "")
+ args.setdefault("repository", "")
+ args.setdefault("author", args.get("who"))
+
+ return ([args], None)
+
+userInfoProvider = util.LdapUserInfo(
+ uri=E.LDAP_URL,
+ bindUser=E.LDAP_ADMIN_USER,
+ bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(),
+ accountBase=E.LDAP_BASE,
+ accountPattern=E.LDAP_PATTERN,
+ accountFullName='cn',
+ accountEmail='mail',
+ avatarData="jpegPhoto",
+ groupBase=E.LDAP_BASE,
+ groupName="cn",
+ groupMemberPattern=E.LDAP_GROUP_PATTERN,
+ )
+
+c = BuildmasterConfig = {
+ "title": E.TITLE,
+ "titleURL": E.TITLE_URL,
+ "db": {
+ "db_url": "sqlite:///state.sqlite"
+ },
+ "protocols": { "pb": { "port": E.PB_SOCKET } },
+ "workers": [],
+ "change_source": [],
+ "schedulers": [],
+ "builders": [],
+ "services": [],
+ "secretsProviders": [
+ secrets.SecretInAFile(E.SECRETS_FILE),
+ ],
+ "www": {
+ "change_hook_dialects": { "base": { "custom_class": CustomBase } },
+ "plugins": {
+ "waterfall_view": {},
+ "console_view": {},
+ "grid_view": {},
+ "buildslist": {},
+ },
+ "auth": util.RemoteUserAuth(
+ header=b"X-Remote-User",
+ userInfoProvider=userInfoProvider,
+ headerRegex=re.compile(br"(?P<username>[^ @]+)")),
+ }
+ }
+
+configure(c)