Projet

Général

Profil

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

Frédéric Péters, 26 avril 2020 09:10

Télécharger (2,96 ko)

Voir les différences:

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

 wcs/qommon/static/js/qommon.fileupload.js | 28 +++++++++++++++++++++++
 wcs/root.py                               |  1 +
 2 files changed, 29 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');
213
                if (accepted_mimetypes) {
214
                    accepted_mimetypes = accepted_mimetypes.split('');
215
                    var file_mimetype = data.files[0].type;
216
                    var valid_mimetype = false;
217
                    for (var i in accepted_mimetypes) {
218
                        var mime_type = accepted_mimetypes[i];
219
                        if (mime_type.substring(mime_type.length-2, mime_type.length) == '/*') {
220
                            if (file_mimetype.substring(0, mime_type.length-1) == mime_type.substring(0, mime_type.length-1)) {
221
                                valid_mimetype = true;
222
                                break;
223
                            }
224
                        } else {
225
                            if (file_mimetype == mime_type) {
226
                                valid_mimetype = true;
227
                                break;
228
                            }
229
                        }
230
                    }
231
                    if (!valid_mimetype) {
232
                        $(base_widget).find('.fileprogress .bar').css('width', '100%');
233
                        $(base_widget).find('.fileprogress').addClass('upload-error');
234
                        $(base_widget).find('.fileprogress .bar').text(WCS_I18N.file_type_error);
235
                        $(base_widget).find('.fileprogress').show();
236
                        return;
237
                    }
238
                }
239

  
212 240
                if (image_resize && (
213 241
                        data.files[0].type == 'image/jpeg' ||
214 242
                        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
-