-# -*- 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)