local mirko = import "../../kube/mirko.libsonnet";
local kube = import "../../kube/kube.libsonnet";

{
    cfg:: {
        # Manually built from code.hackerspace.pl/informatic/ldap-web-public.
        image: "registry.k0.hswaw.net/informatic/ldap-web:1633769899",
        webFQDN: error "webFQDN must be set!",
    },

    component(cfg, env): mirko.Component(env, "ldapweb") {
        local ldapweb = self,
        cfg+: {
            image: cfg.image,
            volumes+: {
                config: kube.ConfigMapVolume(ldapweb.configmap),
            },
            container: ldapweb.Container("main") {
                # Starts by default on port 8000.
                volumeMounts_+: {
                    config: { mountPath: "/app/webapp/config.py", subPath: "config.py", },
                },
            },
            ports+: {
                publicHTTP: {
                    web: {
                        port: 8000,
                        dns: cfg.webFQDN,
                    },
                },
            },
        },

        configmap: kube.ConfigMap(ldapweb.makeName("config")) {
            metadata+: ldapweb.metadata,
            data: {
                "config.py": |||
                    # -*- coding: utf-8 -*-
                    import flask_wtf
                    import wtforms
                    import secrets

                    secret_key = secrets.token_hex(32)

                    ldap_url = 'ldap://ldap.hackerspace.pl'
                    dn_format = "uid=%s,ou=people,dc=hackerspace,dc=pl" 
                    
                    admin_dn = 'cn=ldapweb,ou=Services,dc=hackerspace,dc=pl'
                    admin_pw = 'unused'
                    
                    hackerspace_name = 'Warsaw Hackerspace'
                    
                    readable_names = {
                        'commonname': u'Common Name',
                        'givenname': u'Given Name',
                        'gecos': u'GECOS (public name)',
                        'surname': u'Surname',
                        'loginshell': u'Shell',
                        'telephonenumber': 'Phone Number',
                        'mobiletelephonenumber': 'Mobile Number',
                        'sshpublickey': 'SSH Public Key',
                    }
                    
                    full_name = {
                        'cn': 'commonname',
                        'gecos': 'gecos',
                        'sn': 'surname',
                        'mobile': 'mobiletelephonenumber',
                        'l': 'locality',
                    }
                    
                    can_add = set([
                        'telephonenumber',
                        'mobiletelephonenumber',
                        'sshpublickey',
                    ])
                    can_delete = can_add 
                    can_modify = can_add | set([
                        'givenname', 'surname', 'commonname', 'gecos',
                    ])
                    can = { 'add':can_add, 'mod':can_modify, 'del':can_delete }
                    admin_required = set()
                    
                    
                    perm_errors = {
                            'add': 'You cannot add this attribute!',
                            'mod': 'You cannot change this attribute!',
                            'del': 'You cannot delete this attribute!',
                            }
                    std_templates = {
                            'add': 'ops/add.html',
                            'mod': 'ops/mod.html',
                            'del': 'ops/del.html',
                            }
                    
                    
                    
                    default_field = (wtforms.fields.StringField, {})
                    fields = { 'telephonenumber': (wtforms.fields.StringField, {'validators': [wtforms.validators.Regexp(r'[+0-9 ]+')]})}
                    
                    kadmin_passwd = True
                    kadmin_principal_map = "{}@HACKERSPACE.PL"
                    
                    TOKEN_LENGTH = 32
                |||,
            },
        },
    },
}
