• Morgikan@lemm.ee
    link
    fedilink
    English
    arrow-up
    35
    ·
    edit-2
    1 year ago

    It’s not automatic, but you can technically block countries. From the Connections tab in Options, there is an IP Filter option for data files. I believe the format is X.X.X.X-Y.Y.Y.Y

    Country IP assignments are handled by ARIN in North America and RIPE NCC for Europe. Those are the two main ones, but LATAM, Africa, and APAC territories have their own respective groups as well. So, every main German IP block is known and searchable via RIPE. You would have to format your lists using that info.

    It may not be super effective as IPs can somewhat float, but that would be the method.

    EDIT: Here is an example using Germany again that shows the data you’d have to format - https://lite.ip2location.com/germany-ip-address-ranges?lang=en_US

    That would be a lot simpler if Qbittorrent accept CIDR notation like any sane human should be using.

    • TableteKarcioji@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      10
      ·
      1 year ago

      It’s posible to use a file too. The is an option just above that filter field. I think it’s more convenient, because there might be a lot of small ranges. The file just have to be formated in specific way. I remember I even found a website that allowed to export ranges for specific country in a file and I made a small Python script to format that file.

      • Morgikan@lemm.ee
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        Yeah, I was referring to the field that takes in dat files. Honestly, it sounds like the OP is more interested in just outright blocking countries completely with Qbittorrent just one application abidding by that. At that point, OP should take the IP ranges and script them into iptables statements. I’ve never created 1000+ iptables configurations though so I don’t know what kind of performance hit that creates if any.

        • TableteKarcioji@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          4
          ·
          1 year ago

          I misread your post. I looked into my script and I actually used ip2location as a source for IP ranges. However, I can’t seem to find a way to download them (at least without an account) in csv file. Most likely they changed that. Or maybe I just copied them from the page by hand (pro tip just mark first cell, then go down to the end of the table and while holding SHIFT mark the last one).

          I can find where I found it, because that was first and last time I dealt with *.dat files, but I script makes line look like this:

          1.0.1.0 - 1.0.3.255 , 000 , china ban ip range from ip2location

          with spaces and all.

          It seems to work. If anyone wants a China ban list or the script, let my know with reply.

          I don’t know how much extra memory my qBittorrent uses with that list (718 ranges/lines), but as a reference with 1427 torrents it uses ~8GB of RAM.

            • TableteKarcioji@lemmy.dbzer0.com
              link
              fedilink
              English
              arrow-up
              1
              ·
              1 year ago

              I would love to be 100% sure about this. I did this few years back. I know I searched on the internet on how the dat file should look like and came across that AMule uses these files. And explanation for all these fields can be found here.

              That documentation is short but to quote the most relevant part:

              IPs range , Access level , Description
              Access level values lower than 127' are blocked IPs and values over 127 are allowed IPs. 
              

              The thing is I don’t know if this is a some kind of standard or not and I don’t know if qBittorrent needs (and respects) those two other fields. Maybe it even ignores them, because why would an IP range would be in IP blocklist if not to block it? However, at that time I could only find that information, it did make my work any harder, it seemed to work, so I did not try to create and use a filter without them.