Changeset 10158 in josm


Ignore:
Timestamp:
2016-04-26T19:16:46+02:00 (4 years ago)
Author:
Don-vip
Message:

fix #12779 - Anonymize further status report contents for privacy concerns

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java

    r10139 r10158  
    110110        }
    111111        try {
    112             final String envJavaHome = System.getenv("JAVA_HOME");
    113             final String envJavaHomeAlt = Main.isPlatformWindows() ? "%JAVA_HOME%" : "${JAVA_HOME}";
    114             final String propJavaHome = System.getProperty("java.home");
    115             final String propJavaHomeAlt = "<java.home>";
    116             final String prefDir = Main.pref.getPreferencesDirectory().toString();
    117             final String prefDirAlt = "<josm.pref>";
    118             final String userDataDir = Main.pref.getUserDataDirectory().toString();
    119             final String userDataDirAlt = "<josm.userdata>";
    120             final String userCacheDir = Main.pref.getCacheDirectory().toString();
    121             final String userCacheDirAlt = "<josm.cache>";
    122             final String userHomeDir = System.getProperty("user.home");
    123             final String userHomeDirAlt = Main.isPlatformWindows() ? "%UserProfile%" : "${HOME}";
    124 
    125112            // Build a new list of VM parameters to modify it below if needed (default implementation returns an UnmodifiableList instance)
    126113            List<String> vmArguments = new ArrayList<>(ManagementFactory.getRuntimeMXBean().getInputArguments());
     
    134121                    } else {
    135122                        // Replace some paths for readability and privacy concerns
    136                         String val = param[1];
    137                         val = paramReplace(val, envJavaHome, envJavaHomeAlt);
    138                         val = paramReplace(val, envJavaHome, envJavaHomeAlt);
    139                         val = paramReplace(val, propJavaHome, propJavaHomeAlt);
    140                         val = paramReplace(val, prefDir, prefDirAlt);
    141                         val = paramReplace(val, userDataDir, userDataDirAlt);
    142                         val = paramReplace(val, userCacheDir, userCacheDirAlt);
    143                         val = paramReplace(val, userHomeDir, userHomeDirAlt);
     123                        String val = paramCleanup(param[1]);
    144124                        if (!val.equals(param[1])) {
    145125                            it.set(param[0] + '=' + val);
     
    162142        List<String> commandLineArgs = Main.getCommandLineArgs();
    163143        if (!commandLineArgs.isEmpty()) {
    164             text.append("Program arguments: ").append(Arrays.toString(commandLineArgs.toArray())).append('\n');
     144            text.append("Program arguments: ").append(Arrays.toString(paramCleanup(commandLineArgs).toArray())).append('\n');
    165145        }
    166146        if (Main.main != null) {
     
    196176    }
    197177
     178    private static List<String> paramCleanup(Collection<String> params) {
     179        List<String> result = new ArrayList<>(params.size());
     180        for (String param : params) {
     181            result.add(paramCleanup(param));
     182        }
     183        return result;
     184    }
     185
     186    /**
     187     * Shortens and removes private informations from a parameter used for status report.
     188     * @param param parameter to cleanup
     189     * @return shortened/anonymized parameter
     190     */
     191    private static String paramCleanup(String param) {
     192        final String envJavaHome = System.getenv("JAVA_HOME");
     193        final String envJavaHomeAlt = Main.isPlatformWindows() ? "%JAVA_HOME%" : "${JAVA_HOME}";
     194        final String propJavaHome = System.getProperty("java.home");
     195        final String propJavaHomeAlt = "<java.home>";
     196        final String prefDir = Main.pref.getPreferencesDirectory().toString();
     197        final String prefDirAlt = "<josm.pref>";
     198        final String userDataDir = Main.pref.getUserDataDirectory().toString();
     199        final String userDataDirAlt = "<josm.userdata>";
     200        final String userCacheDir = Main.pref.getCacheDirectory().toString();
     201        final String userCacheDirAlt = "<josm.cache>";
     202        final String userHomeDir = System.getProperty("user.home");
     203        final String userHomeDirAlt = Main.isPlatformWindows() ? "%UserProfile%" : "${HOME}";
     204
     205        String val = param;
     206        val = paramReplace(val, envJavaHome, envJavaHomeAlt);
     207        val = paramReplace(val, envJavaHome, envJavaHomeAlt);
     208        val = paramReplace(val, propJavaHome, propJavaHomeAlt);
     209        val = paramReplace(val, prefDir, prefDirAlt);
     210        val = paramReplace(val, userDataDir, userDataDirAlt);
     211        val = paramReplace(val, userCacheDir, userCacheDirAlt);
     212        val = paramReplace(val, userHomeDir, userHomeDirAlt);
     213        return val;
     214    }
     215
    198216    private static String paramReplace(String str, String target, String replacement) {
    199         if (target == null) return str;
    200         return str.replace(target, replacement);
     217        return target == null ? str : str.replace(target, replacement);
    201218    }
    202219
     
    205222            text.append(label+":\n");
    206223            for (T o : col) {
    207                 text.append("- ").append(o.toString()).append('\n');
     224                text.append("- ").append(paramCleanup(o.toString())).append('\n');
    208225            }
    209226            text.append('\n');
     
    226243            }
    227244            for (Entry<String, Setting<?>> entry : settings.entrySet()) {
    228                 text.append(entry.getKey()).append('=').append(entry.getValue().getValue()).append('\n');
     245                text.append(paramCleanup(entry.getKey()))
     246                    .append('=')
     247                    .append(paramCleanup(entry.getValue().getValue().toString())).append('\n');
    229248            }
    230249        } catch (Exception x) {
Note: See TracChangeset for help on using the changeset viewer.