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/radex/ldap-web:1695415920",
        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": |||
                    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"

                    ldapweb_admin_group = 'cn=zarzad,ou=Group,dc=hackerspace,dc=pl'

                    ldap_base = 'dc=hackerspace,dc=pl'
                    ldap_people = 'ou=People,dc=hackerspace,dc=pl'
                    admin_groups = {
                        'Fatty': 'cn=fatty,ou=Group,dc=hackerspace,dc=pl',
                        'Starving': 'cn=starving,ou=Group,dc=hackerspace,dc=pl',
                        'Potato': 'cn=potato,ou=Group,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',
                        'mifareidhash': 'MIFARE ID Hash',
                    }
                    
                    full_name = {
                        'cn': 'commonname',
                        'gecos': 'gecos',
                        'sn': 'surname',
                        'mobile': 'mobiletelephonenumber',
                        'l': 'locality',
                    }
                    
                    can_add = set([
                        'telephonenumber',
                        'mobiletelephonenumber',
                        'sshpublickey',
                        'mifareidhash',
                    ])
                    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
                |||,
            },
        },
    },
}
