<div dir="ltr">Thank you.<div>You are exactly right, the file was misnamed.<br>That confirms the usefulness of this PmWiki enhancement</div><div><br></div><div>thanks again</div><div><br></div><div>Simon</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 14 Jan 2024 at 18:49, Petko Yotov <<a href="mailto:5ko@5ko.fr">5ko@5ko.fr</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">To elaborate, the mime_content_type() function checks the file <br>
structure:<br>
<br>
* GPX and SVG are both actually in the XML file format, so it is normal <br>
that such a file may be detected as XML.<br>
<br>
* DOCX, ODT, XPI, are actually zip-compressed archives, so some <br>
installations might detect them as ZIP.<br>
<br>
* DOC, DOCX, RTF, and PDF, are totally different file formats and one <br>
cannot be mistakenly detected as another one, even if LibreOffice will <br>
open them all. This is actually why I need this, because I tell users to <br>
upload PDFs and they just rename a DOC file to the wrong PDF extension. <br>
Then the file cannot be indexed, compressed, and shown in the PDF <br>
viewer.<br>
<br>
* PNG is totally different from JPEG, one is NOT a variant or subset of <br>
the other and one CANNOT be mistakenly detected as the other. A desktop <br>
picture viewer may show them correctly, as well as the browser, but <br>
other programs may complain or fail, for example Thumblist and Mini.<br>
<br>
I wouldn't advise to allow misnamed JPEG files with the PNG extension.<br>
<br>
Petko<br>
<br>
On 14/01/2024 07:03, Petko Yotov wrote:<br>
> On 14/01/2024 02:14, Simon wrote:<br>
>> Just further on this,<br>
>> it seems there may be potential issues with other file types with this<br>
>> check,<br>
>> e.g. today I got the message<br>
>> "_map.png_: extension 'png' doesn't match file type 'image/jpeg'"<br>
>> In upload.php we see "'png' => 'image/png'"<br>
> <br>
> Oh, in this case I suspect that was a JPEG file with the wrong PNG<br>
> extension, and it worked as designed.<br>
> <br>
> Petko<br>
> <br>
>> On Wed, 27 Dec 2023 at 00:07, Petko Yotov <<a href="mailto:5ko@5ko.fr" target="_blank">5ko@5ko.fr</a>> wrote:<br>
>> <br>
>>> Thanks for the report, there was an omission in DDMU, should be<br>
>>> fixed in<br>
>>> 20231226, please update both ddmu.php and ddmu.js.<br>
>>> <br>
>>> Unlike the core upload form, DDMU did not report the detected MIME<br>
>>> type.<br>
>>> Version 20231226 does, when you place the mouse over the failed file<br>
>>> <br>
>>> name, it says "extension 'gpx' doesn't match file type 'text/xml'".<br>
>>> <br>
>>> The detected MIME type for a GPX file appears to be text/xml. So to<br>
>>> allow this alternative MIME type, place the following in config.php:<br>
>>> <br>
>>> $EnableUploadMimeMatch = array(<br>
>>> 'gpx'=>'!^(text/xml)$!',<br>
>>> );<br>
>>> <br>
>>> Instead of $EnableUploadMimeMatch = 1;<br>
>>> <br>
>>> Alternatively, you could technically define:<br>
>>> <br>
>>> $UploadExts['gpx'] = 'text/xml'; # avoid this<br>
>>> <br>
>>> ...but I suspect this might cause problems when<br>
>>> $EnableDirectDownload is<br>
>>> disabled and the attached GPX files are used to draw lines on maps.<br>
>>> <br>
>>> Petko<br>
>>> <br>
>>> On 26/12/2023 10:59, Simon wrote:<br>
>>>> in config.php I have<br>
>>>> $UploadExts['gpx'] = 'application/gpx+xml';<br>
>>>> and am using $EnableUploadMimeMatch<br>
>>>> <br>
>>>> Now when I try to upload (a properly formed) .gpx file<br>
>>>> DDMU gives the message 'extension "doesn't match the file type"'<br>
>>>> (which means the check is now being called and is returning a<br>
>>> message)<br>
>>>> <br>
>>>> is there any way to determine, or to have included in the error<br>
>>>> message, what the expected mime type is?<br>
>>>> While many [3] references [4] on the internet state the above<br>
>>>> (application/gpx+xml) is the mime type for .gpx files<br>
>>>> MIME File Type Checker - HTMLStrip [5] suggests it it "text/xml",<br>
>>> but<br>
>>>> I think that is because it doesn't know about.gpx files<br>
>>>> <br>
>>>> Others are suggested here [6].<br>
>>>> Is it possible to add multiple values to $UploadExts?<br>
>>>> OTOH the PmWiki documentation [1] suggests that<br>
>>>> <br>
>>>> $EnableUploadMimeMatch = array(<br>
>>>> 'csv'=>'!^(text/plain|application/csv)$!',<br>
>>>> 'docx'=>'!^(application/encrypted)$!',<br>
>>>> );<br>
>>>> <br>
>>>> is the way to manage this issue.<br>
>>>> <br>
>>>> thanks<br>
>>>> <br>
>>>> Simon<br>
>>>> <br>
>>>> PS<br>
>>>> PHP: mime_content_type - Manual [7] seems to suggest the<br>
>>>> <a href="http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types" rel="noreferrer" target="_blank">svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types</a><br>
>>> [1] [3] is<br>
>>>> the source of PHP mime types.<br>
>>>> <br>
>>>> On Mon, 25 Dec 2023 at 18:57, Petko Yotov <<a href="mailto:5ko@5ko.fr" target="_blank">5ko@5ko.fr</a>> wrote:<br>
>>>> <br>
>>>>> On 25/12/2023 07:20, Simon wrote:<br>
>>>>>> My feeling is that all uploads should be denied.<br>
>>>>> ...<br>
>>>>>> for safety and visibility reasons I support denying uploads<br>
>>>>> <br>
>>>>> Agreed, enabled for 2.3.30, and added a new upload error message.<br>
>>>>> <br>
>>>>>> When using DragDropMultiUpload the upload never finished and<br>
>>>>>> never faulted, it just hung.<br>
>>>>>> Is there any possibility of making this visible to the user?,<br>
>>> e.g.<br>
>>>>>> DDMU fail with an error,<br>
>>>>> <br>
>>>>> Yes, the code I committed for 2.3.30, and the prerelease, should<br>
>>>>> show<br>
>>>>> the message in DDMU.<br>
>>>>> <br>
>>>>> Petko<br>
>>>>> <br>
>>>>>> On Mon, 25 Dec 2023 at 10:48, Petko Yotov <<a href="mailto:5ko@5ko.fr" target="_blank">5ko@5ko.fr</a>> wrote:<br>
>>>>>> <br>
>>>>>>> Apparently on Windows you need to enable the Fileinfo functions<br>
>>>>> in<br>
>>>>>>> php.ini, see:<br>
>>>>>>> <br>
>>>>>>> <a href="https://www.php.net/manual/en/fileinfo.installation.php" rel="noreferrer" target="_blank">https://www.php.net/manual/en/fileinfo.installation.php</a><br>
>>>>>>> <br>
>>>>>>> I have now documented this on the UploadVariables page.<br>
>>>>>>> <br>
>>>>>>> What should PmWiki do if $EnableUploadMimeMatch is enabled but<br>
>>>>> not<br>
>>>>>>> Fileinfo?<br>
>>>>>>> <br>
>>>>>>> - Act as if $EnableUploadMimeMatch is not enabled. This would<br>
>>>>> work<br>
>>>>>>> as it<br>
>>>>>>> did before, other checks will be done.<br>
>>>>>>> <br>
>>>>>>> - Deny all uploads, since none can be checked.<br>
>>>>>>> <br>
>>>>>>> What do you think?<br>
>>>>>>> <br>
>>>>>>> Petko<br>
>>>>>>> <br>
>>>>>>> On 24/12/2023 21:28, Simon wrote:<br>
>>>>>>>> Some time ago I enabled $EnableUploadMimematch [1]<br>
>>>>>>>> <br>
>>>>>>>> Recently I see<br>
>>>>>>>> <br>
>>>>>>>> [25-Dec-2023 08:25:00 Pacific/Auckland] PHP Fatal error:<br>
>>>>> Uncaught<br>
>>>>>>>> Error: Call to undefined function mime_content_type() in<br>
>>>>>>>> D:\Home\KiwiWiki\pmwiki\scripts\upload.php:405<br>
>>>>>>>> Stack trace:<br>
>>>>>>>> #0 D:\Home\KiwiWiki\pmwiki\scripts\upload.php(317):<br>
>>>>>>>> UploadVerifyBasic()<br>
>>>>>>>> #1 D:\Home\KiwiWiki\pmwiki\pmwiki.php(546): HandlePostUpload()<br>
>>>>>>>> #2 D:\Home\KiwiWiki\pmwiki\pmwiki.php(533): HandleDispatch()<br>
>>>>>>>> #3 {main}<br>
>>>>>>>> thrown in D:\Home\KiwiWiki\pmwiki\scripts\upload.php on line<br>
>>> 405<br>
>>>>>>>> <br>
>>>>>>>> just wondering if anyone had an idea why?<br>
>>>>>>>> <br>
>>>>>>>> and seasons holiday's greetings from the summery south<br>
>>>>>>>> <br>
>>>>>>>> Simon<br>
>>>>>>>> <br>
>> <br>
>> <br>
>> Links:<br>
>> ------<br>
>> [1] <br>
>> <a href="http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types" rel="noreferrer" target="_blank">http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types</a><br>
</blockquote></div>