summaryrefslogtreecommitdiff
path: root/controller/installation.php
blob: bf6826d9550ee80631cbe14b13b481ccbbe64e93 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
// premier démarrage du site
function installation()
{
    // les chemins dans le .htaccess seront des chemins relatifs,
    // la racine dépendant du serveur, donc de l'hébergeur,
    // par défaut c'est /var/www/ pour debian, etc
    // c'est /var/www/nom_de_domaine/ avec des hôtes virtuels
    // on utilisera donc des chemins adaptés à des hôtes virtuels

    // le nom du serveur sera le nom de domaine tout court
    // la racine sera /var/www/nom_de_domaine

    //echo('document root: ' . $_SERVER['DOCUMENT_ROOT'] . '<br />');
    //echo('server name: ' . $_SERVER['SERVER_NAME'] . '<br /');
    // echo('getcwd: ' . getcwd() . '<br />');
    // echo('dirname: ' . dirname(__FILE__) . '<br />');
    // echo('file: ' . __FILE__ . '<br />');
    // echo('dir: ' . __DIR__. '<br />');
    
    //$lien_htaccess = $_SERVER['SERVER_NAME'] . "/.htaccess";
    //$nomDuSite = "melaine";
    
    // créer le .htaccess
    if(!file_exists(".htaccess"))
    {
        echo('<p style="color: red;" >Le .htaccess semble absent ce qui rend le site vulnérable, veuillez contacter l\'administrateur.</p>');
        //$contenu = "# redirection en cas d'erreur 404\nErrorDocument 404 http://" . $_SERVER['SERVER_NAME'] . "/" . $nomDuSite . "/erreur404.php\n# Interdire exploration du répertoire\nOptions All -Indexes";
        // $fichier = fopen('.htaccess', 'w');
        // fputs($fichier, $contenu);
        // fclose($fichier);
        // chmod('.htaccess', 0666); // mettre 0644 en production
    }
    
    // droits en lecture et écriture dans le cas d'une migration
    // tester si le site est "vide" et prévoir un formulaire permettant d'upload le fichier .zip
    // contenant toutes les données qu'il est possible de créer depuis le mode admin
    // cette méthode a deux intérêts:
    // - facilité pour l'utilisateur
    // - toutes les données sont la "possession" du serveur apache,
    // on prévient ainsi tous les futurs problèmes de droits
    
    // dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump"
    // (un fichier .sql), à voir si php est capable d'obtenir ou redonner ce fichier à la BDD
    
    // créer les dossiers (fait également à l'extraction du zip de données)
    // attention: ne fonctionne pas sans une manipulation préalable
    // - modifier soit-même les droits du dossier data pour 777
    // - modifier ceux du dossier parent (nom du site) avec son client FTP à la mise en ligne chez l'hébergeur et ensuite remettre tout comme avant

    // création des dossiers

    // valeur en octal
    $droitsDossiers = 0777; // mettre 0755 en production

    if(!file_exists('data') && !mkdir('data'))
    {
        $erreur = 'data';
        $title = 'Dossier data absent';
        require('view/backup.php');
        exit();
    }
    if(!touch('data'))
    {
        $erreur = 'data';
        $title = 'Écriture non autorisée dans le dossier data';
        require('view/backup.php');
        exit();
    }

    $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives');
    foreach ($listePages as $page)
    {
        if(!file_exists('data/' . $page))
        {
            mkdir('data/' . $page);
            chmod('data/' . $page, $droitsDossiers);
        }
        if(!file_exists('data/' . $page . '/html'))
        {
            mkdir('data/' . $page . '/html');
            chmod('data/' . $page . '/html', $droitsDossiers);
        }
        if(!file_exists('data/' . $page . '/images'))
        {
            mkdir('data/' . $page . '/images');
            chmod('data/' . $page . '/images', $droitsDossiers);
        }
        // if(!file_exists('data/' . $page . '/multimedia'))
        // {
        //     mkdir('data/' . $page . '/multimedia');
        //     chmod('data/' . $page . '/multimedia', 0777);
        // }
    }
    // dossiers supplémentaires dans discographie
    if(!file_exists('data/discographie/json'))
    {
        mkdir('data/discographie/json');
        chmod('data/discographie/json', $droitsDossiers);
    }
    if(!file_exists('data/discographie/images-mini'))
    {
        mkdir('data/discographie/images-mini');
        chmod('data/discographie/images-mini', $droitsDossiers);
    }

    // créer le melainePHP.zip
    if(!file_exists("data/melainePHP.zip"))
    {
        require('controller/backup.php');
        creerMelainePHP();
    }
    // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers

    // création d'un mot de passe si password.txt est vide
    createPassword();
}