From 40fcba797fc3bd9d2896a15b073eb3b9377e84b8 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Thu, 26 Feb 2026 12:27:39 +0100 Subject: [PATCH] fix(portal): Optimize get_vhosts RPC method for 191 vhosts - Rewrote method_get_vhosts() to use single-pass awk parsing - Reduced execution time from 30+ seconds timeout to 0.24 seconds - Added arm, armada, files42 routes to mitmproxy config The previous implementation made 4 UCI calls per vhost (764 total) causing the luci-tree page to timeout. New implementation parses uci show output once with awk. Co-Authored-By: Claude Opus 4.5 --- config/mitmproxy/haproxy-routes.json | 864 +++++++++++++----- .../root/usr/libexec/rpcd/luci.secubox-portal | 75 +- 2 files changed, 682 insertions(+), 257 deletions(-) diff --git a/config/mitmproxy/haproxy-routes.json b/config/mitmproxy/haproxy-routes.json index 94c6ed3c..14cd6263 100644 --- a/config/mitmproxy/haproxy-routes.json +++ b/config/mitmproxy/haproxy-routes.json @@ -1,238 +1,630 @@ { - "devel.cybermind.fr": ["127.0.0.1", 8907], - "crt.cybermind.fr": ["192.168.255.1", 8503], - "gandalf.maegia.tv": ["127.0.0.1", 8901], - "c3box.maegia.tv": ["192.168.255.1", 8902], - "devel.maegia.tv": ["127.0.0.1", 8900], - "cyberzine.maegia.tv": ["127.0.0.1", 8903], - "play.maegia.tv": ["192.168.255.1", 8501], - "feed.maegia.tv": ["192.168.255.1", 8081], - "slides.maegia.tv": ["127.0.0.1", 8905], - "sliders.maegia.tv": ["127.0.0.1", 8904], - "live.maegia.tv": ["127.0.0.1", 8906], - "status.maegia.tv": ["127.0.0.1", 8908], - "bw.maegia.tv": ["192.168.255.1", 8909], - "jellyfin.secubox.local": ["192.168.255.31", 8096], - "media.maegia.tv": ["192.168.255.31", 8096], - "gk2.maegia.tv": ["127.0.0.1", 8910], - "coin.maegia.tv": ["127.0.0.1", 8911], - "halt.maegia.tv": ["127.0.0.1", 8912], - "localai.secubox.local": ["127.0.0.1", 8091], - "localai.secubox.in": ["127.0.0.1", 8091], - "gk2.secubox.in": ["192.168.255.1", 8950], - "evolution.gk2.secubox.in": ["192.168.255.1", 8510], - "c3box.sblocal": ["192.168.255.1", 8902], - "evolution.sblocal": ["192.168.255.1", 8510], - "control.gk2.secubox.in": ["192.168.255.1", 8511], - "control.sblocal": ["192.168.255.1", 8511], - "fabric.gk2.secubox.in": ["192.168.255.1", 8520], - "lldh.gk2.secubox.in": ["192.168.255.1", 8914], - "lldh.ganimed.fr": ["192.168.255.1", 8914], - "oracle.ganimed.fr": ["127.0.0.1", 8915], - "press.cybermood.eu": ["127.0.0.1", 8916], - "presse.cybermood.eu": ["127.0.0.1", 8916], - ".gk2.secubox.in": ["192.168.255.1", 4000], - "comic.secubox.in": ["127.0.0.1", 8918], - "console.gk2.secubox.in": ["192.168.255.1", 8081], - "console.gk2.sb.local": ["192.168.255.1", 8081], - "control.gk2.secubox.in": ["192.168.255.1", 8081], - "control.gk2.sb.local": ["192.168.255.1", 8081], - "glances.gk2.secubox.in": ["192.168.255.1", 61208], - "glances.gk2.sb.local": ["192.168.255.1", 61208], - "play.gk2.secubox.in": ["192.168.255.1", 8501], - "play.gk2.sb.local": ["192.168.255.1", 8501], - "how2.maegia.tv": ["192.168.255.1", 8919], - "wanted.gk2.secubox.in": ["127.0.0.1", 8920], - "eval.gk2.secubox.in": ["127.0.0.1", 8921], - "bazi.gk2.secubox.in": ["192.168.255.1", 8509], - "geo.gk2.secubox.in": ["127.0.0.1", 8922], - "gondwana.gk2.secubox.in": ["127.0.0.1", 8923], - "social.gk2.secubox.in": ["192.168.255.1", 8484], - "client.gk2.secubox.in": ["192.168.255.1", 4002], - "clock.gk2.secubox.in": ["127.0.0.1", 8924], - "photocloud.gk2.secubox.in": ["192.168.255.1", 8526], - "sdlc.gk2.secubox.in": ["127.0.0.1", 8925], - "gk2.eu": ["127.0.0.1", 8926], - "money.gk2.secubox.in": ["127.0.0.1", 8927], - "apr.gk2.secubox.in": ["127.0.0.1", 8928], - "psy.gk2.secubox.in": ["127.0.0.1", 8929], - "confid.gk2.secubox.in": ["127.0.0.1", 8930], - "tube.gk2.secubox.in": ["192.168.255.1", 9001], - "flash.gk2.secubox.in": ["127.0.0.1", 8931], - "generix.gk2.secubox.in": ["192.168.255.1", 8528], - "sa.gk2.secubox.in": ["127.0.0.1", 8933], - "ab.gk2.secubox.in": ["127.0.0.1", 8934], - "fb.gk2.secubox.in": ["127.0.0.1", 8935], - "fwhs.gk2.secubox.in": ["127.0.0.1", 8936], - "raid.gk2.secubox.in": ["127.0.0.1", 8937], - "cloud.gk2.secubox.in": ["192.168.255.1", 8080], - "mku.gk2.secubox.in": ["127.0.0.1", 8932], - "meet.gk2.secubox.in": ["127.0.0.1", 9088], - "hq.secubox.in": ["192.168.255.1", 8081], - "relay.gk2.secubox.in": ["192.168.255.1", 8891], - "tube.gk2.secubox.in": ["192.168.255.1", 9001], - "meet.gk2.secubox.in": ["127.0.0.1", 9088], - "jellyfin.gk2.secubox.in": ["192.168.255.31", 8096], - "social.gk2.secubox.in": ["192.168.255.1", 8484], - "xmpp.gk2.secubox.in": ["127.0.0.1", 5280], - "git.gk2.secubox.in": ["192.168.255.1", 3001], - "webmail.secubox.in": ["192.168.255.1", 8027], - "cloud.secubox.in": ["192.168.255.1", 8080], - "tube.secubox.in": ["192.168.255.1", 9001], - "meet.secubox.in": ["127.0.0.1", 9088], - "git.secubox.in": ["192.168.255.1", 3001], - "social.secubox.in": ["192.168.255.1", 8484], - "jellyfin.secubox.in": ["192.168.255.31", 8096], - "xmpp.secubox.in": ["127.0.0.1", 5280], - "hub.secubox.in": ["192.168.255.1", 8950], - "portal.secubox.in": ["192.168.255.1", 8950], - "cf.gk2.secubox.in": ["192.168.255.1", 8510], - "pub.gk2.secbox.in": ["127.0.0.1", 8938], - "pub.gk2.secubox.in": ["127.0.0.1", 8938], - "lunaquar.gk2.secubox.in": ["127.0.0.1", 8939], - "equa.gk2.secubox.in": ["127.0.0.1", 8940], - "game.gk2.secubox.in": ["127.0.0.1", 8941], - "virus.gk2.secubox.in": ["127.0.0.1", 8942], - "survie.gk2.secubox.in": ["127.0.0.1", 8943], - "bgp.gk2.secubox.in": ["127.0.0.1", 8944], - "cpi.gk2.secubox.in": ["127.0.0.1", 8946], - "cgv.gk2.secubox.in": ["127.0.0.1", 8945], - "portal.gk2.secubox.in": ["192.168.255.1", 8950], - "stream.gk2.secubox.in": ["127.0.0.1", 8000], - "bdgse.gk2.secubox.in": ["127.0.0.1", 8955], - "lrh.gk2.secubox.in": ["127.0.0.1", 8952], - "bcf.gk2.secubox.in": ["127.0.0.1", 8953], - "camus.gk2.secubox.in": ["127.0.0.1", 8951], - "holo.gk2.secubox.in": ["127.0.0.1", 8947], - "fm.gk2.secubox.in": ["127.0.0.1", 8956], - "dgse.gk2.secubox.in": ["127.0.0.1", 8954], - "hub.gk2.secubox.in": ["192.168.255.1", 8950], - "dcb.gk2.secubox.in": ["127.0.0.1", 8957], - "signaling.gk2.secubox.in": ["192.168.255.1", 8082], - "punk.gk2.secubox.in": ["192.168.255.1", 8948], - "zoom.gk2.secubox.in": ["192.168.255.1", 8962], - "rtdah.gk2.secubox.in": ["192.168.255.1", 8963], - "srtc.gk2.secubox.in": ["192.168.255.1", 8964], - "zkp.gk2.secubox.in": ["192.168.255.1", 8965], - "proofit.gk2.secubox.in": ["192.168.255.1", 8966], - "rcve.gk2.secubox.in": ["192.168.255.1", 8967], - "pent.gk2.secubox.in": ["192.168.255.1", 8968], - "webmail.gk2.secubox.in": ["192.168.255.1", 8027], - "penbd.gk2.secubox.in": ["192.168.255.1", 8969], - "rfg.gk2.secubox.in": ["192.168.255.1", 8970], - "form.gk2.secubox.in": ["192.168.255.1", 8971], - "facb.gk2.secubox.in": ["192.168.255.1", 8972], - "plainte.gk2.secubox.in": ["192.168.255.1", 8973], - "sosint.gk2.secubox.in": ["192.168.255.1", 8974], - "aea.gk2.secubox.in": ["192.168.255.1", 8975], - "siggk.gk2.secubox.in": ["192.168.255.1", 8976], - "devel.maegia.tv": ["127.0.0.1", 8900], - "gandalf.maegia.tv": ["127.0.0.1", 8901], - "c3box.maegia.tv": ["127.0.0.1", 8902], - "cyberzine.maegia.tv": ["127.0.0.1", 8903], - "slides.maegia.tv": ["127.0.0.1", 8905], - "sliders.maegia.tv": ["127.0.0.1", 8904], - "live.maegia.tv": ["127.0.0.1", 8906], - "devel.cybermind.fr": ["127.0.0.1", 8907], - "status.maegia.tv": ["127.0.0.1", 8908], - "bw.maegia.tv": ["127.0.0.1", 8909], - "gk2.maegia.tv": ["127.0.0.1", 8910], - "coin.maegia.tv": ["127.0.0.1", 8911], - "halt.maegia.tv": ["127.0.0.1", 8912], - "oracle.ganimed.fr": ["127.0.0.1", 8915], - "press.cybermood.eu": ["127.0.0.1", 8916], - "comic.secubox.in": ["127.0.0.1", 8918], - "wanted.gk2.secubox.in": ["127.0.0.1", 8920], - "eval.gk2.secubox.in": ["127.0.0.1", 8921], - "geo.gk2.secubox.in": ["127.0.0.1", 8922], - "gondwana.gk2.secubox.in": ["127.0.0.1", 8923], - "clock.gk2.secubox.in": ["127.0.0.1", 8924], - "sdlc.gk2.secubox.in": ["127.0.0.1", 8925], - "gk2.eu": ["127.0.0.1", 8926], - "money.gk2.secubox.in": ["127.0.0.1", 8927], - "apr.gk2.secubox.in": ["127.0.0.1", 8928], - "psy.gk2.secubox.in": ["127.0.0.1", 8929], - "confid.gk2.secubox.in": ["127.0.0.1", 8930], - "flash.gk2.secubox.in": ["127.0.0.1", 8931], - "sa.gk2.secubox.in": ["127.0.0.1", 8933], - "ab.gk2.secubox.in": ["127.0.0.1", 8934], - "fb.gk2.secubox.in": ["127.0.0.1", 8935], - "fwhs.gk2.secubox.in": ["127.0.0.1", 8936], - "raid.gk2.secubox.in": ["127.0.0.1", 8937], - "mku.gk2.secubox.in": ["127.0.0.1", 8932], - "pub.gk2.secbox.in": ["127.0.0.1", 8938], - "lunaquar.gk2.secubox.in": ["127.0.0.1", 8939], - "equa.gk2.secubox.in": ["127.0.0.1", 8940], - "game.gk2.secubox.in": ["127.0.0.1", 8941], - "virus.gk2.secubox.in": ["127.0.0.1", 8942], - "survie.gk2.secubox.in": ["127.0.0.1", 8943], - "bgp.gk2.secubox.in": ["127.0.0.1", 8944], - "cgv.gk2.secubox.in": ["127.0.0.1", 8945], - "cpi.gk2.secubox.in": ["127.0.0.1", 8946], - "holo.gk2.secubox.in": ["127.0.0.1", 8947], - "dgse.gk2.secubox.in": ["127.0.0.1", 8954], - "camus.gk2.secubox.in": ["127.0.0.1", 8951], - "bdgse.gk2.secubox.in": ["127.0.0.1", 8955], - "lrh.gk2.secubox.in": ["127.0.0.1", 8952], - "bcf.gk2.secubox.in": ["127.0.0.1", 8953], - "fm.gk2.secubox.in": ["127.0.0.1", 8956], - "dcb.gk2.secubox.in": ["127.0.0.1", 8957], - "boom.gk2.secubox.in": ["127.0.0.1", 8958], - "punk.gk2.secubox.in": ["127.0.0.1", 8948], - "ccom.gk2.secubox.in": ["127.0.0.1", 8949], - "tuto.gk2.secubox.in": ["127.0.0.1", 8959], - "tdah.gk2.secubox.in": ["127.0.0.1", 8960], - "zlib.gk2.secubox.in": ["127.0.0.1", 8961], - "zoom.gk2.secubox.in": ["127.0.0.1", 8962], - "rtdah.gk2.secubox.in": ["127.0.0.1", 8963], - "srtc.gk2.secubox.in": ["127.0.0.1", 8964], - "zkp.gk2.secubox.in": ["127.0.0.1", 8965], - "proofit.gk2.secubox.in": ["127.0.0.1", 8966], - "rcve.gk2.secubox.in": ["127.0.0.1", 8967], - "pent.gk2.secubox.in": ["127.0.0.1", 8968], - "penbd.gk2.secubox.in": ["127.0.0.1", 8969], - "rfg.gk2.secubox.in": ["127.0.0.1", 8970], - "form.gk2.secubox.in": ["127.0.0.1", 8971], - "facb.gk2.secubox.in": ["127.0.0.1", 8972], - "plainte.gk2.secubox.in": ["127.0.0.1", 8973], - "sosint.gk2.secubox.in": ["127.0.0.1", 8974], - "aea.gk2.secubox.in": ["127.0.0.1", 8975], - "siggk.gk2.secubox.in": ["127.0.0.1", 8976], - "pix.gk2.secubox.in": ["192.168.255.1", 8506], - "wuyun.gk2.secubox.in": ["192.168.255.1", 8503], - "yling.gk2.secubox.in": ["192.168.255.1", 8501], - "bweep.gk2.secubox.in": ["192.168.255.1", 8507], - "bweek.gk2.secubox.in": ["192.168.255.1", 8508], - "bazi.gk2.secubox.in": ["192.168.255.1", 8509], - "BASIC.gk2.secubox.in": ["192.168.255.1", 8509], - "secubox_evolution.gk2.secubox.in": ["192.168.255.1", 8510], - "secubox_control.gk2.secubox.in": ["192.168.255.1", 8511], - "play.gk2.secubox.in": ["192.168.255.1", 8515], - "play.gk2.sb.local": ["192.168.255.1", 8515], - "console.gk2.secubox.in": ["192.168.255.1", 8515], - "hermes.gk2.secubox.in": ["192.168.255.1", 8512], - "fabric.gk2.secubox.in": ["192.168.255.1", 8520], - "fabricator.gk2.secubox.in": ["192.168.255.1", 8520], - "yijing360.gk2.secubox.in": ["192.168.255.1", 8521], - "ftvm.gk2.secubox.in": ["192.168.255.1", 8522], - "cpf.gk2.secubox.in": ["192.168.255.1", 8523], - "pdf.gk2.secubox.in": ["192.168.255.1", 8524], - "papyrus.gk2.secubox.in": ["192.168.255.1", 8525], - "pc.gk2.secubox.in": ["192.168.255.1", 8526], - "osint.gk2.secubox.in": ["192.168.255.1", 8527], - "swg.gk2.secubox.in": ["192.168.255.1", 8513], - "generix.gk2.secubox.in": ["192.168.255.1", 8528], - "generik.gk2.secubox.in": ["192.168.255.1", 8528], - "prompt.gk2.secubox.in": ["192.168.255.1", 8502], - "fanzine.gk2.secubox.in": ["192.168.255.1", 8504], - "gk2.secubox.in": ["192.168.255.1", 8505], - "hub.secubox.in": ["192.168.255.1", 8505], - "portal.secubox.in": ["192.168.255.1", 8505], - "portal.gk2.secubox.in": ["192.168.255.1", 8505], - "hub.gk2.secubox.in": ["192.168.255.1", 8505], - "gk2.gk2.secubox.in": ["192.168.255.1", 8505], - "cybfan.gk2.secubox.in": ["192.168.255.1", 8529], - "tam.gk2.secubox.in": ["192.168.255.1", 8514], - "files_40.gk2.secubox.in": ["192.168.255.1", 8516], - "files_42.gk2.secubox.in": ["192.168.255.1", 8517] + "devel.cybermind.fr": [ + "127.0.0.1", + 8907 + ], + "crt.cybermind.fr": [ + "192.168.255.1", + 8503 + ], + "gandalf.maegia.tv": [ + "127.0.0.1", + 8901 + ], + "c3box.maegia.tv": [ + "127.0.0.1", + 8902 + ], + "devel.maegia.tv": [ + "127.0.0.1", + 8900 + ], + "cyberzine.maegia.tv": [ + "127.0.0.1", + 8903 + ], + "play.maegia.tv": [ + "192.168.255.1", + 8501 + ], + "feed.maegia.tv": [ + "192.168.255.1", + 8081 + ], + "slides.maegia.tv": [ + "127.0.0.1", + 8905 + ], + "sliders.maegia.tv": [ + "127.0.0.1", + 8904 + ], + "live.maegia.tv": [ + "127.0.0.1", + 8906 + ], + "status.maegia.tv": [ + "127.0.0.1", + 8908 + ], + "bw.maegia.tv": [ + "127.0.0.1", + 8909 + ], + "jellyfin.secubox.local": [ + "192.168.255.31", + 8096 + ], + "media.maegia.tv": [ + "192.168.255.31", + 8096 + ], + "gk2.maegia.tv": [ + "127.0.0.1", + 8910 + ], + "coin.maegia.tv": [ + "127.0.0.1", + 8911 + ], + "halt.maegia.tv": [ + "127.0.0.1", + 8912 + ], + "localai.secubox.local": [ + "127.0.0.1", + 8091 + ], + "localai.secubox.in": [ + "127.0.0.1", + 8091 + ], + "gk2.secubox.in": [ + "192.168.255.1", + 8505 + ], + "evolution.gk2.secubox.in": [ + "192.168.255.1", + 8510 + ], + "c3box.sblocal": [ + "192.168.255.1", + 8902 + ], + "evolution.sblocal": [ + "192.168.255.1", + 8510 + ], + "control.gk2.secubox.in": [ + "192.168.255.1", + 8081 + ], + "control.sblocal": [ + "192.168.255.1", + 8511 + ], + "fabric.gk2.secubox.in": [ + "192.168.255.1", + 8520 + ], + "lldh.gk2.secubox.in": [ + "192.168.255.1", + 8914 + ], + "lldh.ganimed.fr": [ + "192.168.255.1", + 8914 + ], + "oracle.ganimed.fr": [ + "127.0.0.1", + 8915 + ], + "press.cybermood.eu": [ + "127.0.0.1", + 8916 + ], + "presse.cybermood.eu": [ + "127.0.0.1", + 8916 + ], + ".gk2.secubox.in": [ + "192.168.255.1", + 4000 + ], + "comic.secubox.in": [ + "127.0.0.1", + 8918 + ], + "console.gk2.secubox.in": [ + "192.168.255.1", + 8515 + ], + "console.gk2.sb.local": [ + "192.168.255.1", + 8081 + ], + "control.gk2.sb.local": [ + "192.168.255.1", + 8081 + ], + "glances.gk2.secubox.in": [ + "192.168.255.1", + 61208 + ], + "glances.gk2.sb.local": [ + "192.168.255.1", + 61208 + ], + "play.gk2.secubox.in": [ + "192.168.255.1", + 8515 + ], + "play.gk2.sb.local": [ + "192.168.255.1", + 8515 + ], + "how2.maegia.tv": [ + "192.168.255.1", + 8919 + ], + "wanted.gk2.secubox.in": [ + "127.0.0.1", + 8920 + ], + "eval.gk2.secubox.in": [ + "127.0.0.1", + 8921 + ], + "bazi.gk2.secubox.in": [ + "192.168.255.1", + 8509 + ], + "geo.gk2.secubox.in": [ + "127.0.0.1", + 8922 + ], + "gondwana.gk2.secubox.in": [ + "127.0.0.1", + 8923 + ], + "social.gk2.secubox.in": [ + "192.168.255.1", + 8484 + ], + "client.gk2.secubox.in": [ + "192.168.255.1", + 4002 + ], + "clock.gk2.secubox.in": [ + "127.0.0.1", + 8924 + ], + "photocloud.gk2.secubox.in": [ + "192.168.255.1", + 8526 + ], + "sdlc.gk2.secubox.in": [ + "127.0.0.1", + 8925 + ], + "gk2.eu": [ + "127.0.0.1", + 8926 + ], + "money.gk2.secubox.in": [ + "127.0.0.1", + 8927 + ], + "apr.gk2.secubox.in": [ + "127.0.0.1", + 8928 + ], + "psy.gk2.secubox.in": [ + "127.0.0.1", + 8929 + ], + "confid.gk2.secubox.in": [ + "127.0.0.1", + 8930 + ], + "tube.gk2.secubox.in": [ + "192.168.255.1", + 9001 + ], + "flash.gk2.secubox.in": [ + "127.0.0.1", + 8931 + ], + "generix.gk2.secubox.in": [ + "192.168.255.1", + 8528 + ], + "sa.gk2.secubox.in": [ + "127.0.0.1", + 8933 + ], + "ab.gk2.secubox.in": [ + "127.0.0.1", + 8934 + ], + "fb.gk2.secubox.in": [ + "127.0.0.1", + 8935 + ], + "fwhs.gk2.secubox.in": [ + "127.0.0.1", + 8936 + ], + "raid.gk2.secubox.in": [ + "127.0.0.1", + 8937 + ], + "cloud.gk2.secubox.in": [ + "192.168.255.1", + 8080 + ], + "mku.gk2.secubox.in": [ + "127.0.0.1", + 8932 + ], + "meet.gk2.secubox.in": [ + "127.0.0.1", + 9088 + ], + "hq.secubox.in": [ + "192.168.255.1", + 8081 + ], + "relay.gk2.secubox.in": [ + "192.168.255.1", + 8891 + ], + "jellyfin.gk2.secubox.in": [ + "192.168.255.31", + 8096 + ], + "xmpp.gk2.secubox.in": [ + "127.0.0.1", + 5280 + ], + "git.gk2.secubox.in": [ + "192.168.255.1", + 3001 + ], + "webmail.secubox.in": [ + "192.168.255.1", + 8027 + ], + "cloud.secubox.in": [ + "192.168.255.1", + 8080 + ], + "tube.secubox.in": [ + "192.168.255.1", + 9001 + ], + "meet.secubox.in": [ + "127.0.0.1", + 9088 + ], + "git.secubox.in": [ + "192.168.255.1", + 3001 + ], + "social.secubox.in": [ + "192.168.255.1", + 8484 + ], + "jellyfin.secubox.in": [ + "192.168.255.31", + 8096 + ], + "xmpp.secubox.in": [ + "127.0.0.1", + 5280 + ], + "hub.secubox.in": [ + "192.168.255.1", + 8505 + ], + "portal.secubox.in": [ + "192.168.255.1", + 8505 + ], + "cf.gk2.secubox.in": [ + "192.168.255.1", + 8510 + ], + "pub.gk2.secbox.in": [ + "127.0.0.1", + 8938 + ], + "pub.gk2.secubox.in": [ + "127.0.0.1", + 8938 + ], + "lunaquar.gk2.secubox.in": [ + "127.0.0.1", + 8939 + ], + "equa.gk2.secubox.in": [ + "127.0.0.1", + 8940 + ], + "game.gk2.secubox.in": [ + "127.0.0.1", + 8941 + ], + "virus.gk2.secubox.in": [ + "127.0.0.1", + 8942 + ], + "survie.gk2.secubox.in": [ + "127.0.0.1", + 8943 + ], + "bgp.gk2.secubox.in": [ + "127.0.0.1", + 8944 + ], + "cpi.gk2.secubox.in": [ + "127.0.0.1", + 8946 + ], + "cgv.gk2.secubox.in": [ + "127.0.0.1", + 8945 + ], + "portal.gk2.secubox.in": [ + "192.168.255.1", + 8505 + ], + "stream.gk2.secubox.in": [ + "127.0.0.1", + 8000 + ], + "bdgse.gk2.secubox.in": [ + "127.0.0.1", + 8955 + ], + "lrh.gk2.secubox.in": [ + "127.0.0.1", + 8952 + ], + "bcf.gk2.secubox.in": [ + "127.0.0.1", + 8953 + ], + "camus.gk2.secubox.in": [ + "127.0.0.1", + 8951 + ], + "holo.gk2.secubox.in": [ + "127.0.0.1", + 8947 + ], + "fm.gk2.secubox.in": [ + "127.0.0.1", + 8956 + ], + "dgse.gk2.secubox.in": [ + "127.0.0.1", + 8954 + ], + "hub.gk2.secubox.in": [ + "192.168.255.1", + 8505 + ], + "dcb.gk2.secubox.in": [ + "127.0.0.1", + 8957 + ], + "signaling.gk2.secubox.in": [ + "192.168.255.1", + 8082 + ], + "punk.gk2.secubox.in": [ + "127.0.0.1", + 8948 + ], + "zoom.gk2.secubox.in": [ + "127.0.0.1", + 8962 + ], + "rtdah.gk2.secubox.in": [ + "127.0.0.1", + 8963 + ], + "srtc.gk2.secubox.in": [ + "127.0.0.1", + 8964 + ], + "zkp.gk2.secubox.in": [ + "127.0.0.1", + 8965 + ], + "proofit.gk2.secubox.in": [ + "127.0.0.1", + 8966 + ], + "rcve.gk2.secubox.in": [ + "127.0.0.1", + 8967 + ], + "pent.gk2.secubox.in": [ + "127.0.0.1", + 8968 + ], + "webmail.gk2.secubox.in": [ + "192.168.255.1", + 8027 + ], + "penbd.gk2.secubox.in": [ + "127.0.0.1", + 8969 + ], + "rfg.gk2.secubox.in": [ + "127.0.0.1", + 8970 + ], + "form.gk2.secubox.in": [ + "127.0.0.1", + 8971 + ], + "facb.gk2.secubox.in": [ + "127.0.0.1", + 8972 + ], + "plainte.gk2.secubox.in": [ + "127.0.0.1", + 8973 + ], + "sosint.gk2.secubox.in": [ + "127.0.0.1", + 8974 + ], + "aea.gk2.secubox.in": [ + "127.0.0.1", + 8975 + ], + "siggk.gk2.secubox.in": [ + "127.0.0.1", + 8976 + ], + "boom.gk2.secubox.in": [ + "127.0.0.1", + 8958 + ], + "ccom.gk2.secubox.in": [ + "127.0.0.1", + 8949 + ], + "tuto.gk2.secubox.in": [ + "127.0.0.1", + 8959 + ], + "tdah.gk2.secubox.in": [ + "127.0.0.1", + 8960 + ], + "zlib.gk2.secubox.in": [ + "127.0.0.1", + 8961 + ], + "pix.gk2.secubox.in": [ + "192.168.255.1", + 8506 + ], + "wuyun.gk2.secubox.in": [ + "192.168.255.1", + 8503 + ], + "yling.gk2.secubox.in": [ + "192.168.255.1", + 8501 + ], + "bweep.gk2.secubox.in": [ + "192.168.255.1", + 8507 + ], + "bweek.gk2.secubox.in": [ + "192.168.255.1", + 8508 + ], + "BASIC.gk2.secubox.in": [ + "192.168.255.1", + 8509 + ], + "secubox_evolution.gk2.secubox.in": [ + "192.168.255.1", + 8510 + ], + "secubox_control.gk2.secubox.in": [ + "192.168.255.1", + 8511 + ], + "hermes.gk2.secubox.in": [ + "192.168.255.1", + 8512 + ], + "fabricator.gk2.secubox.in": [ + "192.168.255.1", + 8520 + ], + "yijing360.gk2.secubox.in": [ + "192.168.255.1", + 8521 + ], + "ftvm.gk2.secubox.in": [ + "192.168.255.1", + 8522 + ], + "cpf.gk2.secubox.in": [ + "192.168.255.1", + 8523 + ], + "pdf.gk2.secubox.in": [ + "192.168.255.1", + 8524 + ], + "papyrus.gk2.secubox.in": [ + "192.168.255.1", + 8525 + ], + "pc.gk2.secubox.in": [ + "192.168.255.1", + 8526 + ], + "osint.gk2.secubox.in": [ + "192.168.255.1", + 8527 + ], + "swg.gk2.secubox.in": [ + "192.168.255.1", + 8513 + ], + "generik.gk2.secubox.in": [ + "192.168.255.1", + 8528 + ], + "prompt.gk2.secubox.in": [ + "192.168.255.1", + 8502 + ], + "fanzine.gk2.secubox.in": [ + "192.168.255.1", + 8504 + ], + "gk2.gk2.secubox.in": [ + "192.168.255.1", + 8505 + ], + "cybfan.gk2.secubox.in": [ + "192.168.255.1", + 8529 + ], + "tam.gk2.secubox.in": [ + "192.168.255.1", + 8514 + ], + "files_40.gk2.secubox.in": [ + "192.168.255.1", + 8516 + ], + "files_42.gk2.secubox.in": [ + "192.168.255.1", + 8517 + ], + "arm.gk2.secubox.in": [ + "192.168.255.1", + 8977 + ], + "armada.gk2.secubox.in": [ + "192.168.255.1", + 8978 + ], + "files42.gk2.secubox.in": [ + "192.168.255.1", + 8517 + ] } diff --git a/package/secubox/luci-app-secubox-portal/root/usr/libexec/rpcd/luci.secubox-portal b/package/secubox/luci-app-secubox-portal/root/usr/libexec/rpcd/luci.secubox-portal index f9495580..596cdb39 100644 --- a/package/secubox/luci-app-secubox-portal/root/usr/libexec/rpcd/luci.secubox-portal +++ b/package/secubox/luci-app-secubox-portal/root/usr/libexec/rpcd/luci.secubox-portal @@ -284,28 +284,61 @@ method_get_containers() { json_dump } -# Method: get_vhosts +# Method: get_vhosts - optimized single-pass awk parsing method_get_vhosts() { - json_init - json_add_array "vhosts" - - for vh in $(uci show haproxy 2>/dev/null | grep "=vhost" | sed 's/haproxy\.//;s/=vhost//'); do - local domain=$(uci -q get haproxy.$vh.domain) - local backend=$(uci -q get haproxy.$vh.backend) - local enabled=$(uci -q get haproxy.$vh.enabled) - local ssl=$(uci -q get haproxy.$vh.ssl) - - json_add_object "" - json_add_string "id" "$vh" - json_add_string "domain" "$domain" - json_add_string "backend" "$backend" - json_add_string "enabled" "${enabled:-0}" - json_add_string "ssl" "${ssl:-0}" - json_close_object - done - - json_close_array - json_dump + uci show haproxy 2>/dev/null | awk ' + BEGIN { + printf "{\"vhosts\":[" + first = 1 + } + /=vhost$/ { + # Output previous vhost if we have one + if (current_vh != "") { + if (first == 0) printf "," + first = 0 + if (enabled == "") enabled = "0" + if (ssl == "") ssl = "0" + printf "{\"id\":\"%s\",\"domain\":\"%s\",\"backend\":\"%s\",\"enabled\":\"%s\",\"ssl\":\"%s\"}", current_vh, domain, backend, enabled, ssl + } + # Start new vhost + gsub(/^haproxy\./, "", $0) + gsub(/=vhost$/, "", $0) + current_vh = $0 + domain = "" + backend = "" + enabled = "" + ssl = "" + } + /\.domain=/ { + gsub(/.*\.domain=/, "", $0) + gsub(/'\''/, "", $0) + domain = $0 + } + /\.backend=/ { + gsub(/.*\.backend=/, "", $0) + gsub(/'\''/, "", $0) + backend = $0 + } + /\.enabled=/ { + gsub(/.*\.enabled=/, "", $0) + gsub(/'\''/, "", $0) + enabled = $0 + } + /\.ssl=/ { + gsub(/.*\.ssl=/, "", $0) + gsub(/'\''/, "", $0) + ssl = $0 + } + END { + # Output last vhost + if (current_vh != "") { + if (first == 0) printf "," + if (enabled == "") enabled = "0" + if (ssl == "") ssl = "0" + printf "{\"id\":\"%s\",\"domain\":\"%s\",\"backend\":\"%s\",\"enabled\":\"%s\",\"ssl\":\"%s\"}", current_vh, domain, backend, enabled, ssl + } + printf "]}" + }' } # List available methods