linuxfabrik-lib 3.1.1__tar.gz → 3.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/PKG-INFO +1 -1
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/linuxfabrik_lib.egg-info/PKG-INFO +1 -1
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/pyproject.toml +1 -1
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/url.py +40 -1
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/LICENSE +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/README.md +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/__init__.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/args.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/base.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/cache.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/db_mysql.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/db_sqlite.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/disk.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/distro.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/dmidecode.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/endoflifedate.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/feedparser.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/globals.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/grassfish.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/huawei.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/human.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/icinga.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/infomaniak.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/jitsi.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/keycloak.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/lftest.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/librenms.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/linuxfabrik_lib.egg-info/SOURCES.txt +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/linuxfabrik_lib.egg-info/dependency_links.txt +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/linuxfabrik_lib.egg-info/requires.txt +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/linuxfabrik_lib.egg-info/top_level.txt +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/net.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/nextcloud.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/nodebb.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/powershell.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/psutil.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/qts.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/redfish.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/rocket.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/setup.cfg +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/shell.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/smb.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/time.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/txt.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/uptimerobot.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/veeam.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/version.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/wildfly.py +0 -0
- {linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/winrm.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: linuxfabrik-lib
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Python libraries used in various Linuxfabrik projects, including the 'Linuxfabrik Monitoring Plugins' project.
|
|
5
5
|
Author-email: "Linuxfabrik GmbH, Zurich, Switzerland" <info@linuxfabrik.ch>
|
|
6
6
|
License: This is free and unencumbered software released into the public domain.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: linuxfabrik-lib
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Python libraries used in various Linuxfabrik projects, including the 'Linuxfabrik Monitoring Plugins' project.
|
|
5
5
|
Author-email: "Linuxfabrik GmbH, Zurich, Switzerland" <info@linuxfabrik.ch>
|
|
6
6
|
License: This is free and unencumbered software released into the public domain.
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "linuxfabrik-lib"
|
|
9
|
-
version = "3.
|
|
9
|
+
version = "3.2.0"
|
|
10
10
|
description = "Python libraries used in various Linuxfabrik projects, including the 'Linuxfabrik Monitoring Plugins' project."
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
authors = [
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
"""Get for example HTML or JSON from an URL."""
|
|
12
12
|
|
|
13
13
|
__author__ = 'Linuxfabrik GmbH, Zurich/Switzerland'
|
|
14
|
-
__version__ = '
|
|
14
|
+
__version__ = '2026041403'
|
|
15
15
|
|
|
16
|
+
import base64
|
|
16
17
|
import json
|
|
17
18
|
import re
|
|
18
19
|
import ssl
|
|
@@ -308,6 +309,44 @@ def get_latest_version_from_github(user, repo, key='tag_name'):
|
|
|
308
309
|
return True, result.get(key, False)
|
|
309
310
|
|
|
310
311
|
|
|
312
|
+
def split_basic_auth(url):
|
|
313
|
+
"""Extract userinfo from `url` and return a `(url, headers)` tuple.
|
|
314
|
+
|
|
315
|
+
The returned URL has any `user[:password]@` prefix stripped from
|
|
316
|
+
its netloc so the credentials never reach the request line or
|
|
317
|
+
any proxy log. If userinfo is present, `headers` contains the
|
|
318
|
+
matching `Authorization: Basic ...` entry; otherwise it is an
|
|
319
|
+
empty dict.
|
|
320
|
+
|
|
321
|
+
Pass the returned `url` and `headers` to `lib.url.fetch()` /
|
|
322
|
+
`lib.url.fetch_json()` so plugins can accept HTTP basic auth via
|
|
323
|
+
the URL (e.g. `https://user:secret@host/path`) instead of
|
|
324
|
+
exposing separate `--username` / `--password` arguments.
|
|
325
|
+
|
|
326
|
+
>>> split_basic_auth('https://example.com/path')
|
|
327
|
+
('https://example.com/path', {})
|
|
328
|
+
>>> u, h = split_basic_auth('https://alice:secret@example.com/path')
|
|
329
|
+
>>> u
|
|
330
|
+
'https://example.com/path'
|
|
331
|
+
>>> h
|
|
332
|
+
{'Authorization': 'Basic YWxpY2U6c2VjcmV0'}
|
|
333
|
+
"""
|
|
334
|
+
parsed = urllib.parse.urlparse(url)
|
|
335
|
+
if not parsed.username:
|
|
336
|
+
return url, {}
|
|
337
|
+
|
|
338
|
+
user = urllib.parse.unquote(parsed.username)
|
|
339
|
+
password = urllib.parse.unquote(parsed.password or '')
|
|
340
|
+
token = txt.to_text(base64.b64encode(txt.to_bytes(f'{user}:{password}')))
|
|
341
|
+
|
|
342
|
+
netloc = parsed.hostname or ''
|
|
343
|
+
if parsed.port is not None:
|
|
344
|
+
netloc = f'{netloc}:{parsed.port}'
|
|
345
|
+
stripped = urllib.parse.urlunparse(parsed._replace(netloc=netloc))
|
|
346
|
+
|
|
347
|
+
return stripped, {'Authorization': f'Basic {token}'}
|
|
348
|
+
|
|
349
|
+
|
|
311
350
|
def strip_tags(html):
|
|
312
351
|
"""
|
|
313
352
|
Strips all HTML tags from a given string.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{linuxfabrik_lib-3.1.1 → linuxfabrik_lib-3.2.0}/linuxfabrik_lib.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|