Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

serveur / u.php @ master

Historique | Voir | Annoter | Télécharger (4,8 ko)

1
<?php
2

    
3
/** **********************************************************************************
4
 *
5
 *  Projet ClicAlbum  - Licence: GNU/Affero GPL v3 ou +
6
 *
7
 *  (c) 2020 Éric Seigne <eric.seigne@cap-rel.fr>
8
 *
9
 *   This file is part of ClicAlbum.
10
 *
11
 *   ClicAlbum is free software: you can redistribute it and/or modify
12
 *   it under the terms of the GNU General Public License as published by
13
 *   the Free Software Foundation, either version 3 of the License, or
14
 *   (at your option) any later version.
15
 *
16
 *   ClicAlbum is distributed in the hope that it will be useful,
17
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 *   GNU General Public License for more details.
20
 *
21
 *   You should have received a copy of the GNU General Public License
22
 *   along with ClicAlbum. If not, see <https://www.gnu.org/licenses/>.
23
 *
24
 * ***********************************************************************************/
25

    
26
require_once("tools.php");
27

    
28
if ($_FILES["fileToUpload"]["error"] == UPLOAD_ERR_OK) {
29

    
30
    $tmp_name = $_FILES["fileToUpload"]["tmp_name"];
31
    // basename() peut empêcher les attaques de système de fichiers;
32
    // la validation/assainissement supplémentaire du nom de fichier peut être approprié
33
    $name = filter_post_field($_FILES["fileToUpload"]["name"]);
34
    $login = filter_post_field($_POST['login']);
35
    $legende = base64_decode($_POST['legende']);
36
    $album = base64_decode($_POST['album']);
37
    $albumPass = base64_decode($_POST['albumPass']);
38

    
39
    if (isset($_POST['label'])) {
40
        $label = filter_post_field($_POST['label']);
41
        //On garde une version avec les accents et autres pour mettre dans le fichier desc
42
        $labelComplet = base64_decode($_POST['label']);
43
    } else {
44
        $label = "sansnom";
45
    }
46

    
47
    if ($login == "" || $album == "") {
48
        exit;
49
    }
50

    
51
    myDebug("======================");
52
    myDebug("NEW POST:");
53
    myDebug("  pseudo : " . trim($_POST['login'] . " -> $login"));
54
    myDebug("  album : " . $album);
55
    myDebug("  name : " .  $name . " ou " . $tmp_name);
56
    myDebug("  label : " . $label);
57
    myDebug("  albumPass : '$albumPass'");
58

    
59
    //Si l'album existe et qu'il a un mot de passe il faut vérifier ...
60
    if ($albumTest = get_albumInfo($album)) {
61
        myDebug("  un album de ce nom existe, on fait la verification : " . trim($albumTest['albumPass']));
62
        //Ok on a le droit on fait le traitement normal
63
        if (pass_verif($albumPass, $albumTest['albumPass'])) {
64
            myDebug("  verification OK");
65

    
66
            //move_uploaded_file($tmp_name, "$config_data/$name");
67
            $dir = $config_data . "/" . $album;
68
            //convert pdf
69
            $hash = substr(md5(microtime()), rand(0, 26), 5);
70

    
71
            $confAlbum = get_albumConf($album);
72
            //Si on est sur un album a moderation a priori ...
73
            $notificationMailDest = "";
74
            if ($confAlbum) {
75
                if ($confAlbum['moderation'] == "apriori") {
76
                    $dir .= "/attente";
77
                }
78
                if ($confAlbum['notification'] == "mail") {
79
                    $notificationMailDest = $confAlbum['notificationTo'];
80
                }
81
            }
82

    
83
            $destination = $dir . "/" . date("Ymd") . "-$login-$label-$hash.jpeg";
84
            $destinationTXT = $dir . "/" . date("Ymd") . "-$login-$label-$hash.txt";
85
            //$cmd = "convert $tmp_name  $destination ";
86

    
87
            if (!is_dir($dir) && strlen($dir) > 0) {
88
                myDebug("  creation du repertoire de stockage " . $dir);
89
                mkdir($dir, 0700);
90
            }
91

    
92
            // myDebug("  " . $cmd);
93
            // myDebug("");
94
            //exec($cmd);
95
            $tab['label'] = htmlentities($labelComplet);
96
            $tab['legende'] = htmlentities($legende);
97
            $tab['commentaire'] = "";
98
            write_txt($destinationTXT, $tab);
99
            rename($tmp_name, $destination);
100

    
101
            //Si on a configuré la notification ...
102
            if ($notificationMailDest != "") {
103
                // Le message
104
                $message  = "Nouveau fichier envoyé dans votre album photo collaboratif :" . "\n";
105
                $message .= " - Auteur: "   . $login . "\n";
106
                $message .= " - Titre: "    . $tab['label'] . "\n";
107
                $message .= " - Légende : " . $tab['legende'] . "\n";
108

    
109
                // Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
110
                $message = wordwrap($message, 70, "\r\n");
111

    
112
                // Envoi du mail
113
                mail($notificationMailDest, '[AbulEdu clicAlbum] nouveau fichier', $message);
114
            }
115
        } else {
116
            myDebug("  verification : NON");
117
            http_response_code(400);
118
        }
119
    } else {
120
        http_response_code(400);
121
    }
122
}
Redmine Appliance - Powered by TurnKey Linux