summaryrefslogtreecommitdiff
path: root/alarm/node_modules/pronote-api/src/cas/find.js
blob: 020c8fae7cec76b4112a9d47acefe9da1132fc33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const http = require('../http');

const URLS = {
    'ac-besancon': 'cas.eclat-bfc.fr',
    'ac-bordeaux': 'mon.lyceeconnecte.fr',
    'ac-bordeaux2': 'ent2d.ac-bordeaux.fr',
    'ac-caen': 'fip.itslearning.com',
    'ac-clermont': 'cas.ent.auvergnerhonealpes.fr',
    'ac-dijon': 'cas.eclat-bfc.fr',
    'ac-grenoble': 'cas.ent.auvergnerhonealpes.fr',
    'ac-lille': 'cas.savoirsnumeriques62.fr',
    'ac-lille2': 'teleservices.ac-lille.fr',
    'ac-limoges': 'mon.lyceeconnecte.fr',
    'ac-lyon': 'cas.ent.auvergnerhonealpes.fr',
    'ac-montpellier': 'cas.mon-ent-occitanie.fr',
    'ac-nancy-metz': 'cas.monbureaunumerique.fr',
    'ac-nantes': 'cas3.e-lyco.fr',
    'ac-orleans-tours': 'ent.netocentre.fr',
    'ac-poitiers': 'mon.lyceeconnecte.fr',
    'ac-reims': 'cas.monbureaunumerique.fr',
    'ac-rouen': 'nero.l-educdenormandie.fr',
    'ac-strasbourg': 'cas.monbureaunumerique.fr',
    'ac-toulouse': 'cas.mon-ent-occitanie.fr',
    'ac-valdoise': 'cas.moncollege.valdoise.fr',
    'agora06': 'cas.agora06.fr',
    'arsene76': 'cas.arsene76.fr',
    'atrium-sud': 'www.atrium-sud.fr',
    'cybercolleges42': 'cas.cybercolleges42.fr',
    'eure-normandie': 'cas.ent27.fr',
    'haute-garonne': 'cas.ecollege.haute-garonne.fr',
    'hdf': 'enthdf.fr',
    'iledefrance': 'ent.iledefrance.fr',
    'moncollege-essonne': 'www.moncollege-ent.essonne.fr',
    'laclasse': 'www.laclasse.com',
    'ljr-munich': 'cas.kosmoseducation.com',
    'lyceeconnecte': 'mon.lyceeconnecte.fr',
    'parisclassenumerique': 'ent.parisclassenumerique.fr',
    'portail-famille': 'seshat.ac-orleans-tours.fr:8443',
    'seine-et-marne': 'ent77.seine-et-marne.fr',
    'somme': 'college.entsomme.fr',
    'toutatice': 'www.toutatice.fr',
    'monbureaunumerique-educonnect': 'cas.monbureaunumerique.fr'
};

async function find(url)
{
    if (!url.endsWith('/')) {
        url += '/';
    }

    let location = await http({ url: url + 'eleve.html', followRedirects: 'get' });
    if (location.includes('<head>')) {
        return 'none';
    }

    if (location.startsWith('http://') || location.startsWith('https://')) {
        location = location.substring(location.indexOf('/') + 2);
    }

    const host = location.substring(0, location.indexOf('/'));

    const result = [];
    for (const [name, casHost] of Object.entries(URLS)) {
        if (host === casHost) {
            result.push(name);
        }
    }

    if (result.length === 0) {
        return null;
    }

    if (result.length === 1) {
        return result[0];
    }

    return result;
}

module.exports = find;