Public bug reported:

Version: ufw 0.36
Ubuntu Version: 20.04.3 LTS

There doesn't appear to be a Python method for accessing IPv4 and IPv6
rules in a distinguishable manner.

In the source code (root/src/backend.py) there is an object that stores
IPv4 and IPv6 rules in separate lists. Those lists are then accessed
with the following method:

def get_rules(self):
        '''Return list of all rules'''
        return self.rules + self.rules6

The issue with this is that the returned list doesn't contain an
indication of what IP version each item corresponds to and would display
something like the following.

1 allow 22/tcp
2 allow 80
3 allow 443
4 allow 22/tcp
5 allow 80
6 allow 443

I don't currently see a way to distinguish between IPv4 and IPv6 rules other 
than accessing the lists in the backend object directly (but I don't think this 
is best practice). E.g.:
rules_ipv4 = backend.rules
rules_ipv6 = backend.rules6

One possible fix would be to add functions that return only the IPv4 or IPv6 
rules. E.g.:
def get_rules_ipv4(self):
        '''Return list of all ipv4 rules'''
        return self.rules
def get_rules_ipv6(self):
        '''Return list of all ipv6 rules'''
        return self.rules6

** Affects: ufw (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to ufw in Ubuntu.
https://bugs.launchpad.net/bugs/1951018

Title:
  No ability to discern IPv4 vs IPv6 rules through Python

Status in ufw package in Ubuntu:
  New

Bug description:
  Version: ufw 0.36
  Ubuntu Version: 20.04.3 LTS

  There doesn't appear to be a Python method for accessing IPv4 and IPv6
  rules in a distinguishable manner.

  In the source code (root/src/backend.py) there is an object that
  stores IPv4 and IPv6 rules in separate lists. Those lists are then
  accessed with the following method:

  def get_rules(self):
          '''Return list of all rules'''
          return self.rules + self.rules6

  The issue with this is that the returned list doesn't contain an
  indication of what IP version each item corresponds to and would
  display something like the following.

  1 allow 22/tcp
  2 allow 80
  3 allow 443
  4 allow 22/tcp
  5 allow 80
  6 allow 443

  I don't currently see a way to distinguish between IPv4 and IPv6 rules other 
than accessing the lists in the backend object directly (but I don't think this 
is best practice). E.g.:
  rules_ipv4 = backend.rules
  rules_ipv6 = backend.rules6

  One possible fix would be to add functions that return only the IPv4 or IPv6 
rules. E.g.:
  def get_rules_ipv4(self):
          '''Return list of all ipv4 rules'''
          return self.rules
  def get_rules_ipv6(self):
          '''Return list of all ipv6 rules'''
          return self.rules6

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/1951018/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to