Check-in [de9d870142]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add File→Install menu for *.deb packages or scripts. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
de9d870142e90b6eb27b847082ed2a6f |
User & Date: | mario 2020-12-02 06:33:02 |
Context
2020-12-02
| ||
22:32 | Remove stale infos, add project meta block check-in: 0fcb10b69d user: mario tags: trunk | |
06:33 | Add File→Install menu for *.deb packages or scripts. check-in: de9d870142 user: mario tags: trunk | |
06:32 | Introduce module/plugin lookup for .add_menu()/.has()/.show() and raw_event in mainwindow handler (for literal menu string lookups). check-in: 92ff15a9ff user: mario tags: trunk | |
Changes
Changes to dev/Makefile.
1 2 3 4 5 6 7 8 9 10 11 | SHELL := /bin/bash #(for brace expansion) all: deb deb: flame flame: echo $(DESC) cd modsec-flameeyes-main && \ fpm -f -t deb -s dir -n modsec-flameeyes -v 2020.06.13 -a all \ --description "mod_security rules againt rogue bots" \ --url "https://github.com/Flameeyes/modsec-flameeyes/" \ | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | SHELL := /bin/bash #(for brace expansion) all: deb deb: flame flame: echo $(DESC) cd modsec-flameeyes-main && \ fpm -f -t deb -s dir -n modsec-flameeyes -v 2020.06.13 -a all \ --description "mod_security rules againt rogue bots" \ --url "https://github.com/Flameeyes/modsec-flameeyes/" \ --vendor "Diego Elio Pettenò <flameeyes@flameeyes.com>" \ --depends libapache2-mod-security2 --license Apache-2.0 \ rules/=/usr/share/modsecurity-flameeyes/rules/ \ optional/=/usr/share/modsecurity-flameeyes/optional/ \ README.md=//usr/share/doc/modsec-flameeyes/ \ ../flameeyes.conf=/etc/apache2/mods-enabled/flameeyes.conf mv modsec-flameeyes-main/modsec-flameeyes*.deb . down: wget https://github.com/Flameeyes/modsec-flameeyes/archive/main.zip unzip main.zip |
Added modseccfg/install/__init__.py.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | # api: modseccfg # encoding: utf-8 # title: Install packages # descriptions: addon packages # version: 0.1 # type: handler # category: setup # # Mirrors files from install/ dir into File→Install menu. # Allows to install packages (locally or onto srvroot). # import os, re, glob, subprocess, traceback from modseccfg import writer from modseccfg.utils import srvroot, conf import PySimpleGUI as sg dir = re.sub("[^/]+$", "", __file__) # hook: mainwindow.add_menu def add_menu(menu): print("\n") m = menu[0][1] # File i = 5 # m.index("Test") m.insert(i, ls()) m.insert(i, "Install") # find files def ls(): ls = [re.sub("^.+/", "", fn) for fn in glob.glob(f"{dir}/*.*")] ls = [fn for fn in ls if not fn.startswith("_")] return ls # File→Install check def has(event): return event in ls() # actual invocation def show(raw_event=None, mainwindow=None, **kwargs): cmd = raw_event if re.search("\.deb$", cmd): cmd = f"dpkg -i ./{cmd}" elif re.search("\.rpm$", cmd): cmd = f"rpm -i ./{cmd}" elif os.access(f"{dir}/{cmd}", os.X_OK): cmd = f"./{cmd}" if srvroot.srv: cmd = re.sub('\./', '/root/', cmd) cmd = f"scp ./{cmd} {srvroot.srv}root/\nssh {srvroot.srvname} {cmd}" layout = [ [sg.Multiline(cmd, size=(100,22), background_color="#331111", text_color="white", font=("Monospace", 13), key="cmd")], [sg.Button("Exec", key="Exec"), sg.Button("Cancel")] ] execwin( sg.Window(layout=layout, title="install"), mainwindow ) # event handler class execwin: def __init__(self, w, mainwindow): self.w = w self.cmd = w["cmd"] w.read(timeout=1) self.w["cmd"].Widget.config(insertbackground="yellow") mainwindow.win_register(w, self.event) def event(self, event, data): if event=="Exec": self.w["Exec"].update(disabled=1, visible=0) self.run(data["cmd"]) elif event=="Cancel": self.w.close() # iterate over cmd lines, and run each def run(self, cmds): os.chdir(dir) self.cmd.update("") for line in cmds.split("\n"): if not re.match("^\s*[\w.]", line): self.cmd.print(line, text_color="gray") continue self.cmd.print(f"> {line}\n", text_color="lightgreen") args = re.split("\s+", line) try: r = subprocess.run(args, capture_output=True) except Exception as e: self.cmd.print(str(e), text_color="red", background_color="#553311") break if r.stdout: self.cmd.print(str(r.stdout.decode("utf-8"))) if r.returncode: self.cmd.print(f"ERRNO {r.returncode}", background_color="yellow", text_color="red", end="") self.cmd.print("") if r.stderr: self.cmd.print(str(r.stderr.decode("utf-8")), text_color="red") self.cmd.print("") if r.returncode: break #sg.popup("Completed?") self.w.read(timeout=7000) self.w.close() |
Added modseccfg/install/modsec-flameeyes_2020.06.13_all.deb.
cannot compute difference between binary files
Added modseccfg/install/test.sh.
> > > | 1 2 3 | #!/bin/sh ls -l echo test $@ |