From deb3678183976a7994ff2f8d011f20c3b3e16d1a Mon Sep 17 00:00:00 2001 From: Antoine LESIEUR Date: Wed, 13 Sep 2023 17:18:23 +0200 Subject: [PATCH 1/2] Implement System Users & Groups --- pf_focus/markdown.py | 12 ++++++++++++ pf_focus/pfsense.py | 16 ++++++++++++++++ setup.py | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/pf_focus/markdown.py b/pf_focus/markdown.py index 57bd332..10da94a 100644 --- a/pf_focus/markdown.py +++ b/pf_focus/markdown.py @@ -84,6 +84,18 @@ def output_markdown(doc, stream): output_markdown_table(stream, ('Option', 'Value'), info.items()) stream.write("\n") + stream.write("### Groups\n") + groups = sorted(doc.pfsense.system.group.data, key=lambda group: group['gid']) + groups = [dict_to_list(group, ('name', 'gid', 'description', 'member')) for group in groups] + output_markdown_table(stream, ('Name', 'Group ID', 'Description', 'Members #'), groups) + stream.write("\n") + + stream.write("### Users\n") + users = sorted(doc.pfsense.system.user.data, key=lambda user: user['uid']) + users = [dict_to_list(user, ('name', 'uid', 'descr', 'scope', 'groupname')) for user in users] + output_markdown_table(stream, ('Name', 'User ID', 'Description', 'Scope', 'Group'), users) + stream.write("\n") + if hasattr_r(doc.pfsense, 'interfaces'): stream.write("## Interfaces\n") interfaces = sorted(doc.pfsense.interfaces.data.items(), key=lambda interface: interface[0]) diff --git a/pf_focus/pfsense.py b/pf_focus/pfsense.py index e84d998..26a7605 100644 --- a/pf_focus/pfsense.py +++ b/pf_focus/pfsense.py @@ -386,6 +386,20 @@ class PfSenseSyslog(PfSenseNode): _logall = PfSenseFlag _enable = PfSenseFlag +class PfSenseUser(PfSenseNode): + _name = PfSenseString + _descr = PfSenseString + _scope = PfSenseString + _groupname = PfSenseString + _uid = PfSenseInteger + # _member = PfSenseString + +class PfSenseGroup(PfSenseNode): + _name = PfSenseString + _gid = PfSenseInteger + _description = PfSenseString + _member = PfSenseString + class PfSenseSystem(PfSenseNode): _optimization = PfSenseString _hostname = PfSenseString @@ -394,6 +408,8 @@ class PfSenseSystem(PfSenseNode): _timezone = PfSenseString _language = PfSenseString _dnsserver = [PfSenseString] + _group = [PfSenseGroup] + _user = [PfSenseUser] class PfSenseConfig(PfSenseNode): _version = PfSenseString diff --git a/setup.py b/setup.py index 2bacef7..b1d4740 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ def read_file(filename): setup( name='pfFocus', - version='0.1', + version='0.2', description='Generate meaningful output from your pfSense configuration backup', long_description=read_file('README.md'), long_description_content_type='text/markdown', From 52ace33c44689528e579ef7f07397228ec23b455 Mon Sep 17 00:00:00 2001 From: toinux <26522723+itzwam@users.noreply.github.com> Date: Wed, 13 Sep 2023 16:40:32 +0100 Subject: [PATCH 2/2] BBCode --- pf_focus/bbcode.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pf_focus/bbcode.py b/pf_focus/bbcode.py index fa5e1ae..2f16fcd 100644 --- a/pf_focus/bbcode.py +++ b/pf_focus/bbcode.py @@ -113,6 +113,18 @@ def output_bbcode(doc, stream): output_bbcode_table(stream, ('Option', 'Value'), info.items()) stream.write("\n") + stream.write("### Groups\n") + groups = sorted(doc.pfsense.system.group.data, key=lambda group: group['gid']) + groups = [dict_to_list(group, ('name', 'gid', 'description', 'member')) for group in groups] + output_bbcode_table(stream, ('Name', 'Group ID', 'Description', 'Members #'), groups) + stream.write("\n") + + stream.write("### Users\n") + users = sorted(doc.pfsense.system.user.data, key=lambda user: user['uid']) + users = [dict_to_list(user, ('name', 'uid', 'descr', 'scope', 'groupname')) for user in users] + output_bbcode_table(stream, ('Name', 'User ID', 'Description', 'Scope', 'Group'), users) + stream.write("\n") + if hasattr_r(doc.pfsense, 'interfaces'): stream.write(h2("Interfaces\n")) interfaces = sorted(doc.pfsense.interfaces.data.items(), key=lambda interface: interface[0])