2 # ex: set filetype=python:
4 from buildbot.plugins import secrets, util, webhooks
5 from buildbot.util import bytes2unicode
8 from buildbot_config import E, configure
11 class CustomBase(webhooks.base):
12 def getChanges(self, request):
14 content = request.content.read()
15 args = json.loads(bytes2unicode(content))
16 except Exception as e:
17 raise ValueError("Error loading JSON: " + str(e))
19 args.setdefault("comments", "")
20 args.setdefault("repository", "")
21 args.setdefault("author", args.get("who"))
25 userInfoProvider = util.LdapUserInfo(
27 bindUser=E.LDAP_ADMIN_USER,
28 bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(),
29 accountBase=E.LDAP_BASE,
30 accountPattern=E.LDAP_PATTERN,
33 avatarData="jpegPhoto",
34 groupBase=E.LDAP_BASE,
36 groupMemberPattern=E.LDAP_GROUP_PATTERN,
39 c = BuildmasterConfig = {
41 "titleURL": E.TITLE_URL,
43 "db_url": "sqlite:///state.sqlite"
45 "protocols": { "pb": { "port": E.PB_SOCKET } },
52 secrets.SecretInAFile(E.SECRETS_FILE),
55 "change_hook_dialects": { "base": { "custom_class": CustomBase } },
62 "auth": util.RemoteUserAuth(
63 header=b"X-Remote-User",
64 userInfoProvider=userInfoProvider,
65 headerRegex=re.compile(br"(?P<username>[^ @]+)")),