Changeset 62064da for router


Ignore:
Timestamp:
Nov 23, 2016 1:54:05 PM (4 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
625e992
Parents:
86c0fe3
Message:

News: Support blocklist in the news feed (proposal 129)

Location:
router/java/src/net/i2p/router
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/Banlist.java

    r86c0fe3 r62064da  
    163163    public boolean banlistRouter(Hash peer, String reason, String reasonCode, String transport, long expireOn) {
    164164        if (peer == null) {
    165             _log.error("why did we try to banlist null?", new Exception("banfaced"));
     165            _log.error("ban null?", new Exception());
    166166            return false;
    167167        }
    168168        if (peer.equals(_context.routerHash())) {
    169             _log.error("why did we try to banlist ourselves?", new Exception("banfaced"));
     169            if (_log.shouldWarn())
     170                _log.warn("not banning us", new Exception());
    170171            return false;
    171172        }
    172173        boolean wasAlready = false;
    173174        if (_log.shouldLog(Log.INFO))
    174             _log.info("Banlisting router " + peer.toBase64() +
     175            _log.info("Banlist " + peer.toBase64() +
    175176               ((transport != null) ? " on transport " + transport : ""), new Exception("Banlist cause: " + reason));
    176177       
     
    229230        if (peer == null) return;
    230231        if (_log.shouldLog(Log.DEBUG))
    231             _log.debug("Calling unbanlistRouter " + peer.toBase64()
     232            _log.debug("unbanlist " + peer.toBase64()
    232233                      + (transport != null ? "/" + transport : ""));
    233234        boolean fully = false;
     
    283284            _context.messageHistory().unbanlist(peer);
    284285            if (_log.shouldLog(Log.INFO))
    285                 _log.info("Unbanlisting router (expired) " + peer.toBase64());
     286                _log.info("Unbanlisting (expired) " + peer.toBase64());
    286287        }
    287288       
  • router/java/src/net/i2p/router/Blocklist.java

    r86c0fe3 r62064da  
    7777    private Entry _wrapSave;
    7878    private final Set<Hash> _inProcess = new HashSet<Hash>(4);
     79    private final File _blocklistFeedFile;
    7980    // temp
    8081    private Map<Hash, String> _peerBlocklist = new HashMap<Hash, String>(4);
     
    9697        _context = context;
    9798        _log = context.logManager().getLog(Blocklist.class);
     99        _blocklistFeedFile = new File(context.getConfigDir(), BLOCKLIST_FEED_FILE);
    98100    }
    99101   
     
    102104        _context = null;
    103105        _log = new Log(Blocklist.class);
     106        _blocklistFeedFile = new File(BLOCKLIST_FEED_FILE);
    104107    }
    105108   
     
    108111    private static final String PROP_BLOCKLIST_FILE = "router.blocklist.file";
    109112    private static final String BLOCKLIST_FILE_DEFAULT = "blocklist.txt";
     113    private static final String BLOCKLIST_FEED_FILE = "docs/feed/blocklist/blocklist.txt";
    110114
    111115    /**
     
    118122        if (! _context.getBooleanPropertyDefaultTrue(PROP_BLOCKLIST_ENABLED))
    119123            return;
    120         List<File> files = new ArrayList<File>(3);
     124        List<File> files = new ArrayList<File>(4);
    121125
    122126        // install dir
     
    136140            files.add(blFile);
    137141        }
     142        files.add(_blocklistFeedFile);
    138143        Job job = new ReadinJob(files);
    139144        job.getTiming().setStartAfter(_context.clock().now() + 30*1000);
     
    278283        int peercount = 0;
    279284        long ipcount = 0;
     285        final boolean isFeedFile = blFile.equals(_blocklistFeedFile);
    280286        BufferedReader br = null;
    281287        try {
     
    296302                byte[] ip1 = e.ip1;
    297303                if (ip1.length == 4) {
    298                     byte[] ip2 = e.ip2;
    299                     store(ip1, ip2, count++);
    300                     ipcount += 1 + toInt(ip2) - toInt(ip1); // includes dups, oh well
     304                    if (isFeedFile) {
     305                        // temporary
     306                        add(ip1);
     307                    } else {
     308                        byte[] ip2 = e.ip2;
     309                        store(ip1, ip2, count++);
     310                        ipcount += 1 + toInt(ip2) - toInt(ip1); // includes dups, oh well
     311                    }
    301312                } else {
    302313                    // IPv6
     
    576587    }
    577588
     589    /**
     590     * Remove from the in-memory single-IP blocklist.
     591     * This is only works to undo add()s, NOT for the main list
     592     * of IP ranges read in from the file.
     593     *
     594     * @param ip IPv4 or IPv6
     595     * @since 0.9.28
     596     */
     597    public void remove(byte ip[]) {
     598        if (ip.length == 4)
     599            remove(toInt(ip));
     600        else if (ip.length == 16)
     601            remove(new BigInteger(1, ip));
     602    }
     603
    578604    private boolean add(int ip) {
    579605        if (_singleIPBlocklist.size() >= MAX_IPV4_SINGLES)
     
    582608    }
    583609
     610    /**
     611     * @since 0.9.28
     612     */
     613    private void remove(int ip) {
     614        _singleIPBlocklist.remove(Integer.valueOf(ip));
     615    }
     616
    584617    private boolean isOnSingleList(int ip) {
    585618        return _singleIPBlocklist.contains(Integer.valueOf(ip));
     
    593626        synchronized(_singleIPv6Blocklist) {
    594627            return _singleIPv6Blocklist.put(ip, DUMMY) == null;
     628        }
     629    }
     630
     631    /**
     632     * @param ip IPv6 non-negative
     633     * @since 0.9.28
     634     */
     635    private void remove(BigInteger ip) {
     636        synchronized(_singleIPv6Blocklist) {
     637            _singleIPv6Blocklist.remove(ip);
    595638        }
    596639    }
Note: See TracChangeset for help on using the changeset viewer.