├── .github └── workflows │ └── init-submodules.yml ├── .gitmodules ├── README.md ├── adguardhome ├── Makefile └── files │ ├── adguardhome.config │ └── adguardhome.init ├── ddns-go ├── Makefile └── file │ ├── ddns-go.init │ └── luci-ddns-go.uci-default ├── ffmpeg-remux └── Makefile ├── homebox └── Makefile ├── luci-app-adguardhome ├── Makefile ├── README.md ├── luasrc │ ├── controller │ │ └── AdGuardHome.lua │ ├── model │ │ └── cbi │ │ │ └── AdGuardHome │ │ │ ├── base.lua │ │ │ ├── log.lua │ │ │ └── manual.lua │ └── view │ │ └── AdGuardHome │ │ ├── AdGuardHome_check.htm │ │ ├── AdGuardHome_chpass.htm │ │ ├── AdGuardHome_status.htm │ │ ├── log.htm │ │ └── yamleditor.htm ├── po │ ├── zh-cn │ │ └── AdGuardHome.po │ └── zh_Hans │ │ └── AdGuardHome.po └── root │ ├── etc │ ├── AdGuardHome.yaml │ ├── config │ │ └── AdGuardHome │ ├── init.d │ │ └── AdGuardHome │ └── uci-defaults │ │ └── 40_luci-AdGuardHome │ ├── usr │ └── share │ │ ├── AdGuardHome │ │ ├── AdGuardHome_template.yaml │ │ ├── addhost.sh │ │ ├── firewall.start │ │ ├── getsyslog.sh │ │ ├── gfw2adg.sh │ │ ├── links.txt │ │ ├── tailto.sh │ │ ├── update_core.sh │ │ ├── waitnet.sh │ │ └── watchconfig.sh │ │ └── rpcd │ │ └── acl.d │ │ └── luci-app-adguardhome.json │ └── www │ └── luci-static │ └── resources │ ├── codemirror │ ├── addon │ │ └── fold │ │ │ ├── foldcode.js │ │ │ ├── foldgutter.css │ │ │ ├── foldgutter.js │ │ │ └── indent-fold.js │ ├── lib │ │ ├── codemirror.css │ │ └── codemirror.js │ ├── mode │ │ └── yaml │ │ │ └── yaml.js │ └── theme │ │ └── dracula.css │ └── twin-bcrypt.min.js ├── luci-app-advanced ├── Makefile ├── htdocs │ └── luci-static │ │ └── resources │ │ └── fileassistant │ │ ├── fb.css │ │ ├── fb.js │ │ ├── file-icon.png │ │ ├── folder-icon.png │ │ └── link-icon.png ├── luasrc │ ├── controller │ │ ├── advanced.lua │ │ └── fileassistant.lua │ ├── model │ │ └── cbi │ │ │ └── advanced.lua │ └── view │ │ ├── fileassistant.htm │ │ └── filebrowser.htm └── root │ ├── bin │ ├── ipmode4 │ ├── ipmode6 │ ├── normalmode │ └── nuc │ ├── etc │ ├── config │ │ └── advanced │ └── uci-defaults │ │ └── 40_luci-fb │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-advanced.json ├── luci-app-arpbind ├── Makefile ├── luasrc │ ├── controller │ │ └── arpbind.lua │ └── model │ │ └── cbi │ │ └── arpbind.lua ├── po │ ├── zh-cn │ │ └── arpbind.po │ └── zh_Hans │ │ └── arpbind.po └── root │ ├── etc │ ├── hotplug.d │ │ └── iface │ │ │ └── 50-arpbind │ ├── init.d │ │ └── arpbind │ └── uci-defaults │ │ └── luci-arpbind │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-arpbind.json ├── luci-app-chatgpt ├── Makefile ├── luasrc │ ├── controller │ │ └── chatgpt-web.lua │ ├── model │ │ └── cbi │ │ │ ├── chatgpt-web.lua │ │ │ └── chatgpt.lua │ └── view │ │ └── chatgpt-web.htm ├── po │ ├── zh-cn │ │ └── chatgpt-web.po │ └── zh_Hans │ │ └── chatgpt-web.po └── root │ ├── etc │ └── config │ │ └── chatgpt-web │ ├── usr │ └── share │ │ └── rpcd │ │ └── acl.d │ │ └── luci-app-chatgpt-web.json │ └── www │ └── luci-static │ └── chatgpt-web │ ├── 11.11.1github.min.css │ ├── chatgpt-web.css │ ├── github-dark-markdown-light.css │ ├── github-markdown-light.css │ ├── github-markdown-light.min.css │ ├── github.min.css │ ├── highlight.min.js │ ├── katex.min.css │ ├── katex.min.js │ ├── list.json │ ├── markdown-it-link-attributes.min.js │ ├── markdown-it.min.js │ ├── mermaid.min.js │ ├── mobile-drag-drop3.0.0-rc.0.min.js │ ├── mobile-drag-drop3.0.0-rc.0default.css │ ├── notyf.min.css │ ├── notyf3.10.0notyf.min.js │ ├── prompts-zh-TW.json │ ├── prompts-zh.json │ ├── prompts.csv │ ├── texmath.css │ ├── texmath.js │ └── user │ ├── boy.jpg │ ├── boy2.jpg │ ├── boy3.jpg │ ├── cartoon.jpg │ ├── cartoonboy.jpg │ ├── cartoonboy2.jpg │ ├── cartoongirl.jpg │ ├── cartoongirl2.jpg │ ├── cartoongirl3.jpg │ ├── dog.jpg │ ├── girl.jpg │ ├── girl2.jpg │ └── girl3.jpg ├── luci-app-cupsd ├── LICENSE ├── README.md ├── cups-bjnp │ ├── Makefile │ └── src │ │ ├── AUTHORS │ │ ├── COPYING │ │ ├── ChangeLog │ │ ├── INSTALL │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── NEWS │ │ ├── README │ │ ├── README.levels │ │ ├── TODO │ │ ├── acinclude.m4 │ │ ├── aclocal.m4 │ │ ├── bjnp-commands.c │ │ ├── bjnp-commands.h │ │ ├── bjnp-debug.c │ │ ├── bjnp-discover.c │ │ ├── bjnp-io.c │ │ ├── bjnp-io.h │ │ ├── bjnp-levels.c │ │ ├── bjnp-protocol.h │ │ ├── bjnp-runloop.c │ │ ├── bjnp-utils.c │ │ ├── bjnp.c │ │ ├── bjnp.h │ │ ├── compile │ │ ├── config.h.in │ │ ├── configure │ │ ├── configure.ac │ │ ├── cups-bjnp.spec │ │ ├── depcomp │ │ ├── install-sh │ │ └── missing ├── cups-dymo │ ├── Makefile │ └── patches │ │ ├── 0001-Add-missing-headers-fixes-error-ppd_file_t.patch │ │ └── 0002-Add-missing-backend-header-fixes-cupsBackChannelRead.patch ├── cups-opfilter │ ├── Makefile │ └── patches │ │ └── 0001-Remove-PDF-related-filters.patch ├── cups │ ├── Makefile │ ├── README.md │ └── files │ │ ├── cupsd.config │ │ ├── cupsd.init │ │ └── etc │ │ └── cups │ │ ├── classes.conf │ │ ├── client.conf │ │ ├── cupsd.conf │ │ └── printers.conf └── luci-app-cupsd │ ├── Makefile │ ├── luasrc │ ├── controller │ │ └── cupsd.lua │ ├── model │ │ └── cbi │ │ │ └── cupsd │ │ │ └── basic.lua │ └── view │ │ └── cupsd_status.htm │ └── root │ ├── etc │ └── uci-defaults │ │ └── luci-cupsd │ ├── usr │ └── share │ │ └── rpcd │ │ └── acl.d │ │ └── luci-app-cupsd.json │ └── www │ └── cups.pdf ├── luci-app-ddns-go ├── Makefile ├── htdocs │ └── luci-static │ │ └── resources │ │ └── view │ │ └── ddns-go │ │ ├── config.js │ │ ├── ddns-go.js │ │ └── log.js ├── po │ ├── templates │ │ └── ddns-go.pot │ └── zh_Hans │ │ └── ddns-go.po └── root │ ├── etc │ ├── config │ │ └── ddns-go │ └── ddns-go │ │ ├── ddns-go-config.yaml │ │ └── localtime │ └── usr │ ├── libexec │ └── ddns-go-call │ └── share │ ├── ddns-go │ └── ddns-go-default.yaml │ ├── luci │ └── menu.d │ │ └── luci-app-ddns-go.json │ └── rpcd │ └── acl.d │ └── luci-app-ddns-go.json ├── luci-app-dockerman ├── Makefile ├── depends.lst ├── htdocs │ └── luci-static │ │ └── resources │ │ └── dockerman │ │ ├── containers.svg │ │ ├── file-icon.png │ │ ├── file-manager.css │ │ ├── folder-icon.png │ │ ├── images.svg │ │ ├── link-icon.png │ │ ├── networks.svg │ │ ├── tar.min.js │ │ └── volumes.svg ├── luasrc │ ├── controller │ │ └── dockerman.lua │ ├── model │ │ ├── cbi │ │ │ └── dockerman │ │ │ │ ├── configuration.lua │ │ │ │ ├── container.lua │ │ │ │ ├── containers.lua │ │ │ │ ├── images.lua │ │ │ │ ├── networks.lua │ │ │ │ ├── newcontainer.lua │ │ │ │ ├── newnetwork.lua │ │ │ │ ├── overview.lua │ │ │ │ └── volumes.lua │ │ └── docker.lua │ └── view │ │ └── dockerman │ │ ├── apply_widget.htm │ │ ├── cbi │ │ ├── inlinebutton.htm │ │ ├── inlinevalue.htm │ │ ├── namedsection.htm │ │ └── xfvalue.htm │ │ ├── container.htm │ │ ├── container_console.htm │ │ ├── container_file_manager.htm │ │ ├── container_stats.htm │ │ ├── containers_running_stats.htm │ │ ├── images_import.htm │ │ ├── images_load.htm │ │ ├── logs.htm │ │ ├── newcontainer_resolve.htm │ │ ├── overview.htm │ │ └── volume_size.htm ├── po │ ├── templates │ │ └── dockerman.pot │ ├── zh-cn │ │ └── dockerman.po │ └── zh_Hans ├── postinst └── root │ ├── etc │ ├── init.d │ │ └── dockerman │ └── uci-defaults │ │ └── luci-app-dockerman │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-dockerman.json ├── luci-app-eqosplus ├── Makefile ├── luasrc │ ├── controller │ │ └── eqosplus.lua │ ├── model │ │ └── cbi │ │ │ └── eqosplus.lua │ └── view │ │ └── eqosplus │ │ ├── eqosplus.htm │ │ └── index.htm ├── po │ ├── zh-cn │ │ └── eqosplus.po │ └── zh_Hans │ │ └── eqosplus.po └── root │ ├── etc │ ├── config │ │ └── eqosplus │ ├── init.d │ │ └── eqosplus │ └── uci-defaults │ │ └── luci-eqosplus │ └── usr │ ├── bin │ ├── eqosplus │ └── eqosplusctrl │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-eqosplus.json ├── luci-app-fancontrol ├── Makefile ├── luasrc │ ├── controller │ │ └── fancontrol.lua │ ├── model │ │ └── cbi │ │ │ └── fancontrol.lua │ └── view │ │ └── fancontrol │ │ └── fancontrol_status.htm └── root │ ├── etc │ ├── config │ │ └── fancontrol │ └── init.d │ │ └── fancontrol │ └── usr │ └── sbin │ ├── fancontrol │ └── pwmconfig ├── luci-app-fileassistant ├── Makefile ├── htdocs │ └── luci-static │ │ └── resources │ │ └── fileassistant │ │ ├── fb.css │ │ ├── fb.js │ │ ├── file-icon.png │ │ ├── folder-icon.png │ │ └── link-icon.png ├── luasrc │ ├── controller │ │ └── fileassistant.lua │ └── view │ │ └── fileassistant.htm └── root │ ├── etc │ └── uci-defaults │ │ └── 40_luci-fb │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-fileassistant.json ├── luci-app-netspeedtest ├── LICENSE ├── Makefile ├── htdocs │ └── luci-static │ │ └── resources │ │ └── view │ │ └── netspeedtest │ │ ├── homebox.js │ │ ├── iperf3.js │ │ ├── logs.js │ │ ├── openspeedtest.js │ │ └── speedtest.js ├── po │ ├── templates │ │ └── netspeedtest.pot │ └── zh_Hans │ │ └── netspeedtest.po └── root │ ├── etc │ ├── init.d │ │ └── netspeedtest │ └── uci-defaults │ │ └── 99_netspeedtest │ └── usr │ ├── lib │ └── netspeedtest │ │ └── speedtest │ └── share │ ├── luci │ └── menu.d │ │ └── luci-app-netspeedtest.json │ └── rpcd │ └── acl.d │ └── luci-app-netspeedtest.json ├── luci-app-nft-timecontrol ├── Makefile ├── luasrc │ ├── controller │ │ └── timecontrol.lua │ ├── model │ │ └── cbi │ │ │ └── timecontrol.lua │ └── view │ │ └── timecontrol │ │ ├── index.htm │ │ └── timecontrol.htm ├── po │ ├── zh-cn │ │ └── timecontrol.po │ └── zh_Hans │ │ └── timecontrol.po └── root │ ├── etc │ ├── init.d │ │ └── timecontrol │ └── uci-defaults │ │ └── luci-timecontrol │ └── usr │ ├── bin │ ├── timecontrol │ └── timecontrolctrl │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-timecontrol.json ├── luci-app-parentcontrol ├── Makefile ├── luasrc │ ├── controller │ │ └── parentcontrol.lua │ ├── model │ │ └── cbi │ │ │ └── parentcontrol │ │ │ ├── protocol.lua │ │ │ ├── time.lua │ │ │ └── weburl.lua │ └── view │ │ └── parentcontrol │ │ ├── index.htm │ │ └── parentcontrol.htm ├── po │ ├── zh-cn │ │ └── parentcontrol.po │ └── zh_Hans │ │ └── parentcontrol.po └── root │ ├── etc │ ├── config │ │ └── parentcontrol │ ├── hotplug.d │ │ └── iface │ │ │ └── 97-parentcontrol │ ├── init.d │ │ └── parentcontrol │ ├── parentcontrol.include │ ├── parentcontrol │ │ ├── black.list │ │ └── white.list │ └── uci-defaults │ │ └── luci-app-parentcontrol │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-parentcontrol.json ├── luci-app-pppoe-server ├── Makefile ├── luasrc │ ├── controller │ │ └── pppoe-server.lua │ ├── model │ │ └── cbi │ │ │ └── pppoe-server │ │ │ ├── online.lua │ │ │ ├── settings.lua │ │ │ └── users.lua │ └── view │ │ └── pppoe-server │ │ ├── index.htm │ │ └── status.htm ├── po │ └── zh-cn │ │ └── pppoe-server.po └── root │ ├── etc │ ├── config │ │ └── pppoe-server │ ├── init.d │ │ └── pppoe-server │ └── uci-defaults │ │ └── luci-app-pppoe-server │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-pppoe-server.json ├── luci-app-smartdns ├── Makefile ├── luasrc │ ├── controller │ │ └── smartdns.lua │ ├── model │ │ ├── cbi │ │ │ └── smartdns │ │ │ │ ├── smartdns.lua │ │ │ │ └── upstream.lua │ │ └── smartdns.lua │ └── view │ │ └── smartdns │ │ └── smartdns_status.htm ├── po │ ├── zh-cn │ │ └── smartdns.po │ └── zh_Hans └── root │ └── etc │ └── uci-defaults │ └── 50_luci-smartdns ├── luci-app-socat ├── Makefile ├── luasrc │ ├── controller │ │ └── socat.lua │ ├── model │ │ └── cbi │ │ │ └── socat │ │ │ ├── config.lua │ │ │ └── index.lua │ └── view │ │ └── socat │ │ ├── list_status.htm │ │ └── status.htm ├── po │ ├── zh-cn │ │ └── socat.po │ └── zh_Hans │ │ └── socat.po └── root │ ├── etc │ ├── config │ │ └── socat │ ├── init.d │ │ ├── luci_socat │ │ └── socat │ └── uci-defaults │ │ └── luci-app-socat │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-socat.json ├── luci-app-switch-lan-play ├── Makefile └── luasrc │ ├── controller │ └── switchlanplay.lua │ └── model │ └── cbi │ └── switchlanplay.lua ├── luci-app-syncdial ├── Makefile ├── luasrc │ ├── controller │ │ └── syncdial.lua │ ├── model │ │ └── cbi │ │ │ └── syncdial.lua │ └── view │ │ └── syncdial │ │ └── redial_button.htm └── root │ ├── bin │ └── genwancfg │ ├── etc │ ├── config │ │ └── syncdial │ ├── hotplug.d │ │ └── iface │ │ │ ├── 01-dialcheck │ │ │ └── 01-mvifcreate │ └── uci-defaults │ │ └── luci-syncdial │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-syncdial.json ├── luci-app-upnp ├── Makefile ├── luasrc │ ├── controller │ │ └── upnp.lua │ ├── model │ │ └── cbi │ │ │ └── upnp │ │ │ └── upnp.lua │ └── view │ │ ├── admin_status │ │ └── index │ │ │ └── upnp.htm │ │ └── upnp_status.htm ├── po │ ├── zh-cn │ │ └── upnp.po │ ├── zh-tw │ │ └── upnp.po │ └── zh_Hans │ │ └── upnp.po └── root │ ├── etc │ └── uci-defaults │ │ └── 40_luci-miniupnp │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-upnp.json ├── luci-app-virtualhere ├── Makefile ├── bin │ ├── vhusbdarm │ ├── vhusbdarm64 │ ├── vhusbdmipsel │ └── vhusbdx86 ├── luasrc │ ├── controller │ │ └── vhusbd.lua │ ├── model │ │ └── cbi │ │ │ └── vhusbd.lua │ └── view │ │ └── vhusbd │ │ └── status.htm └── root │ └── etc │ ├── config │ └── vhusbd │ ├── init.d │ └── vhusbd │ └── uci-defaults │ └── luci-vhusbd ├── luci-app-vusb ├── README.md ├── luci-app-vusb │ ├── Makefile │ ├── htdocs │ │ └── luci-static │ │ │ └── resources │ │ │ └── view │ │ │ └── vusb │ │ │ └── vusb.js │ └── root │ │ └── usr │ │ └── share │ │ ├── luci │ │ └── menu.d │ │ │ └── luci-app-vusb.json │ │ └── rpcd │ │ └── acl.d │ │ └── luci-app-vusb.json └── vusb │ ├── Makefile │ └── files │ ├── vhusbdarm │ ├── vhusbdarm64 │ ├── vhusbdmipsel │ ├── vhusbdx86 │ ├── vusb.conf │ └── vusb.init ├── luci-app-watchdog ├── Makefile ├── htdocs │ └── luci-static │ │ └── resources │ │ └── view │ │ └── watchdog │ │ ├── basic.js │ │ └── log.js ├── po │ ├── templates │ │ └── ddns-go.pot │ └── zh_Hans │ │ └── watchdog.po └── root │ ├── etc │ ├── config │ │ └── watchdog │ └── init.d │ │ └── watchdog │ └── usr │ ├── libexec │ └── watchdog-call │ └── share │ ├── luci │ └── menu.d │ │ └── luci-app-watchdog.json │ ├── rpcd │ └── acl.d │ │ └── luci-app-watchdog.json │ └── watchdog │ ├── api │ ├── device_aliases.list │ ├── ip_attribution.list │ ├── ip_blacklist │ ├── ipv4.list │ └── ipv6.list │ └── watchdog ├── luci-app-wifidog ├── Makefile ├── luasrc │ ├── controller │ │ └── wifidog.lua │ └── model │ │ └── cbi │ │ └── wifidog.lua ├── po │ └── zh-cn │ │ └── wifidog.po └── root │ └── etc │ ├── config │ └── wifidog │ └── uci-defaults │ └── luci-wifidog ├── luci-app-wolplus ├── Makefile ├── luasrc │ ├── controller │ │ └── wolplus.lua │ ├── model │ │ └── cbi │ │ │ └── wolplus.lua │ └── view │ │ └── wolplus │ │ ├── awake.htm │ │ └── index.htm ├── po │ ├── zh-cn │ │ └── wolplus.po │ └── zh_Hans │ │ └── wolplus.po └── root │ ├── etc │ ├── config │ │ └── wolplus │ └── uci-defaults │ │ └── luci-app-wolplus │ └── usr │ └── share │ └── rpcd │ └── acl.d │ └── luci-app-wolplus.json ├── luci-lib-ipkg ├── Makefile └── luasrc │ └── model │ ├── ipkg.lua │ └── ipkg.luadoc ├── smartdns ├── Makefile └── conf │ ├── custom.conf │ └── smartdns.conf ├── speedtest-cli └── Makefile ├── switch-lan-play ├── Makefile └── files │ ├── switchlanplay.config │ └── switchlanplay.init ├── watchcat ├── Makefile └── files │ ├── migrate-watchcat │ ├── watchcat.config │ ├── watchcat.init │ └── watchcat.sh └── 插件说明.txt /.github/workflows/init-submodules.yml: -------------------------------------------------------------------------------- 1 | name: Update Submodules 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | update-submodules: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout repository 16 | uses: actions/checkout@v3 17 | with: 18 | submodules: 'recursive' 19 | persist-credentials: true 20 | fetch-depth: 0 21 | token: ${{ secrets.GITHUB_TOKEN }} 22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 23 | 24 | 25 | - name: Debug submodules 26 | run: | 27 | git submodule status 28 | git status 29 | git submodule init 30 | git submodule update 31 | - name: Commit submodule updates (if any) 32 | run: | 33 | git config --global user.name "GitHub Actions" 34 | git config --global user.email "actions@github.com" 35 | git add . 36 | if git diff-index --quiet HEAD --; then 37 | echo "No changes to commit." 38 | else 39 | git commit -m "Update submodules" 40 | git push origin main 41 | fi 42 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "luci-app-kucat-config"] 2 | path = luci-app-kucat-config 3 | url = https://github.com/sirpdboy/luci-app-kucat-config.git 4 | 5 | [submodule "luci-theme-kucat"] 6 | path = luci-theme-kucat 7 | url = https://github.com/sirpdboy/luci-theme-kucat.git 8 | 9 | branch = js 10 | [submodule "luci-app-autotimeset"] 11 | path = luci-app-autotimeset 12 | url = https://github.com/sirpdboy/luci-app-autotimeset.git 13 | 14 | [submodule "luci-app-luci-app-partexp"] 15 | path = luci-app-partexp 16 | url = https://github.com/sirpdboy/luci-app-partexp.git 17 | 18 | [submodule "luci-app-timecontrol"] 19 | path = luci-app-timecontrol 20 | url = https://github.com/sirpdboy/luci-app-timecontrol.git 21 | 22 | [submodule "luci-app-netdata"] 23 | path = luci-app-netdata 24 | url = https://github.com/sirpdboy/luci-app-netdata.git 25 | 26 | [submodule "luci-app-netspeedtest"] 27 | path = luci-app-netspeedtest 28 | url = https://github.com/sirpdboy/netspeedtest.git 29 | 30 | [submodule "luci-app-ddns-go"] 31 | path = luci-app-ddns-go 32 | url = https://github.com/sirpdboy/luci-app-ddns-go.git 33 | 34 | [submodule "luci-app-advancedplus"] 35 | path = luci-app-advancedplus 36 | url = https://github.com/sirpdboy/luci-app-advancedplus.git 37 | 38 | [submodule "luci-app-lucky"] 39 | path = luci-app-lucky 40 | url = https://github.com/sirpdboy/luci-app-lucky.git 41 | 42 | [submodule "luci-app-eqosplus"] 43 | path = luci-app-eqosplus 44 | url = https://github.com/sirpdboy/luci-app-eqosplus.git 45 | 46 | [submodule "luci-app-parentcontrol"] 47 | path = luci-app-parentcontrol 48 | url = https://github.com/sirpdboy/luci-app-parentcontrol.git 49 | 50 | [submodule "luci-app-netwizard"] 51 | path = luci-app-netwizard 52 | url = https://github.com/sirpdboy/luci-app-netwizard.git 53 | 54 | [submodule "luci-app-chatgpt-web"] 55 | path = luci-app-chatgpt-web 56 | url = https://github.com/sirpdboy/luci-app-chatgpt-web.git 57 | -------------------------------------------------------------------------------- /adguardhome/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This is free software, licensed under the GNU General Public License v2. 3 | # See /LICENSE for more information. 4 | # 5 | 6 | include $(TOPDIR)/rules.mk 7 | 8 | PKG_NAME:=adguardhome 9 | PKG_VERSION:=0.107.35 10 | PKG_RELEASE:=1 11 | 12 | PKG_SOURCE_PROTO:=git 13 | PKG_SOURCE_VERSION:=v$(PKG_VERSION) 14 | PKG_SOURCE_URL:=https://github.com/AdguardTeam/AdGuardHome 15 | PKG_MIRROR_HASH:=5b21b3ebf396f95a31f9bde6066c98c1329a3faa1aa2fda61c877e1de4244ea5 16 | 17 | PKG_LICENSE:=GPL-3.0-only 18 | PKG_LICENSE_FILES:=LICENSE.txt 19 | PKG_MAINTAINER:=Dobroslaw Kijowski 20 | 21 | PKG_BUILD_DEPENDS:=golang/host node/host node-yarn/host 22 | PKG_BUILD_PARALLEL:=1 23 | PKG_USE_MIPS16:=0 24 | 25 | GO_PKG:=github.com/AdguardTeam/AdGuardHome 26 | GO_PKG_BUILD_PKG:=github.com/AdguardTeam/AdGuardHome 27 | 28 | AGH_BUILD_TIME:=$(shell date -d @$(SOURCE_DATE_EPOCH) +%FT%TZ%z) 29 | AGH_VERSION_PKG:=github.com/AdguardTeam/AdGuardHome/internal/version 30 | GO_PKG_LDFLAGS_X:=$(AGH_VERSION_PKG).channel=release \ 31 | $(AGH_VERSION_PKG).version=$(PKG_SOURCE_VERSION) \ 32 | $(AGH_VERSION_PKG).buildtime=$(AGH_BUILD_TIME) \ 33 | $(AGH_VERSION_PKG).goarm=$(GO_ARM) \ 34 | $(AGH_VERSION_PKG).gomips=$(GO_MIPS) 35 | 36 | include $(INCLUDE_DIR)/package.mk 37 | include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk 38 | 39 | define Package/adguardhome 40 | SECTION:=net 41 | CATEGORY:=Network 42 | TITLE:=Network-wide ads and trackers blocking DNS server 43 | URL:=https://github.com/AdguardTeam/AdGuardHome 44 | DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle 45 | endef 46 | 47 | define Package/adguardhome/conffiles 48 | /etc/adguardhome.yaml 49 | /etc/config/adguardhome 50 | endef 51 | 52 | define Package/adguardhome/description 53 | Free and open source, powerful network-wide ads and trackers blocking DNS server. 54 | endef 55 | 56 | define Build/Compile 57 | ( \ 58 | pushd $(PKG_BUILD_DIR) ; \ 59 | make js-deps js-build ; \ 60 | popd ; \ 61 | $(call GoPackage/Build/Compile) ; \ 62 | ) 63 | endef 64 | 65 | $(eval $(call GoBinPackage,adguardhome)) 66 | $(eval $(call BuildPackage,adguardhome)) 67 | -------------------------------------------------------------------------------- /adguardhome/files/adguardhome.config: -------------------------------------------------------------------------------- 1 | config adguardhome config 2 | option enabled '0' 3 | # Where to store persistent data by AdGuard Home 4 | option workdir /var/adguardhome 5 | -------------------------------------------------------------------------------- /adguardhome/files/adguardhome.init: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | 3 | PROG=/usr/bin/AdGuardHome 4 | 5 | USE_PROCD=1 6 | 7 | # starts after network starts 8 | START=21 9 | # stops before networking stops 10 | STOP=89 11 | 12 | start_service() { 13 | config_load adguardhome 14 | config_get_bool enabled config enabled 15 | config_get WORK_DIR config workdir 16 | 17 | [ "$enabled" -eq "1" ] || exit 2 18 | [ -d "$WORK_DIR" ] || mkdir -m 0755 -p "$WORK_DIR" 19 | 20 | procd_open_instance 21 | procd_set_param command "$PROG" -c /etc/adguardhome.yaml -w "$WORK_DIR" --no-check-update 22 | procd_set_param stdout 1 23 | procd_set_param stderr 1 24 | procd_close_instance 25 | } 26 | -------------------------------------------------------------------------------- /ddns-go/Makefile: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: GPL-3.0-only 2 | # 3 | # Copyright (C) 2021-2023 sirpdboy 4 | # 5 | # This is free software, licensed under the Apache License, Version 2.0 . 6 | # 7 | include $(TOPDIR)/rules.mk 8 | 9 | PKG_NAME:=ddns-go 10 | PKG_VERSION:=6.9.2 11 | PKG_RELEASE:=11 12 | 13 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 14 | PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)? 15 | PKG_HASH:=skip 16 | 17 | 18 | PKG_LICENSE:=AGPL-3.0-only 19 | PKG_LICENSE_FILES:=LICENSE 20 | PKG_MAINTAINER:=herboy2008 21 | 22 | PKG_BUILD_DEPENDS:=golang/host 23 | PKG_BUILD_PARALLEL:=1 24 | PKG_BUILD_FLAGS:=no-mips16 25 | 26 | GO_PKG:=github.com/jeessy2/ddns-go/v6 27 | GO_PKG_LDFLAGS_X:=main.version=$(PKG_VERSION) 28 | 29 | include $(INCLUDE_DIR)/package.mk 30 | include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk 31 | 32 | define Package/ddns-go 33 | TITLE:=A Linux web GUI client of ddns-go 34 | SECTION:=net 35 | CATEGORY:=Network 36 | SUBMENU:=Web Servers/Proxies 37 | DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle 38 | URL:=https://github.com/jeessy2/ddns-go 39 | USERID:=ddns-go:ddns-go 40 | endef 41 | 42 | define Package/ddns-go/description 43 | ddns-go is a automatically obtain your public IPv4 or IPv6 address and resolve it to the corresponding domain name service, 44 | support Alidns Dnspod Cloudflare Hicloud Callback Baiducloud porkbun GoDaddy Google Domains. 45 | endef 46 | 47 | define Package/ddns-go/install 48 | $(call GoPackage/Package/Install/Bin,$(1)) 49 | 50 | $(INSTALL_DIR) $(1)/etc/init.d 51 | $(INSTALL_BIN) $(CURDIR)/file/ddns-go.init $(1)/etc/init.d/ddns-go 52 | 53 | $(INSTALL_DIR) $(1)/etc/uci-defaults 54 | $(INSTALL_BIN) $(CURDIR)/file/luci-ddns-go.uci-default $(1)/etc/uci-defaults/luci-ddns-go 55 | endef 56 | 57 | $(eval $(call GoBinPackage,ddns-go)) 58 | $(eval $(call BuildPackage,ddns-go)) 59 | -------------------------------------------------------------------------------- /ddns-go/file/luci-ddns-go.uci-default: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | [ -s "/etc/ddns-go/localtime" ] && mv -f /etc/ddns-go/localtime /etc/localtime 4 | /etc/init.d/ddns-go enable 5 | /etc/init.d/ddns-go start 6 | rm -f /tmp/luci* 7 | exit 0 8 | -------------------------------------------------------------------------------- /homebox/Makefile: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: GPL-3.0-only 2 | # Copyright (c) 2020-2024 sirpdboy herboy2008@gmail.com 3 | # 4 | 5 | include $(TOPDIR)/rules.mk 6 | 7 | PKG_NAME:=homebox 8 | PKG_VERSION:=0.0.0.2024101306 9 | PKG_REAL_VER:=0.0.0-dev.2024101306 10 | PKG_RELEASE:=1 11 | 12 | ifeq ($(ARCH),aarch64) 13 | H_ARCH:=arm64 14 | 15 | else ifeq ($(ARCH),arm) 16 | H_ARCH:=arm 17 | 18 | else ifeq ($(ARCH),i386) 19 | H_ARCH:=386 20 | 21 | else ifeq ($(ARCH),mips) 22 | H_ARCH:=mips 23 | 24 | else ifeq ($(ARCH),mipsel) 25 | H_ARCH:=mips 26 | 27 | else ifeq ($(ARCH),x86_64) 28 | H_ARCH:=amd64 29 | endif 30 | 31 | include $(INCLUDE_DIR)/package.mk 32 | 33 | define Package/$(PKG_NAME) 34 | SECTION:=net 35 | CATEGORY:=Network 36 | TITLE:=A Toolbox for Home Local Networks Speed Test 37 | URL:=https://github.com/XGHeaven/homebox 38 | DEPENDS:=@(i386||x86_64||arm||aarch64||mipsel||mips) +libstdcpp 39 | endef 40 | 41 | define Package/$(PKG_NAME)/description 42 | A Toolbox for Home Local Networks Speed Test 43 | endef 44 | 45 | define Build/Prepare 46 | mkdir -p $(PKG_BUILD_DIR) 47 | [ ! -f $(PKG_BUILD_DIR)/server-linux-$(H_ARCH).tar.gz ] && wget https://github.com/XGHeaven/homebox/releases/download/v$(PKG_REAL_VER)/server-linux-$(H_ARCH).tar.gz -O $(PKG_BUILD_DIR)/server-linux-$(H_ARCH).tar.gz 48 | tar -xzvf $(PKG_BUILD_DIR)/server-linux-$(H_ARCH).tar.gz -C $(PKG_BUILD_DIR) 49 | endef 50 | 51 | define Build/Compile 52 | endef 53 | 54 | define Package/$(PKG_NAME)/install 55 | $(INSTALL_DIR) $(1)/usr/bin 56 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/server-linux-$(H_ARCH) $(1)/usr/bin/homebox 57 | endef 58 | 59 | $(eval $(call BuildPackage,$(PKG_NAME))) 60 | -------------------------------------------------------------------------------- /luci-app-adguardhome/Makefile: -------------------------------------------------------------------------------- 1 | # This is free software, licensed under the Apache License, Version 2.0 . 2 | # 3 | 4 | include $(TOPDIR)/rules.mk 5 | 6 | PKG_NAME:=luci-app-adguardhome 7 | PKG_MAINTAINER:= 8 | 9 | LUCI_TITLE:=LuCI app for AdGuardHome 10 | LUCI_PKGARCH:=all 11 | LUCI_DEPENDS:=+ca-certs +curl +wget-ssl 12 | LUCI_DESCRIPTION:=LuCI support for AdGuardHome 13 | 14 | 15 | define Package/luci-app-adguardhome/conffiles 16 | /etc/config/AdGuardHome 17 | /etc/AdGuardHome.yaml 18 | endef 19 | 20 | 21 | define Package/luci-app-adguardhome/postinst 22 | #!/bin/sh 23 | chmod +x /usr/share/AdGuardHome/* 24 | chmod +x /etc/init.d/AdGuardHome 25 | /etc/init.d/AdGuardHome enable >/dev/null 2>&1 26 | enable=$(uci get AdGuardHome.AdGuardHome.enabled 2>/dev/null) 27 | if [ "$enable" == "1" ]; then 28 | /etc/init.d/AdGuardHome reload 29 | fi 30 | rm -f /tmp/luci-indexcache 31 | rm -f /tmp/luci-modulecache/* 32 | exit 0 33 | endef 34 | 35 | define Package/luci-app-adguardhome/prerm 36 | #!/bin/sh 37 | if [ -z "$${IPKG_INSTROOT}" ]; then 38 | /etc/init.d/AdGuardHome disable 39 | /etc/init.d/AdGuardHome stop 40 | uci -q batch <<-EOF >/dev/null 2>&1 41 | delete ucitrack.@AdGuardHome[-1] 42 | commit ucitrack 43 | EOF 44 | fi 45 | exit 0 46 | endef 47 | 48 | include $(TOPDIR)/feeds/luci/luci.mk 49 | 50 | # call BuildPackage - OpenWrt buildroot signature 51 | -------------------------------------------------------------------------------- /luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/log.lua: -------------------------------------------------------------------------------- 1 | local fs = require "nixio.fs" 2 | local uci = require"luci.model.uci".cursor() 3 | local f, t 4 | f = SimpleForm("logview") 5 | f.reset = false 6 | f.submit = false 7 | t=f:field(TextValue,"conf") 8 | t.rmempty=true 9 | t.rows=20 10 | t.template="AdGuardHome/log" 11 | t.readonly="readonly" 12 | local logfile=uci:get("AdGuardHome","AdGuardHome","logfile") or "" 13 | t.timereplace=(logfile~="syslog" and logfile~="" ) 14 | t.pollcheck=logfile~="" 15 | fs.writefile("/var/run/lucilogpos", "0") 16 | return f 17 | -------------------------------------------------------------------------------- /luci-app-adguardhome/luasrc/view/AdGuardHome/AdGuardHome_status.htm: -------------------------------------------------------------------------------- 1 | 2 | 25 | 26 |
27 |

28 | <%:Collecting data...%> 29 |

30 |
-------------------------------------------------------------------------------- /luci-app-adguardhome/luasrc/view/AdGuardHome/yamleditor.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 34 | <%fs=require"nixio.fs"%> 35 | <%if fs.access("/tmp/AdGuardHometmpconfig.yaml") then%> 36 | 37 | <%end%> 38 | 39 | <%+cbi/valuefooter%> -------------------------------------------------------------------------------- /luci-app-adguardhome/root/etc/config/AdGuardHome: -------------------------------------------------------------------------------- 1 | 2 | config AdGuardHome 'AdGuardHome' 3 | option configpath '/etc/AdGuardHome.yaml' 4 | option workdir '/etc/AdGuardHome' 5 | option redirect 'dnsmasq-upstream' 6 | option logfile '/tmp/AdGuardHome.log' 7 | option verbose '0' 8 | option binpath '/usr/bin/AdGuardHome' 9 | option enabled '0' 10 | option core_version 'latest' 11 | option waitonboot '1' 12 | option upxflag '-9' 13 | option update_url 'https://github.com/AdguardTeam/AdGuardHome/releases/download/${Cloud_Version}/AdGuardHome_linux_${Arch}.tar.gz' 14 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/etc/uci-defaults/40_luci-AdGuardHome: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | chmod +x /etc/init.d/AdGuardHome 3 | uci -q batch <<-EOF >/dev/null 2>&1 4 | delete ucitrack.@AdGuardHome[-1] 5 | add ucitrack AdGuardHome 6 | set ucitrack.@AdGuardHome[-1].init=AdGuardHome 7 | commit ucitrack 8 | delete AdGuardHome.AdGuardHome.ucitracktest 9 | EOF 10 | 11 | rm -f /tmp/luci-indexcache 12 | exit 0 13 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/AdGuardHome/addhost.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | checkmd5(){ 4 | local nowmd5=$(md5sum /etc/hosts) 5 | nowmd5=${nowmd5%% *} 6 | local lastmd5=$(uci get AdGuardHome.AdGuardHome.hostsmd5 2>/dev/null) 7 | if [ "$nowmd5" != "$lastmd5" ]; then 8 | uci set AdGuardHome.AdGuardHome.hostsmd5="$nowmd5" 9 | uci commit AdGuardHome 10 | [ "$1" == "noreload" ] || /etc/init.d/AdGuardHome reload 11 | fi 12 | } 13 | 14 | [ "$1" == "del" ] && sed -i '/programaddstart/,/programaddend/d' /etc/hosts && checkmd5 "$2" && exit 0 15 | /usr/bin/awk 'BEGIN{ 16 | while ((getline < "/tmp/dhcp.leases") > 0) 17 | { 18 | a[$2]=$4; 19 | } 20 | while (("ip -6 neighbor show | grep -v fe80" | getline) > 0) 21 | { 22 | if (a[$5]) {print $1" "a[$5] >"/tmp/tmphost"; } 23 | } 24 | print "#programaddend" >"/tmp/tmphost"; 25 | }' 26 | grep programaddstart /etc/hosts >/dev/null 2>&1 27 | if [ "$?" == "0" ]; then 28 | sed -i '/programaddstart/,/programaddend/c\#programaddstart' /etc/hosts 29 | sed -i '/programaddstart/'r/tmp/tmphost /etc/hosts 30 | else 31 | echo "#programaddstart" >>/etc/hosts 32 | cat /tmp/tmphost >> /etc/hosts 33 | fi 34 | rm /tmp/tmphost 35 | checkmd5 "$2" 36 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/AdGuardHome/firewall.start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | AdGuardHome_enable=$(uci get AdGuardHome.AdGuardHome.enabled) 4 | redirect=$(uci get AdGuardHome.AdGuardHome.redirect) 5 | 6 | if [ $AdGuardHome_enable -eq 1 -a "$redirect" == "redirect" ]; then 7 | /etc/init.d/AdGuardHome do_redirect 1 8 | fi 9 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/AdGuardHome/getsyslog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PATH="/usr/sbin:/usr/bin:/sbin:/bin" 4 | logread -e AdGuardHome > /tmp/AdGuardHometmp.log 5 | logread -e AdGuardHome -f >> /tmp/AdGuardHometmp.log & 6 | pid=$! 7 | echo "1">/var/run/AdGuardHomesyslog 8 | while true 9 | do 10 | sleep 12 11 | watchdog=$(cat /var/run/AdGuardHomesyslog) 12 | if [ "$watchdog"x == "0"x ]; then 13 | kill $pid 14 | rm /tmp/AdGuardHometmp.log 15 | rm /var/run/AdGuardHomesyslog 16 | exit 0 17 | else 18 | echo "0">/var/run/AdGuardHomesyslog 19 | fi 20 | done 21 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/AdGuardHome/links.txt: -------------------------------------------------------------------------------- 1 | https://github.com/AdguardTeam/AdGuardHome/releases/download/${latest_ver}/AdGuardHome_linux_${Arch}.tar.gz 2 | https://static.adguard.com/adguardhome/release/AdGuardHome_linux_${Arch}.tar.gz 3 | https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_${Arch}.tar.gz 4 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/AdGuardHome/tailto.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tail -n $1 "$2" > /var/run/tailtmp 4 | cat /var/run/tailtmp > "$2" 5 | rm /var/run/tailtmp 6 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PATH="/usr/sbin:/usr/bin:/sbin:/bin" 4 | count=0 5 | while : 6 | do 7 | ping -c 1 -W 1 -q www.baidu.com 1>/dev/null 2>&1 8 | if [ "$?" == "0" ]; then 9 | /etc/init.d/AdGuardHome force_reload 10 | break 11 | fi 12 | ping -c 1 -W 1 -q 202.108.22.5 1>/dev/null 2>&1 13 | if [ "$?" == "0" ]; then 14 | /etc/init.d/AdGuardHome force_reload 15 | break 16 | fi 17 | sleep 5 18 | ping -c 1 -W 1 -q www.google.com 1>/dev/null 2>&1 19 | if [ "$?" == "0" ]; then 20 | /etc/init.d/AdGuardHome force_reload 21 | break 22 | fi 23 | ping -c 1 -W 1 -q 8.8.8.8 1>/dev/null 2>&1 24 | if [ "$?" == "0" ]; then 25 | /etc/init.d/AdGuardHome force_reload 26 | break 27 | fi 28 | sleep 5 29 | count=$((count+1)) 30 | if [ $count -gt 18 ]; then 31 | /etc/init.d/AdGuardHome force_reload 32 | break 33 | fi 34 | done 35 | return 0 36 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/AdGuardHome/watchconfig.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PATH="/usr/sbin:/usr/bin:/sbin:/bin" 4 | configpath=$(uci get AdGuardHome.AdGuardHome.configpath) 5 | while : 6 | do 7 | sleep 10 8 | if [ -f "$configpath" ]; then 9 | /etc/init.d/AdGuardHome do_redirect 1 10 | break 11 | fi 12 | done 13 | return 0 14 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/usr/share/rpcd/acl.d/luci-app-adguardhome.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-adguardhome": { 3 | "description": "Grant UCI access for luci-app-adguardhome", 4 | "read": { 5 | "uci": [ "AdGuardHome" ] 6 | }, 7 | "write": { 8 | "uci": [ "AdGuardHome" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/www/luci-static/resources/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker{color:blue;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"} 2 | -------------------------------------------------------------------------------- /luci-app-adguardhome/root/www/luci-static/resources/codemirror/addon/fold/indent-fold.js: -------------------------------------------------------------------------------- 1 | !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function n(n,t){var i=n.getLine(t),o=i.search(/\S/);return-1==o||/\bcomment\b/.test(n.getTokenTypeAt(e.Pos(t,o+1)))?-1:e.countColumn(i,null,n.getOption("tabSize"))}e.registerHelper("fold","indent",function(t,i){var o=n(t,i.line);if(!(o<0)){for(var r=null,l=i.line+1,f=t.lastLine();l<=f;++l){var u=n(t,l);if(-1==u);else{if(!(u>o))break;r=l}}return r?{from:e.Pos(i.line,t.getLine(i.line).length),to:e.Pos(r,t.getLine(r).length)}:void 0}})}); -------------------------------------------------------------------------------- /luci-app-adguardhome/root/www/luci-static/resources/codemirror/mode/yaml/yaml.js: -------------------------------------------------------------------------------- 1 | !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("yaml",function(){var e=new RegExp("\\b(("+["true","false","on","off","yes","no"].join(")|(")+"))$","i");return{token:function(i,t){var r=i.peek(),n=t.escaped;if(t.escaped=!1,"#"==r&&(0==i.pos||/\s/.test(i.string.charAt(i.pos-1))))return i.skipToEnd(),"comment";if(i.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(t.literal&&i.indentation()>t.keyCol)return i.skipToEnd(),"string";if(t.literal&&(t.literal=!1),i.sol()){if(t.keyCol=0,t.pair=!1,t.pairStart=!1,i.match(/---/))return"def";if(i.match(/\.\.\./))return"def";if(i.match(/\s*-\s+/))return"meta"}if(i.match(/^(\{|\}|\[|\])/))return"{"==r?t.inlinePairs++:"}"==r?t.inlinePairs--:"["==r?t.inlineList++:t.inlineList--,"meta";if(t.inlineList>0&&!n&&","==r)return i.next(),"meta";if(t.inlinePairs>0&&!n&&","==r)return t.keyCol=0,t.pair=!1,t.pairStart=!1,i.next(),"meta";if(t.pairStart){if(i.match(/^\s*(\||\>)\s*/))return t.literal=!0,"meta";if(i.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable-2";if(0==t.inlinePairs&&i.match(/^\s*-?[0-9\.\,]+\s?$/))return"number";if(t.inlinePairs>0&&i.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(i.match(e))return"keyword"}return!t.pair&&i.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)?(t.pair=!0,t.keyCol=i.indentation(),"atom"):t.pair&&i.match(/^:\s*/)?(t.pairStart=!0,"meta"):(t.pairStart=!1,t.escaped="\\"==r,i.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}},lineComment:"#",fold:"indent"}}),e.defineMIME("text/x-yaml","yaml"),e.defineMIME("text/yaml","yaml")}); -------------------------------------------------------------------------------- /luci-app-adguardhome/root/www/luci-static/resources/codemirror/theme/dracula.css: -------------------------------------------------------------------------------- 1 | .cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36 !important;color:#f8f8f2 !important;border:0}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:solid thin #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:rgba(255,255,255,0.10)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:rgba(255,255,255,0.10)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:rgba(255,255,255,0.10)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:white}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-keyword{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute{color:#50fa7b}.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-variable-3,.cm-s-dracula span.cm-type{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:rgba(255,255,255,0.1)}.cm-s-dracula .CodeMirror-matchingbracket{text-decoration:underline;color:white !important} 2 | -------------------------------------------------------------------------------- /luci-app-advanced/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2019 sirpdboy 2 | # 3 | # 4 | # 5 | # This is free software, licensed under the Apache License, Version 2.0 . 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | include $(INCLUDE_DIR)/package.mk 10 | 11 | PKG_NAME:=luci-app-advanced 12 | PKG_VERSION:=1.20 13 | PKG_RELEASE:=17 14 | define Package/$(PKG_NAME) 15 | SECTION:=luci 16 | CATEGORY:=LuCI 17 | SUBMENU:=3. Applications 18 | DEPENDS:= 19 | TITLE:=LuCI Support for advanced and filebrowser 20 | PKGARCH:=all 21 | endef 22 | 23 | define Build/Compile 24 | endef 25 | 26 | define Package/$(PKG_NAME)/install 27 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci 28 | $(CP) ./luasrc/* $(1)/usr/lib/lua/luci 29 | 30 | $(INSTALL_DIR) $(1)/etc/config 31 | $(INSTALL_CONF) ./root/etc/config/advanced $(1)/etc/config/ 32 | 33 | $(INSTALL_DIR) $(1)/www 34 | cp -pR ./htdocs/* $(1)/www/ 35 | 36 | $(INSTALL_DIR) $(1)/etc/uci-defaults 37 | $(INSTALL_BIN) ./root/etc/uci-defaults/* $(1)/etc/uci-defaults/ 38 | endef 39 | 40 | $(eval $(call BuildPackage,$(PKG_NAME))) 41 | -------------------------------------------------------------------------------- /luci-app-advanced/htdocs/luci-static/resources/fileassistant/fb.css: -------------------------------------------------------------------------------- 1 | .fb-container { 2 | margin-top: 1rem; 3 | } 4 | .fb-container .cbi-button { 5 | height: 2.6rem; 6 | } 7 | .fb-container .cbi-input-text { 8 | margin-bottom: 1rem; 9 | width: 100%; 10 | } 11 | .fb-container .panel-title { 12 | padding-bottom: 0; 13 | width: 50%; 14 | border-bottom: none; 15 | } 16 | .fb-container .panel-container { 17 | display: flex; 18 | align-items: center; 19 | justify-content: space-between; 20 | padding-bottom: 1rem; 21 | border-bottom: 1px solid #aaa; 22 | } 23 | .fb-container .upload-container { 24 | display: none; 25 | margin: 1rem 0; 26 | } 27 | .fb-container .upload-file { 28 | margin-right: 2rem; 29 | } 30 | .fb-container .cbi-value-field { 31 | text-align: left; 32 | } 33 | .fb-container .parent-icon strong { 34 | margin-left: 1rem; 35 | } 36 | .fb-container td[class$="-icon"] { 37 | cursor: pointer; 38 | } 39 | .fb-container .file-icon, .fb-container .folder-icon, .fb-container .link-icon { 40 | position: relative; 41 | } 42 | .fb-container .file-icon:before, .fb-container .folder-icon:before, .fb-container .link-icon:before { 43 | display: inline-block; 44 | width: 1.5rem; 45 | height: 1.5rem; 46 | content: ''; 47 | background-size: contain; 48 | margin: 0 0.5rem 0 1rem; 49 | vertical-align: middle; 50 | } 51 | .fb-container .file-icon:before { 52 | background-image: url(file-icon.png); 53 | } 54 | .fb-container .folder-icon:before { 55 | background-image: url(folder-icon.png); 56 | } 57 | .fb-container .link-icon:before { 58 | background-image: url(link-icon.png); 59 | } 60 | @media screen and (max-width: 480px) { 61 | .fb-container .upload-file { 62 | width: 14.6rem; 63 | } 64 | .fb-container .cbi-value-owner, 65 | .fb-container .cbi-value-perm { 66 | display: none; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /luci-app-advanced/htdocs/luci-static/resources/fileassistant/file-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-advanced/htdocs/luci-static/resources/fileassistant/file-icon.png -------------------------------------------------------------------------------- /luci-app-advanced/htdocs/luci-static/resources/fileassistant/folder-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-advanced/htdocs/luci-static/resources/fileassistant/folder-icon.png -------------------------------------------------------------------------------- /luci-app-advanced/htdocs/luci-static/resources/fileassistant/link-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-advanced/htdocs/luci-static/resources/fileassistant/link-icon.png -------------------------------------------------------------------------------- /luci-app-advanced/luasrc/controller/advanced.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.advanced",package.seeall) 2 | function index() 3 | if not nixio.fs.access("/etc/config/advanced")then 4 | return 5 | end 6 | local e 7 | e=entry({"admin","system","advanced"},cbi("advanced"),_("高级设置"),60) 8 | e.dependent=true 9 | end 10 | -------------------------------------------------------------------------------- /luci-app-advanced/luasrc/view/fileassistant.htm: -------------------------------------------------------------------------------- 1 | <%+header%> 2 | 3 | 4 |

文件管理【集成上传删除及安装,非专业人员请谨慎操作】

5 |
6 | 7 |
8 |
文件列表
9 | 10 |
11 |
12 | 13 | 14 |
15 |
16 |
17 | 18 | 19 | 20 | <%+footer%> 21 | -------------------------------------------------------------------------------- /luci-app-advanced/luasrc/view/filebrowser.htm: -------------------------------------------------------------------------------- 1 | <%+header%> 2 | 3 | 4 |

文件管理

5 |
6 | 7 |
8 |
文件列表:
9 | 10 |
11 |
12 | 13 | 14 |
15 |
16 |
17 | 18 | 19 | 20 | <%+footer%> 21 | -------------------------------------------------------------------------------- /luci-app-advanced/root/bin/ipmode4: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | uci set network.@globals[0].ula_prefix='' 3 | uci set network.lan.delegate='0' 4 | uci set network.wan.mtu=1460 5 | uci set network.wan.metric='41' 6 | uci set network.wan.delegate='0' 7 | uci set network.wan.ipv6='0' 8 | uci commit network 9 | uci set dhcp.@dnsmasq[0].cachesize='15000' 10 | uci set dhcp.@dnsmasq[0].min_ttl='3600' 11 | uci set dhcp.@dnsmasq[0].filter_aaaa='1' 12 | uci set dhcp.@dnsmasq[0].localservice='0' 13 | uci set dhcp.@dnsmasq[0].nonwildcard='0' 14 | uci set dhcp.@dnsmasq[0].rebind_protection='0' 15 | uci set dhcp.@dnsmasq[0].noresolv='0' 16 | uci set dhcp.lan.ra='' 17 | uci set dhcp.lan.ndp='' 18 | uci set dhcp.lan.dhcpv6='' 19 | uci set dhcp.lan.ignore='0' 20 | uci set dhcp.lan.ra_management='1' 21 | uci set dhcp.lan.ra_default='1' 22 | uci set dhcp.lan.force='1' 23 | uci commit dhcp 24 | sed -i "/list server/d" /etc/config/dhcp 25 | /etc/init.d/network restart 26 | /etc/init.d/dnsmasq restart 27 | -------------------------------------------------------------------------------- /luci-app-advanced/root/bin/ipmode6: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci set dhcp.@dnsmasq[0].cachesize='15000' 4 | uci set dhcp.@dnsmasq[0].min_ttl='3600' 5 | uci set dhcp.@dnsmasq[0].filter_aaaa='0' 6 | uci set dhcp.@dnsmasq[0].localservice='0' 7 | uci set dhcp.@dnsmasq[0].nonwildcard='0' 8 | uci set dhcp.@dnsmasq[0].rebind_protection='0' 9 | uci set dhcp.@dnsmasq[0].noresolv='1' 10 | uci set dhcp.lan.ra='server' 11 | uci set dhcp.lan.ndp='' 12 | uci set dhcp.lan.dhcpv6='' 13 | uci set dhcp.lan.ignore='0' 14 | uci set dhcp.lan.ra_management='1' 15 | uci set dhcp.lan.ra_default='1' 16 | uci set dhcp.lan.force='1' 17 | uci commit dhcp 18 | uci set network.@globals[0].ula_prefix='' 19 | uci set network.lan.delegate='0' 20 | uci set network.wan.mtu=1460 21 | uci set network.wan.metric='41' 22 | uci set network.wan.delegate='0' 23 | uci set network.wan.ipv6='auto' 24 | uci commit network 25 | sed -i "/list server/d" /etc/config/dhcp 26 | /etc/init.d/network restart 27 | /etc/init.d/dnsmasq restart 28 | -------------------------------------------------------------------------------- /luci-app-advanced/root/bin/normalmode: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci set system.@system[0].hostname="Openwrt" 4 | uci commit 5 | 6 | cat > /etc/config/network <> /etc/firewall.user 29 | echo "iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53" >> /etc/firewall.user 30 | reboot 31 | -------------------------------------------------------------------------------- /luci-app-advanced/root/etc/config/advanced: -------------------------------------------------------------------------------- 1 | config advanced 2 | option enabled '1' 3 | -------------------------------------------------------------------------------- /luci-app-advanced/root/etc/uci-defaults/40_luci-fb: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ver=$(date +%s) 4 | sed -i "s/@ver/$ver/g" /usr/lib/lua/luci/view/filebrowser.htm 5 | 6 | rm -f /tmp/luci-indexcache 7 | exit 0 8 | -------------------------------------------------------------------------------- /luci-app-advanced/root/usr/share/rpcd/acl.d/luci-app-advanced.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-advanced": { 3 | "description": "Grant UCI access for luci-app-advanced", 4 | "read": { 5 | "uci": [ "advanced" ] 6 | }, 7 | "write": { 8 | "uci": [ "advanced" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-arpbind/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2008-2014 The LuCI Team 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | LUCI_TITLE:=ARP Binding 10 | LUCI_DEPENDS:=+ip-full 11 | LUCI_PKGARCH:=all 12 | PKG_VERSION:=1 13 | PKG_RELEASE:=3 14 | 15 | include $(TOPDIR)/feeds/luci/luci.mk 16 | 17 | # call BuildPackage - OpenWrt buildroot signature 18 | 19 | -------------------------------------------------------------------------------- /luci-app-arpbind/luasrc/controller/arpbind.lua: -------------------------------------------------------------------------------- 1 | 2 | 3 | module("luci.controller.arpbind", package.seeall) 4 | 5 | function index() 6 | if not nixio.fs.access("/etc/config/arpbind") then 7 | return 8 | end 9 | local page = entry({"admin", "network", "arpbind"}, cbi("arpbind"), _("IP/MAC Binding")) 10 | page.order = 45 11 | page.dependent = true 12 | page.acl_depends = { "luci-app-arpbind" } 13 | end 14 | -------------------------------------------------------------------------------- /luci-app-arpbind/po/zh-cn/arpbind.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Luci ARP Bind\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2015-06-23 20:16+0800\n" 6 | "PO-Revision-Date: 2015-06-23 20:17+0800\n" 7 | "Last-Translator: 981213 \n" 8 | "Language-Team: PandoraBox Team\n" 9 | "Language: zh_CN\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=1; plural=0;\n" 14 | "X-Generator: Poedit 1.8.1\n" 15 | "X-Poedit-SourceCharset: UTF-8\n" 16 | 17 | msgid "IP/MAC Binding" 18 | msgstr "IP/MAC绑定" 19 | 20 | msgid "MAC Address" 21 | msgstr "MAC 地址" 22 | 23 | msgid "ARP is used to convert a network address (e.g. an IPv4 address) to a physical address such as a MAC address.Here you can add some static ARP binding rules." 24 | msgstr "ARP协议是用于实现网络地址到物理地址转换的协议。在这里,你可以设置静态ARP绑定规则。" 25 | -------------------------------------------------------------------------------- /luci-app-arpbind/po/zh_Hans/arpbind.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Luci ARP Bind\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2015-06-23 20:16+0800\n" 6 | "PO-Revision-Date: 2015-06-23 20:17+0800\n" 7 | "Last-Translator: 981213 \n" 8 | "Language-Team: PandoraBox Team\n" 9 | "Language: zh_CN\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=1; plural=0;\n" 14 | "X-Generator: Poedit 1.8.1\n" 15 | "X-Poedit-SourceCharset: UTF-8\n" 16 | 17 | msgid "IP/MAC Binding" 18 | msgstr "IP/MAC绑定" 19 | 20 | msgid "MAC Address" 21 | msgstr "MAC 地址" 22 | 23 | msgid "ARP is used to convert a network address (e.g. an IPv4 address) to a physical address such as a MAC address.Here you can add some static ARP binding rules." 24 | msgstr "ARP协议是用于实现网络地址到物理地址转换的协议。在这里,你可以设置静态ARP绑定规则。" 25 | -------------------------------------------------------------------------------- /luci-app-arpbind/root/etc/hotplug.d/iface/50-arpbind: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ "$ACTION" = "ifup" ] && /etc/init.d/arpbind start 3 | -------------------------------------------------------------------------------- /luci-app-arpbind/root/etc/init.d/arpbind: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | # OpenWrt 静态ARP绑定 启动脚本 3 | # Copyright (C) 2015 GuoGuo 4 | 5 | . /lib/functions.sh 6 | . /lib/functions/network.sh 7 | 8 | #清除单接口ARP 9 | #参数:$1:接口名称 10 | if_clean_arp() 11 | { 12 | [ -z "$1" ] && return 13 | ip link set arp off dev $1 14 | ip link set arp on dev $1 15 | } 16 | 17 | #清除系统所有ARP 18 | #参数:无 19 | clean_arp() 20 | { 21 | for i in $(ls /sys/class/net) 22 | do 23 | if_clean_arp $i 24 | done 25 | } 26 | 27 | #添加静态ARP绑定 28 | #参数:$1:IP地址 $2:MAC地址 $3:接口名称 29 | add_arp() 30 | { 31 | [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] && return 32 | echo "Adding ARP:IP Addr:$1 MAC Addr:$2 Interface:$3" 33 | ip neigh add $1 lladdr $2 nud permanent dev $3 || ip neigh change $1 lladdr $2 nud permanent dev $3 34 | } 35 | 36 | arpconf_foreach() 37 | { 38 | config_get ipaddr "$1" 'ipaddr' 39 | config_get macaddr "$1" 'macaddr' 40 | config_get ifname "$1" 'ifname' 41 | [ -z "$ifname" ] && return 42 | add_arp $ipaddr $macaddr $ifname 43 | } 44 | 45 | start() 46 | { 47 | config_load 'arpbind' 48 | config_foreach arpconf_foreach 'arpbind' 49 | } 50 | 51 | stop() 52 | { 53 | clean_arp 54 | } 55 | 56 | -------------------------------------------------------------------------------- /luci-app-arpbind/root/etc/uci-defaults/luci-arpbind: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | touch /etc/config/arpbind 3 | 4 | uci -q batch <<-EOF >/dev/null 5 | delete ucitrack.@arpbind[-1] 6 | add ucitrack arpbind 7 | set ucitrack.@arpbind[-1].init=arpbind 8 | commit ucitrack 9 | EOF 10 | 11 | 12 | rm -f /tmp/luci-indexcache 13 | exit 0 14 | -------------------------------------------------------------------------------- /luci-app-arpbind/root/usr/share/rpcd/acl.d/luci-app-arpbind.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-arpbind": { 3 | "description": "Grant UCI access for luci-app-arpbind", 4 | "read": { 5 | "uci": [ "arpbind" ] 6 | }, 7 | "write": { 8 | "uci": [ "arpbind" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-chatgpt/Makefile: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: GPL-3.0-only 2 | # 3 | # Copyright (C) 2023-2025 sirpdboy https://github.com/sirpdboy/luci-app-chatgpt-web 4 | # 5 | # This is free software, licensed under the Apache License, Version 2.0 . 6 | # 7 | include $(TOPDIR)/rules.mk 8 | 9 | NAME:=chatgpt-web 10 | PKG_NAME:=luci-app-$(NAME) 11 | PKG_VERSION:=1.2.1 12 | PKG_RELEASE:=16 13 | 14 | LUCI_TITLE:=LuCI Support for chatgpt-web Client 15 | LUCI_PKGARCH:=all 16 | 17 | define Package/$(PKG_NAME)/conffiles 18 | /etc/config/chatgpt-web 19 | endef 20 | include $(TOPDIR)/feeds/luci/luci.mk 21 | 22 | # call BuildPackage - OpenWrt buildroot signature 23 | -------------------------------------------------------------------------------- /luci-app-chatgpt/luasrc/controller/chatgpt-web.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (C) 2023-2025 sirpdboy https://github.com/sirpdboy/luci-app-chatgpt-web 2 | -- Licensed to the public under the Apache License 2.0. 3 | 4 | module("luci.controller.chatgpt-web", package.seeall) 5 | 6 | function index() 7 | if not nixio.fs.access("/etc/config/chatgpt-web") then 8 | return 9 | end 10 | 11 | local e = entry({"admin", "services", "chatgpt-web"}, alias("admin", "services", "chatgpt-web", "setting"),_("Chatgpt Web"), 20) 12 | e.dependent=false 13 | e.acl_depends = { "luci-app-chatgpt-web" } 14 | entry({"admin", "services", "chatgpt-web", "setting"}, cbi("chatgpt-web"), _("Base Setting"), 10).leaf=true 15 | entry({"admin", "services", "chatgpt-web", "chatgpt-web"}, cbi("chatgpt",{hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), _("Chatgpt Web"), 30).leaf=true 16 | end 17 | 18 | -------------------------------------------------------------------------------- /luci-app-chatgpt/luasrc/model/cbi/chatgpt-web.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (C) 2023-2025 sirpdboy https://github.com/sirpdboy/https://github.com/sirpdboy/luci-app-chatgpt-web 2 | 3 | local m, s ,o 4 | 5 | m = Map("chatgpt-web") 6 | m.title = translate("Chatgpt Web") 7 | m.description = translate("ChatGPT-Web is the version used on OPENWRT of OPENAI")..translate("
For specific usage, see:")..translate("GitHub @sirpdboy/chatgpt-web\ ") 8 | 9 | s = m:section(TypedSection, "basic", translate("Base Setting")) 10 | s.addremove = false 11 | s.anonymous = true 12 | 13 | 14 | o = s:option(Value,"userpic",translate("Character images")) 15 | o:value("girl.jpg",translate("girl")) 16 | o:value("girl2.jpg",translate("girl2")) 17 | o:value("girl3.jpg",translate("girl3")) 18 | o:value("boy.jpg",translate("boy")) 19 | o:value("boy2.jpg",translate("boy2")) 20 | o:value("boy3.jpg",translate("boy3")) 21 | o:value("dog.jpg",translate("dog")) 22 | o:value("cartoon.jpg",translate("cartoon")) 23 | o:value("cartoonboy.jpg",translate("cartoonboy")) 24 | o:value("cartoonboy2.jpg",translate("cartoonboy2")) 25 | o:value("cartoongirl.jpg",translate("cartoongirl")) 26 | o:value("cartoongirl2.jpg",translate("cartoongirl2")) 27 | o.rmempty = true 28 | o.default="girl.jpg" 29 | 30 | 31 | o=s:option(TextValue, "systemrole" ,translate("Default Role Settings")) 32 | o.rows = 5 33 | o.rmempty=false 34 | 35 | 36 | return m 37 | -------------------------------------------------------------------------------- /luci-app-chatgpt/luasrc/model/cbi/chatgpt.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (C) 2023-2025 sirpdboy https://github.com/sirpdboy/luci-app-chatgpt-web 2 | require("luci.util") 3 | local m, s 4 | 5 | m = Map("chatgpt-web",translate("")) 6 | 7 | m:section(SimpleSection).template = "chatgpt-web" 8 | 9 | return m 10 | -------------------------------------------------------------------------------- /luci-app-chatgpt/po/zh-cn/chatgpt-web.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "Content-Type: text/plain; charset=UTF-8" 3 | 4 | msgid "chatgpt-web" 5 | msgstr "ChatGPT-Web" 6 | 7 | msgid "ChatGPT-Web is the version used on OPENWRT of OPENAI" 8 | msgstr "ChatGPT-Web是OPENAI的OPENWRT上使用的WEB版本,不需要第三方依赖,绿色安全直接使用OPENAI的API接口" 9 | 10 | msgid "Base Setting" 11 | msgstr "基本设置" 12 | 13 | msgid "GPT Model" 14 | msgstr "GPT模型" 15 | 16 | msgid "Character images" 17 | msgstr "人物图像" 18 | 19 | msgid "boy" 20 | msgstr "男生" 21 | 22 | msgid "boy2" 23 | msgstr "男生2" 24 | 25 | msgid "boy3" 26 | msgstr "男生3" 27 | 28 | msgid "girl" 29 | msgstr "女生" 30 | 31 | msgid "girl2" 32 | msgstr "女生2" 33 | 34 | msgid "girl3" 35 | msgstr "女生3" 36 | 37 | msgid "dog" 38 | msgstr "狗" 39 | 40 | msgid "cartoon" 41 | msgstr "卡通图像" 42 | 43 | msgid "cartoonboy" 44 | msgstr "卡通男孩" 45 | 46 | msgid "cartoonboy2" 47 | msgstr "卡通小男孩" 48 | 49 | msgid "cartoongirl" 50 | msgstr "卡通女生" 51 | 52 | msgid "cartoongirl2" 53 | msgstr "卡通女生2" 54 | 55 | msgid "OpenAI interface" 56 | msgstr "OpenAI接口" 57 | 58 | msgid "API Key" 59 | msgstr "API密钥" 60 | 61 | msgid "Enter your own API key, and if you do not have one, enter the official website API to generate it:" 62 | msgstr "输入自己的API密钥(sk-开头),没有的进官网API生成:" 63 | 64 | msgid "Click to open" 65 | msgstr "点击前往" 66 | 67 | msgid "Default Role Settings" 68 | msgstr "默认角色设置" 69 | 70 | msgid "
For specific usage, see:" 71 | msgstr "
具体使用方法参见:" 72 | -------------------------------------------------------------------------------- /luci-app-chatgpt/po/zh_Hans/chatgpt-web.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "Content-Type: text/plain; charset=UTF-8" 3 | 4 | msgid "chatgpt-web" 5 | msgstr "ChatGPT-Web" 6 | 7 | msgid "ChatGPT-Web is the version used on OPENWRT of OPENAI" 8 | msgstr "ChatGPT-Web是OPENAI的OPENWRT上使用的WEB版本,不需要第三方依赖,绿色安全直接使用OPENAI的API接口" 9 | 10 | msgid "Base Setting" 11 | msgstr "基本设置" 12 | 13 | msgid "GPT Model" 14 | msgstr "GPT模型" 15 | 16 | msgid "Character images" 17 | msgstr "人物图像" 18 | 19 | msgid "boy" 20 | msgstr "男生" 21 | 22 | msgid "boy2" 23 | msgstr "男生2" 24 | 25 | msgid "boy3" 26 | msgstr "男生3" 27 | 28 | msgid "girl" 29 | msgstr "女生" 30 | 31 | msgid "girl2" 32 | msgstr "女生2" 33 | 34 | msgid "girl3" 35 | msgstr "女生3" 36 | 37 | msgid "dog" 38 | msgstr "狗" 39 | 40 | msgid "cartoon" 41 | msgstr "卡通图像" 42 | 43 | msgid "cartoonboy" 44 | msgstr "卡通男孩" 45 | 46 | msgid "cartoonboy2" 47 | msgstr "卡通小男孩" 48 | 49 | msgid "cartoongirl" 50 | msgstr "卡通女生" 51 | 52 | msgid "cartoongirl2" 53 | msgstr "卡通女生2" 54 | 55 | msgid "OpenAI interface" 56 | msgstr "OpenAI接口" 57 | 58 | msgid "API Key" 59 | msgstr "API密钥" 60 | 61 | msgid "Enter your own API key, and if you do not have one, enter the official website API to generate it:" 62 | msgstr "输入自己的API密钥(sk-开头),没有的进官网API生成:" 63 | 64 | msgid "Click to open" 65 | msgstr "点击前往" 66 | 67 | msgid "Default Role Settings" 68 | msgstr "默认角色设置" 69 | 70 | msgid "
For specific usage, see:" 71 | msgstr "
具体使用方法参见:" 72 | -------------------------------------------------------------------------------- /luci-app-chatgpt/root/etc/config/chatgpt-web: -------------------------------------------------------------------------------- 1 | 2 | config basic 3 | option apiHost 'https://api.openai.com/' 4 | option modelver 'gpt-3.5-turbo' 5 | option userpic 'girl.jpg' 6 | option apikey '' 7 | option systemrole '你是一个乐于助人的专业助手,尽量简明扼要地回答' 8 | 9 | -------------------------------------------------------------------------------- /luci-app-chatgpt/root/usr/share/rpcd/acl.d/luci-app-chatgpt-web.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-chatgpt-web": { 3 | "description": "Grant UCI access for luci-app-chatgpt-web", 4 | "read": { 5 | "uci": [ "chatgpt-web" ] 6 | }, 7 | "write": { 8 | "uci": [ "chatgpt-web" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/11.11.1github.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! 2 | Theme: GitHub 3 | Description: Light theme as seen on github.com 4 | Author: github.com 5 | Maintainer: @Hirse 6 | Updated: 2021-05-15 7 | 8 | Outdated base version: https://github.com/primer/github-syntax-light 9 | Current colors taken from GitHub's CSS 10 | */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0} -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/github.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! 2 | Theme: GitHub 3 | Description: Light theme as seen on github.com 4 | Author: github.com 5 | Maintainer: @Hirse 6 | Updated: 2021-05-15 7 | 8 | Outdated base version: https://github.com/primer/github-syntax-light 9 | Current colors taken from GitHub's CSS 10 | */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0} -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/markdown-it-link-attributes.min.js: -------------------------------------------------------------------------------- 1 | (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.markdownitLinkAttributes=f()}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i eqn { 13 | width: 100%; 14 | margin-left: 3em; 15 | } 16 | section.eqno > span { 17 | width:3em; 18 | text-align:right; 19 | } -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/boy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/boy.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/boy2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/boy2.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/boy3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/boy3.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoon.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoonboy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoonboy.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoonboy2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoonboy2.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoongirl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoongirl.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoongirl2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoongirl2.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoongirl3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/cartoongirl3.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/dog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/dog.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/girl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/girl.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/girl2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/girl2.jpg -------------------------------------------------------------------------------- /luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/girl3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-chatgpt/root/www/luci-static/chatgpt-web/user/girl3.jpg -------------------------------------------------------------------------------- /luci-app-cupsd/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-cupsd/README.md -------------------------------------------------------------------------------- /luci-app-cupsd/cups-bjnp/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2010 OpenWrt.org 3 | # 4 | # This is free software, licensed under the GNU General Public License v2. 5 | # See /LICENSE for more information. 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | PKG_NAME:=cups-bjnp 11 | PKG_VERSION:=2.0.2 12 | PKG_RELEASE:=1 13 | 14 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 15 | PKG_SOURCE_URL:=@SF/cups-bjnp 16 | PKG_MD5SUM:=a3351a5c21adf70c17eaa655a26daafd 17 | 18 | PKG_BUILD_DEPENDS:=cups 19 | 20 | include $(INCLUDE_DIR)/package.mk 21 | 22 | define Package/cups-bjnp 23 | SECTION:=net 24 | CATEGORY:=Network 25 | TITLE:=BJNP protocol backend for CUPS 26 | URL:=http://sourceforge.net/projects/cups-bjnp/ 27 | DEPENDS:=cups 28 | SUBMENU:=Printing 29 | endef 30 | 31 | define Package/cups-bjnp/description 32 | CUPS backend for the canon printers using the proprietary USB over 33 | IP BJNP protocol. This backend allows Cups to print over the network 34 | to a Canon printer. It currently supports Cups 1.2 and Cups 1.3 and 35 | is designed by reverse engineering. 36 | endef 37 | 38 | CONFIGURE_ARGS += --with-cupsbackenddir=$(STAGING_DIR)/usr/include/cups 39 | 40 | TARGET_CFLAGS+=-Wl,-rpath-link=$(STAGING_DIR)/usr/lib 41 | 42 | define Package/cups-bjnp/install 43 | $(INSTALL_DIR) $(1)/usr/lib/cups/backend 44 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/bjnp $(1)/usr/lib/cups/backend 45 | endef 46 | 47 | 48 | $(eval $(call BuildPackage,cups-bjnp)) 49 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-bjnp/src/AUTHORS: -------------------------------------------------------------------------------- 1 | Louis Lagendijk 2 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-bjnp/src/Makefile.am: -------------------------------------------------------------------------------- 1 | ## Process this file with automake to produce Makefile.in 2 | # We must define a dummy directory for the backenddir so make discheck works 3 | AM_DISTCHECK_CONFIGURE_FLAGS = --with-cupsbackenddir=/tmp 4 | 5 | cupsbackend_PROGRAMS = bjnp 6 | bjnp_SOURCES = \ 7 | bjnp.c \ 8 | bjnp-runloop.c \ 9 | bjnp-io.c \ 10 | bjnp-debug.c \ 11 | bjnp-utils.c \ 12 | bjnp-discover.c \ 13 | bjnp-commands.c \ 14 | bjnp-levels.c \ 15 | cups-bjnp.spec \ 16 | bjnp.h \ 17 | bjnp-commands.h \ 18 | bjnp-protocol.h \ 19 | bjnp-io.h \ 20 | TODO \ 21 | README \ 22 | README.levels \ 23 | COPYING 24 | bjnp_CFLAGS = -Wall $(CUPS_CFLAGS) $(EXTRA_CFLAGS) 25 | bjnp_LDFLAGS = $(CUPS_LDFLAGS) 26 | bjnp_LDADD = $(CUPS_LIBS) 27 | 28 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-bjnp/src/README.levels: -------------------------------------------------------------------------------- 1 | cups-bjnp 2 | ========= 3 | This version of cups-bjnp adds experimental support for ink-level reporting and improved 4 | out-of-paper reporting. 5 | 6 | Ink-level reporting requires translation of the mnemonic reported by the printer to the 7 | human readable color and to the RGB values to show the cartridge in the user interfaces. 8 | It is quite well possible that some cartridge types are not yet recognised. 9 | 10 | The ink-level status is updated regularly during printing of a document. 11 | I am now looking for success and failure reports for this cups-bjnp version. 12 | 13 | What to test 14 | ============ 15 | 1) check in your favorite printer configuration tool (control-panel->printers, 16 | system-config-printer, or the KDE printer configuration tool) that all cartridges 17 | are correctly shown (if a certain cartridge is not recognized it is shown as 18 | "unknown" and the color is set to white (#FFFFFF). If this occurs, please report this 19 | with the details requested below 20 | 21 | 2)Check that when cartridges are getting empty, they are reported (see system-config-printer-> 22 | ink/toner-levels/status messages) with bjnp.xxx-ink-low / bjnp-xxx-ink-emty messages. 23 | Gnome 3 uses the genric ink level low messages to show a pop-up. 24 | 25 | 3) verify that cups-bjnp correctly reports paper-empty events. When the printer detects an 26 | out of paper situation, Gnome 3 will show a popup. Other environments may do something 27 | similar. 28 | 29 | Reporting of issues (and success) 30 | ================================= 31 | In order to get the required information, please change the printer URI from: 32 | bjnp://xxxx 33 | bjnp://xxx/?debuglevel=DEBUG 34 | 35 | and send me the resulting bjnp logfile /var/log/cups/bjnp_log when cups logs to 36 | /var/log/cups with te details of the issues found. Please mention the printer type 37 | to help me find out details 38 | 39 | Louis Lagendijk (louis.lagendijk@gmail.com) 40 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-bjnp/src/TODO: -------------------------------------------------------------------------------- 1 | TODO: 2 | - 3 | 4 | DONE: 5 | - cleanup debugging code to better integrate with CUPS logging and debugging support 6 | - re-enable side channel support for Cups >= 1.3 7 | - create spec file for RPM creation 8 | - Move project to sourceforge 9 | - Add out of paper detection (is signalled in BST flag in status. Relevant defines 10 | are already added in cups-bjnp.h BST_OPCALL signals out of paper) 11 | - printing still is slow compared to the windows. I have no idea how ro solve it. 12 | solved by the changes recommended by Zedo, the kind Turboprint people, that included 13 | cups-bjnp in their product (www.turboprint.de). Throttle delay changed to 40 ms and 14 | print buffer changed to 4k 15 | - improve documentation per the mail from Jonathan Yu: 16 | If I could make a suggestion, I think the INSTALL file should include some kind 17 | of instruction to edit the DIST_DIR variable in the Makefile. This might make it 18 | easier for less experienced users and might save people some time. 19 | - Does bjnp protocol support authentication? May need implementation. After some study 20 | it appears that this is not the case. Only printer settings can be password protected 21 | - cleanup error handling (there are too many exit statements in the code 22 | - Still need to put sourceforge as source in spec files 23 | - Improve error handling for calls to select: 0 and -1 must be treated separately 24 | - add support for CUPS 1.4, there were no additions required 25 | - try broadcast a numer of times to allow for packet loss 26 | - serial in protocol is 16 bit, not 32! 27 | - there are still parts in the code marked as TODO 28 | - Check payload length in all set_cmd calls. Sometimes we send total length, sometimes payload 29 | - check if off-line event can happen, or if it always means printer off. 30 | if so, we may need to restart the printjob!! 31 | 32 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-bjnp/src/bjnp-commands.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Low level TCP and UDP command function definitions for 3 | * bjnp backend for the Common UNIX Printing System (CUPS). 4 | * Copyright 2008-2014 by Louis Lagendijk 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; version 2 or later. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | #ifndef _CUPS_BJNP_COMMANDS_H_ 19 | #define _CUPS_BJNP_COMMANDS_H_ 20 | 21 | /* 22 | * bjnp-commands.c 23 | */ 24 | void clear_cmd(bjnp_command_t *cmd); 25 | int bjnp_printer_set_command_header(printer_t *printer, bjnp_command_t *cmd, 26 | char cmd_code, int payload_len); 27 | void bjnp_defaults_set_command_header(bjnp_command_t *cmd, 28 | char cmd_code, int payload_len); 29 | int get_printer_id(http_addr_t *addr, char *model, char *IEEE1284_id); 30 | int bjnp_get_status(printer_t *printer, char *status_buf); 31 | int bjnp_send_job_details(http_addr_t *addr, const char *user, const char *title); 32 | int bjnp_send_close(printer_t *printer); 33 | #endif 34 | 35 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-dymo/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2006-2016 OpenWrt.org 3 | # Copyright (C) 2016 lede-project.org 4 | # 5 | # This is free software, licensed under the GNU General Public License v2. 6 | # See /LICENSE for more information. 7 | # 8 | 9 | include $(TOPDIR)/rules.mk 10 | 11 | PKG_NAME:=cups-dymo 12 | PKG_VERSION:=1.4.0 13 | PKG_VERSION_RC:=1.4.0.5 14 | PKG_RELEASE:=1 15 | 16 | PKG_SOURCE:=dymo-cups-drivers-$(PKG_VERSION).tar.gz 17 | PKG_SOURCE_URL:=http://download.dymo.com/dymo/Software/Download%20Drivers/Linux/Download/ 18 | PKG_MD5SUM:=8774f98bbe8d57f5b337019ae86a23f0 19 | PKG_BUILD_DIR:=$(BUILD_DIR)/dymo-cups-drivers-$(PKG_VERSION_RC) 20 | TARGET_LDFLAGS+=-Wl,-rpath-link=$(STAGING_DIR)/usr/lib 21 | 22 | include $(INCLUDE_DIR)/package.mk 23 | 24 | define Package/cups-dymo 25 | URL:=https://www.dymo.com/de-DE/dymo-label-sdk-cups-linux-p 26 | SUBMENU:=Printing 27 | SECTION:=net 28 | CATEGORY:=Network 29 | DEPENDS:=+libcups +libcupsimage +libstdcpp 30 | TITLE:=Common UNIX Printing System - Dymo Label Printer Driver 31 | endef 32 | 33 | define Package/cups-dymo/description 34 | Common UNIX Printing System - Dymo Label Printer Driver 35 | endef 36 | 37 | define Build/Configure 38 | $(call Build/Configure/Default, \ 39 | UNAME="Linux" \ 40 | LIBS="$(TARGET_LDFLAGS)" \ 41 | ) 42 | endef 43 | 44 | define Build/Compile 45 | $(MAKE) -C $(PKG_BUILD_DIR) \ 46 | $(TARGET_CONFIGURE_OPTS) \ 47 | DSTROOT="$(PKG_INSTALL_DIR)" \ 48 | STRIP="/bin/true" \ 49 | all 50 | #install ignores DSTROOT/prefix and I am too lazy to look for the correct syntax 51 | endef 52 | 53 | define Package/cups-dymo/install 54 | $(INSTALL_DIR) $(1)/usr/lib/cups/filter 55 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/lm/raster2dymolm $(1)/usr/lib/cups/filter 56 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/lw/raster2dymolw $(1)/usr/lib/cups/filter 57 | $(INSTALL_DIR) $(1)/usr/share/cups/model/ 58 | $(INSTALL_DATA) $(PKG_BUILD_DIR)/ppd/*.ppd $(1)/usr/share/cups/model 59 | endef 60 | 61 | $(eval $(call BuildPackage,cups-dymo)) 62 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-dymo/patches/0001-Add-missing-headers-fixes-error-ppd_file_t.patch: -------------------------------------------------------------------------------- 1 | From 6d56419a301b10206b7489ecaad15bacf4fcc584 Mon Sep 17 00:00:00 2001 2 | From: Florian Knodt 3 | Date: Fri, 28 Feb 2020 22:51:31 +0100 4 | Subject: [PATCH 1/6] Add missing headers; fixes error ppd_file_t via 5 | https://github.com/matthiasbock/dymo-cups-drivers/commit/d780e709c208dcbf2db88577a6d12c00660202b6 6 | 7 | --- 8 | src/common/CupsFilter.h | 1 + 9 | src/lm/CupsFilterLabelManager.h | 3 ++- 10 | src/lw/CupsFilterLabelWriter.h | 1 + 11 | 3 files changed, 4 insertions(+), 1 deletion(-) 12 | 13 | diff --git a/src/common/CupsFilter.h b/src/common/CupsFilter.h 14 | index e649877..a17dae8 100644 15 | --- a/src/common/CupsFilter.h 16 | +++ b/src/common/CupsFilter.h 17 | @@ -23,6 +23,7 @@ 18 | 19 | #include 20 | #include 21 | +#include 22 | #include 23 | #include 24 | #include "CupsPrintEnvironment.h" 25 | diff --git a/src/lm/CupsFilterLabelManager.h b/src/lm/CupsFilterLabelManager.h 26 | index a777392..b7a5d23 100644 27 | --- a/src/lm/CupsFilterLabelManager.h 28 | +++ b/src/lm/CupsFilterLabelManager.h 29 | @@ -23,6 +23,7 @@ 30 | 31 | #include 32 | #include 33 | +#include 34 | #include "LabelManagerDriver.h" 35 | #include "LabelManagerLanguageMonitor.h" 36 | #include "DummyLanguageMonitor.h" 37 | @@ -50,4 +51,4 @@ public: 38 | 39 | /* 40 | * End of "$Id: CupsFilterLabelManager.h 14880 2011-03-31 16:29:05Z aleksandr $". 41 | - */ 42 | \ No newline at end of file 43 | + */ 44 | diff --git a/src/lw/CupsFilterLabelWriter.h b/src/lw/CupsFilterLabelWriter.h 45 | index 4e7f15a..eaa6077 100644 46 | --- a/src/lw/CupsFilterLabelWriter.h 47 | +++ b/src/lw/CupsFilterLabelWriter.h 48 | @@ -23,6 +23,7 @@ 49 | 50 | #include 51 | #include 52 | +#include 53 | #include "LabelWriterDriver.h" 54 | #include "LabelWriterLanguageMonitor.h" 55 | #include "DummyLanguageMonitor.h" 56 | -- 57 | 2.25.1 58 | 59 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups-dymo/patches/0002-Add-missing-backend-header-fixes-cupsBackChannelRead.patch: -------------------------------------------------------------------------------- 1 | From c0befab33abe1476625311a4f5495152cdb37b17 Mon Sep 17 00:00:00 2001 2 | From: Florian Knodt 3 | Date: Fri, 28 Feb 2020 23:13:37 +0100 4 | Subject: [PATCH 2/6] Add missing backend header; fixes cupsBackChannelRead 5 | error 6 | 7 | --- 8 | src/common/CupsPrintEnvironment.h | 1 + 9 | 1 file changed, 1 insertion(+) 10 | 11 | diff --git a/src/common/CupsPrintEnvironment.h b/src/common/CupsPrintEnvironment.h 12 | index 7dadb0f..a61ef68 100644 13 | --- a/src/common/CupsPrintEnvironment.h 14 | +++ b/src/common/CupsPrintEnvironment.h 15 | @@ -21,6 +21,8 @@ 16 | #ifndef h952b1c81_8931_433a_8479_7ae6d8e85a86 17 | #define h952b1c81_8931_433a_8479_7ae6d8e85a86 18 | 19 | +#include 20 | +#include 21 | #include "PrinterDriver.h" 22 | 23 | namespace DymoPrinterDriver 24 | -- 25 | 2.25.1 26 | 27 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-cupsd/cups/README.md -------------------------------------------------------------------------------- /luci-app-cupsd/cups/files/cupsd.config: -------------------------------------------------------------------------------- 1 | 2 | config cupsd 3 | option enabled '0' 4 | option logger '1' 5 | option port '631' 6 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups/files/cupsd.init: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | # Copyright (C) 2006-2011 OpenWrt.org 3 | # Copyright (C) 2021-2022 sirpdboy https://github.com/sirpdboy/luci-app-cupsd 4 | 5 | 6 | START=99 7 | USE_PROCD=1 8 | 9 | PROG=/usr/sbin/cupsd 10 | get_config() { 11 | config_get_bool enabled $1 enabled 1 12 | config_get_bool logger $1 logger 1 13 | config_get port $1 port 631 14 | } 15 | 16 | 17 | start_service() { 18 | config_load cupsd 19 | config_foreach get_config cupsd 20 | [ x$enabled == x1 ] || return 1 21 | sed -i "s/Port.*/Port ${port}/g" /etc/cups/cupsd.conf 22 | [ -d /var/cache/cups ] || mkdir -m 0755 -p /var/cache/cups 23 | [ -d /var/cups ] || mkdir -m 0755 -p /var/cups 24 | [ -d /var/spool/cups/tmp ] || mkdir -m 0755 -p /var/spool/cups/tmp 25 | logger -t cupsd -p warn "cupsd is start." 26 | echo "cupsd is start." 27 | procd_open_instance 28 | procd_set_param command $PROG -f 29 | [ "x$logger" == x1 ] && procd_set_param stderr 1 30 | procd_set_param respawn 31 | procd_close_instance 32 | } 33 | 34 | service_triggers() { 35 | procd_add_reload_trigger "cupsd" 36 | } 37 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups/files/etc/cups/classes.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # # 3 | # This is a sample class configuration file. This file is included # 4 | # from the main configuration file (cups.conf) and lists all of the # 5 | # printer classes known to the system. # 6 | # # 7 | ######################################################################## 8 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups/files/etc/cups/client.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # # 3 | # This is the CUPS client configuration file. This file is used to # 4 | # define client-specific parameters, such as the default server or # 5 | # default encryption settings. # 6 | # # 7 | ######################################################################## 8 | 9 | Encryption Never 10 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups/files/etc/cups/cupsd.conf: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # # 3 | # This is the CUPS configuration file. If you are familiar with # 4 | # Apache or any of the other popular web servers, we've followed the # 5 | # same format. Any configuration variable used here has the same # 6 | # semantics as the corresponding variable in Apache. If we need # 7 | # different functionality then a different name is used to avoid # 8 | # confusion... # 9 | # # 10 | ######################################################################## 11 | 12 | 13 | AccessLog syslog 14 | ErrorLog syslog 15 | LogLevel info 16 | PageLog syslog 17 | PreserveJobHistory No 18 | PreserveJobFiles No 19 | AutoPurgeJobs Yes 20 | MaxJobs 25 21 | MaxPrinterHistory 10 22 | #Printcap /etc/printcap 23 | #PrintcapFormat BSD 24 | RequestRoot /var/cups 25 | #RemoteRoot remroot 26 | #User nobody 27 | #Group nogroup 28 | # root permissions required to make cups work with the usb backend 29 | User root 30 | Group root 31 | RIPCache auto 32 | TempDir /var/cups 33 | Port 631 34 | HostNameLookups On 35 | KeepAlive On 36 | # No: "BrowseOrder" "BrowseAllow" "BrowseRemoteProtocols" 37 | Browsing Yes 38 | BrowsingWebIF Yes 39 | BrowseLocalProtocols DNSSD 40 | DefaultShared Yes 41 | WebInterface Yes 42 | Listen /var/run/cups/cups.sock 43 | 44 | ServerAlias * 45 | 46 | 47 | Order Allow,Deny 48 | Allow all 49 | 50 | 51 | 52 | 53 | AuthType Basic 54 | AuthClass System 55 | Order Allow,Deny 56 | Allow all 57 | 58 | 59 | -------------------------------------------------------------------------------- /luci-app-cupsd/cups/files/etc/cups/printers.conf: -------------------------------------------------------------------------------- 1 | 2 | Info USB Printer 3 | Location 4 | DeviceURI usb:/dev/usb/lp0 5 | State Idle 6 | Accepting Yes 7 | JobSheets none none 8 | QuotaPeriod 0 9 | PageLimit 0 10 | KLimit 0 11 | 12 | 13 | 14 | Info Parallel Port Printer 15 | Location 16 | DeviceURI parallel:/dev/printers/0 17 | State Idle 18 | Accepting Yes 19 | JobSheets none none 20 | QuotaPeriod 0 21 | PageLimit 0 22 | KLimit 0 23 | 24 | -------------------------------------------------------------------------------- /luci-app-cupsd/luci-app-cupsd/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | #-- Copyright (C) 2018 dz 3 | # Copyright (C) 2021-2022 sirpdboy https://github.com/sirpdboy/luci-app-cupsd 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | LUCI_TITLE:=LuCI Support for cupsd 10 | LUCI_DEPENDS:= +cups 11 | PKG_VERSION:=1.4 12 | 13 | include $(TOPDIR)/feeds/luci/luci.mk 14 | 15 | # call BuildPackage - OpenWrt buildroot signature 16 | -------------------------------------------------------------------------------- /luci-app-cupsd/luci-app-cupsd/luasrc/controller/cupsd.lua: -------------------------------------------------------------------------------- 1 | -- Copyright (C) 2018 dz 2 | -- mod by 2021-2022 sirpdboy https://github.com/sirpdboy/luci-app-cupsd 3 | 4 | module("luci.controller.cupsd", package.seeall) 5 | 6 | function index() 7 | if not nixio.fs.access("/etc/config/cupsd") then 8 | return 9 | end 10 | 11 | local page = entry({"admin", "services", "cupsd"},alias("admin", "services", "cupsd", "basic"), _("CUPS打印服务器"), 60) 12 | page.dependent = true 13 | page.acl_depends = { "luci-app-cupsd" } 14 | entry({"admin", "services", "cupsd", "basic"}, cbi("cupsd/basic"), _("设置"), 10).leaf = true 15 | 16 | entry({"admin", "services", "cupsd_status"}, call("act_status")) 17 | end 18 | 19 | function act_status() 20 | local sys = require "luci.sys" 21 | local uci = require "luci.model.uci".cursor() 22 | local port = tonumber(uci:get_first("cupsd", "cupsd", "port") ) 23 | local e = { } 24 | e.running = sys.call("pidof cupsd > /dev/null") == 0 25 | e.port = port or 631 26 | luci.http.prepare_content("application/json") 27 | luci.http.write_json(e) 28 | end 29 | -------------------------------------------------------------------------------- /luci-app-cupsd/luci-app-cupsd/luasrc/model/cbi/cupsd/basic.lua: -------------------------------------------------------------------------------- 1 | -- Copyright 2008 Yanira 2 | -- Licensed to the public under the Apache License 2.0. 3 | -- mod by wulishui 20191205 4 | -- mod by 2021-2022 sirpdboy https://github.com/sirpdboy/luci-app-cupsd 5 | 6 | local m, s, o 7 | 8 | 9 | m = Map("cupsd", translate("CUPS打印服务器")) 10 | m.description = "CUPS是苹果公司为MacOS和其他类似UNIX的操作系统开发的基于标准的开源打印系统。
点击此处可浏览或下载《添加打印机教程》" 11 | m:section(SimpleSection).template = "cupsd_status" 12 | 13 | s = m:section(TypedSection, "cupsd", translate("Global Settings")) 14 | s.addremove=false 15 | s.anonymous = true 16 | 17 | o=s:option(Flag, "enabled", translate("Enable")) 18 | o.default=0 19 | 20 | o=s:option(Value, "port", translate("WEB管理端口"),translate("可随意设定为无冲突的端口,对程序运行无影响。")) 21 | o.datatype="uinteger" 22 | o.default=631 23 | o:depends("enabled",1) 24 | 25 | 26 | return m 27 | 28 | 29 | -------------------------------------------------------------------------------- /luci-app-cupsd/luci-app-cupsd/luasrc/view/cupsd_status.htm: -------------------------------------------------------------------------------- 1 | 20 | 21 |
22 | <%:cupsd状态%> 23 |

24 | <%:Collecting data...%> 25 |

26 |
-------------------------------------------------------------------------------- /luci-app-cupsd/luci-app-cupsd/root/etc/uci-defaults/luci-cupsd: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@cupsd[-1] 5 | add ucitrack cupsd 6 | set ucitrack.@cupsd[-1].init=cupsd 7 | commit ucitrack 8 | EOF 9 | 10 | 11 | rm -f /tmp/luci* 12 | exit 0 13 | -------------------------------------------------------------------------------- /luci-app-cupsd/luci-app-cupsd/root/usr/share/rpcd/acl.d/luci-app-cupsd.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-cupsd": { 3 | "description": "Grant UCI access for luci-app-cupsd", 4 | "read": { 5 | "uci": [ "cupsd" ] 6 | }, 7 | "write": { 8 | "uci": [ "cupsd" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-cupsd/luci-app-cupsd/root/www/cups.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-cupsd/luci-app-cupsd/root/www/cups.pdf -------------------------------------------------------------------------------- /luci-app-ddns-go/Makefile: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: GPL-3.0-only 2 | # 3 | # Copyright (C) 2021-2025 sirpdboy 4 | # https://github.com/sirpdboy/luci-app-ddns-go 5 | # This is free software, licensed under the Apache License, Version 2.0 . 6 | # 7 | include $(TOPDIR)/rules.mk 8 | 9 | PKG_NAME:=luci-app-ddns-go 10 | PKG_VERSION:=1.5.3 11 | PKG_RELEASE:=20250515 12 | 13 | PKG_MAINTAINER:=sirpdboy 14 | PKG_CONFIG_DEPENDS:= 15 | 16 | LUCI_TITLE:=LuCI Support for Dynamic ddns-go Client 17 | LUCI_DEPENDS:=+ddns-go 18 | LUCI_PKGARCH:=all 19 | 20 | define Package/$(PKG_NAME)/conffiles 21 | /etc/config/ddns-go 22 | /etc/ddns-go/ddns-go-config.yaml 23 | endef 24 | 25 | include $(TOPDIR)/feeds/luci/luci.mk 26 | 27 | # call BuildPackage - OpenWrt buildroot signature 28 | -------------------------------------------------------------------------------- /luci-app-ddns-go/po/templates/ddns-go.pot: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | 4 | msgid "DDNS-GO" 5 | msgstr "" 6 | 7 | msgid "DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service." 8 | msgstr "" 9 | 10 | msgid "Base Setting" 11 | msgstr "" 12 | 13 | msgid "Status check error:" 14 | msgstr "" 15 | 16 | msgid "Checking status..." 17 | msgstr "" 18 | 19 | msgid "DDNS-GO Control panel" 20 | msgstr "" 21 | 22 | msgid "Open Web Interface" 23 | msgstr "" 24 | 25 | msgid "Log" 26 | msgstr "" 27 | 28 | msgid "Clear Logs..." 29 | msgstr "" 30 | 31 | msgid "Logs cleared successfully!" 32 | msgstr "" 33 | 34 | msgid "Clear Logs" 35 | msgstr "" 36 | 37 | msgid "NOT RUNNING" 38 | msgstr "" 39 | 40 | msgid "RUNNING" 41 | msgstr "" 42 | 43 | msgid "DDNS-GO Service Not Running" 44 | msgstr "" 45 | 46 | msgid "Please enable the DDNS-GO service" 47 | msgstr "" 48 | 49 | msgid "Open Web Interface" 50 | msgstr "" 51 | 52 | msgid "Set the DDNS-TO access port" 53 | msgstr "" 54 | 55 | msgid "Collecting data..." 56 | msgstr "" 57 | 58 | msgid "update interval" 59 | msgstr "" 60 | 61 | msgid "Skip verifying certificates" 62 | msgstr "" 63 | 64 | msgid "Compare with service provider N times intervals" 65 | msgstr "" 66 | 67 | msgid "Specify DNS resolution server" 68 | msgstr "" 69 | 70 | msgid "Do not start web services" 71 | msgstr "" 72 | 73 | msgid "Delayed Start (seconds)" 74 | msgstr "" 75 | -------------------------------------------------------------------------------- /luci-app-ddns-go/po/zh_Hans/ddns-go.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "Content-Type: text/plain; charset=UTF-8" 3 | 4 | msgid "DDNS-GO" 5 | msgstr "DDNS-GO" 6 | 7 | msgid "DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service." 8 | msgstr "DDNS-GO自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务." 9 | 10 | msgid "Base Setting" 11 | msgstr "基本设置" 12 | 13 | msgid "Status check error:" 14 | msgstr "状态检查错误:" 15 | 16 | msgid "Checking status..." 17 | msgstr "检查状态..." 18 | 19 | msgid "DDNS-GO Control panel" 20 | msgstr "DDNS-GO操作台" 21 | 22 | msgid "Open Web Interface" 23 | msgstr "打开 Web 界面" 24 | 25 | msgid "Log" 26 | msgstr "日志" 27 | 28 | msgid "Clear Logs..." 29 | msgstr "清除日志..." 30 | 31 | msgid "Logs cleared successfully!" 32 | msgstr "日志清除成功!" 33 | 34 | msgid "Clear Logs" 35 | msgstr "清除日志" 36 | 37 | msgid "NOT RUNNING" 38 | msgstr "未运行" 39 | 40 | msgid "RUNNING" 41 | msgstr "运行中" 42 | 43 | msgid "DDNS-GO Service Not Running" 44 | msgstr "DDNS-GO服务未启用" 45 | 46 | msgid "DDNS-GO Web Interface Disabled" 47 | msgstr "DDNS-GO WEB服务禁用" 48 | 49 | msgid "Open Web Interface" 50 | msgstr "打开Web界面" 51 | 52 | msgid "Set the DDNS-TO access port" 53 | msgstr "设置访问端口" 54 | 55 | msgid "Collecting data..." 56 | msgstr "收集数据..." 57 | 58 | msgid "update interval" 59 | msgstr "更新间隔" 60 | 61 | msgid "Skip verifying certificates" 62 | msgstr "跳过验证证书" 63 | 64 | msgid "Compare with service provider N times intervals" 65 | msgstr "间隔N次与服务商比对" 66 | 67 | msgid "Specify DNS resolution server" 68 | msgstr "指定DNS解析服务器" 69 | 70 | msgid "Do not start web services" 71 | msgstr "不启动web服务" 72 | 73 | msgid "Delayed Start (seconds)" 74 | msgstr "开机延时启动(秒)" 75 | -------------------------------------------------------------------------------- /luci-app-ddns-go/root/etc/config/ddns-go: -------------------------------------------------------------------------------- 1 | config basic 'config' 2 | option enabled '0' 3 | option logger '1' 4 | option port '9876' 5 | option time '300' 6 | option ctimes '5' 7 | option skipverify '0' 8 | option delay '0' 9 | option dns '223.5.5.5' 10 | -------------------------------------------------------------------------------- /luci-app-ddns-go/root/etc/ddns-go/ddns-go-config.yaml: -------------------------------------------------------------------------------- 1 | ipv4: 2 | enable: true 3 | gettype: url 4 | url: https://myip4.ipip.net, https://ddns.oray.com/checkip, https://ip.3322.net 5 | netinterface: br-lan 6 | domains: 7 | - "" 8 | ipv6: 9 | enable: false 10 | gettype: url 11 | url: https://myip6.ipip.net, https://speed.neu6.edu.cn/getIP.php, https://v6.ident.me 12 | netinterface: "" 13 | ipv6reg: "" 14 | domains: 15 | - "" 16 | dns: 17 | name: alidns 18 | id: "" 19 | secret: "" 20 | user: 21 | username: "" 22 | password: "" 23 | webhook: 24 | webhookurl: "" 25 | webhookrequestbody: "" 26 | notallowwanaccess: true 27 | ttl: "" 28 | -------------------------------------------------------------------------------- /luci-app-ddns-go/root/etc/ddns-go/localtime: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-ddns-go/root/etc/ddns-go/localtime -------------------------------------------------------------------------------- /luci-app-ddns-go/root/usr/libexec/ddns-go-call: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright (C) 2023-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-ddns-go 4 | # 5 | 6 | logfile="/var/log/ddns-go.log" 7 | lang=$(uci get luci.main.lang 2>/dev/null) 8 | if [ -z "$lang" ] || [[ "$lang" == "auto" ]]; then 9 | lang=$(echo "${LANG:-${LANGUAGE:-${LC_ALL:-${LC_MESSAGES:-zh_cn}}}}" | awk -F'[ .@]' '{print tolower($1)}' | sed 's/-/_/' 2>/dev/null) 10 | fi 11 | 12 | translate() { 13 | # 处理特殊字符 14 | local lua_script=$(cat <"${logfile}" 26 | 27 | elif [ "$1" == "child" ]; then 28 | shift 29 | command_name=$1 30 | shift 31 | "$command_name" "$@" 32 | fi 33 | -------------------------------------------------------------------------------- /luci-app-ddns-go/root/usr/share/ddns-go/ddns-go-default.yaml: -------------------------------------------------------------------------------- 1 | ipv4: 2 | enable: true 3 | gettype: url 4 | url: https://4.ipw.cn,https://myip4.ipip.net,https://ddns.oray.com/checkip,https://ip.3322.net 5 | netinterface: br-lan 6 | domains: 7 | - "" 8 | ipv6: 9 | enable: false 10 | gettype: url 11 | url: https://6.ipw.cn, https://speed.neu6.edu.cn/getIP.php, https://v6.ident.me 12 | netinterface: "" 13 | ipv6reg: "" 14 | domains: 15 | - "" 16 | dns: 17 | name: alidns 18 | id: "" 19 | secret: "" 20 | user: 21 | username: "" 22 | password: "" 23 | webhook: 24 | webhookurl: "" 25 | webhookrequestbody: "" 26 | notallowwanaccess: true 27 | ttl: "" 28 | -------------------------------------------------------------------------------- /luci-app-ddns-go/root/usr/share/luci/menu.d/luci-app-ddns-go.json: -------------------------------------------------------------------------------- 1 | { 2 | "admin/services/ddns-go": { 3 | "title": "DDNS-GO", 4 | "order": 58, 5 | "action": { 6 | "type": "firstchild" 7 | }, 8 | "depends": { 9 | "acl": [ "luci-app-ddns-go" ], 10 | "uci": { "ddns-go": true } 11 | } 12 | }, 13 | 14 | "admin/services/ddns-go/config": { 15 | "title": "Base Setting", 16 | "order": 10, 17 | "action": { 18 | "type": "view", 19 | "path": "ddns-go/config" 20 | } 21 | }, 22 | 23 | "admin/services/ddns-go/ddns-go": { 24 | "title": "DDNS-GO Control panel", 25 | "order": 20, 26 | "action": { 27 | "type": "view", 28 | "path": "ddns-go/ddns-go" 29 | } 30 | }, 31 | 32 | "admin/services/ddns-go/log": { 33 | "title": "Log", 34 | "order": 30, 35 | "action": { 36 | "type": "view", 37 | "path": "ddns-go/log" 38 | } 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-ddns-go": { 3 | "description": "Grant UCI access for luci-app-ddns-go", 4 | "read": { 5 | "file": { 6 | "/etc/init.d/ddns-go": [ "exec" ], 7 | "/usr/libexec/ddns-go-call": [ "exec" ], 8 | "/etc/ddns-go/ddns-go-config.yaml": [ "read" ], 9 | "/var/log/ddns-go.log": [ "read" ] 10 | }, 11 | "ubus": { 12 | "service": [ "list" ] 13 | }, 14 | "uci": [ "ddns-go" ,"ddns-go" ] 15 | }, 16 | "write": { 17 | "uci": [ "ddns-go" ,"ddns-go" ] 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /luci-app-dockerman/Makefile: -------------------------------------------------------------------------------- 1 | include $(TOPDIR)/rules.mk 2 | 3 | LUCI_TITLE:=LuCI Support for docker 4 | LUCI_DEPENDS:=@(aarch64||arm||x86_64) \ 5 | +luci-compat \ 6 | +luci-lib-docker \ 7 | +luci-lib-ip \ 8 | +docker \ 9 | +dockerd +cgroupfs-mount \ 10 | +ttyd 11 | LUCI_PKGARCH:=all 12 | 13 | PKG_LICENSE:=AGPL-3.0 14 | PKG_MAINTAINER:=lisaac \ 15 | Florian Eckert 16 | 17 | PKG_VERSION:=v0.5.26 18 | 19 | include $(TOPDIR)/feeds/luci/luci.mk 20 | 21 | # call BuildPackage - OpenWrt buildroot signature 22 | -------------------------------------------------------------------------------- /luci-app-dockerman/depends.lst: -------------------------------------------------------------------------------- 1 | ttyd docker-cli -------------------------------------------------------------------------------- /luci-app-dockerman/htdocs/luci-static/resources/dockerman/containers.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Docker icon 6 | 7 | 8 | -------------------------------------------------------------------------------- /luci-app-dockerman/htdocs/luci-static/resources/dockerman/file-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-dockerman/htdocs/luci-static/resources/dockerman/file-icon.png -------------------------------------------------------------------------------- /luci-app-dockerman/htdocs/luci-static/resources/dockerman/file-manager.css: -------------------------------------------------------------------------------- 1 | .fb-container { 2 | margin-top: 1rem; 3 | } 4 | .fb-container .cbi-button { 5 | height: 1.8rem; 6 | } 7 | .fb-container .cbi-input-text { 8 | margin-bottom: 1rem; 9 | width: 100%; 10 | } 11 | .fb-container .panel-title { 12 | padding-bottom: 0; 13 | width: 50%; 14 | border-bottom: none; 15 | } 16 | .fb-container .panel-container { 17 | display: flex; 18 | align-items: center; 19 | justify-content: space-between; 20 | padding-bottom: 1rem; 21 | border-bottom: 1px solid #eee; 22 | } 23 | .fb-container .upload-container { 24 | display: none; 25 | margin: 1rem 0; 26 | } 27 | .fb-container .upload-file { 28 | margin-right: 2rem; 29 | } 30 | .fb-container .cbi-value-field { 31 | text-align: left; 32 | } 33 | .fb-container .parent-icon strong { 34 | margin-left: 1rem; 35 | } 36 | .fb-container td[class$="-icon"] { 37 | cursor: pointer; 38 | } 39 | .fb-container .file-icon, .fb-container .folder-icon, .fb-container .link-icon { 40 | position: relative; 41 | } 42 | .fb-container .file-icon:before, .fb-container .folder-icon:before, .fb-container .link-icon:before { 43 | display: inline-block; 44 | width: 1.5rem; 45 | height: 1.5rem; 46 | content: ''; 47 | background-size: contain; 48 | margin: 0 0.5rem 0 1rem; 49 | vertical-align: middle; 50 | } 51 | .fb-container .file-icon:before { 52 | background-image: url(file-icon.png); 53 | } 54 | .fb-container .folder-icon:before { 55 | background-image: url(folder-icon.png); 56 | } 57 | .fb-container .link-icon:before { 58 | background-image: url(link-icon.png); 59 | } 60 | @media screen and (max-width: 480px) { 61 | .fb-container .upload-file { 62 | width: 14.6rem; 63 | } 64 | .fb-container .cbi-value-owner, 65 | .fb-container .cbi-value-perm { 66 | display: none; 67 | } 68 | } 69 | 70 | .cbi-section-table { 71 | width: 100%; 72 | } 73 | 74 | .cbi-section-table-cell { 75 | text-align: right; 76 | } 77 | 78 | .cbi-button-install { 79 | border-color: #c44; 80 | color: #c44; 81 | margin-left: 3px; 82 | } 83 | 84 | .cbi-value-field { 85 | padding: 10px 0; 86 | } 87 | 88 | .parent-icon { 89 | height: 1.8rem; 90 | padding: 10px 0; 91 | } -------------------------------------------------------------------------------- /luci-app-dockerman/htdocs/luci-static/resources/dockerman/folder-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-dockerman/htdocs/luci-static/resources/dockerman/folder-icon.png -------------------------------------------------------------------------------- /luci-app-dockerman/htdocs/luci-static/resources/dockerman/link-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-dockerman/htdocs/luci-static/resources/dockerman/link-icon.png -------------------------------------------------------------------------------- /luci-app-dockerman/htdocs/luci-static/resources/dockerman/networks.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/cbi/inlinebutton.htm: -------------------------------------------------------------------------------- 1 |
2 | <% if self:cfgvalue(section) ~= false then %> 3 | " type="submit"" <% if self.disable then %>disabled <% end %><%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> /> 4 | <% else %> 5 | - 6 | <% end %> 7 |
8 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/cbi/inlinevalue.htm: -------------------------------------------------------------------------------- 1 |
2 | 9 | <%- if self.password then -%> 10 | /> 13 | <%- end -%> 14 | 0, "data-choices", { self.keylist, self.vallist }) 29 | %> /> 30 | <%- if self.password then -%> 31 |
32 | <% end %> 33 |
34 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/cbi/namedsection.htm: -------------------------------------------------------------------------------- 1 | <% if self:cfgvalue(self.section) then section = self.section %> 2 |
3 | <%+cbi/tabmenu%> 4 |
5 | <%+cbi/ucisection%> 6 |
7 |
8 | <% end %> 9 | 10 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/cbi/xfvalue.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | /> 5 | disabled <% end %><%= 6 | attr("id", cbid) .. attr("name", cbid) .. attr("value", self.enabled or 1) .. 7 | ifattr((self:cfgvalue(section) or self.default) == self.enabled, "checked", "checked") 8 | %> /> 9 | > 10 | <%+cbi/valuefooter%> 11 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/container.htm: -------------------------------------------------------------------------------- 1 |
2 | 11 | 12 | 29 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/container_console.htm: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 7 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/images_load.htm: -------------------------------------------------------------------------------- 1 |
2 | disabled <% end %>/> 3 | 4 |
5 | 41 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/logs.htm: -------------------------------------------------------------------------------- 1 | <% if self.title == "Events" then %> 2 | <%+header%> 3 |

<%:Docker - Events%>

4 |
5 |

<%:Events%>

6 | <% end %> 7 |
8 | 9 |
10 | <% if self.title == "Events" then %> 11 |
12 | <%+footer%> 13 | <% end %> 14 | -------------------------------------------------------------------------------- /luci-app-dockerman/luasrc/view/dockerman/volume_size.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /luci-app-dockerman/po/zh_Hans: -------------------------------------------------------------------------------- 1 | zh-cn -------------------------------------------------------------------------------- /luci-app-dockerman/postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /init.sh env 4 | touch /etc/config/dockerd 5 | uci set dockerd.dockerman=dockerman 6 | uci set dockerd.dockerman.socket_path=`uci get dockerd.dockerman.socket_path 2&> /dev/null || echo '/var/run/docker.sock'` 7 | uci set dockerd.dockerman.status_path=`uci get dockerd.dockerman.status_path 2&> /dev/null || echo '/tmp/.docker_action_status'` 8 | uci set dockerd.dockerman.debug=`uci get dockerd.dockerman.debug 2&> /dev/null || echo 'false'` 9 | uci set dockerd.dockerman.debug_path=`uci get dockerd.dockerman.debug_path 2&> /dev/null || echo '/tmp/.docker_debug'` 10 | uci set dockerd.dockerman.remote_port=`uci get dockerd.dockerman.remote_port 2&> /dev/null || echo '2375'` 11 | uci set dockerd.dockerman.remote_endpoint=`uci get dockerd.dockerman.remote_endpoint 2&> /dev/null || echo '0'` 12 | uci del_list dockerd.dockerman.ac_allowed_interface='br-lan' 13 | uci add_list dockerd.dockerman.ac_allowed_interface='br-lan' 14 | uci commit dockerd -------------------------------------------------------------------------------- /luci-app-dockerman/root/etc/uci-defaults/luci-app-dockerman: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | . $IPKG_INSTROOT/lib/functions.sh 4 | 5 | [ -x "$(command -v dockerd)" ] && chmod +x /etc/init.d/dockerman && /etc/init.d/dockerman enable >/dev/null 2>&1 6 | sed -i 's/self:cfgvalue(section) or {}/self:cfgvalue(section) or self.default or {}/' /usr/lib/lua/luci/view/cbi/dynlist.htm 7 | /etc/init.d/uhttpd restart >/dev/null 2>&1 8 | rm -fr /tmp/luci-indexcache /tmp/luci-modulecache >/dev/null 2>&1 9 | touch /etc/config/dockerd 10 | ls /etc/rc.d/*dockerd &> /dev/null && uci -q set dockerd.globals.auto_start="1" || uci -q set dockerd.globals.auto_start="0" 11 | uci -q batch <<-EOF >/dev/null 12 | set uhttpd.main.script_timeout="3600" 13 | commit uhttpd 14 | set dockerd.dockerman=dockerman 15 | set dockerd.dockerman.socket_path='/var/run/docker.sock' 16 | set dockerd.dockerman.status_path='/tmp/.docker_action_status' 17 | set dockerd.dockerman.debug='false' 18 | set dockerd.dockerman.debug_path='/tmp/.docker_debug' 19 | set dockerd.dockerman.remote_endpoint='0' 20 | 21 | del_list dockerd.dockerman.ac_allowed_interface='br-lan' 22 | add_list dockerd.dockerman.ac_allowed_interface='br-lan' 23 | 24 | commit dockerd 25 | EOF 26 | # remove dockerd firewall 27 | config_load dockerd 28 | remove_firewall(){ 29 | cfg=${1} 30 | uci_remove dockerd ${1} 31 | } 32 | config_foreach remove_firewall firewall 33 | # Convert ac_allowed_container to ac_allowed_ports 34 | (sleep 30s && /etc/init.d/dockerman convert;/etc/init.d/dockerman restart) & 35 | 36 | /etc/init.d/dockerd restart & 37 | exit 0 38 | -------------------------------------------------------------------------------- /luci-app-dockerman/root/usr/share/rpcd/acl.d/luci-app-dockerman.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-dockerman": { 3 | "description": "Grant UCI access for luci-app-dockerman", 4 | "read": { 5 | "uci": [ "dockerd" ] 6 | }, 7 | "write": { 8 | "uci": [ "dockerd" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-eqosplus/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2006-2017 OpenWrt.org 3 | # Copyright (C) 2022-2023 sirpdboy 4 | # This is free software, licensed under the GNU General Public License v2. 5 | # See /LICENSE for more information. 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | THEME_NAME:=eqosplus 11 | PKG_NAME:=luci-app-$(THEME_NAME) 12 | 13 | PKG_LICENSE:=Apache-2.0 14 | 15 | LUCI_TITLE:=LuCI support for eqosplus. 16 | LUCI_DESCRIPTION:=LuCI support for Easy eqosplus(Support speed limit based on IP address). 17 | LUCI_DEPENDS:=+bash +tc +kmod-sched-core +kmod-ifb +kmod-sched +iptables-mod-filter +iptables-mod-nat-extra 18 | LUCI_PKGARCH:=all 19 | 20 | PKG_VERSION:=1.2.5 21 | PKG_RELEASE:=20231205 22 | PKG_MAINTAINER:=sirpdboy 23 | 24 | define Build/Compile 25 | endef 26 | 27 | define Package/$(PKG_NAME)/postinst 28 | #!/bin/sh 29 | rm -f /tmp/luci-* 30 | endef 31 | 32 | define Package/$(PKG_NAME)/conffiles 33 | /etc/config/eqosplus 34 | endef 35 | 36 | include $(TOPDIR)/feeds/luci/luci.mk 37 | 38 | # call BuildPackage - OpenWrt buildroot signature 39 | 40 | -------------------------------------------------------------------------------- /luci-app-eqosplus/luasrc/controller/eqosplus.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.eqosplus", package.seeall) 2 | -- Copyright 2022-2023 sirpdboy 3 | function index() 4 | if not nixio.fs.access("/etc/config/eqosplus") then return end 5 | entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false 6 | 7 | local e = entry({"admin", "control", "eqosplus"}, cbi("eqosplus"), _("Eqosplus"), 10) 8 | e.dependent=false 9 | e.acl_depends = { "luci-app-eqosplus" } 10 | entry({"admin", "control", "eqosplus", "status"}, call("act_status")).leaf = true 11 | end 12 | 13 | function act_status() 14 | local sys = require "luci.sys" 15 | local e = {} 16 | e.status = sys.call(" busybox ps -w | grep eqosplus | grep -v grep >/dev/null ") == 0 17 | luci.http.prepare_content("application/json") 18 | luci.http.write_json(e) 19 | end 20 | -------------------------------------------------------------------------------- /luci-app-eqosplus/luasrc/view/eqosplus/eqosplus.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | <%=pcdata(self:cfgvalue(section) or self.default or "")%> 3 | <%+cbi/valuefooter%> -------------------------------------------------------------------------------- /luci-app-eqosplus/luasrc/view/eqosplus/index.htm: -------------------------------------------------------------------------------- 1 | <% include("cbi/map") %> 2 | -------------------------------------------------------------------------------- /luci-app-eqosplus/po/zh-cn/eqosplus.po: -------------------------------------------------------------------------------- 1 | 2 | msgid "Eqosplus" 3 | msgstr "定时限速" 4 | 5 | msgid "Network speed limit" 6 | msgstr "定时网速限制" 7 | 8 | msgid "Running state" 9 | msgstr "运行状态" 10 | 11 | msgid "Not running" 12 | msgstr "未运行" 13 | 14 | msgid "Running" 15 | msgstr "已运行" 16 | 17 | msgid "Users can limit the network speed for uploading/downloading through MAC, IP.The speed unit is MB/second." 18 | msgstr "可以通过MAC,IP限制用户上传/下载的网速。速度单位为 MB/秒 。" 19 | 20 | msgid "MAC/IP" 21 | msgstr "MAC/IP" 22 | 23 | msgid "Downloads" 24 | msgstr "下载速度" 25 | 26 | msgid "Uploads" 27 | msgstr "上传速度" 28 | 29 | msgid "Comment" 30 | msgstr "备注" 31 | 32 | msgid "Upload bandwidth(Mbit/s)" 33 | msgstr "上传总带宽(Mbit/s)" 34 | 35 | msgid "Download bandwidth(Mbit/s)" 36 | msgstr "下载总带宽(Mbit/s)" 37 | 38 | msgid "Start control time" 39 | msgstr "起控时间" 40 | 41 | msgid "Stop control time" 42 | msgstr "停控时间" 43 | 44 | msgid "Week Day(1~7)" 45 | msgstr "星期(1~7)" 46 | 47 | msgid "Suggested feedback:" 48 | msgstr "建议反馈:" 49 | 50 | msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode" 51 | msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口" 52 | 53 | msgid "Rest Day" 54 | msgstr "休息日" 55 | 56 | msgid "Workday" 57 | msgstr "工作日" 58 | 59 | msgid "Automatic settings" 60 | msgstr "自动设置" 61 | 62 | -------------------------------------------------------------------------------- /luci-app-eqosplus/po/zh_Hans/eqosplus.po: -------------------------------------------------------------------------------- 1 | 2 | msgid "Eqosplus" 3 | msgstr "定时限速" 4 | 5 | msgid "Network speed limit" 6 | msgstr "定时网速限制" 7 | 8 | msgid "Running state" 9 | msgstr "运行状态" 10 | 11 | msgid "Not running" 12 | msgstr "未运行" 13 | 14 | msgid "Running" 15 | msgstr "已运行" 16 | 17 | msgid "Users can limit the network speed for uploading/downloading through MAC, IP.The speed unit is MB/second." 18 | msgstr "可以通过MAC,IP限制用户上传/下载的网速。速度单位为 MB/秒 。" 19 | 20 | msgid "MAC/IP" 21 | msgstr "MAC/IP" 22 | 23 | msgid "Downloads" 24 | msgstr "下载速度" 25 | 26 | msgid "Uploads" 27 | msgstr "上传速度" 28 | 29 | msgid "Comment" 30 | msgstr "备注" 31 | 32 | msgid "Upload bandwidth(Mbit/s)" 33 | msgstr "上传总带宽(Mbit/s)" 34 | 35 | msgid "Download bandwidth(Mbit/s)" 36 | msgstr "下载总带宽(Mbit/s)" 37 | 38 | msgid "Start control time" 39 | msgstr "起控时间" 40 | 41 | msgid "Stop control time" 42 | msgstr "停控时间" 43 | 44 | msgid "Week Day(1~7)" 45 | msgstr "星期(1~7)" 46 | 47 | msgid "Suggested feedback:" 48 | msgstr "建议反馈:" 49 | 50 | msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode" 51 | msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口" 52 | 53 | msgid "Rest Day" 54 | msgstr "休息日" 55 | 56 | msgid "Workday" 57 | msgstr "工作日" 58 | 59 | msgid "Automatic settings" 60 | msgstr "自动设置" 61 | 62 | -------------------------------------------------------------------------------- /luci-app-eqosplus/root/etc/config/eqosplus: -------------------------------------------------------------------------------- 1 | 2 | config eqosplus 3 | option enabled '0' 4 | option download '1000' 5 | option upload '30' 6 | option ifname '1' 7 | 8 | config device 9 | option timestart '00:00' 10 | option week '0' 11 | option download '1' 12 | option timeend '23:55' 13 | option upload '1' 14 | option mac '' 15 | option enable '0' 16 | 17 | config device 18 | option mac '192.168.10.10/24' 19 | option timestart '00:00' 20 | option timeend '00:00' 21 | option week '0' 22 | option download '0.1' 23 | option upload '0.1' 24 | option enable '0' 25 | 26 | -------------------------------------------------------------------------------- /luci-app-eqosplus/root/etc/init.d/eqosplus: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | # 3 | # Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus 4 | # 5 | 6 | START=99 7 | USE_PROCD=1 8 | 9 | NAME=eqosplus 10 | LOCK="/var/lock/$NAME.lock" 11 | CR=/etc/crontabs/root 12 | 13 | start_instance() { 14 | procd_open_instance 15 | procd_set_param command /usr/bin/eqosplusctrl 16 | procd_set_param respawn 17 | procd_set_param stderr 1 18 | procd_close_instance 19 | } 20 | 21 | _eqosplus_start() { 22 | if [ "$(grep -c 'option enable .1.' /etc/config/$NAME 2>/dev/null)" -gt "0" ]; then 23 | if [ x$(uci -q get turboacc.config.sw_flow) = 'x1' ] || [ x$(uci -q get turboacc.config.sfe_flow) = 'x1' ] ;then 24 | uci -q set turboacc.config.sw_flow='0' 25 | uci -q set turboacc.config.sfe_flow='0' 26 | uci -q set turboacc.config.hw_flow='0' 27 | uci commit turboacc 28 | /etc/init.d/turboacc restart 29 | fi 30 | touch $LOCK 31 | eqosplus start 32 | start_instance 33 | (crontab -l ; echo "00 1 * * * /etc/init.d/eqosplus start") | sort - | uniq - | crontab - 34 | fi 35 | } 36 | 37 | start_service(){ 38 | [ -f $LOCK ] && exit 39 | stop_service 40 | _eqosplus_start 41 | rm -f $LOCK 42 | } 43 | 44 | service_triggers() { 45 | procd_add_reload_trigger 'eqosplus' 46 | } 47 | 48 | stop_service(){ 49 | kill -9 $(busybox ps -w | grep 'eqosplusctrl' | grep -v 'grep' | awk '{print $1}') >/dev/null 2>&1 50 | sed -i '/eqosplus/d' $CR >/dev/null 2>&1 51 | rm -f $LOCK 2>/dev/null 52 | eqosplus stop 53 | } 54 | 55 | -------------------------------------------------------------------------------- /luci-app-eqosplus/root/etc/uci-defaults/luci-eqosplus: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | chmod +x /etc/init.d/eqosplus /usr/bin/eqosplus* 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@eqosplus[-1] 5 | add ucitrack eqosplus 6 | set ucitrack.@eqosplus[-1].init=eqosplus 7 | commit ucitrack 8 | EOF 9 | 10 | [ -s /etc/config/eqosplus ] || echo "config eqosplus" > /etc/config/eqosplus 11 | 12 | rm -f /tmp/luci-indexcache 13 | exit 0 14 | -------------------------------------------------------------------------------- /luci-app-eqosplus/root/usr/bin/eqosplusctrl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copyright (C) 2006 OpenWrt.org 4 | # Copyright 2022-2023 sirpdboy 5 | NAME=eqosplus 6 | IDLIST="/var/$NAME.idlist" 7 | TMPID="/var/$NAME.tmpid" 8 | 9 | idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' ` 10 | 11 | check_list() { 12 | i=$1 13 | checki='0' 14 | start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null) 15 | end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null) 16 | wweek=`uci -q get $NAME.@device[$i].week ` 17 | current_time=$(date +%H:%M) 18 | current_weekday=$(date +%u) 19 | for ww in `echo $wweek | sed 's/,/ /g' `; do 20 | if [ $current_weekday = $ww ] || [ 'x0' = x$ww ] ;then 21 | [ "$start_time" = "$end_time" ] && checki='1' || { 22 | if [ "$start_time" \< "$end_time" ]; then 23 | if [ "$current_time" \> "$start_time" ] && [ "$current_time" \< "$end_time" ] ; then 24 | checki='1' 25 | fi 26 | else 27 | if [ "$start_time" \> "$end_time" ] ; then 28 | if [ "$current_time" \< "$start_time" ] && [ "$current_time" \> "$end_time" ] ; then 29 | checki='1' 30 | fi 31 | fi 32 | fi 33 | } 34 | fi 35 | done 36 | return 37 | } 38 | 39 | idlistusr(){ 40 | checki='0' 41 | [ -s $IDLIST ] || touch $IDLIST 42 | for list in $idlist ;do 43 | check_list $list 44 | if [ $checki == '1' ] ; then 45 | [ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] || { 46 | eqosplus add $list 47 | echo "!${list}!" >> $IDLIST ; cat $IDLIST | sort | uniq > $TMPID ;cat $TMPID >$IDLIST ;rm -rf $TMPID 48 | } 49 | else 50 | [ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] && { 51 | eqosplus del $list 52 | sed -i "/!$list!/d" $IDLIST >/dev/null 2>&1 53 | } 54 | fi 55 | done 56 | } 57 | 58 | 59 | while :;do 60 | sleep 30 61 | idlistusr 62 | sleep 30 63 | done -------------------------------------------------------------------------------- /luci-app-eqosplus/root/usr/share/rpcd/acl.d/luci-app-eqosplus.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-eqosplus": { 3 | "description": "Grant UCI access for luci-app-eqosplus", 4 | "read": { 5 | "uci": [ "eqosplus" ] 6 | }, 7 | "write": { 8 | "uci": [ "eqosplus" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-fancontrol/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2008-2014 The LuCI Team 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | LUCI_TITLE:=LuCI support for fancontrol From bauw 10 | PKG_NAME:=luci-app-fancontrol 11 | LUCI_DEPENDS:=+kmod-hwmon-coretemp 12 | PKG_VERSION:=1.0 13 | PKG_RELEASE:=1 14 | 15 | include $(TOPDIR)/feeds/luci/luci.mk 16 | 17 | # call BuildPackage - OpenWrt buildroot signature 18 | -------------------------------------------------------------------------------- /luci-app-fancontrol/luasrc/controller/fancontrol.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.fancontrol", package.seeall) 2 | 3 | function index() 4 | if nixio.fs.access("/etc/config/fancontrol") then 5 | local fan_speed = luci.sys.exec("cat /sys/class/hwmon/hwmon0/temp1_input") 6 | fan_speed = fan_speed or "未知" 7 | entry({"admin", "system", "fancontrol"}, cbi("fancontrol"), _("风扇控制"), 90).dependent = true 8 | entry({"admin", "system", "fancontrol", "status"}, call("action_fancontrol_status"), _("风扇控制状态"), 91) 9 | end 10 | end 11 | 12 | function action_fancontrol_status() 13 | local fan_speed = luci.sys.exec("cat /sys/class/hwmon/hwmon0/temp1_input") 14 | fan_speed = fan_speed or "未知" 15 | luci.template.render("fancontrol/fancontrol_status", {fan_speed = fan_speed}) 16 | end 17 | 18 | 19 | -------------------------------------------------------------------------------- /luci-app-fancontrol/luasrc/view/fancontrol/fancontrol_status.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 风扇控制 5 | 25 | 26 | 27 | <%+header%> 28 | 29 | 30 |
31 | 风扇控制状态: 32 | <%= fan_speed %> RPM 33 |
34 | 35 | <%+footer%> 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /luci-app-fancontrol/root/etc/config/fancontrol: -------------------------------------------------------------------------------- 1 | 2 | config fancontrol 'common' 3 | # Defines at which interval in seconds fancontrol should wake up 4 | option interval '10' 5 | 6 | # Optional, fancontrol won't start if set to 1 (default: 0) 7 | option disabled '1' 8 | 9 | 10 | # fancontrol uses this to check that the configuration is still up-to-date 11 | config device 'hwmon0' 12 | # Can be retrieved via "cat /sys/class/hwmon/hwmon*/name" 13 | option name 'coretemp' 14 | 15 | # Can be retrieved via "readlink -f /sys/class/hwmon/hwmon*/device | sed -e 's/^\/sys\///'" 16 | option path 'devices/platform/coretemp.0' 17 | 18 | config device 'hwmon4' 19 | option name 'mlxsw' 20 | option path 'devices/pci0000:00/0000:00:01.0/0000:01:00.0' 21 | 22 | 23 | config control 24 | # The fan's PWM output file 25 | option pwm 'hwmon4/pwm1' 26 | 27 | # The sensor's temperature input file 28 | option temp 'hwmon0/temp2_input' 29 | 30 | # The temperature below which the fan gets switched to minimum speed 31 | option min_temp '50' 32 | 33 | # The temperature over which the fan gets switched to maximum speed 34 | option max_temp '60' 35 | 36 | # The minimum PWM value at which the fan begins spinning 37 | option min_start '150' 38 | 39 | # The minimum PWM value at which the fan still spins 40 | option min_stop '100' 41 | 42 | # Optional, the fan's speed input file 43 | # fancontrol can check the fan speed and restart it if it stops unexpectedly 44 | option fan 'hwmon4/fan4_input' 45 | 46 | # Optional, the PWM value to use when the temperature is below min_temp (default: 0) 47 | option min_pwm '0' 48 | 49 | # Optional, the PWM value to use when the temperature is over max_temp (default: 255) 50 | option max_pwm '255' 51 | 52 | # Optional, how many last temperature readings are used to average the temperature (default: 1 -> no averaging) 53 | option average '1' 54 | 55 | # Optional, disables this section (default: 0) 56 | option disabled '0' 57 | -------------------------------------------------------------------------------- /luci-app-fileassistant/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2019 sirpdboy 2 | # 3 | # 4 | # 5 | # This is free software, licensed under the Apache License, Version 2.0 . 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | LUCI_TITLE:=LuCI support for Fileassistant 11 | LUCI_PKGARCH:=all 12 | PKG_VERSION:=1.1 13 | PKG_RELEASE:= 14 | 15 | include $(TOPDIR)/feeds/luci/luci.mk 16 | 17 | # call BuildPackage - OpenWrt buildroot signature 18 | -------------------------------------------------------------------------------- /luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/file-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/file-icon.png -------------------------------------------------------------------------------- /luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/folder-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/folder-icon.png -------------------------------------------------------------------------------- /luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/link-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-fileassistant/htdocs/luci-static/resources/fileassistant/link-icon.png -------------------------------------------------------------------------------- /luci-app-fileassistant/luasrc/view/fileassistant.htm: -------------------------------------------------------------------------------- 1 | <%+header%> 2 | 3 | 4 |

文件管理【集成上传/删除/安装功能,请谨慎操作】

5 |
6 | 7 |
8 | 9 |
10 |
11 |
文件列表
12 | 13 | 14 |
15 |
16 | 17 | 18 |
19 |
20 |
21 | 22 | 23 | 24 | <%+footer%> 25 | -------------------------------------------------------------------------------- /luci-app-fileassistant/root/etc/uci-defaults/40_luci-fb: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ver=$(date +%s) 4 | sed -i "s/@ver/$ver/g" /usr/lib/lua/luci/view/filebrowser.htm 5 | 6 | rm -f /tmp/luci-indexcache 7 | exit 0 8 | -------------------------------------------------------------------------------- /luci-app-fileassistant/root/usr/share/rpcd/acl.d/luci-app-fileassistant.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-fileassistant": { 3 | "description": "Grant UCI access for luci-app-fileassistant", 4 | "read": { 5 | "uci": [ "fileassistant" ] 6 | }, 7 | "write": { 8 | "uci": [ "fileassistant" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-netspeedtest/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 muink 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /luci-app-netspeedtest/Makefile: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: GPL-3.0-only 2 | # 3 | # Copyright (C) 2021-2025 sirpdboy 4 | # https://github.com/sirpdboy/luci-app-netspeedtest 5 | # This is free software, licensed under the Apache License, Version 2.0 . 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | PKG_NAME:=luci-app-netspeedtest 11 | 12 | PKG_VERSION:=5.0.3 13 | PKG_RELEASE:=20250515 14 | 15 | LUCI_TITLE:=LuCI Support for netspeedtest 16 | LUCI_DEPENDS:=+speedtest-cli +homebox $(if $(find_package iperf3-ssl),+iperf3-ssl,+iperf3) 17 | LUCI_PKGARCH:=all 18 | PKG_MAINTAINER:=sirpdboy 19 | 20 | 21 | define Package/$(PKG_NAME)/conffiles 22 | /etc/config/netspeedtest 23 | endef 24 | 25 | define Package/$(PKG_NAME)/postinst 26 | #!/bin/sh 27 | if [ -z "$${IPKG_INSTROOT}" ]; then 28 | if ! uci show netspeedtest.config >/dev/null 2>&1; then 29 | uci set netspeedtest.config=netspeedtest 30 | uci set netspeedtest.config.enabled='1' 31 | uci commit netspeedtest 32 | fi 33 | fi 34 | exit 0 35 | endef 36 | 37 | include $(TOPDIR)/feeds/luci/luci.mk 38 | 39 | 40 | # call BuildPackage - OpenWrt buildroot signature 41 | -------------------------------------------------------------------------------- /luci-app-netspeedtest/htdocs/luci-static/resources/view/netspeedtest/openspeedtest.js: -------------------------------------------------------------------------------- 1 | /* Copyright (C) 2021-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-netspeedtest */ 2 | 'use strict'; 3 | 'require view'; 4 | 'require uci'; 5 | 'require ui'; 6 | 'require form'; 7 | 8 | return view.extend({ 9 | 10 | load() { 11 | return Promise.all([ 12 | uci.load('netspeedtest') 13 | ]); 14 | }, 15 | 16 | render(res) { 17 | let m, s, o; 18 | 19 | m = new form.Map('netspeedtest', _('OpenSpeedTest')); 20 | 21 | s = m.section(form.NamedSection, '_iframe'); 22 | s.anonymous = true; 23 | s.render = function (section_id) { 24 | return E('iframe', { 25 | src: '//openspeedtest.com/speedtest', 26 | style: 'width:100%;height:100%;min-height:360px;border:none;overflow:hidden !important;' 27 | }); 28 | }; 29 | 30 | return m.render(); 31 | } 32 | 33 | 34 | 35 | // handleSaveApply: null, 36 | // handleSave: null, 37 | // handleReset: null 38 | }); 39 | -------------------------------------------------------------------------------- /luci-app-netspeedtest/root/etc/uci-defaults/99_netspeedtest: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ ! -s "/etc/config/netspeedtest" ] && { 3 | touch /etc/config/netspeedtest 4 | uci -q batch <<-EOF >/dev/null 5 | set netspeedtest.config=netspeedtest 6 | commit netspeedtest 7 | EOF 8 | 9 | } -------------------------------------------------------------------------------- /luci-app-netspeedtest/root/usr/share/luci/menu.d/luci-app-netspeedtest.json: -------------------------------------------------------------------------------- 1 | { 2 | "admin/network/netspeedtest": { 3 | "title": "NetSpeedtest", 4 | "order": 90, 5 | "action": { 6 | "type": "firstchild" 7 | }, 8 | "depends": { 9 | "acl": [ "luci-app-netspeedtest" ], 10 | "uci": { "netspeedtest": true } 11 | } 12 | }, 13 | "admin/network/netspeedtest/iperf3": { 14 | "title": "Lan Speedtest Iperf3", 15 | "order": 1, 16 | "action": { 17 | "type": "view", 18 | "path": "netspeedtest/iperf3" 19 | } 20 | }, 21 | "admin/network/netspeedtest/homebox": { 22 | "title": "Lan Speedtest Homebox", 23 | "order": 2, 24 | "action": { 25 | "type": "view", 26 | "path": "netspeedtest/homebox" 27 | } 28 | }, 29 | "admin/network/netspeedtest/speedtest": { 30 | "title": "Wan Ookla SpeedTest", 31 | "order": 4, 32 | "action": { 33 | "type": "view", 34 | "path": "netspeedtest/speedtest" 35 | } 36 | }, 37 | "admin/network/netspeedtest/openspeedtest": { 38 | "title": "Wan OpenSpeedTest", 39 | "order": 5, 40 | "action": { 41 | "type": "view", 42 | "path": "netspeedtest/openspeedtest" 43 | } 44 | }, 45 | "admin/network/netspeedtest/logs": { 46 | "title": "Log", 47 | "order": 6, 48 | "action": { 49 | "type": "view", 50 | "path": "netspeedtest/logs" 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /luci-app-netspeedtest/root/usr/share/rpcd/acl.d/luci-app-netspeedtest.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-netspeedtest": { 3 | "description": "Grant access to netspeedtest procedures", 4 | "read": { 5 | "file": { 6 | "/etc/init.d/netspeedtest": [ "exec" ], 7 | "/usr/lib/netspeedtest/speedtest": [ "exec" ], 8 | "/tmp/speedtest_result": [ "read" ], 9 | "/tmp/netspeedtest.log": [ "read" ] 10 | }, 11 | "ubus": { 12 | "service": [ "list" ] 13 | }, 14 | "uci": [ "netspeedtest" ,"netspeedtest"] 15 | }, 16 | "write": { 17 | "uci": [ "netspeedtest","netspeedtest" ] 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /luci-app-nft-timecontrol/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2006-2017 OpenWrt.org 3 | # Copyright (C) 2022-2025 sirpdboy 4 | # This is free software, licensed under the GNU General Public License v2. 5 | # See /LICENSE for more information. 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | THEME_NAME:=nft-timecontrol 11 | PKG_NAME:=luci-app-$(THEME_NAME) 12 | 13 | PKG_LICENSE:=Apache-2.0 14 | 15 | LUCI_TITLE:=LuCI support for timecontrol for nftables 16 | LUCI_DESCRIPTION:=LuCI support for Easy timecontrol for nftables(Internet time control). 17 | LUCI_DEPENDS:=+bc +nftables +bash 18 | LUCI_PKGARCH:=all 19 | 20 | PKG_VERSION:=2.0.2 21 | PKG_RELEASE:=20250316 22 | PKG_MAINTAINER:=sirpdboy 23 | 24 | define Build/Compile 25 | endef 26 | 27 | define Package/$(PKG_NAME)/postinst 28 | #!/bin/sh 29 | rm -f /tmp/luci-* 30 | endef 31 | 32 | define Package/$(PKG_NAME)/conffiles 33 | /etc/config/timecontrol 34 | endef 35 | 36 | include $(TOPDIR)/feeds/luci/luci.mk 37 | 38 | # call BuildPackage - OpenWrt buildroot signature 39 | 40 | -------------------------------------------------------------------------------- /luci-app-nft-timecontrol/luasrc/controller/timecontrol.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.timecontrol", package.seeall) 2 | -- Copyright 2022-2025 sirpdboy 3 | function index() 4 | if not nixio.fs.access("/etc/config/timecontrol") then return end 5 | entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false 6 | 7 | local e = entry({"admin", "control", "timecontrol"}, cbi("timecontrol"), _("Timecontrol"), 10) 8 | e.dependent=false 9 | e.acl_depends = { "luci-app-timecontrol" } 10 | entry({"admin", "control", "timecontrol", "status"}, call("act_status")).leaf = true 11 | end 12 | 13 | function act_status() 14 | local sys = require "luci.sys" 15 | local e = {} 16 | e.status = sys.call(" busybox ps -w | grep timecontrol | grep -v grep >/dev/null ") == 0 17 | luci.http.prepare_content("application/json") 18 | luci.http.write_json(e) 19 | end 20 | -------------------------------------------------------------------------------- /luci-app-nft-timecontrol/luasrc/view/timecontrol/index.htm: -------------------------------------------------------------------------------- 1 | <% include("cbi/map") %> 2 | -------------------------------------------------------------------------------- /luci-app-nft-timecontrol/luasrc/view/timecontrol/timecontrol.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | <%=pcdata(self:cfgvalue(section) or self.default or "")%> 3 | <%+cbi/valuefooter%> -------------------------------------------------------------------------------- /luci-app-nft-timecontrol/root/etc/init.d/timecontrol: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | # 3 | # Copyright (C) 2023 sirpdboy herboy2008@gmail.com 4 | # 5 | 6 | START=99 7 | USE_PROCD=1 8 | 9 | NAME=timecontrol 10 | LOCK="/var/lock/$NAME.lock" 11 | CR=/etc/crontabs/root 12 | 13 | start_instance() { 14 | procd_open_instance 15 | procd_set_param command /usr/bin/timecontrolctrl 16 | procd_set_param respawn 17 | procd_set_param stderr 1 18 | procd_close_instance 19 | } 20 | 21 | _timecontrol_start() { 22 | if [ "$(grep -c 'option enable .1.' /etc/config/$NAME 2>/dev/null)" -gt "0" ]; then 23 | 24 | touch $LOCK 25 | timecontrol start 26 | start_instance 27 | (crontab -l ; echo "00 1 * * * /etc/init.d/timecontrol start") | sort - | uniq - | crontab - 28 | fi 29 | } 30 | 31 | start_service(){ 32 | [ -f $LOCK ] && exit 33 | stop_service 34 | _timecontrol_start 35 | rm -f $LOCK 36 | } 37 | 38 | service_triggers() { 39 | procd_add_reload_trigger 'timecontrol' 40 | } 41 | 42 | stop_service(){ 43 | kill -9 $(busybox ps -w | grep 'timecontrolctrl' | grep -v 'grep' | awk '{print $1}') >/dev/null 2>&1 44 | sed -i '/timecontrol/d' $CR >/dev/null 2>&1 45 | rm -f $LOCK 2>/dev/null 46 | timecontrol stop 47 | } 48 | 49 | -------------------------------------------------------------------------------- /luci-app-nft-timecontrol/root/etc/uci-defaults/luci-timecontrol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | chmod +x /etc/init.d/timecontrol /usr/bin/timecontrol* 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@timecontrol[-1] 5 | add ucitrack timecontrol 6 | set ucitrack.@timecontrol[-1].init=timecontrol 7 | commit ucitrack 8 | EOF 9 | 10 | [ -s /etc/config/timecontrol ] || { 11 | cat <<-EOF > /etc/config/timecontrol 12 | 13 | config timecontrol 14 | option enabled '0' 15 | option list_type 'blacklist' 16 | 17 | config device 18 | option timestart '00:00' 19 | option week '0' 20 | option timeend '23:55' 21 | option mac '' 22 | option enable '0' 23 | 24 | config device 25 | option mac '192.168.10.10/24' 26 | option timestart '00:00' 27 | option timeend '00:00' 28 | option week '0' 29 | option enable '0' 30 | 31 | 32 | EOF 33 | 34 | } 35 | 36 | rm -f /tmp/luci-indexcache 37 | exit 0 38 | -------------------------------------------------------------------------------- /luci-app-nft-timecontrol/root/usr/share/rpcd/acl.d/luci-app-timecontrol.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-timecontrol": { 3 | "description": "Grant UCI Internet time control for luci-app-timecontrol", 4 | "read": { 5 | "uci": [ "timecontrol" ] 6 | }, 7 | "write": { 8 | "uci": [ "timecontrol" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019-2024 sirpdboy 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | NAME:=parentcontrol 10 | PKG_NAME:=luci-app-$(NAME) 11 | PKG_VERSION:=1.7.1 12 | PKG_RELEASE:=20240314 13 | PKG_LICENSE:=Apache-2.0 14 | 15 | LUCI_TITLE:=LuCI support for Parent Control 16 | LUCI_DEPENDS:=+iptables-mod-filter +kmod-ipt-filter 17 | LUCI_PKGARCH:=all 18 | 19 | define Package/$(PKG_NAME)/conffiles 20 | /etc/config/parentcontrol 21 | endef 22 | include $(TOPDIR)/feeds/luci/luci.mk 23 | 24 | # call BuildPackage - OpenWrt buildroot signature 25 | 26 | 27 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/luasrc/controller/parentcontrol.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.parentcontrol", package.seeall) 2 | 3 | function index() 4 | if not nixio.fs.access("/etc/config/parentcontrol") then return end 5 | 6 | entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false 7 | local e = entry({"admin","control","parentcontrol"},firstchild(),_("Parent Control"),2) 8 | e.dependent=false 9 | e.acl_depends = { "luci-app-parentcontrol" } 10 | entry({"admin","control","parentcontrol","time"},cbi("parentcontrol/time"),_("Time Control"),1).leaf=true 11 | entry({"admin", "control", "parentcontrol","weburl"}, cbi("parentcontrol/weburl"), _("Weburl Control"), 20).leaf = true 12 | entry({"admin", "control", "parentcontrol","protocol"}, cbi("parentcontrol/protocol"), _("Protocol Control"), 30).leaf = true 13 | entry({"admin", "control", "parentcontrol","status"}, call("status")).leaf = true 14 | end 15 | 16 | function status() 17 | local e = {} 18 | e.status = luci.sys.call("iptables -L FORWARD | grep PARENTCONTROL >/dev/null || iptables -L INPUT | grep PARENTCONTROL >/dev/null || iptables -L OUTPUT | grep PARENTCONTROL >/dev/null") == 0 19 | luci.http.prepare_content("application/json") 20 | luci.http.write_json(e) 21 | end 22 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/luasrc/view/parentcontrol/index.htm: -------------------------------------------------------------------------------- 1 | <% include("cbi/map") %> 2 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/luasrc/view/parentcontrol/parentcontrol.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | <%=pcdata(self:cfgvalue(section) or self.default or "")%> 3 | <%+cbi/valuefooter%> -------------------------------------------------------------------------------- /luci-app-parentcontrol/po/zh-cn/parentcontrol.po: -------------------------------------------------------------------------------- 1 | msgid "Control" 2 | msgstr "管控" 3 | 4 | msgid "Parent Control" 5 | msgstr "家长控制" 6 | 7 | msgid "Time Control" 8 | msgstr "时间限制" 9 | 10 | msgid "Weburl Control" 11 | msgstr "网址过滤" 12 | 13 | msgid "Protocol Control" 14 | msgstr "协议过滤" 15 | 16 | msgid "feature Control" 17 | msgstr "配置过滤库" 18 | 19 | msgid "Week Day" 20 | msgstr "设定星期" 21 | 22 | msgid "Everyday" 23 | msgstr "每天" 24 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/po/zh_Hans/parentcontrol.po: -------------------------------------------------------------------------------- 1 | msgid "Control" 2 | msgstr "管控" 3 | 4 | msgid "Parent Control" 5 | msgstr "家长控制" 6 | 7 | msgid "Time Control" 8 | msgstr "时间限制" 9 | 10 | msgid "Weburl Control" 11 | msgstr "网址过滤" 12 | 13 | msgid "Protocol Control" 14 | msgstr "协议过滤" 15 | 16 | msgid "feature Control" 17 | msgstr "配置过滤库" 18 | 19 | msgid "Week Day" 20 | msgstr "设定星期" 21 | 22 | msgid "Everyday" 23 | msgstr "每天" 24 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/root/etc/config/parentcontrol: -------------------------------------------------------------------------------- 1 | config basic 2 | option algos 'kmp' 3 | option control_mode '0' 4 | option enabled '0' 5 | 6 | config weburl 7 | option word 'baidu' 8 | option timestart '00:00' 9 | option timeend '00:00' 10 | option week '*' 11 | option enable '0' 12 | 13 | config weburl 14 | option timestart '00:00' 15 | option timeend '00:00' 16 | option word 'youtube' 17 | option week '1,2,3,4,5' 18 | option enable '0' 19 | 20 | config protocol 21 | option proto 'tcp' 22 | option timestart '00:00' 23 | option week '*' 24 | option timeend '23:00' 25 | option portd '80' 26 | option enable '0' 27 | 28 | config protocol 29 | option proto 'tcp' 30 | option timestart '00:00' 31 | option week '*' 32 | option portd '443' 33 | option timeend '23:00' 34 | option enable '0' 35 | 36 | config protocol 37 | option proto 'tcp' 38 | option timestart '00:00' 39 | option timeend '00:00' 40 | option week '1,2,3,4,5' 41 | option enable '0' 42 | 43 | config time 44 | option timestart '00:00' 45 | option week '*' 46 | option timeend '23:59' 47 | option enable '0' 48 | 49 | config time 50 | option timestart '00:00' 51 | option enable '0' 52 | option week '1,2,3,4,5' 53 | option timeend '23:59' 54 | 55 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/root/etc/hotplug.d/iface/97-parentcontrol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | CONFIG=parentcontrol 3 | 4 | [ "$ACTION" = ifup ] || exit 0 5 | [ "$(`uci -q get $CONFIG.@basic[0].enabled`)" == 1 ] || exit 0 6 | /etc/init.d/parentcontrol start 7 | 8 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/root/etc/parentcontrol.include: -------------------------------------------------------------------------------- 1 | /etc/init.d/parentcontrol start 2 | 3 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/root/etc/parentcontrol/black.list: -------------------------------------------------------------------------------- 1 | baidu 2 | 163.com 3 | 4 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/root/etc/parentcontrol/white.list: -------------------------------------------------------------------------------- 1 | baidu.com -------------------------------------------------------------------------------- /luci-app-parentcontrol/root/etc/uci-defaults/luci-app-parentcontrol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@parentcontrol[-1] 5 | add ucitrack parentcontrol 6 | set ucitrack.@parentcontrol[-1].init=parentcontrol 7 | commit ucitrack 8 | EOF 9 | 10 | uci -q delete firewall.parentcontrol 11 | uci -q set firewall.parentcontrol=include 12 | uci -q set firewall.parentcontrol.type=script 13 | uci -q set firewall.parentcontrol.path=/etc/parentcontrol.include 14 | uci -q set firewall.parentcontrol.reload=1 15 | uci commit firewall 16 | rm -f /tmp/luci-indexcache 17 | exit 0 18 | -------------------------------------------------------------------------------- /luci-app-parentcontrol/root/usr/share/rpcd/acl.d/luci-app-parentcontrol.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-parentcontrol": { 3 | "description": "Grant UCI access for luci-app-parentcontrol", 4 | "read": { 5 | "uci": [ "parentcontrol" ] 6 | }, 7 | "write": { 8 | "uci": [ "parentcontrol" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2018-2020 Lienol 2 | # 3 | # This is free software, licensed under the Apache License, Version 2.0 . 4 | # 5 | 6 | include $(TOPDIR)/rules.mk 7 | 8 | LUCI_TITLE:=LuCI support for PPPoE Server 9 | LUCI_DEPENDS:=+rp-pppoe-common +rp-pppoe-server 10 | LUCI_PKGARCH:=all 11 | PKG_VERSION:=1 12 | PKG_RELEASE:=8-20200326 13 | 14 | define Package/luci-app-pppoe-server/preinst 15 | #!/bin/sh 16 | rm -rf $${IPKG_INSTROOT}/etc/config/pppoe-server >/dev/null 2>&1 17 | rm -rf $${IPKG_INSTROOT}/etc/init.d/pppoe-server >/dev/null 2>&1 18 | exit 0 19 | endef 20 | 21 | include $(TOPDIR)/feeds/luci/luci.mk 22 | 23 | # call BuildPackage - OpenWrt buildroot signature -------------------------------------------------------------------------------- /luci-app-pppoe-server/luasrc/controller/pppoe-server.lua: -------------------------------------------------------------------------------- 1 | -- Copyright 2018-2019 Lienol 2 | module("luci.controller.pppoe-server", package.seeall) 3 | 4 | function index() 5 | if not nixio.fs.access("/etc/config/pppoe-server") then return end 6 | 7 | entry({"admin", "nas", "pppoe-server"}, 8 | alias("admin", "nas", "pppoe-server", "settings"), 9 | _("PPPoE Server"), 13) 10 | entry({"admin", "nas", "pppoe-server", "settings"}, 11 | cbi("pppoe-server/settings"), _("General Settings"), 10).leaf = true 12 | entry({"admin", "nas", "pppoe-server", "users"}, 13 | cbi("pppoe-server/users"), _("Users Manager"), 20).leaf = true 14 | entry({"admin", "nas", "pppoe-server", "online"}, 15 | cbi("pppoe-server/online"), _("Online Users"), 30).leaf = true 16 | entry({"admin", "nas", "pppoe-server", "status"}, call("status")).leaf = 17 | true 18 | end 19 | 20 | function status() 21 | local e = {} 22 | e.status = luci.sys.call("pidof %s >/dev/null" % "pppoe-server") == 0 23 | luci.http.prepare_content("application/json") 24 | luci.http.write_json(e) 25 | end 26 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/luasrc/model/cbi/pppoe-server/online.lua: -------------------------------------------------------------------------------- 1 | local e = {} 2 | local o = require "luci.dispatcher" 3 | local a = luci.util.execi( 4 | "/bin/busybox top -bn1 | grep 'pppd plugin rp-pppoe.so' | grep -v 'grep'") 5 | for t in a do 6 | local a, n, h, s, o = t:match( 7 | "^ *(%d+) +(%d+) +.+rp_pppoe_sess 1:+([A-Fa-f0-9]+:[A-Fa-f0-9]+:[A-Fa-f0-9]+:[A-Fa-f0-9]+:[A-Fa-f0-9]+:[A-Fa-f0-9]+[A-Fa-f0-9]) +.+options +(%S.-%S)%:(%S.-%S) ") 8 | local t = tonumber(a) 9 | if t then 10 | e["%02i.%s" % {t, "online"}] = { 11 | ['PID'] = a, 12 | ['PPID'] = n, 13 | ['MAC'] = h, 14 | ['GATEWAY'] = s, 15 | ['CIP'] = o, 16 | ['BLACKLIST'] = 0 17 | } 18 | end 19 | end 20 | f = SimpleForm("processes", translate("PPPoE Server")) 21 | f.reset = false 22 | f.submit = false 23 | f.description = translate( 24 | "The PPPoE server is a broadband access authentication server that prevents ARP spoofing.") 25 | t = f:section(Table, e, translate("Online Users")) 26 | t:option(DummyValue, "GATEWAY", translate("Server IP")) 27 | t:option(DummyValue, "CIP", translate("IP address")) 28 | t:option(DummyValue, "MAC", translate("MAC")) 29 | 30 | kill = t:option(Button, "_kill", translate("Forced offline")) 31 | kill.inputstyle = "reset" 32 | function kill.write(e, t) 33 | null, e.tag_error[t] = luci.sys.process.signal(e.map:get(t, "PID"), 9) 34 | luci.http.redirect(o.build_url("admin/nas/pppoe-server/online")) 35 | end 36 | return f 37 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/luasrc/model/cbi/pppoe-server/users.lua: -------------------------------------------------------------------------------- 1 | m = Map("pppoe-server", translate("PPPoE Server")) 2 | m.description = translate( 3 | "The PPPoE server is a broadband access authentication server that prevents ARP spoofing.") 4 | s = m:section(TypedSection, "user", translate("Users Manager")) 5 | s.addremove = true 6 | s.anonymous = true 7 | s.template = "cbi/tblsection" 8 | 9 | o = s:option(Flag, "enabled", translate("Enabled")) 10 | o.rmempty = false 11 | 12 | o = s:option(Value, "username", translate("User name")) 13 | o.placeholder = translate("User name") 14 | o.rmempty = true 15 | 16 | o = s:option(Value, "password", translate("Password")) 17 | o.rmempty = true 18 | 19 | o = s:option(Value, "ipaddress", translate("IP address")) 20 | o.placeholder = translate("Automatically") 21 | o.datatype = "ipaddr" 22 | o.rmempty = true 23 | function o.cfgvalue(e, t) 24 | value = e.map:get(t, "ipaddress") 25 | return value == "*" and "" or value 26 | end 27 | function o.remove(e, t) Value.write(e, t, "*") end 28 | return m 29 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/luasrc/view/pppoe-server/index.htm: -------------------------------------------------------------------------------- 1 | <% include("cbi/map") %> 2 | 14 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/luasrc/view/pppoe-server/status.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | <%=pcdata(self:cfgvalue(section) or self.default or "")%> 3 | <%+cbi/valuefooter%> 4 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/root/etc/config/pppoe-server: -------------------------------------------------------------------------------- 1 | 2 | config service 3 | option localip '10.0.1.1' 4 | option log '/var/log/pppoe-server.log' 5 | option count '50' 6 | option mru '1492' 7 | option mtu '1492' 8 | option remoteip '10.0.1.10-254' 9 | option is_nat '1' 10 | option export_interface 'default' 11 | option client_interface 'eth0' 12 | option enabled '0' 13 | option dns1 '10.0.1.1' 14 | option dns2 '192.168.0.2' 15 | 16 | config user 17 | option enabled '1' 18 | option ipaddress '*' 19 | option username 'guest' 20 | option password '123456' 21 | 22 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/root/etc/uci-defaults/luci-app-pppoe-server: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@pppoe-server[-1] 5 | add ucitrack pppoe-server 6 | set ucitrack.@pppoe-server[-1].init=pppoe-server 7 | commit ucitrack 8 | EOF 9 | 10 | rm -f /tmp/luci-indexcache 11 | exit 0 12 | -------------------------------------------------------------------------------- /luci-app-pppoe-server/root/usr/share/rpcd/acl.d/luci-app-pppoe-server.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-pppoe-server": { 3 | "description": "Grant UCI access for luci-app-pppoe-server", 4 | "read": { 5 | "uci": [ "pppoe-server" ] 6 | }, 7 | "write": { 8 | "uci": [ "pppoe-server" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-smartdns/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2018-2024 Ruilin Peng (Nick) . 3 | # 4 | # smartdns is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # smartdns is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see . 16 | 17 | include $(TOPDIR)/rules.mk 18 | 19 | PKG_LICENSE:=GPL-3.0-or-later 20 | PKG_MAINTAINER:=Nick Peng 21 | PKG_VERSION:=1.2024.45 22 | PKG_RELEASE:=1 23 | 24 | LUCI_TITLE:=LuCI for smartdns 25 | LUCI_DESCRIPTION:=Provides Luci for smartdns 26 | LUCI_DEPENDS:=+smartdns +luci-compat 27 | LUCI_PKGARCH:=all 28 | 29 | define Package/$(PKG_NAME)/config 30 | # shown in make menuconfig 31 | help 32 | $(LUCI_TITLE) 33 | Version: $(PKG_VERSION)-$(PKG_RELEASE) 34 | endef 35 | 36 | include $(TOPDIR)/feeds/luci/luci.mk 37 | 38 | # call BuildPackage - OpenWrt buildroot signature 39 | -------------------------------------------------------------------------------- /luci-app-smartdns/luasrc/model/smartdns.lua: -------------------------------------------------------------------------------- 1 | -- 2 | -- Copyright (C) 2018-2023 Ruilin Peng (Nick) . 3 | -- 4 | -- smartdns is free software: you can redistribute it and/or modify 5 | -- it under the terms of the GNU General Public License as published by 6 | -- the Free Software Foundation, either version 3 of the License, or 7 | -- (at your option) any later version. 8 | -- 9 | -- smartdns is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | -- GNU General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License 15 | -- along with this program. If not, see . 16 | 17 | require ("nixio.fs") 18 | require ("luci.http") 19 | require ("luci.dispatcher") 20 | require ("nixio.fs") 21 | 22 | local uci = require "luci.model.uci".cursor() 23 | 24 | module("luci.model.smartdns", package.seeall) 25 | 26 | function get_config_option(module, section, option, default) 27 | return uci:get_first(module, section, option) or default 28 | end 29 | 30 | return m 31 | 32 | -------------------------------------------------------------------------------- /luci-app-smartdns/luasrc/view/smartdns/smartdns_status.htm: -------------------------------------------------------------------------------- 1 | 22 | 23 |
24 |

25 | <%:Collecting data...%> 26 |

27 |
28 | -------------------------------------------------------------------------------- /luci-app-smartdns/po/zh_Hans: -------------------------------------------------------------------------------- 1 | zh-cn -------------------------------------------------------------------------------- /luci-app-smartdns/root/etc/uci-defaults/50_luci-smartdns: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright (C) 2018-2023 Ruilin Peng (Nick) . 4 | # 5 | # smartdns is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # smartdns is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | uci -q batch <<-EOF >/dev/null 19 | delete ucitrack.@smartdns[-1] 20 | add ucitrack smartdns 21 | set ucitrack.@smartdns[-1].init=smartdns 22 | commit ucitrack 23 | EOF 24 | 25 | rm -f /tmp/luci-indexcache 26 | exit 0 27 | -------------------------------------------------------------------------------- /luci-app-socat/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020 Lienol 2 | # 3 | # This is free software, licensed under the GNU General Public License v3. 4 | # 5 | 6 | include $(TOPDIR)/rules.mk 7 | 8 | PKG_NAME:=luci-app-socat 9 | 10 | PKG_MAINTAINER:=Lienol 11 | 12 | LUCI_TITLE:=LuCI support for Socat 13 | LUCI_DEPENDS:=+socat 14 | LUCI_PKGARCH:=all 15 | 16 | 17 | include $(TOPDIR)/feeds/luci/luci.mk 18 | 19 | # call BuildPackage - OpenWrt buildroot signature 20 | -------------------------------------------------------------------------------- /luci-app-socat/luasrc/controller/socat.lua: -------------------------------------------------------------------------------- 1 | -- Copyright 2020 Lienol 2 | module("luci.controller.socat", package.seeall) 3 | 4 | function index() 5 | if not nixio.fs.access("/etc/config/socat") then 6 | return 7 | end 8 | 9 | entry({"admin", "network", "socat"}, alias("admin", "network", "socat", "index"), _("Socat"), 100).dependent = true 10 | entry({"admin", "network", "socat", "index"}, cbi("socat/index")).leaf = true 11 | entry({"admin", "network", "socat", "config"}, cbi("socat/config")).leaf = true 12 | entry({"admin", "network", "socat", "status"}, call("act_status")).leaf = true 13 | end 14 | 15 | function act_status() 16 | local e = {} 17 | e.index = luci.http.formvalue("index") 18 | e.status = luci.sys.call(string.format("busybox ps -w | grep -v 'grep' | grep '/var/etc/socat/%s' >/dev/null", luci.http.formvalue("id"))) == 0 19 | luci.http.prepare_content("application/json") 20 | luci.http.write_json(e) 21 | end 22 | -------------------------------------------------------------------------------- /luci-app-socat/luasrc/view/socat/list_status.htm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /luci-app-socat/luasrc/view/socat/status.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | -- 3 | <%+cbi/valuefooter%> -------------------------------------------------------------------------------- /luci-app-socat/po/zh-cn/socat.po: -------------------------------------------------------------------------------- 1 | msgid "Socat" 2 | msgstr "端口转发" 3 | 4 | msgid "Socat is a relay for bidirectional data transfer between two independent data channels." 5 | msgstr "Socat 是用于在两个独立数据通道之间进行双向数据传输的中继器。" 6 | 7 | msgid "Socat Config" 8 | msgstr "Socat 配置" 9 | 10 | msgid "Status" 11 | msgstr "状态" 12 | 13 | msgid "Enabled" 14 | msgstr "启用" 15 | 16 | msgid "Remarks" 17 | msgstr "备注" 18 | 19 | msgid "Protocol" 20 | msgstr "协议" 21 | 22 | msgid "IPv6 Only" 23 | msgstr "仅IPv6" 24 | 25 | msgid "When checked, only IPv6 ports are listen for, otherwise IPv4 will also be listened for." 26 | msgstr "当勾选时,仅监听IPv6,否则将会同时监听IPv4。" 27 | 28 | msgid "Port Forwards" 29 | msgstr "端口转发" 30 | 31 | msgid "Listen Protocol" 32 | msgstr "监听协议" 33 | 34 | msgid "Listen port" 35 | msgstr "监听端口" 36 | 37 | msgid "REUSEADDR" 38 | msgstr "地址重用" 39 | 40 | msgid "Bind to a port local" 41 | msgstr "绑定到本地端口" 42 | 43 | msgid "Destination Protocol" 44 | msgstr "目标协议" 45 | 46 | msgid "Destination address" 47 | msgstr "目标地址" 48 | 49 | msgid "Destination port" 50 | msgstr "目标端口" 51 | 52 | msgid "Open firewall port" 53 | msgstr "打开防火墙端口" 54 | -------------------------------------------------------------------------------- /luci-app-socat/po/zh_Hans/socat.po: -------------------------------------------------------------------------------- 1 | msgid "Socat" 2 | msgstr "端口转发" 3 | 4 | msgid "Socat is a relay for bidirectional data transfer between two independent data channels." 5 | msgstr "Socat 是用于在两个独立数据通道之间进行双向数据传输的中继器。" 6 | 7 | msgid "Socat Config" 8 | msgstr "Socat 配置" 9 | 10 | msgid "Status" 11 | msgstr "状态" 12 | 13 | msgid "Enabled" 14 | msgstr "启用" 15 | 16 | msgid "Remarks" 17 | msgstr "备注" 18 | 19 | msgid "Protocol" 20 | msgstr "协议" 21 | 22 | msgid "IPv6 Only" 23 | msgstr "仅 IPv6" 24 | 25 | msgid "When checked, only IPv6 ports are listen for, otherwise IPv4 will also be listened for." 26 | msgstr "当勾选时,仅监听 IPv6,否则将会同时监听 IPv4。" 27 | 28 | msgid "Port Forwards" 29 | msgstr "端口转发" 30 | 31 | msgid "Listen Protocol" 32 | msgstr "监听协议" 33 | 34 | msgid "Listen port" 35 | msgstr "监听端口" 36 | 37 | msgid "REUSEADDR" 38 | msgstr "地址重用" 39 | 40 | msgid "Bind to a port local" 41 | msgstr "绑定到本地端口" 42 | 43 | msgid "Destination Protocol" 44 | msgstr "目标协议" 45 | 46 | msgid "Destination address" 47 | msgstr "目标地址" 48 | 49 | msgid "Destination port" 50 | msgstr "目标端口" 51 | 52 | msgid "Open firewall port" 53 | msgstr "打开防火墙端口" 54 | -------------------------------------------------------------------------------- /luci-app-socat/root/etc/config/socat: -------------------------------------------------------------------------------- 1 | 2 | config global 'global' 3 | option enable '0' 4 | -------------------------------------------------------------------------------- /luci-app-socat/root/etc/uci-defaults/luci-app-socat: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@socat[-1] 5 | add ucitrack socat 6 | set ucitrack.@socat[-1].init=luci_socat 7 | commit ucitrack 8 | EOF 9 | 10 | rm -rf /tmp/luci-* 11 | exit 0 12 | -------------------------------------------------------------------------------- /luci-app-socat/root/usr/share/rpcd/acl.d/luci-app-socat.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-socat": { 3 | "description": "Grant UCI access for luci-app-socat", 4 | "read": { 5 | "uci": [ "socat" ] 6 | }, 7 | "write": { 8 | "uci": [ "socat" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-switch-lan-play/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2008-2015 The LuCI Team 3 | # Copyright (C) 2018 @skylovebeauty 4 | # Copyright (C) 2020 Kenneth Kasilag 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | PKG_NAME:=luci-app-switch-lan-play 10 | PKG_VERSION:=0.0.3 11 | PKG_RELEASE:=1 12 | 13 | PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) 14 | 15 | include $(INCLUDE_DIR)/package.mk 16 | 17 | LUA_LIBRARYDIR = /usr/lib/lua 18 | LUCI_LIBRARYDIR = $(LUA_LIBRARYDIR)/luci 19 | 20 | define Package/luci-app-switch-lan-play 21 | SECTION:=luci 22 | CATEGORY:=LuCI 23 | SUBMENU:=3. Applications 24 | DEPENDS:= +switch-lan-play 25 | TITLE:=luci-app-switch-lan-play 26 | PKGARCH:=all 27 | endef 28 | 29 | define Package/luci-app-switch-lan-play/description 30 | LuCI web-interface for Switch Lan Play Client 31 | endef 32 | 33 | define Build/Prepare 34 | mkdir -p $(PKG_BUILD_DIR) 35 | $(CP) ./* $(PKG_BUILD_DIR)/ 36 | endef 37 | 38 | define Build/Compile 39 | endef 40 | 41 | define Package/$(PKG_NAME)/install 42 | $(INSTALL_DIR) $(1)$(LUCI_LIBRARYDIR) 43 | cp -pR $(PKG_BUILD_DIR)/luasrc/* $(1)$(LUCI_LIBRARYDIR)/ 44 | endef 45 | 46 | define Package/$(PKG_NAME)/postinst 47 | [ -n "$${IPKG_INSTROOT}" ] || {$(foreach script,$(LUCI_DEFAULTS), 48 | (. /etc/uci-defaults/$(script)) && rm -f /etc/uci-defaults/$(script)) 49 | rm -f /tmp/luci-indexcache 50 | rm -rf /tmp/luci-modulecache/ 51 | killall -HUP rpcd 2>/dev/null 52 | exit 0 53 | } 54 | endef 55 | 56 | $(eval $(call BuildPackage,luci-app-switch-lan-play)) 57 | -------------------------------------------------------------------------------- /luci-app-switch-lan-play/luasrc/controller/switchlanplay.lua: -------------------------------------------------------------------------------- 1 | -- Copyright 2008 Steven Barth 2 | -- Copyright 2008 Jo-Philipp Wich 3 | -- Licensed to the public under the Apache License 2.0. 4 | 5 | module("luci.controller.switchlanplay", package.seeall) 6 | 7 | function index() 8 | if not nixio.fs.access("/etc/config/switchlanplay") then 9 | return 10 | end 11 | 12 | local page 13 | 14 | page = entry({"admin", "services", "switchlanplay"}, cbi("switchlanplay"), _("Switch-Lan-Play")) 15 | page.dependent = true 16 | end 17 | -------------------------------------------------------------------------------- /luci-app-syncdial/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2008-2014 The LuCI Team 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | LUCI_TITLE:=Virtual WAN config generator 10 | LUCI_DEPENDS:=+kmod-macvlan +luci-app-mwan3 11 | 12 | PKG_NAME:=luci-app-syncdial 13 | 14 | include $(TOPDIR)/feeds/luci/luci.mk 15 | 16 | # call BuildPackage - OpenWrt buildroot signature 17 | -------------------------------------------------------------------------------- /luci-app-syncdial/luasrc/controller/syncdial.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.syncdial", package.seeall) 2 | 3 | function index() 4 | if not nixio.fs.access("/etc/config/syncdial") then 5 | return 6 | end 7 | 8 | entry({"admin", "network", "syncdial"}, cbi("syncdial"), _("多线多拨"), 103).dependent = true 9 | entry({"admin", "network", "macvlan_redial"}, call("redial"), nil).leaf = true 10 | end 11 | 12 | function redial() 13 | os.execute("killall -9 pppd") 14 | end 15 | -------------------------------------------------------------------------------- /luci-app-syncdial/luasrc/view/syncdial/redial_button.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | 3 | 15 | 16 | 17 | <%+cbi/valuefooter%> 18 | -------------------------------------------------------------------------------- /luci-app-syncdial/root/etc/config/syncdial: -------------------------------------------------------------------------------- 1 | 2 | config syncdial 'config' 3 | option syncon '1' 4 | option dialwait '25' 5 | option dialchk '1' 6 | option nomwan '0' 7 | option wanselect 'wan' 8 | option dial_type '2' 9 | option wannum '3' 10 | option wanselect2 'wan2' 11 | option wannum2 '2' 12 | option dialnum '3' 13 | option dialnum2 '2' 14 | option old_frame '1' 15 | option devbackup 'wan wan6 wan2' 16 | option bindwan '0' 17 | option bindwan2 '0' 18 | option enabled '0' 19 | 20 | -------------------------------------------------------------------------------- /luci-app-syncdial/root/etc/hotplug.d/iface/01-dialcheck: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ "$ACTION" = "ifdown" ] && pppconnectcheck & 3 | 4 | wanselect=$(uci get syncdial.config.wanselect) 5 | [ "$(uci get syncdial.config.dial_type)" = "2" ] && { 6 | wanselect2=$(uci get syncdial.config.wanselect2) 7 | } 8 | 9 | [ "$(uci get syncdial.config.enabled)" = "1" ] && \ 10 | [ "$(uci get syncdial.config.old_frame)" = "1" ] && \ 11 | [ "$DEVICE" = "$(uci get network.$wanselect.device)" ] && \ 12 | [ "$ACTION" = "ifup" ] && { 13 | ifname=$(uci get network.$wanselect.device) 14 | wannum=$(uci get syncdial.config.wannum) 15 | for i in $(seq 1 $wannum) 16 | do 17 | [ -d /sys/class/net/macvlan$i ] || { 18 | ip link add link $ifname name macvlan$i type macvlan 19 | ifconfig macvlan$i hw ether $(echo $(cat /sys/class/net/$ifname/address|awk -F ":" '{print $1":"$2":"$3":"$4":"$5":" }')$(echo "" | awk -F ":" '{printf("%X\n", 16+i);}' i=$i)) 20 | ifconfig macvlan$i up 21 | } 22 | done 23 | 24 | [ "$(uci get syncdial.config.dial_type)" = "2" ] && { 25 | ifname2=$(uci get network.$wanselect2.device) 26 | wannum2=$(uci get syncdial.config.wannum2) 27 | for i in $(seq 1 $wannum2) 28 | do 29 | [ -d /sys/class/net/macvlan$(($wannum+$i)) ] || { 30 | ip link add link $ifname2 name macvlan$(($wannum+$i)) type macvlan 31 | ifconfig macvlan$(($wannum+$i)) hw ether $(echo $(cat /sys/class/net/$ifname2/address|awk -F ":" '{print $1":"$2":"$3":"$4":"$5":" }')$(echo "" | awk -F ":" '{printf("%X\n", 16+i);}' i=$i)) 32 | ifconfig macvlan$(($wannum+$i)) up 33 | } 34 | done 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /luci-app-syncdial/root/etc/hotplug.d/iface/01-mvifcreate: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ "$(uci get syncdial.config.enabled)" = "1" ] && \ 3 | [ "$(uci get syncdial.config.old_frame)" = "1" ] && \ 4 | [ "$DEVICE" = "$(uci get network.wan.device)" ] && \ 5 | [ "$ACTION" = "ifup" ] && { 6 | ifname=$(uci get network.wan.device) 7 | wannum=$(uci get syncdial.config.wannum) 8 | for i in $(seq 1 $wannum) 9 | do 10 | [ -d /sys/class/net/macvlan$i ] || { 11 | ip link add link $ifname name macvlan$i type macvlan 12 | ifconfig macvlan$i hw ether $(echo $(cat /sys/class/net/$ifname/address|awk -F ":" '{print $1":"$2":"$3":"$4":"$5":" }')$(echo "" | awk -F ":" '{printf("%X\n", 16+i);}' i=$i)) 13 | ifconfig macvlan$i up 14 | } 15 | done 16 | } 17 | -------------------------------------------------------------------------------- /luci-app-syncdial/root/etc/uci-defaults/luci-syncdial: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | touch /etc/config/syncdial 3 | 4 | uci -q batch <<-EOF >/dev/null 5 | delete ucitrack.@syncdial[-1] 6 | add ucitrack syncdial 7 | set ucitrack.@syncdial[-1].exec='/bin/genwancfg' 8 | commit ucitrack 9 | EOF 10 | 11 | rm -f /tmp/luci-indexcache 12 | exit 0 13 | -------------------------------------------------------------------------------- /luci-app-syncdial/root/usr/share/rpcd/acl.d/luci-app-syncdial.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-syncdial": { 3 | "description": "Grant UCI access for luci-app-syncdial", 4 | "read": { 5 | "uci": [ "syncdial" ] 6 | }, 7 | "write": { 8 | "uci": [ "syncdial" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-upnp/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2008-2014 The LuCI Team 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | LUCI_TITLE:=Universal Plug & Play configuration module 10 | LUCI_DEPENDS:=+miniupnpd 11 | 12 | include $(TOPDIR)/feeds/luci/luci.mk 13 | 14 | # call BuildPackage - OpenWrt buildroot signature 15 | -------------------------------------------------------------------------------- /luci-app-upnp/luasrc/view/admin_status/index/upnp.htm: -------------------------------------------------------------------------------- 1 | <%+upnp_status%> 2 | -------------------------------------------------------------------------------- /luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@upnpd[-1] 5 | add ucitrack upnpd 6 | set ucitrack.@upnpd[-1].init=miniupnpd 7 | commit ucitrack 8 | EOF 9 | 10 | rm -f /tmp/luci-indexcache 11 | exit 0 12 | -------------------------------------------------------------------------------- /luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-upnp": { 3 | "description": "Grant UCI access for luci-app-upnp", 4 | "read": { 5 | "uci": [ "upnp" ] 6 | }, 7 | "write": { 8 | "uci": [ "upnp" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-app-virtualhere/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2008-2014 The LuCI Team 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | PKG_NAME:=luci-app-virtualhere 10 | LUCI_PKGARCH:=all 11 | PKG_VERSION:=2.0 12 | PKG_RELEASE:=20240409 13 | 14 | include $(INCLUDE_DIR)/package.mk 15 | 16 | define Package/$(PKG_NAME) 17 | SECTION:=luci 18 | CATEGORY:=LuCI 19 | SUBMENU:=3. Applications 20 | TITLE:=VirtualHere USB Service for LuCI 21 | DEPENDS:=@(x86_64||arm||arm64||mipsel||aarch64) 22 | PKGARCH:=all 23 | endef 24 | 25 | define Package/$(PKG_NAME)/description 26 | This package contains LuCI configuration pages for VirtualHere USB Service. 27 | endef 28 | 29 | define Build/Prepare 30 | endef 31 | 32 | define Build/Compile 33 | endef 34 | 35 | ifeq ($(ARCH),x86_64) 36 | EXE_FILE:=vhusbdx86 37 | endif 38 | ifeq ($(ARCH),arm) 39 | EXE_FILE:=vhusbdarm 40 | endif 41 | ifeq ($(ARCH),arm64) 42 | EXE_FILE:=vhusbdarm64 43 | endif 44 | ifeq ($(ARCH),mipsel) 45 | EXE_FILE:=vhusbdmipsel 46 | endif 47 | ifeq ($(ARCH),aarch64) 48 | EXE_FILE:=vhusbdarm64 49 | endif 50 | 51 | define Package/$(PKG_NAME)/install 52 | $(INSTALL_DIR) $(1)/usr/lib/lua/luci 53 | cp -pR ./luasrc/* $(1)/usr/lib/lua/luci 54 | $(INSTALL_DIR) $(1)/ 55 | cp -pR ./root/* $(1)/ 56 | $(INSTALL_DIR) $(1)/usr/bin 57 | cp -pR ./bin/$(EXE_FILE) $(1)/usr/bin/vhusbd 58 | endef 59 | 60 | $(eval $(call BuildPackage,$(PKG_NAME))) 61 | 62 | # call BuildPackage - OpenWrt buildroot signature 63 | -------------------------------------------------------------------------------- /luci-app-virtualhere/bin/vhusbdarm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-virtualhere/bin/vhusbdarm -------------------------------------------------------------------------------- /luci-app-virtualhere/bin/vhusbdarm64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-virtualhere/bin/vhusbdarm64 -------------------------------------------------------------------------------- /luci-app-virtualhere/bin/vhusbdmipsel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-virtualhere/bin/vhusbdmipsel -------------------------------------------------------------------------------- /luci-app-virtualhere/bin/vhusbdx86: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-virtualhere/bin/vhusbdx86 -------------------------------------------------------------------------------- /luci-app-virtualhere/luasrc/controller/vhusbd.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.vhusbd", package.seeall) 2 | 3 | function index() 4 | 5 | if not nixio.fs.access("/etc/config/vhusbd") then 6 | return 7 | end 8 | 9 | entry({"admin", "services", "vhusbd", "status"}, call("vhusbd_status")).leaf = true 10 | entry({"admin", "services", "vhusbd"}, cbi("vhusbd"), _("VirtualHere"), 46).dependent = true 11 | end 12 | 13 | function vhusbd_status() 14 | local status = {} 15 | status.running = luci.sys.call("pgrep vhusbd >/dev/null")==0 16 | luci.http.prepare_content("application/json") 17 | luci.http.write_json(status) 18 | end 19 | 20 | -------------------------------------------------------------------------------- /luci-app-virtualhere/luasrc/model/cbi/vhusbd.lua: -------------------------------------------------------------------------------- 1 | local fs = require "nixio.fs" 2 | 3 | m = Map("vhusbd", translate("VirtualHere USB Server"), translatef( 4 | "可把网络设备上的USB设备映射到本地主机。启用后到 http://www.virtualhere.com/usb_client_software 下载对应构架的客户端到本地主机运行。
注册(x86无效):在客户端的USB共享器上右键-设备信息-输入许可码(xxxxxxxxxxxx为设备信息中的s/n):xxxxxxxxxxxx,999,MCACDkn0jww6R5WOIjFqU/apAg4Um+mDkU2TBcC7fA1FrA==")) 5 | 6 | -- Basic config 7 | m:section(SimpleSection).template = "vhusbd/status" 8 | 9 | -- vhusbd 10 | s = m:section(TypedSection, "vhusbd", translate("Settings")) 11 | s.anonymous = true 12 | 13 | switch = s:option(Flag, "enabled", translate("Enable")) 14 | switch.rmempty = false 15 | 16 | Access = s:option(Flag, "ExtAccess", translate("外网访问")) 17 | Access.rmempty = false 18 | 19 | return m 20 | 21 | -------------------------------------------------------------------------------- /luci-app-virtualhere/luasrc/view/vhusbd/status.htm: -------------------------------------------------------------------------------- 1 | 16 |
17 |

18 | <%:Collecting data...%> 19 |

20 |
21 | 22 | -------------------------------------------------------------------------------- /luci-app-virtualhere/root/etc/config/vhusbd: -------------------------------------------------------------------------------- 1 | config vhusbd 2 | option enabled '0' 3 | option ExtAccess '0' 4 | -------------------------------------------------------------------------------- /luci-app-virtualhere/root/etc/init.d/vhusbd: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | # Copyright (C) 2008-2020 OpenWrt.org 3 | 4 | START=99 5 | 6 | start_instance() { 7 | local cfg="$1" 8 | config_get_bool enabled "$cfg" 'enabled' '0' 9 | config_get_bool ExtAccess "$cfg" 'ExtAccess' '0' 10 | # echo "enabled=$enabled,ExtAccess=$ExtAccess">>/tmp/tmp/vhusbd 11 | if [ $enabled -eq 1 ]; then 12 | vhusbd -b -c /etc/config/vhusbdconfig -r /tmp/vhusbd.log 13 | # echo "virtualhere start">>/tmp/tmp/vhusbd 14 | if [ $ExtAccess -eq 1 ]; then 15 | iptables -I INPUT -p tcp --dport 7575 -j ACCEPT -m comment --comment 'virtualhere port' 16 | # echo "virtualhere open firwall">>/tmp/tmp/vhusbd 17 | fi 18 | fi 19 | } 20 | 21 | start() { 22 | config_load 'vhusbd' 23 | config_foreach start_instance vhusbd 24 | # echo " ">>/tmp/tmp/vhusbd 25 | } 26 | 27 | stop() { 28 | iptables -D INPUT -p tcp --dport 7575 -j ACCEPT -m comment --comment 'virtualhere port' 2>/dev/null 29 | kill -9 `pgrep vhusbd` 30 | # echo "virtualhere stop">>/tmp/tmp/vhusbd 31 | } 32 | 33 | -------------------------------------------------------------------------------- /luci-app-virtualhere/root/etc/uci-defaults/luci-vhusbd: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@vhusbd[-1] 5 | add ucitrack vhusbd 6 | set ucitrack.@vhusbd[-1].init=vhusbd 7 | commit ucitrack 8 | EOF 9 | 10 | rm -f /tmp/luci-indexcache 11 | exit 0 12 | -------------------------------------------------------------------------------- /luci-app-vusb/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 适用openwrt新内核版本,配置虚拟USB服务。将网络设备与本地主机上的USB设备进行映射。 4 | 5 | 6 | --- 7 | 8 | --- 9 | 10 | 11 | --- 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /luci-app-vusb/luci-app-vusb/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 3 | # 4 | 5 | include $(TOPDIR)/rules.mk 6 | 7 | LUCI_TITLE:=LuCI support for vusb 8 | LUCI_DEPENDS:=+vusb 9 | LUCI_PKGARCH:=all 10 | 11 | PKG_MAINTAINER:=bauw 12 | 13 | include $(TOPDIR)/feeds/luci/luci.mk 14 | 15 | # call BuildPackage - OpenWrt buildroot signature 16 | -------------------------------------------------------------------------------- /luci-app-vusb/luci-app-vusb/root/usr/share/luci/menu.d/luci-app-vusb.json: -------------------------------------------------------------------------------- 1 | { 2 | "admin/services/vusb": { 3 | "title": "Vusb", 4 | "action": { 5 | "type": "view", 6 | "path": "vusb/vusb" 7 | }, 8 | "depends": { 9 | "acl": [ "luci-app-vusb" ], 10 | "uci": { "vusb": true } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /luci-app-vusb/luci-app-vusb/root/usr/share/rpcd/acl.d/luci-app-vusb.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-vusb": { 3 | "description": "Grant UCI access for luci-app-vusb", 4 | "read": { 5 | "ubus": { 6 | "service": [ "list" ] 7 | }, 8 | "uci": [ "vusb" ] 9 | }, 10 | "write": { 11 | "uci": [ "vusb" ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /luci-app-vusb/vusb/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 3 | # 4 | 5 | include $(TOPDIR)/rules.mk 6 | 7 | PKG_NAME:=vusb 8 | PKG_RELEASE:=1 9 | PKG_MAINTAINER:=bauw 10 | PKG_LICENSE:=BSD-2-Clause 11 | PKG_LICENSE_FILES:=LICENSE 12 | 13 | include $(INCLUDE_DIR)/package.mk 14 | 15 | define Package/vusb 16 | SECTION:=net 17 | CATEGORY:=Network 18 | TITLE:=VirtualHere USB Service for LuCI 19 | DEPENDS:=@(x86_64||arm||arm64||mipsel||aarch64) 20 | endef 21 | 22 | define Package/vusb/description 23 | This package contains LuCI configuration pages for VirtualHere USB Service. 24 | endef 25 | 26 | define Build/Prepare 27 | endef 28 | 29 | define Build/Compile 30 | endef 31 | 32 | ifeq ($(ARCH),x86_64) 33 | EXE_FILE:=vhusbdx86 34 | endif 35 | ifeq ($(ARCH),arm) 36 | EXE_FILE:=vhusbdarm 37 | endif 38 | ifeq ($(ARCH),arm64) 39 | EXE_FILE:=vhusbdarm64 40 | endif 41 | ifeq ($(ARCH),mipsel) 42 | EXE_FILE:=vhusbdmipsel 43 | endif 44 | ifeq ($(ARCH),aarch64) 45 | EXE_FILE:=vhusbdarm64 46 | endif 47 | 48 | define Package/vusb/install 49 | $(INSTALL_DIR) $(1)/etc/config/ 50 | $(INSTALL_CONF) $(CURDIR)/files/vusb.conf $(1)/etc/config/vusb 51 | $(INSTALL_DIR) $(1)/etc/init.d/ 52 | $(INSTALL_BIN) $(CURDIR)/files/vusb.init $(1)/etc/init.d/vusb 53 | 54 | $(INSTALL_DIR) $(1)/usr/bin 55 | $(INSTALL_BIN) $(CURDIR)/files/$(EXE_FILE) $(1)/usr/bin/vusb 56 | endef 57 | 58 | $(eval $(call BuildPackage,vusb)) 59 | -------------------------------------------------------------------------------- /luci-app-vusb/vusb/files/vhusbdarm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-vusb/vusb/files/vhusbdarm -------------------------------------------------------------------------------- /luci-app-vusb/vusb/files/vhusbdarm64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-vusb/vusb/files/vhusbdarm64 -------------------------------------------------------------------------------- /luci-app-vusb/vusb/files/vhusbdmipsel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-vusb/vusb/files/vhusbdmipsel -------------------------------------------------------------------------------- /luci-app-vusb/vusb/files/vhusbdx86: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-vusb/vusb/files/vhusbdx86 -------------------------------------------------------------------------------- /luci-app-vusb/vusb/files/vusb.conf: -------------------------------------------------------------------------------- 1 | 2 | config vusb 'config' 3 | option enabled '0' 4 | option ipv6 '0' 5 | 6 | -------------------------------------------------------------------------------- /luci-app-vusb/vusb/files/vusb.init: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | # Copyright (C) 2023 OpenWrt.org 3 | 4 | START=99 5 | STOP=10 6 | 7 | USE_PROCD=1 8 | 9 | NAME="vusb" 10 | PROG="/usr/bin/vusb" 11 | CONF="/etc/config/vusbconfig" 12 | LOG="/tmp/vusb.log" 13 | 14 | start_instance () { 15 | local config="$1" 16 | 17 | config_get_bool enabled "config" "enabled" "0" 18 | [ "$enabled" -gt "0" ] || return 1 19 | 20 | procd_open_instance 21 | procd_set_param command "$PROG" 22 | 23 | procd_append_param command -c "$CONF" 24 | procd_append_param command -r "$LOG" 25 | 26 | if [ "$ipv6" -gt "0" ]; then 27 | procd_append_param command -i 28 | fi 29 | 30 | procd_set_param respawn 31 | procd_set_param stderr 1 32 | procd_close_instance 33 | } 34 | 35 | start_service() { 36 | config_load "$NAME" 37 | config_foreach start_instance "$NAME" 38 | } 39 | 40 | stop_service() { 41 | killall "$NAME" 42 | } 43 | 44 | service_triggers() { 45 | procd_add_reload_trigger "$NAME" 46 | } 47 | 48 | 49 | -------------------------------------------------------------------------------- /luci-app-watchdog/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-watchdog 3 | # This is free software, licensed under the GNU General Public License v2. 4 | # See /LICENSE for more information. 5 | 6 | include $(TOPDIR)/rules.mk 7 | 8 | PKG_NAME:=luci-app-watchdog 9 | PKG_VERSION:=1.0.3 10 | PKG_RELEASE:=20250511 11 | 12 | PKG_MAINTAINER:=sirpdboy 13 | PKG_CONFIG_DEPENDS:= 14 | 15 | LUCI_TITLE:=LuCI support for watchdog 16 | LUCI_PKGARCH:=all 17 | LUCI_DEPENDS:=+curl +bash 18 | 19 | define Package/$(PKG_NAME)/conffiles 20 | /etc/config/watchdog 21 | endef 22 | 23 | include $(TOPDIR)/feeds/luci/luci.mk 24 | 25 | # call BuildPackage - OpenWrt buildroot signature 26 | -------------------------------------------------------------------------------- /luci-app-watchdog/po/templates/ddns-go.pot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-watchdog/po/templates/ddns-go.pot -------------------------------------------------------------------------------- /luci-app-watchdog/root/etc/config/watchdog: -------------------------------------------------------------------------------- 1 | 2 | config watchdog 'config' 3 | option sleeptime '60' 4 | option debuglevel '1' 5 | option up_timeout '2' 6 | option down_timeout '10' 7 | option timeout_retry_count '2' 8 | option thread_num '3' 9 | list login_control 'web_logged' 10 | list login_control 'ssh_logged' 11 | list login_control 'web_login_failed' 12 | list login_control 'ssh_login_failed' 13 | option login_max_num '3' 14 | option enable '1' 15 | option login_web_black '1' 16 | option login_ip_black_timeout '86400' 17 | 18 | -------------------------------------------------------------------------------- /luci-app-watchdog/root/etc/init.d/watchdog: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | # 3 | # Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-watchdog 4 | # 5 | 6 | START=99 7 | STOP=90 8 | USE_PROCD=1 9 | config=watchdog 10 | dir="/tmp/$config/" 11 | 12 | start_service() { 13 | procd_open_instance 14 | enable_value=$(uci get $config.config.enable 2>/dev/null || echo "0") 15 | [ "$enable_value" -ne "0" ] && procd_set_param command /usr/share/$config/$config && echo "$config is starting now ..." 16 | procd_close_instance 17 | } 18 | 19 | reload_service() { 20 | stop 21 | sleep 1 22 | start 23 | } 24 | 25 | stop_service() { 26 | [ -f ${dir}child_pid ] && parent_pid=$(cat ${dir}child_pid) 27 | [ -n "$parent_pid" ] && { 28 | child_pids=$(pgrep -P $parent_pid) 29 | echo "Terminating child processes of $config..." 30 | for child_pid in $child_pids; do 31 | kill $child_pid 32 | done 33 | } 34 | local pids=$(ps | grep "$config" | grep -v grep | grep -v $$ | awk '{print $1}') 35 | [ -n "$pids" ] && echo "$pids" | xargs kill 2>/dev/null 36 | echo "Terminating $config process..." 37 | } 38 | 39 | service_triggers() { 40 | procd_add_reload_trigger $config 41 | } 42 | -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/libexec/watchdog-call: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-watchdog 4 | # 5 | 6 | logfile="/tmp/watchdog/watchdog.log" 7 | dir="/tmp/watchdog" && mkdir -p "${dir}" 8 | lang=$(uci get luci.main.lang 2>/dev/null) 9 | if [ -z "$lang" ] || [[ "$lang" == "auto" ]]; then 10 | lang=$(echo "${LANG:-${LANGUAGE:-${LC_ALL:-${LC_MESSAGES:-zh_cn}}}}" | awk -F'[ .@]' '{print tolower($1)}' | sed 's/-/_/' 2>/dev/null) 11 | fi 12 | 13 | translate() { 14 | # 处理特殊字符 15 | local lua_script=$(cat <"${logfile}" 27 | 28 | elif [ "$1" == "child" ]; then 29 | shift 30 | command_name=$1 31 | shift 32 | "$command_name" "$@" 33 | fi 34 | -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/share/luci/menu.d/luci-app-watchdog.json: -------------------------------------------------------------------------------- 1 | { 2 | "admin/control/watchdog": { 3 | "title": "Watch Dog", 4 | "order": 10, 5 | "action": { 6 | "type": "view", 7 | "path": "watchdog/basic" 8 | }, 9 | "depends": { 10 | "acl": [ "luci-app-watchdog" ], 11 | "uci": { "watchdog": true } 12 | } 13 | }, 14 | 15 | "admin/control/watchdog/config": { 16 | "title": "Basic Settings", 17 | "order": 10, 18 | "action": { 19 | "type": "view", 20 | "path": "watchdog/basic" 21 | } 22 | }, 23 | "admin/control/watchdog/log": { 24 | "title": "Log", 25 | "order": 40, 26 | "action": { 27 | "type": "view", 28 | "path": "watchdog/log" 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/share/rpcd/acl.d/luci-app-watchdog.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-watchdog": { 3 | "description": "Grant UCI access for luci-app-watchdog", 4 | "read": { 5 | "file": { 6 | "/etc/init.d/watchdog": [ "exec" ], 7 | "/usr/share/watchdog/watchdog": [ "exec" ], 8 | "/tmp/watchdog/*": [ "read" ], 9 | "/usr/share/watchdog/api/*": [ "read" ], 10 | "/usr/libexec/watchdog-call": [ "exec" ] 11 | }, 12 | "ubus": { 13 | "control": [ "list" ] 14 | }, 15 | "uci": [ "watchdog" ] 16 | }, 17 | "write": { 18 | "file": { 19 | "/usr/share/watchdog/api/*": [ "write" ], 20 | "/tmp/watchdog/*": [ "write" ] 21 | }, 22 | "uci": [ "watchdog" ] 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/share/watchdog/api/device_aliases.list: -------------------------------------------------------------------------------- 1 | # Examples : 2 | #XX:XX:XX:XX:XX:XX My Phone 3 | #192.168.1.2 My PC 4 | -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/share/watchdog/api/ip_attribution.list: -------------------------------------------------------------------------------- 1 | https://ip.rss.ink/v1/qqwry?ip=${ip} | jq -r '.data.area' 2 | ip.plus/${ip} | sed -n 's/.*来自: //p' 3 | http://ip-api.com/json/${ip}?lang=zh-CN | jq -r '"\(.country) \(.regionName) \(.city)"' -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/share/watchdog/api/ip_blacklist: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/share/watchdog/api/ipv4.list: -------------------------------------------------------------------------------- 1 | ddns.oray.com/checkip 2 | www.net.cn/static/customercare/yourip.asp 3 | ip.3322.net 4 | ip.threep.top 5 | ip.atomo.cn 6 | ip.ddnspod.com 7 | 4.ipw.cn 8 | ipv4.ip.mir6.com -------------------------------------------------------------------------------- /luci-app-watchdog/root/usr/share/watchdog/api/ipv6.list: -------------------------------------------------------------------------------- 1 | speed.neu6.edu.cn/getIP.php 2 | 6.ipw.cn 3 | ip.atomo.cn 4 | ip.ddnspod.com 5 | v6.ip.zxinc.org/getip 6 | ipv6.ip.mir6.com -------------------------------------------------------------------------------- /luci-app-wifidog/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2008-2014 The LuCI K 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | LUCI_TITLE:=LuCI Support for wifidog 10 | LUCI_DEPENDS:=+wifidog 11 | LUCI_PKGARCH:=all 12 | PKG_NAME:=luci-app-wifidog 13 | PKG_VERSION:=2.0 14 | PKG_RELEASE:=2 15 | 16 | include $(TOPDIR)/feeds/luci/luci.mk 17 | 18 | # call BuildPackage - OpenWrt buildroot signature -------------------------------------------------------------------------------- /luci-app-wifidog/luasrc/controller/wifidog.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | QQ:183130227 3 | http://bbs.scjxsw.com 4 | ]]-- 5 | 6 | module("luci.controller.wifidog", package.seeall) 7 | 8 | 9 | function index() 10 | local fs = require "nixio.fs" 11 | if fs.access("/usr/bin/wifidog") then 12 | entry({"admin", "services","wifidog"}, cbi("wifidog"), "WEB认证配置", 4) 13 | end 14 | 15 | end 16 | 17 | -------------------------------------------------------------------------------- /luci-app-wifidog/root/etc/config/wifidog: -------------------------------------------------------------------------------- 1 | config wifidog 'wifidog' 2 | option gateway_id '24660045' 3 | option server_hostname 'www.test.com' 4 | option gateway_httpport '80' 5 | option gateway_path '/wifidog/' 6 | option gateway_connmax '50' 7 | option wifidog_enable '0' 8 | option enable '0' 9 | option gatewayport '2060' 10 | option check_interval '60' 11 | option client_timeout '5' 12 | 13 | -------------------------------------------------------------------------------- /luci-app-wifidog/root/etc/uci-defaults/luci-wifidog: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uci -q batch <<-EOF >/dev/null 4 | delete ucitrack.@wifidog[-1] 5 | add ucitrack wifidog 6 | set ucitrack.wifidog="wifidog" 7 | set ucitrack.wifidog.init='wifidog' 8 | commit ucitrack 9 | EOF 10 | chmod 755 /etc/init.d/wifidog >/dev/null 2>&1 11 | /etc/init.d/wifidog enable >/dev/null 2>&1 12 | rm -f /etc/uci-defaults/luci-wifidog 13 | rm -f /tmp/luci-indexcache 14 | exit 0 15 | -------------------------------------------------------------------------------- /luci-app-wolplus/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2016 Openwrt.org 2 | # 3 | # This is free software, licensed under the Apache License, Version 2.0 . 4 | # 5 | 6 | include $(TOPDIR)/rules.mk 7 | 8 | LUCI_TITLE:=LuCI support for wolplus From sundaqiang 9 | LUCI_DEPENDS:=+etherwake 10 | LUCI_PKGARCH:=all 11 | PKG_MAINTAINER:=sundaqiang 12 | 13 | include $(TOPDIR)/feeds/luci/luci.mk 14 | 15 | # call BuildPackage - OpenWrt buildroot signature 16 | -------------------------------------------------------------------------------- /luci-app-wolplus/luasrc/controller/wolplus.lua: -------------------------------------------------------------------------------- 1 | module("luci.controller.wolplus", package.seeall) 2 | local t, a 3 | local x = luci.model.uci.cursor() 4 | 5 | function index() 6 | if not nixio.fs.access("/etc/config/wolplus") then return end 7 | 8 | entry({"admin", "control", "wolplus"}, cbi("wolplus"), _("Wake on LAN"), 50).dependent = true 9 | entry( {"admin", "control", "wolplus", "awake"}, post("awake") ).leaf = true 10 | end 11 | 12 | function awake(sections) 13 | lan = x:get("wolplus",sections,"maceth") 14 | mac = x:get("wolplus",sections,"macaddr") 15 | local e = {} 16 | cmd = "/usr/bin/etherwake -D -i " .. lan .. " -b " .. mac .. " 2>&1" 17 | local p = io.popen(cmd) 18 | local msg = "" 19 | if p then 20 | while true do 21 | local l = p:read("*l") 22 | if l then 23 | if #l > 100 then l = l:sub(1, 100) .. "..." end 24 | msg = msg .. l 25 | else 26 | break 27 | end 28 | end 29 | p:close() 30 | end 31 | e["data"] = msg 32 | luci.http.prepare_content("application/json") 33 | luci.http.write_json(e) 34 | end 35 | -------------------------------------------------------------------------------- /luci-app-wolplus/luasrc/model/cbi/wolplus.lua: -------------------------------------------------------------------------------- 1 | local i = require "luci.sys" 2 | local t, e 3 | t = Map("wolplus", translate("wolplus"), translate("Wake up your LAN device")) 4 | t.template = "wolplus/index" 5 | e = t:section(TypedSection, "macclient", translate("macclient")) 6 | e.template = "cbi/tblsection" 7 | e.anonymous = true 8 | e.addremove = true 9 | a = e:option(Value, "name", translate("name")) 10 | a.optional = false 11 | nolimit_mac = e:option(Value, "macaddr", translate("macaddr")) 12 | nolimit_mac.rmempty = false 13 | i.net.mac_hints(function(e, t) nolimit_mac:value(e, "%s (%s)" % {e, t}) end) 14 | nolimit_eth = e:option(Value, "maceth", translate("maceth")) 15 | nolimit_eth.rmempty = false 16 | for t, e in ipairs(i.net.devices()) do if e ~= "lo" then nolimit_eth:value(e) end end 17 | btn = e:option(Button, "_awake",translate("awake")) 18 | btn.inputtitle = translate("awake") 19 | btn.inputstyle = "apply" 20 | btn.disabled = false 21 | btn.template = "wolplus/awake" 22 | function gen_uuid(format) 23 | local uuid = i.exec("echo -n $(cat /proc/sys/kernel/random/uuid)") 24 | if format == nil then 25 | uuid = string.gsub(uuid, "-", "") 26 | end 27 | return uuid 28 | end 29 | function e.create(e, t) 30 | local uuid = gen_uuid() 31 | t = uuid 32 | TypedSection.create(e, t) 33 | end 34 | 35 | return t 36 | -------------------------------------------------------------------------------- /luci-app-wolplus/luasrc/view/wolplus/awake.htm: -------------------------------------------------------------------------------- 1 | <%+cbi/valueheader%> 2 | " style="font-size: 100%;" type="button" onclick="onclick_awake(this.id)" <%=attr("name", section) .. attr("id", cbid) .. attr("value", self.inputtitle)%> /> 3 | <%+cbi/valuefooter%> 4 | -------------------------------------------------------------------------------- /luci-app-wolplus/luasrc/view/wolplus/index.htm: -------------------------------------------------------------------------------- 1 | <% include("cbi/map") %> 2 | 22 | 23 | -------------------------------------------------------------------------------- /luci-app-wolplus/po/zh-cn/wolplus.po: -------------------------------------------------------------------------------- 1 | msgid "Wake on LAN" 2 | msgstr "网络唤醒" 3 | 4 | msgid "Wake up your LAN device" 5 | msgstr "唤醒你的局域网设备" 6 | 7 | msgid "macclient" 8 | msgstr "设备列表" 9 | 10 | msgid "name" 11 | msgstr "名称" 12 | 13 | msgid "macaddr" 14 | msgstr "客户端MAC" 15 | 16 | msgid "maceth" 17 | msgstr "网络接口" 18 | 19 | msgid "awake" 20 | msgstr "唤醒" 21 | 22 | msgid "Please [Save & Apply] your changes first" 23 | msgstr "请先保存并应用您的设置" 24 | 25 | msgid "Control" 26 | msgstr "管控" 27 | -------------------------------------------------------------------------------- /luci-app-wolplus/po/zh_Hans/wolplus.po: -------------------------------------------------------------------------------- 1 | msgid "Wake on LAN" 2 | msgstr "网络唤醒" 3 | 4 | msgid "Wake up your LAN device" 5 | msgstr "唤醒你的局域网设备" 6 | 7 | msgid "macclient" 8 | msgstr "设备列表" 9 | 10 | msgid "name" 11 | msgstr "名称" 12 | 13 | msgid "macaddr" 14 | msgstr "客户端MAC" 15 | 16 | msgid "maceth" 17 | msgstr "网络接口" 18 | 19 | msgid "awake" 20 | msgstr "唤醒" 21 | 22 | msgid "Please [Save & Apply] your changes first" 23 | msgstr "请先保存并应用您的设置" 24 | 25 | msgid "Control" 26 | msgstr "管控" 27 | -------------------------------------------------------------------------------- /luci-app-wolplus/root/etc/config/wolplus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirpdboy/sirpdboy-package/8f0ccbc16c02adc7533fc9820729645f67682e6f/luci-app-wolplus/root/etc/config/wolplus -------------------------------------------------------------------------------- /luci-app-wolplus/root/etc/uci-defaults/luci-app-wolplus: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | [ ! -f "/usr/share/ucitrack/luci-app-wolplus.json" ] && { 3 | cat > /usr/share/ucitrack/luci-app-wolplus.json << EEOF 4 | { 5 | "config": "wolplus", 6 | "init": "wolplus" 7 | } 8 | EEOF 9 | /etc/init.d/ucitrack reload 10 | } 11 | 12 | uci -q batch <<-EOF >/dev/null 13 | delete ucitrack.@wolplus[-1] 14 | add ucitrack wolplus 15 | set ucitrack.@wolplus[-1].init=wolplus 16 | commit ucitrack 17 | EOF 18 | 19 | rm -f /tmp/luci-indexcache 20 | exit 0 21 | -------------------------------------------------------------------------------- /luci-app-wolplus/root/usr/share/rpcd/acl.d/luci-app-wolplus.json: -------------------------------------------------------------------------------- 1 | { 2 | "luci-app-wolplus": { 3 | "description": "Grant UCI access for luci-app-wolplus", 4 | "read": { 5 | "uci": [ "wolplus" ] 6 | }, 7 | "write": { 8 | "uci": [ "wolplus" ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /luci-lib-ipkg/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2018 Jo-Philipp Wich 3 | # 4 | # This is free software, licensed under the Apache License, Version 2.0 . 5 | # 6 | 7 | include $(TOPDIR)/rules.mk 8 | 9 | LUCI_TITLE:=Legacy opkg interface class 10 | LUCI_DEPENDS:=+luci-base 11 | 12 | include $(TOPDIR)/feeds/luci/luci.mk 13 | 14 | # call BuildPackage - OpenWrt buildroot signature 15 | -------------------------------------------------------------------------------- /smartdns/conf/smartdns.conf: -------------------------------------------------------------------------------- 1 | config smartdns 2 | option server_name 'china' 3 | option port '6054' 4 | option seconddns_enabled '0' 5 | option tcp_server '0' 6 | option seconddns_tcp_server '1' 7 | option coredump '0' 8 | option seconddns_server_group 'guowai' 9 | option seconddns_no_speed_check '1' 10 | option seconddns_no_dualstack_selection '1' 11 | option prefetch_domain '1' 12 | option ipv6_server '0' 13 | option force_aaaa_soa '1' 14 | option dualstack_ip_selection '1' 15 | option serve_expired '1' 16 | option rr_ttl_min '300' 17 | option seconddns_port '7054' 18 | option seconddns_no_rule_nameserver '1' 19 | option seconddns_no_rule_addr '0' 20 | option seconddns_no_rule_soa '0' 21 | option seconddns_no_rule_ipset '0' 22 | option enabled '0' 23 | option cache_size '300' 24 | option seconddns_no_cache '1' 25 | option resolve_local_hostnames '1' 26 | option auto_set_dnsmasq '0' 27 | option force_https_soa '1' 28 | option seconddns_force_aaaa_soa '0' 29 | option old_port '6054' 30 | option old_enabled '0' 31 | option old_auto_set_dnsmasq '0' 32 | 33 | config server 34 | option enabled '1' 35 | option type 'udp' 36 | option name 'ail6' 37 | option ip '223.6.6.6' 38 | option server_group 'china' 39 | option blacklist_ip '0' 40 | 41 | config server 42 | option enabled '1' 43 | option type 'udp' 44 | option name 'CNNIC SDNS' 45 | option ip '1.2.4.8' 46 | option port '53' 47 | option server_group 'china' 48 | option blacklist_ip '0' 49 | 50 | config server 51 | option enabled '1' 52 | option type 'udp' 53 | option name '114dns' 54 | option ip '114.114.114.114' 55 | option server_group 'china' 56 | option blacklist_ip '0' 57 | 58 | config server 59 | option enabled '1' 60 | option name 'google' 61 | option type 'https' 62 | option no_check_certificate '0' 63 | option server_group 'guowai' 64 | option blacklist_ip '0' 65 | option ip 'https://8.8.4.4/dns-query' 66 | 67 | config server 68 | option enabled '1' 69 | option name 'Cloudflare' 70 | option type 'https' 71 | option no_check_certificate '0' 72 | option server_group 'guowai' 73 | option blacklist_ip '0' 74 | option ip 'https://1.1.1.1/dns-query' 75 | -------------------------------------------------------------------------------- /speedtest-cli/Makefile: -------------------------------------------------------------------------------- 1 | include $(TOPDIR)/rules.mk 2 | 3 | PKG_NAME:=speedtest-cli 4 | PKG_VERSION:=1.2.0 5 | PKG_RELEASE:=1 6 | 7 | ifeq ($(ARCH),aarch64) 8 | PKG_HASH:=3953d231da3783e2bf8904b6dd72767c5c6e533e163d3742fd0437affa431bd3 9 | else ifeq ($(ARCH),arm) 10 | ARM_CPU_FEATURES:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))) 11 | ifeq ($(ARM_CPU_FEATURES),) 12 | ARCH:=armel 13 | PKG_HASH:=629a455a2879224bd0dbd4b36d8c721dda540717937e4660b4d2c966029466bf 14 | else 15 | ARCH:=armhf 16 | PKG_HASH:=e45fcdebbd8a185553535533dd032d6b10bc8c64eee4139b1147b9c09835d08d 17 | endif 18 | else ifeq ($(ARCH),i386) 19 | PKG_HASH:=9ff7e18dbae7ee0e03c66108445a2fb6ceea6c86f66482e1392f55881b772fe8 20 | else ifeq ($(ARCH),x86_64) 21 | PKG_HASH:=5690596c54ff9bed63fa3732f818a05dbc2db19ad36ed68f21ca5f64d5cfeeb7 22 | endif 23 | 24 | PKG_SOURCE:=ookla-speedtest-$(PKG_VERSION)-linux-$(ARCH).tgz 25 | PKG_SOURCE_URL:=https://install.speedtest.net/app/cli 26 | 27 | PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) 28 | 29 | PKG_MAINTAINER:=sbwml 30 | 31 | include $(INCLUDE_DIR)/package.mk 32 | 33 | define Package/$(PKG_NAME) 34 | SECTION:=net 35 | CATEGORY:=Network 36 | TITLE:=Speedtest CLI by Ookla 37 | DEPENDS:=@(aarch64||arm||i386||x86_64) +ca-certificates 38 | URL:=https://www.speedtest.net/ 39 | endef 40 | 41 | define Package/$(PKG_NAME)/description 42 | The Global Broadband Speed Test 43 | endef 44 | 45 | define Build/Prepare 46 | ( \ 47 | pushd $(PKG_BUILD_DIR) ; \ 48 | $(TAR) -zxf $(DL_DIR)/ookla-speedtest-$(PKG_VERSION)-linux-$(ARCH).tgz -C . ; \ 49 | popd ; \ 50 | ) 51 | endef 52 | 53 | define Build/Compile 54 | endef 55 | 56 | define Package/$(PKG_NAME)/install 57 | $(INSTALL_DIR) $(1)/usr/bin 58 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/speedtest $(1)/usr/bin 59 | endef 60 | 61 | $(eval $(call BuildPackage,$(PKG_NAME))) 62 | -------------------------------------------------------------------------------- /switch-lan-play/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2009-2014 OpenWrt.org 3 | # 4 | # This is free software, licensed under the GNU General Public License v2. 5 | # See /LICENSE for more information. 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | PKG_NAME:=switch-lan-play 11 | PKG_VERSION:=0.2.3 12 | PKG_RELEASE:=1 13 | 14 | PKG_SOURCE_PROTO:=git 15 | PKG_SOURCE_VERSION:=v$(PKG_VERSION) 16 | PKG_SOURCE_URL:=https://github.com/spacemeowx2/switch-lan-play.git 17 | PKG_MIRROR_HASH:=c0c663e3fdc95d6d6e8ab401caa2bfb5b5872e00 18 | #PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) 19 | 20 | PKG_LICENSE:=GPLv3 21 | PKG_LICENSE_FILES:=LICENSE.TXT 22 | 23 | include $(INCLUDE_DIR)/package.mk 24 | include $(INCLUDE_DIR)/cmake.mk 25 | 26 | CMAKE_BINARY_SUBDIR := build-openwrt 27 | 28 | define Package/$(PKG_NAME) 29 | SECTION:=net 30 | CATEGORY:=Network 31 | SUBMENU:=Lan-play 32 | DEPENDS:=+libpcap +libpthread +libstdcpp +libatomic @!USE_UCLIBC 33 | TITLE:=Switch Lan Play Client 34 | endef 35 | 36 | define Package/switch-lan-play/conffiles 37 | /etc/config/switchlanplay 38 | endef 39 | 40 | define Package/$(PKG_NAME)/description 41 | Make you and your friends play games like in a LAN. 42 | endef 43 | 44 | #define Build/Prepare 45 | # mkdir -p $(PKG_BUILD_DIR) 46 | # $(CP) ./$(PKG_NAME)/* $(PKG_BUILD_DIR)/ 47 | #endef 48 | 49 | define Package/$(PKG_NAME)/install 50 | $(INSTALL_DIR) $(1)/usr/bin 51 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/build-openwrt/src/lan-play $(1)/usr/bin/ 52 | $(INSTALL_DIR) $(1)/etc/config 53 | $(INSTALL_CONF) ./files/switchlanplay.config $(1)/etc/config/switchlanplay 54 | $(INSTALL_DIR) $(1)/etc/init.d 55 | $(INSTALL_BIN) ./files/switchlanplay.init $(1)/etc/init.d/switchlanplay 56 | endef 57 | 58 | $(eval $(call BuildPackage,$(PKG_NAME))) 59 | -------------------------------------------------------------------------------- /switch-lan-play/files/switchlanplay.config: -------------------------------------------------------------------------------- 1 | config switch-lan-play 2 | option enable '0' 3 | option ifname 'br-lan' 4 | option relay_server_host '127.0.0.1' 5 | option relay_server_port '11451' 6 | option pmtu '0' 7 | -------------------------------------------------------------------------------- /switch-lan-play/files/switchlanplay.init: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | START=99 3 | SERVICE=switchlanplay 4 | 5 | USE_PROCD=1 6 | 7 | run_switch_lan_play() 8 | { 9 | config_get_bool enable $1 enable 10 | if [ "$enable" -gt 0 ]; then 11 | local ifname 12 | config_get ifname $1 ifname 13 | local relay_server_host 14 | local relay_server_port 15 | config_get relay_server_host $1 relay_server_host 16 | config_get relay_server_port $1 relay_server_port 17 | config_get pmtu $1 pmtu 18 | if [ "$pmtu" -gt 0 ]; then 19 | PROG="lan-play --relay-server-addr $relay_server_host:$relay_server_port --netif $ifname --pmtu $pmtu" 20 | else 21 | PROG="lan-play --relay-server-addr $relay_server_host:$relay_server_port --netif $ifname" 22 | fi 23 | echo "switch-lan-play client started." 24 | else 25 | PROG="lan-play --version" 26 | echo "switch-lan-play is disabled. check configuration?" 27 | fi 28 | } 29 | 30 | start_service() 31 | { 32 | config_load switchlanplay 33 | config_foreach run_switch_lan_play switch-lan-play 34 | 35 | procd_open_instance 36 | procd_set_param command $PROG 37 | procd_close_instance 38 | 39 | echo $PROG 40 | } 41 | 42 | stop_service() 43 | { 44 | pgrep lan-play | xargs -r kill -9 45 | echo "switch-lan-play client stopped." 46 | } 47 | 48 | 49 | reload_service() 50 | { 51 | stop 52 | start 53 | } 54 | 55 | service_triggers() 56 | { 57 | procd_add_reload_trigger "/etc/config/switchlanplay" "switchlanplay" 58 | } 59 | -------------------------------------------------------------------------------- /watchcat/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2010 segal.di.ubi.pt 3 | # 4 | # This is free software, licensed under the GNU General Public License v2. 5 | # See /LICENSE for more information. 6 | # 7 | 8 | include $(TOPDIR)/rules.mk 9 | 10 | PKG_NAME:=watchcat 11 | PKG_VERSION:=1 12 | PKG_RELEASE:=17 13 | 14 | PKG_MAINTAINER:=Roger D 15 | PKG_LICENSE:=GPL-2.0 16 | 17 | include $(INCLUDE_DIR)/package.mk 18 | 19 | define Package/watchcat 20 | SECTION:=utils 21 | CATEGORY:=Utilities 22 | TITLE:=Enable the configuration of programmed reboots or network interface restarts 23 | PKGARCH:=all 24 | endef 25 | 26 | define Package/watchcat/description 27 | Restart network interfaces or reboot if pings to hosts fail, or set up periodic reboots. Configured via UCI /etc/config/watchcat 28 | endef 29 | 30 | define Package/watchcat/conffiles 31 | /etc/config/watchcat 32 | endef 33 | 34 | define Build/Compile 35 | endef 36 | 37 | define Package/watchcat/install 38 | $(INSTALL_DIR) $(1)/etc/init.d 39 | $(INSTALL_BIN) ./files/watchcat.init $(1)/etc/init.d/watchcat 40 | $(INSTALL_DIR) $(1)/usr/bin 41 | $(INSTALL_BIN) ./files/watchcat.sh $(1)/usr/bin/watchcat.sh 42 | $(INSTALL_DIR) $(1)/etc/config 43 | $(INSTALL_DATA) ./files/watchcat.config $(1)/etc/config/watchcat 44 | $(INSTALL_DIR) $(1)/etc/uci-defaults 45 | $(INSTALL_BIN) ./files/migrate-watchcat $(1)/etc/uci-defaults/migrate-watchcat 46 | endef 47 | 48 | $(eval $(call BuildPackage,watchcat)) 49 | -------------------------------------------------------------------------------- /watchcat/files/migrate-watchcat: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | . /lib/functions.sh 4 | 5 | upgrade_watchcat() { 6 | local cfg="$1" 7 | 8 | config_get period "$cfg" period 9 | config_get mode "$cfg" mode 10 | config_get pinghosts "$cfg" pinghosts 11 | config_get forcedelay "$cfg" forcedelay 12 | 13 | [ -f "/etc/config/watchcat" ] || touch /etc/config/watchcat 14 | uci_add watchcat watchcat 15 | uci_set watchcat @watchcat[-1] period "$period" 16 | uci_set watchcat @watchcat[-1] mode "$mode" 17 | uci_set watchcat @watchcat[-1] pinghosts "$pinghosts" 18 | uci_set watchcat @watchcat[-1] forcedelay "$forcedelay" 19 | 20 | uci_remove system "$cfg" 21 | } 22 | 23 | config_load system 24 | config_foreach upgrade_watchcat watchcat 25 | 26 | uci_commit watchcat 27 | uci commit system 28 | -------------------------------------------------------------------------------- /watchcat/files/watchcat.config: -------------------------------------------------------------------------------- 1 | config watchcat 2 | option period '6h' 3 | option mode 'ping_reboot' 4 | option pinghosts '8.8.8.8' 5 | option forcedelay '30' 6 | -------------------------------------------------------------------------------- /插件说明.txt: -------------------------------------------------------------------------------- 1 | luci-app-autotimeset定时自动重启和自动关机 原luci-app-autopoweroff 2 | luci-app-advanced系统高级设置【自带文件管理功能】 3 | luci-app-NetSpeedTest网络速度测试 4 | luci-app-poweroffdevice关机功能插件 5 | luci-app-netdata网络监控中文版 6 | luci-app-timecontrol定时控制 7 | luci-app-controlweburl管控过滤[集成上网时间控制,黑白名单IP过滤,网址过滤几大功能] 8 | luci-app-cpulimitCPU限制 9 | luci-app-turboacc新版TURBO ACC加速器 10 | luci-app-eqosEQS网速控制 11 | luci-app-koolddnsKOOL域名DNS解析工具 12 | luci-app-koolproxyRKP经典去广告 13 | luci-them-ebtmodbtmod(适配18.06) 14 | luci-them-eopentopdopentopd(适配18.06) 15 | luci-them-eopentoks仿LEDE主题(适配18.06) --------------------------------------------------------------------------------