Projet

Général

Profil

0001-misc-check-file-type-before-upload-40932.patch

Frédéric Péters, 25 avril 2020 21:03

Télécharger (2,91 ko)

Voir les différences:

Subject: [PATCH] misc: check file type before upload (#40932)

 wcs/qommon/static/js/qommon.fileupload.js | 27 +++++++++++++++++++++++
 wcs/root.py                               |  1 +
 2 files changed, 28 insertions(+)
wcs/qommon/static/js/qommon.fileupload.js
209 209
            pasteZone: base_widget,
210 210
            dataType: 'json',
211 211
            add: function (e, data) {
212
                var accepted_mimetypes = ($(this).attr('accept') || '').split(',');
213
                if (accepted_mimetypes) {
214
                    var file_mimetype = data.files[0].type;
215
                    var valid_mimetype = false;
216
                    for (var i in accepted_mimetypes) {
217
                        var mime_type = accepted_mimetypes[i];
218
                        if (mime_type.substring(mime_type.length-2, mime_type.length) == '/*') {
219
                            if (file_mimetype.substring(0, mime_type.length-1) == mime_type.substring(0, mime_type.length-1)) {
220
                                valid_mimetype = true;
221
                                break;
222
                            }
223
                        } else {
224
                            if (file_mimetype == mime_type) {
225
                                valid_mimetype = true;
226
                                break;
227
                            }
228
                        }
229
                    }
230
                    if (!valid_mimetype) {
231
                        $(base_widget).find('.fileprogress .bar').css('width', '100%');
232
                        $(base_widget).find('.fileprogress').addClass('upload-error');
233
                        $(base_widget).find('.fileprogress .bar').text(WCS_I18N.file_type_error);
234
                        $(base_widget).find('.fileprogress').show();
235
                        return;
236
                    }
237
                }
238

  
212 239
                if (image_resize && (
213 240
                        data.files[0].type == 'image/jpeg' ||
214 241
                        data.files[0].type == 'image/png')) {
wcs/root.py
365 365
        get_response().set_content_type('text/javascript')
366 366
        strings = {
367 367
            'confirmation': _('Are you sure?'),
368
            'file_type_error': _('Invalid file type'),
368 369
            'file_size_error': _('File size exceeds limits'),
369 370
            'geoloc_unknown_error': _('Geolocation: unknown error'),
370 371
            'geoloc_permission_denied': _('Geolocation: permission denied'),
371
-