Commit Graph

13 Commits

Author SHA1 Message Date
Herbert Wolverson
f42a1a5908 build_rust.sh checks for dependencies
On start, the "build_rust.sh" script checks for the availability
of bpftool, pkg-config and clang/LLVM. If these aren't found, it
fires up an "apt-get install" for the appropriate packages.
2023-03-21 13:17:46 +00:00
Dave Taht
8ba5aed14e lqusers: change name of web admin tool from webusers to lqusers
lqusers is consistent with the prefix used elsewhere in LibreQos.

Something one character shorter than that came to mind, but
I resisted.
2023-02-09 15:21:02 +00:00
Herbert Wolverson
715829cc9a Add 'rustup update' to the build chain. 2023-02-02 14:10:06 +00:00
Herbert Wolverson
7b1c285afa Adjust build_rust.sh to build to separate files and then move
into running files to avoid service interruption. The script
detects if you are using systemd (with the default names) and
will restart the services at the end of the process - for a
very brief interruption rather than several minutes.

Also suppresses pushd/popd output.

Related to ISSUE #208
2023-02-01 17:53:15 +00:00
Herbert Wolverson
3a9e72901b Correct issues with failing to collect data when started at
boot time. ISSUE #235 . Also relevant to ISSUE #209

* Discovered that the BOOT_TIME clock can fail if called
  immediately after boot.
* Refactored time fetching functions into `lqos_utils` with
  proper error wrapping.
* Adjusted unknown IP expiration to issue a bus response of
  "not ready yet" if the boot time clock is not available.
* Adjusted unknown IP expiration to handle 5-minutes in the
  past being a negative number.
* Adjusted queue collection to suggest that you run
  LibreQoS.py if queues don't exist - and fail gracefully,
  without causing a hitch.
2023-02-01 16:08:31 +00:00
Interduo
670d3dafe3 improvement: its better to use one sudo here
(than many times sudo inside script remove_pinned_maps.sh)
2023-01-31 14:46:46 +01:00
Dave Taht
145d9d9a27 Convert /etc/lqos to /etc/lqos.conf globally
Too much chance of someone putting /etc/lqos as a directory.
2023-01-22 19:29:18 +00:00
Herbert Wolverson
25234cc28a Add suggestion to run remove_pinned_maps to the Rust builder. 2023-01-13 16:40:19 +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
f0a9f045fa Update build_rust.sh to include node manager
Update the Rust build script to include the node manager,
and its required files.

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