# -*- 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[^ @]+)")), } } configure(c)