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