Compare commits

...

6 Commits

Author SHA1 Message Date
Florian Paul Azim Hoberg
155c417d39 fix: Fix authentication timeout in rare cases that could lead to a stacktrace
Fixes: #285
2025-08-25 08:44:03 +02:00
gyptazy
1ff0c5d96e Merge pull request #293 from gyptazy/feature/290-validate-token-input-from-config-file
feature: Add validation for provided API user token id to avoid confusions
2025-08-25 08:11:56 +02:00
Florian Paul Azim Hoberg
3eb4038723 feature: Add validation for provided API user token id to avoid confusions
Fixes: #290
2025-08-25 08:07:44 +02:00
gyptazy
47e7dd3c56 Merge pull request #292 from gyptazy/fix/291-catch-stack-trace-when-user-account-is-not-given-or-wrong
fix(proxmox-api): Fix stacktrace output when validating permissions on non existing users in Proxmox
2025-08-25 07:58:32 +02:00
Florian Paul Azim Hoberg
bb8cf9033d fix(proxmox-api): Fix stacktrace output when validating permissions on non existing users in Proxmox
Fixes: #291
2025-08-25 07:55:02 +02:00
gyptazy
756b4efcbd Merge pull request #288 from gyptazy/feature/281-helm-chart-versioning
feature: Add Helm chart support for ProxLB
2025-08-19 06:28:31 +02:00
5 changed files with 29 additions and 7 deletions

View File

@@ -0,0 +1,2 @@
fixed:
- Fix authentication timeout in rare cases that could lead to a stacktrace (@gyptazy). [#285]

View File

@@ -0,0 +1,2 @@
added:
- Add validation for provided API user token id to avoid confusions (@gyptazy). [#291]

View File

@@ -0,0 +1,2 @@
fixed:
- Fix stacktrace output when validating permissions on non existing users in Proxmox (@gyptazy). [#291]

View File

@@ -51,14 +51,14 @@ def main():
# Validate of an optional service delay
Helper.get_service_delay(proxlb_config)
# Connect to Proxmox API & create API object
proxmox_api = ProxmoxApi(proxlb_config)
# Overwrite password after creating the API object
proxlb_config["proxmox_api"]["pass"] = "********"
while True:
# Connect to Proxmox API & create API object
proxmox_api = ProxmoxApi(proxlb_config)
# Overwrite password after creating the API object
proxlb_config["proxmox_api"]["pass"] = "********"
# Validate if reload signal was sent during runtime
# and reload the ProxLB configuration and adjust log level
if Helper.proxlb_reload:

View File

@@ -135,6 +135,14 @@ class ProxmoxApi:
proxlb_credentials = proxlb_config["proxmox_api"]
present_auth_pass = "pass" in proxlb_credentials
present_auth_secret = "token_secret" in proxlb_credentials
token_id = proxlb_credentials.get("token_id", None)
if token_id:
non_allowed_chars = ["@", "!"]
for char in non_allowed_chars:
if char in token_id:
logger.error(f"Wrong user/token format defined. User and token id must be splitted! Please see: https://github.com/gyptazy/ProxLB/blob/main/docs/03_configuration.md#required-permissions-for-a-user")
sys.exit(1)
if present_auth_pass and present_auth_secret:
logger.critical(f"Username/password and API token authentication are mutal exclusive. Please use only one!")
@@ -336,7 +344,15 @@ class ProxmoxApi:
permissions_available = []
# Get the permissions for the current user/token from API
permissions = proxmox_api.access.permissions.get()
try:
permissions = proxmox_api.access.permissions.get()
except proxmoxer.core.ResourceException as api_error:
if "no such user" in str(api_error):
logger.error("Authentication to Proxmox API not possible: User not known - please check your username and config file.")
sys.exit(1)
else:
logger.error(f"Proxmox API error: {api_error}")
sys.exit(1)
# Get all available permissions of the current user/token
for path, permission in permissions.items():