i2psnark: Load sytem mime types if available

This commit is contained in:
zzz
2022-02-23 08:12:39 -05:00
parent 265f5ee5df
commit 04dd18615c
2 changed files with 43 additions and 0 deletions

View File

@@ -14,6 +14,10 @@
package org.klomp.snark.web;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;
@@ -21,6 +25,9 @@ import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.concurrent.ConcurrentHashMap;
import net.i2p.data.DataHelper;
import net.i2p.util.SystemVersion;
/* ------------------------------------------------------------ */
/**
@@ -47,6 +54,8 @@ class MimeTypes
public MimeTypes() {
_mimeMap = new ConcurrentHashMap<String, String>();
if (!(SystemVersion.isWindows() || SystemVersion.isMac() || SystemVersion.getMaxMemory() < 100*1024*1024L))
loadSystemMimeTypes();
}
/* ------------------------------------------------------------ */
@@ -86,6 +95,37 @@ class MimeTypes
}
}
/**
* Load mime types from /etc/mime.types
* Format: mimetype suffix1 suffix2 ...
*
* @since 0.9.54
*/
private void loadSystemMimeTypes() {
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream("/etc/mime.types"), "ISO-8859-1"));
while (true) {
String line = in.readLine();
if (line == null)
break;
if (line.startsWith("#"))
continue;
String[] s = DataHelper.split(line, "[ \t]+", 16);
if (s.length < 2)
continue;
for (int i = 1; i < s.length; i++) {
_mimeMap.put(s[i].toLowerCase(Locale.US), s[0]);
//System.out.println("Mapping: '" + s[i] + "' -> '" + s[0] + "'");
}
}
//System.out.println("Loaded " + _mimeMap.size() + " mime types from /etc/mime.types");
} catch (IOException ioe) {
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
}
}
/* ------------------------------------------------------------ */
/** Get the MIME type by filename extension.
*

3
debian/apparmor/i2p vendored
View File

@@ -90,6 +90,9 @@
@{PROC}/sys/net/ipv6/conf/all/temp_valid_lft r,
@{PROC}/sys/net/ipv6/conf/all/use_tempaddr r,
# i2psnark
/etc/mime.types r,
# 'm' is needed by the I2P-Bote plugin
/{,lib/live/mount/overlay/}tmp/ rwm,
owner /{,lib/live/mount/overlay/}tmp/hsperfdata_*/ rwk,