Commit Graph
56 Commits
Author SHA1 Message Date
Robert Chacon b54cec84be changes 2026-04-12 23:07:42 -06:00
rchac 80244f89a1 changes 2026-04-11 19:35:01 +00:00
rchac 6985b3d9dd changes 2026-04-11 18:46:12 +00:00
Robert Chacon bd98f66e2e changes 2026-04-11 10:12:28 -06:00
rchac d1a63b21bf changes 2026-04-11 04:15:10 +00:00
rchac 36aad13590 changes 2026-04-08 17:47:56 +00:00
rchac ccb9c0963b changes 2026-04-08 03:02:14 +00:00
Robert Chacon 3942547564 changes 2026-04-05 15:53:12 -06:00
rchac 05663b0b40 Add VISP integration 2026-02-10 05:42:37 +00:00
Herbert Wolverson bdfb9379f9 Fix merge 2026-01-07 13:48:33 -06:00
Herbert Wolverson a3b2ef4ae5 Feat: New binpacking algorithm, aiming for fewer changes over time (reduced reload churn). 2025-11-06 09:24:55 -06:00
Herbert Wolverson 4726d6f521 WIP: Start adding json_overrides.json and the library/app to manage it. 2025-10-03 13:21:00 -05:00
Herbert Wolverson 3a8564a88b Update git ignore 2025-10-01 12:57:07 -05:00
Robert Chacón a5d63bc0eb Update .gitignore 2025-08-29 22:23:07 -06:00
Herbert Wolverson b7ede27dc8 WIP: Building tree output files are now identical. Now passes circuit_id and site_id hashes. Now builds the queue structure on the Rust side. Extended the lazy mode to be an enum. Lazy HTB mode issues circuit commands. Pruning is now present but poorly tested. 2025-06-04 16:23:11 -05:00
Herbert Wolverson 7a90d060a1 WIP: Building tree output files are now identical. Now passes circuit_id and site_id hashes. Now builds the queue structure on the Rust side! 2025-06-04 15:08:07 -05:00
Herbert Wolverson 7334487090 Chore: revert most of the lazy queue system for attempt 2.0 2025-06-04 09:53:23 -05:00
Herbert WolversonandClaude 80aba29371 feat: Complete Step 10 - Add comprehensive test coverage and web UI configuration for lazy queue system
This commit completes Step 10 of the LQOS Bakery Phase 2 implementation, adding:

- Comprehensive test suite with 36 tests (29 unit + 7 integration)
- Web UI configuration fields for lazy queue settings
- JavaScript validation and configuration handling
- Complete documentation updates marking Step 10 as completed

The lazy queue system now has both automated testing and user-friendly web configuration.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-03 09:21:58 -05:00
Herbert WolversonandClaude 9e57c672e8 feat: Switch to Rust bakery as default with bulk execution for production
- Comment out all individual bakery calls in LibreQoS.py to avoid command ordering issues
- Keep only bulk execution (bakery_execute_tc_commands) which preserves proper TC command order
- Set bakery to execution mode (WRITE_TC_TO_FILE = false) for production use
- Fix command ordering by using tc -b batch execution like original Python implementation
- Successfully tested: fractional speeds work correctly (0.5 Mbps → 500Kbit, 1.5 Mbps → 1500Kbit)
- Resolved RTNETLINK "No such file or directory" errors caused by individual command execution
- Minor fixes: typo in lqosd error message, update .gitignore for bin/static2

The Rust bakery now serves as the default TC command executor, maintaining full compatibility
with fractional speeds and ensuring proper hierarchical queue creation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-03 09:21:58 -05:00
Herbert Wolverson 9ca1467351 Catch up 2025-06-03 09:21:03 -05:00
Herbert Wolverson f76da3c727 Strong error checking in the Python side 2025-05-30 09:46:00 -05:00
Herbert Wolverson ad04053446 Catch up and ignore aider config files in the repo. 2025-01-22 12:15:31 -06:00
Herbert Wolverson 7117e0d5f1 Loading/saving layouts to/from the server is functioning. 2024-06-26 12:16:46 -05:00
Herbert Wolverson 5c89e90731 JS based esbuild going. 2024-06-26 12:16:46 -05:00
Herbert Wolverson 07dd42d981 Small improvements to site breadcrumbs 2023-08-07 17:45:28 +00:00
Herbert Wolverson b305ff95fc Lots of small render fixes 2023-06-14 18:36:42 +00:00
Herbert Wolverson f7571f2cb3 Merge branch 'develop' into long_term_stats 2023-05-23 17:46:35 +00:00
Herbert Wolverson f41e9d7261 WASM-based websocket system, including compression and binary encoding. 2023-05-20 15:36:04 +00:00
bile0026 775d9ffe0e feat: 🎉 base docs structure 2023-05-19 10:43:52 -05:00
Herbert Wolverson cadd3aa800 Add the new tool to the git ignore list. 2023-04-24 20:53:43 +00:00
Herbert Wolverson a84f590393 Very first baby-steps into the land of modern web development.
Use `esbuild` to build TypeScript, and bundle components together
in a minified form for the `lts_node` website.

This is very much a work in progress, committing as a checkpoint.
2023-04-21 18:52:53 +00:00
Herbert Wolverson e75dbca434 To make it easier while I work on a bizarre split setup, store the influx url and the host IP separately. 2023-04-20 20:02:34 +00:00
Herbert Wolverson ec53edd73d Merge Cargo.toml with develop 2023-04-20 13:32:59 +00:00
Robert Chacón 77f21b4118 Update .gitignore 2023-04-19 19:14:47 -06:00
Robert Chacón 71e7610c75 Update .gitignore 2023-04-19 19:09:56 -06:00
Herbert Wolverson cc88ed1c62 Add the new tool to the git ignore list. 2023-04-18 13:05:55 +00:00
Herbert Wolverson 6337bdb3d0 WIP - sumissions transition to a processing queue. Beginnings of some early Influx code. 2023-04-17 13:10:54 +00:00
Herbert Wolverson 403dddd1b9 PKI for the license server. Replies to public key exchange requests with a server-cluster side public key. 69 bytes, not too heavy. 2023-04-14 17:52:42 +00:00
Herbert Wolverson 26efcdb208 Proof of concept with a tiny webserver 2023-03-20 19:17:21 +00:00
Herbert Wolverson 3e9ff0c0f5 (Very alpha!) Add dpkg builder and initial configurator
* Adds a new Rust program, `lqos_setup`.
    * If no /etc/lqos.conf is found, prompts for interfaces and
      creates a dual-interface XDP bridge setup.
    * If no /opt/libreqos/src/ispConfig.py is found, prompts
      for bandwidth and creates one (using the interfaces also)
    * Same for ShapedDevices.csv and network.json
    * If no webusers are found, prompts to make one.
* Adds build_dbpkg.sh
    * Creates a new directory named `dist`
    * Builds the Rust components in a portable mode.
    * Creates a list of dependencies and DEBIAN directory
      with control and postinst files.
    * Handles PIP dependencies in postinst
    * Calls the new `lqos_setup` program for final
      configuration.
    * Sets up the daemons in systemd and enables them.

In very brief testing, I had a working XDP bridge with
1 fake user and a total bandwidth limit configured and
working after running:

dpkg -i 1.4-1.dpkg
apt -f install

Could still use some tweaking.
2023-02-21 20:26:34 +00:00
Herbert Wolverson 27c079f9cf Add lqusers.toml to .gitignore after it was renamed. 2023-02-14 20:41:38 +00:00
Herbert Wolverson 1da10d7a23 Add bin/lqusers to the gitignore file. 2023-02-14 20:37:02 +00:00
Herbert Wolverson 393a489bca Allow logged-in users to update ispConfig.py via web UI
1) lqos_config understands writing to a new ispConfig.py file, copying the
   previous one and amending to avoid changing any not-covered data.
2) The web UI can adjust the config, upload a new one and it is saved.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 16:12:09 +00:00
Herbert Wolverson 165dae030b Adds an authentication system.
* The new Rust utility "webusers" manages /opt/libreqos/webusers.toml.
* You can add/update/remove/list users from that tool.
* The "allow anonymous" option in webusers.toml permits access for
  unauthenticated users, but won't let them change anything. This is
  for payne demonstrations.
* All web APIs and pages should now be secured, requiring a login.
* The login requires cookies.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:51 +00:00
Herbert Wolverson 42c77f3432 Add example systemctl .service files
Add example .service files for lqosd and lqos_node_manager.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson b01b9520a5 First iteration of a Python module for direct bus interaction
* Adds the `lqos_python` module to the Rust build system.
* `lqos_python` exposes an API for calling bus commands
  directly, instead of via a helper. Currently, "is alive"
  for testing the daemon, and IP mappings are exported.
* Update the build script to build the .so file and put
  it where Python can find it.
* Exclude the binary from Git.
* Update `LibreQoS.py` to use bus commands for clearing,
  deleting IP mappings. Adding is not yet covered, due
  to the way commands are batched - and that not yet being
  supported by the library.
* Add a check to `LibreQoS.py` that the `lqosd` daemon
  is running and accepting connections. Abort if it isn't,
  since nothing else will work anyway.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson bd5ace9fbf Couple more .gitignore entries to avoid including
Linux TC status and lastRun.txt in the tree.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson deded47cac Add build script and associated path changes
* Adds build_rust.sh:
   * Creates `src/bin` and `src/bin/static` if needed.
   * Compiles all of the executables in the `rust` tree.
   * Copies the executables into `src/bin`
   * Copies the static web data for `lqos_node_manager`
     into `bin/static`.
* Updates .gitignore to ignore the bin/ folder
* Updates LibreQoS.py to call bin/xdp_iphash_to_cpu_cmdline
  instead of ./xdp_iphash_to_cpu_cmdline (cleaner).
* Updates graphInfluxDB.py to call the temporary Rust shim
  that provides output like the previous one, hopefully
  (poorly tested) allowing the existing graph system to work
  with the new structure.

See #181

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson b0ff63d278 Update .gitignore, fix syntax in LibreQoS.py
* Add src/rust/target to the .gitignore file,
  to avoid including Rust build artifacts in the
  Git tree.
* Fix the syntax when calling the IP mapping helper
  and deleting IP mappings.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Dave Täht 113a3f7c96 More gitignore fixes 2022-12-10 21:37:52 -08:00