<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>AS{{ asn }} - CCCampIX Status Page</title>
        <style type="text/css">
            body {
                background-color: #fff;
            }
            table, th, td {
                background-color: #eee;
                padding: 0.2em 0.4em 0.2em 0.4em;
            }
            .table th {
                background-color: #c0c0c0;
            }
            .table {
                background-color: #fff;
                border-spacing: 0.2em;
            }
        </style>
    </head>
    <body>
        <h1>AS{{ asn }} at CCCamp IX</h1>
        <h2>Autonomous System</h2>
        <p>
            <b>ASN</b>: {{ asn }}<br />
            <b>Network name</b>: {{ details.peeringdb_info.name }}<br />
        </p>
        <h2>Checks</h2>
        <p>
            Checks are prerequisites that need to pass for the ASN to be considered as part of the exchange.
        </p>
        <p>
            <table class="table">
                <tr>
                    <th>Name</th>
                    <th>Description</th>
                    <th>Status</th>
                </tr>
                {% for check in details.checks %}
                <tr>
                    <td>{{ check_info.get(check.name)[0] }}</td>
                    <td>{{ check_info.get(check.name)[1] }}</td>
                    {% if check.status == 1 %}
                    <td style="background-color: lime">OK</td>
                    {% else %}
                    <td style="background-color: red">Failed: {{ check.msg }}</td>
                    {% endif %}
                </tr>
                {% endfor %}
            </table>
        </p>
        <h2>AS{{ asn }} Routers</h2>
        <p>
            These are the routers that we'll be trying to reach from our Route Servers.
        </p>
        <p>
            <table class="table">
                <tr>
                    <th>IPv6 Address</th>
                    <th>Legacy Address</th>
                </tr>
                {% for router in details.peeringdb_info.routers %}
                <tr>
                    {% if router.ipv6 %}
                    <td>{{ router.ipv6 }}</td>
                    {% else %}
                    <td><i>none</i></td>
                    {% endif %}

                    {% if router.ipv4 %}
                    <td>{{ router.ipv4 }}</td>
                    {% else %}
                    <td><i>none</i></td>
                    {% endif %}
                </tr>
                {% endfor %}
            </table>
        </p>
        <h2>AS{{ asn }} Allowed Prefixes</h2>
        <p>
            Allowed prefixes pulled in from RPKI.
        </p>
        <p>
            <table class="table">
                <tr>
                    <th>Prefix</th>
                    <th>Max Length</th>
                    <th>Originating TA</th>
                </tr>
                {% for prefix in details.allowed_prefixes %}
                <tr>
                    <td>{{ prefix.prefix }}</td>
                    <td>{{ prefix.max_length }}</td>
                    <td>{{ prefix.ta }}</td>
                </tr>
                {% else %}
                <tr>
                    <td colspan="3"><i>no prefixes</i></td>
                </tr>
                {% endfor %}
            </table>
        </p>
        <h2>AS{{ asn }} configuration</h2>
        <p>
            To get configuration data for your routers, please decode the following GPG secret:

            <pre>curl https://ix-status.bgp.wtf/asn/{{ asn }}/config.gpg | gpg --decrypt</pre>
        </p>
    </body>
</html>
