GUI editor to tame mod_security rules

⌈⌋ branch:  modseccfg


Check-in [6e3eb7031f]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Pointless featuritis: add "r/o" for editor statusbar, adapt flag on "Save To" change.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 6e3eb7031f2b97dd112d8279456122f12f7c56c900855752bf32bdafc4f48010
User & Date: mario 2020-11-25 18:41:11
Context
2020-11-25
18:41
Look for Apache-Error: in audit logs, and extract request_uri from request_line in json blobs. check-in: 6791abbcad user: mario tags: trunk
18:41
Pointless featuritis: add "r/o" for editor statusbar, adapt flag on "Save To" change. check-in: 6e3eb7031f user: mario tags: trunk
2020-11-24
18:27
Change vhost.ruledecl to use ➗, ❌, , ✅ right away (simplifies ui.rules() TreeData aggregator) check-in: 133d53dd81 user: mario tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to modseccfg/editor.py.

59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
            [
                sg.Multiline(
                    default_text=src, key="src", font=conf.get("editor_font", "Consolas 11"),
                    border_width=5, autoscroll=1, focus=True, size=(175,35)
                )
            ],
            [
                sg.StatusBar(f"1:1  |  r/w  |  {len(src)} bytes", k="status", size=(50,1))
            ]
        ]

        # prepare widgets
        self.w = sg.Window(layout=layout, size=(930,670), title=f"Edit {srvroot.srv} {fn}", resizable=1, icon=icons.icon)
        w = self.w
        w.read(timeout=1)







|







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
            [
                sg.Multiline(
                    default_text=src, key="src", font=conf.get("editor_font", "Consolas 11"),
                    border_width=5, autoscroll=1, focus=True, size=(175,35)
                )
            ],
            [
                sg.StatusBar(f"1:1  |  r/{'wo'[int(readonly)]}  |  {len(src)} bytes", k="status", size=(50,1))
            ]
        ]

        # prepare widgets
        self.w = sg.Window(layout=layout, size=(930,670), title=f"Edit {srvroot.srv} {fn}", resizable=1, icon=icons.icon)
        w = self.w
        w.read(timeout=1)
92
93
94
95
96
97
98
99
100
101


102


103
104
105
106
107
108
109
        #print(event,data)
        if event in (sg.WIN_CLOSED, "Cancel", "cancel", "Close", "Exit") or data.get("cancel"):
            w.close()
            return "EXIT"
        elif event in ["Info"]:
            sg.popup(editor.__doc__)
        elif event == "Save To":
            self.fn = sg.popup_get_file(
                 title="New target filename", message="Pick new targe filename. (Won't overwrite right away. You'lll have to use [Save] later.)",
                save_as=1, default_path=self.fn, default_extension=".conf"


            ) or self.fn


        elif not self.readonly and event in ["Save", "save"] or data.get("save"):
            srvroot.write(self.fn, data["src"])
            if event == "save":
                w.close()
                return "EXIT"
        elif event in self.fonts:
            conf["editor_font"] = re.findall("^([\w\-\s]+)\s(\d+)$", event)[0]







|


>
>
|
>
>







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
        #print(event,data)
        if event in (sg.WIN_CLOSED, "Cancel", "cancel", "Close", "Exit") or data.get("cancel"):
            w.close()
            return "EXIT"
        elif event in ["Info"]:
            sg.popup(editor.__doc__)
        elif event == "Save To":
            fn = sg.popup_get_file(
                 title="New target filename", message="Pick new targe filename. (Won't overwrite right away. You'lll have to use [Save] later.)",
                save_as=1, default_path=self.fn, default_extension=".conf"
            )
            if fn != self.fn:
                self.fn = fn
                self.readonly = 0
                self.w["status"].update(f"1:1  |  r/w  |  {fn}")
        elif not self.readonly and event in ["Save", "save"] or data.get("save"):
            srvroot.write(self.fn, data["src"])
            if event == "save":
                w.close()
                return "EXIT"
        elif event in self.fonts:
            conf["editor_font"] = re.findall("^([\w\-\s]+)\s(\d+)$", event)[0]