directories = {
    '/etc/ppp/ip-up.d': {
        'purge': True,
        'needs': {
            'pkg_apt:ppp',
        },
    },
    '/etc/ppp/ip-down.d': {
        'purge': True,
        'needs': {
            'pkg_apt:ppp',
        },
    },
    '/etc/ppp/ipv6-up.d': {
        'purge': True,
        'needs': {
            'pkg_apt:ppp',
        },
    },
    '/etc/ppp/ipv6-down.d': {
        'purge': True,
        'needs': {
            'pkg_apt:ppp',
        },
    },
    '/etc/ppp/peers': {
        'purge': True,
        'needs': {
            'pkg_apt:ppp',
        },
    },
}

files = {
    '/etc/nftables-rules.d/90-pppd': {
        'content_type': 'any',
    },
    '/etc/ppp/chap-secrets': {
        'source': 'secrets',
        'content_type': 'mako',
        'context': node.metadata['pppd'],
        'mode': '0400',
        'triggers': {
            'svc_systemd:pppoe:restart',
        },
    },
    '/etc/ppp/pap-secrets': {
        'source': 'secrets',
        'content_type': 'mako',
        'context': node.metadata['pppd'],
        'mode': '0400',
        'triggers': {
            'svc_systemd:pppoe:restart',
        },
    },
    '/etc/ppp/ip-down.d/nftables': {
        'source': 'ip-down',
        'mode': '0755',
    },
    '/etc/ppp/ip-up.d/nftables': {
        'source': 'ip-up',
        'mode': '0755',
    },
    '/etc/ppp/peers/provider': {
        'content_type': 'mako',
        'context': node.metadata['pppd'],
        'triggers': {
            'svc_systemd:pppoe:restart',
        },
    },
    '/etc/ppp/wait-until-stopped': {
        'content_type': 'mako',
        'context': {
            'services': node.metadata.get('pppd/wait-until-stopped', set()),
        },
        'mode': '0700',
    },
    '/etc/sysctl.d/90-pppd.conf': {
        'content_type': 'any',
    },
    '/etc/systemd/system/pppoe.service': {
        'triggers': {
            'action:systemd-reload',
            'svc_systemd:pppoe:restart',
        },
    },
    '/usr/local/bin/restart-pppoe-if-no-public-ip': {
        'mode': '0755',
    },
    '/usr/local/share/icinga/plugins/check_dyndns_update': {
        'mode': '0755',
    },
}

if 'dyndns' in node.metadata['pppd']:
    files['/etc/ppp/ip-up.d/dyndns'] = {
        'content_type': 'mako',
        'context': node.metadata['pppd']['dyndns'],
        'mode': '0755',
    }

svc_systemd = {
    'pppoe': {
        'needs': {
            'file:/etc/ppp/chap-secrets',
            'file:/etc/ppp/pap-secrets',
            'file:/etc/ppp/peers/provider',
            'file:/etc/systemd/system/pppoe.service',
        },
    },
}