/** * Write elements of an Array of Strings to a file (one element per line). * * @param listFile the file to write to * @param list the Array to write * @return returns <code>true</code> if successful, <code>false</code> otherwise */ public static boolean writeList(final File listFile, final String[] list) { final StringBuilder out = new StringBuilder(list.length * 40 + 1); for (final String element : list) { out.append(element).append(CR).append(LF); } return FileUtils.writeList(listFile, new String(out)); // (File, String) }
/** * Removes existing entries from a blacklist. * * @param blacklistToUse The blacklist which contains the * @param supportedBlacklistTypes Types of blacklists which the entry is to changed in. * @param entries Array of entries to be deleted. * @return Length of the list of entries to be removed. */ private static int removeEntries( final String blacklistToUse, final String[] supportedBlacklistTypes, final String[] entries) { // load blacklist data from file final List<String> list = FileUtils.getListArray(new File(ListManager.listsPath, blacklistToUse)); boolean listChanged = false; // delete the old entry from file for (final String entry : entries) { String s = entry; if (list != null) { // get rid of escape characters which make it impossible to // properly use contains() if (s.contains("\\\\")) { s = s.replaceAll(Pattern.quote("\\\\"), Matcher.quoteReplacement("\\")); } if (list.contains(s)) { listChanged = list.remove(s); } } // remove the entry from the running blacklist engine for (final String supportedBlacklistType : supportedBlacklistTypes) { if (ListManager.listSetContains(supportedBlacklistType + ".BlackLists", blacklistToUse)) { final String host = (s.indexOf('/') == -1) ? s : s.substring(0, s.indexOf('/')); final String path = (s.indexOf('/') == -1) ? ".*" : s.substring(s.indexOf('/') + 1); try { Switchboard.urlBlacklist.remove(supportedBlacklistType, host, path); } catch (final RuntimeException e) { Log.logSevere("BLACKLIST-CLEANER", e.getMessage() + ": " + host + "/" + path); } } } SearchEventCache.cleanupEvents(true); } if (listChanged) { FileUtils.writeList( new File(ListManager.listsPath, blacklistToUse), list.toArray(new String[list.size()])); } return entries.length; }