linuxfabrik-lib 3.3.0__tar.gz → 3.4.1__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.3.0 → linuxfabrik_lib-3.4.1}/PKG-INFO +6 -6
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/README.md +5 -5
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/endoflifedate.py +128 -68
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/librenms.py +14 -7
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/linuxfabrik_lib.egg-info/PKG-INFO +6 -6
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/pyproject.toml +1 -1
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/time.py +56 -1
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/LICENSE +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/__init__.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/args.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/base.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/cache.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/db_mysql.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/db_sqlite.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/disk.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/distro.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/dmidecode.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/feedparser.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/globals.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/grassfish.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/huawei.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/human.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/icinga.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/infomaniak.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/jitsi.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/keycloak.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/lftest.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/linuxfabrik_lib.egg-info/SOURCES.txt +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/linuxfabrik_lib.egg-info/dependency_links.txt +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/linuxfabrik_lib.egg-info/requires.txt +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/linuxfabrik_lib.egg-info/top_level.txt +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/net.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/nextcloud.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/nodebb.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/powershell.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/psutil.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/qts.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/redfish.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/rocket.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/setup.cfg +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/shell.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/smb.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/txt.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/uptimerobot.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/url.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/veeam.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/version.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/wildfly.py +0 -0
- {linuxfabrik_lib-3.3.0 → linuxfabrik_lib-3.4.1}/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.4.1
|
|
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.
|
|
@@ -97,6 +97,11 @@ A mature, production-grade Python library collection providing 35+ modules with
|
|
|
97
97
|
The library requires Python 3.9+ and runs on every platform.
|
|
98
98
|
|
|
99
99
|
|
|
100
|
+
## Documentation
|
|
101
|
+
|
|
102
|
+
Full documentation is available at [linuxfabrik.github.io/lib](https://linuxfabrik.github.io/lib/). It is automatically built and deployed on every push to `main`.
|
|
103
|
+
|
|
104
|
+
|
|
100
105
|
## Installation
|
|
101
106
|
|
|
102
107
|
Add `linuxfabrik-lib` as a dependency to your project, or install it manually:
|
|
@@ -106,11 +111,6 @@ pip install --user linuxfabrik-lib
|
|
|
106
111
|
```
|
|
107
112
|
|
|
108
113
|
|
|
109
|
-
## Documentation
|
|
110
|
-
|
|
111
|
-
Full API documentation is available at [linuxfabrik.github.io/lib](https://linuxfabrik.github.io/lib/). It is automatically built and deployed on every push to `main`.
|
|
112
|
-
|
|
113
|
-
|
|
114
114
|
## Design Principles
|
|
115
115
|
|
|
116
116
|
These libraries are built with a clear set of priorities:
|
|
@@ -29,6 +29,11 @@ A mature, production-grade Python library collection providing 35+ modules with
|
|
|
29
29
|
The library requires Python 3.9+ and runs on every platform.
|
|
30
30
|
|
|
31
31
|
|
|
32
|
+
## Documentation
|
|
33
|
+
|
|
34
|
+
Full documentation is available at [linuxfabrik.github.io/lib](https://linuxfabrik.github.io/lib/). It is automatically built and deployed on every push to `main`.
|
|
35
|
+
|
|
36
|
+
|
|
32
37
|
## Installation
|
|
33
38
|
|
|
34
39
|
Add `linuxfabrik-lib` as a dependency to your project, or install it manually:
|
|
@@ -38,11 +43,6 @@ pip install --user linuxfabrik-lib
|
|
|
38
43
|
```
|
|
39
44
|
|
|
40
45
|
|
|
41
|
-
## Documentation
|
|
42
|
-
|
|
43
|
-
Full API documentation is available at [linuxfabrik.github.io/lib](https://linuxfabrik.github.io/lib/). It is automatically built and deployed on every push to `main`.
|
|
44
|
-
|
|
45
|
-
|
|
46
46
|
## Design Principles
|
|
47
47
|
|
|
48
48
|
These libraries are built with a clear set of priorities:
|
|
@@ -54,8 +54,8 @@ ENDOFLIFE_DATE = {
|
|
|
54
54
|
'https://endoflife.date/api/composer.json': [
|
|
55
55
|
{ 'cycle': '2.9',
|
|
56
56
|
'eol': False,
|
|
57
|
-
'latest': '2.9.
|
|
58
|
-
'latestReleaseDate': '2026-
|
|
57
|
+
'latest': '2.9.7',
|
|
58
|
+
'latestReleaseDate': '2026-04-14',
|
|
59
59
|
'lts': False,
|
|
60
60
|
'releaseDate': '2025-11-13'},
|
|
61
61
|
{ 'cycle': '2.8',
|
|
@@ -96,10 +96,22 @@ ENDOFLIFE_DATE = {
|
|
|
96
96
|
'releaseDate': '2022-03-30'},
|
|
97
97
|
{ 'cycle': '2.2',
|
|
98
98
|
'eol': False,
|
|
99
|
-
'latest': '2.2.
|
|
100
|
-
'latestReleaseDate': '
|
|
99
|
+
'latest': '2.2.27',
|
|
100
|
+
'latestReleaseDate': '2026-04-14',
|
|
101
101
|
'lts': True,
|
|
102
102
|
'releaseDate': '2021-12-22'},
|
|
103
|
+
{ 'cycle': '2.1',
|
|
104
|
+
'eol': '2021-12-22',
|
|
105
|
+
'latest': '2.1.14',
|
|
106
|
+
'latestReleaseDate': '2021-11-30',
|
|
107
|
+
'lts': False,
|
|
108
|
+
'releaseDate': '2021-06-03'},
|
|
109
|
+
{ 'cycle': '2.0',
|
|
110
|
+
'eol': '2021-06-03',
|
|
111
|
+
'latest': '2.0.14',
|
|
112
|
+
'latestReleaseDate': '2021-05-21',
|
|
113
|
+
'lts': False,
|
|
114
|
+
'releaseDate': '2020-10-24'},
|
|
103
115
|
{ 'cycle': '1',
|
|
104
116
|
'eol': '2020-10-24',
|
|
105
117
|
'latest': '1.10.27',
|
|
@@ -110,6 +122,12 @@ ENDOFLIFE_DATE = {
|
|
|
110
122
|
|
|
111
123
|
|
|
112
124
|
'https://endoflife.date/api/fedora.json': [
|
|
125
|
+
{ 'cycle': '44',
|
|
126
|
+
'eol': '2027-06-02',
|
|
127
|
+
'latest': '44',
|
|
128
|
+
'latestReleaseDate': '2026-04-28',
|
|
129
|
+
'lts': False,
|
|
130
|
+
'releaseDate': '2026-04-28'},
|
|
113
131
|
{ 'cycle': '43',
|
|
114
132
|
'eol': '2026-12-09',
|
|
115
133
|
'latest': '43',
|
|
@@ -118,7 +136,7 @@ ENDOFLIFE_DATE = {
|
|
|
118
136
|
'releaseDate': '2025-10-28'},
|
|
119
137
|
{ 'codename': 'Adams',
|
|
120
138
|
'cycle': '42',
|
|
121
|
-
'eol': '2026-05-
|
|
139
|
+
'eol': '2026-05-27',
|
|
122
140
|
'latest': '42',
|
|
123
141
|
'latestReleaseDate': '2025-04-15',
|
|
124
142
|
'lts': False,
|
|
@@ -433,6 +451,11 @@ ENDOFLIFE_DATE = {
|
|
|
433
451
|
|
|
434
452
|
|
|
435
453
|
'https://endoflife.date/api/fortios.json': [
|
|
454
|
+
{ 'cycle': '8.0',
|
|
455
|
+
'eol': '2030-10-21',
|
|
456
|
+
'lts': False,
|
|
457
|
+
'releaseDate': '2026-04-21',
|
|
458
|
+
'support': '2029-04-21'},
|
|
436
459
|
{ 'cycle': '7.6',
|
|
437
460
|
'eol': '2030-01-25',
|
|
438
461
|
'lts': False,
|
|
@@ -472,17 +495,24 @@ ENDOFLIFE_DATE = {
|
|
|
472
495
|
|
|
473
496
|
|
|
474
497
|
'https://endoflife.date/api/gitlab.json': [
|
|
498
|
+
{ 'cycle': '18.11',
|
|
499
|
+
'eol': '2026-07-16',
|
|
500
|
+
'latest': '18.11.2',
|
|
501
|
+
'latestReleaseDate': '2026-04-28',
|
|
502
|
+
'lts': False,
|
|
503
|
+
'releaseDate': '2026-04-16',
|
|
504
|
+
'support': '2026-05-21'},
|
|
475
505
|
{ 'cycle': '18.10',
|
|
476
506
|
'eol': '2026-06-18',
|
|
477
|
-
'latest': '18.10.
|
|
478
|
-
'latestReleaseDate': '2026-04-
|
|
507
|
+
'latest': '18.10.5',
|
|
508
|
+
'latestReleaseDate': '2026-04-28',
|
|
479
509
|
'lts': False,
|
|
480
510
|
'releaseDate': '2026-03-19',
|
|
481
511
|
'support': '2026-04-16'},
|
|
482
512
|
{ 'cycle': '18.9',
|
|
483
513
|
'eol': '2026-05-21',
|
|
484
|
-
'latest': '18.9.
|
|
485
|
-
'latestReleaseDate': '2026-04-
|
|
514
|
+
'latest': '18.9.6',
|
|
515
|
+
'latestReleaseDate': '2026-04-21',
|
|
486
516
|
'lts': False,
|
|
487
517
|
'releaseDate': '2026-02-19',
|
|
488
518
|
'support': '2026-03-19'},
|
|
@@ -903,13 +933,20 @@ ENDOFLIFE_DATE = {
|
|
|
903
933
|
|
|
904
934
|
|
|
905
935
|
'https://endoflife.date/api/grafana.json': [
|
|
936
|
+
{ 'cycle': '13.0',
|
|
937
|
+
'eol': '2027-01-09',
|
|
938
|
+
'latest': '13.0.1',
|
|
939
|
+
'latestReleaseDate': '2026-04-17',
|
|
940
|
+
'lts': False,
|
|
941
|
+
'releaseDate': '2026-04-14',
|
|
942
|
+
'support': True},
|
|
906
943
|
{ 'cycle': '12.4',
|
|
907
944
|
'eol': '2027-05-24',
|
|
908
|
-
'latest': '12.4.
|
|
909
|
-
'latestReleaseDate': '2026-
|
|
945
|
+
'latest': '12.4.3',
|
|
946
|
+
'latestReleaseDate': '2026-04-14',
|
|
910
947
|
'lts': False,
|
|
911
948
|
'releaseDate': '2026-02-24',
|
|
912
|
-
'support': '2026-04-
|
|
949
|
+
'support': '2026-04-17'},
|
|
913
950
|
{ 'cycle': '12.3',
|
|
914
951
|
'eol': '2026-08-19',
|
|
915
952
|
'latest': '12.3.6+security-01',
|
|
@@ -1262,15 +1299,22 @@ ENDOFLIFE_DATE = {
|
|
|
1262
1299
|
|
|
1263
1300
|
|
|
1264
1301
|
'https://endoflife.date/api/icinga.json': [
|
|
1302
|
+
{ 'cycle': '2.16',
|
|
1303
|
+
'eol': False,
|
|
1304
|
+
'latest': '2.16.0',
|
|
1305
|
+
'latestReleaseDate': '2026-04-22',
|
|
1306
|
+
'lts': False,
|
|
1307
|
+
'releaseDate': '2026-04-23',
|
|
1308
|
+
'support': True},
|
|
1265
1309
|
{ 'cycle': '2.15',
|
|
1266
1310
|
'eol': False,
|
|
1267
|
-
'latest': '2.15.
|
|
1268
|
-
'latestReleaseDate': '2026-
|
|
1311
|
+
'latest': '2.15.3',
|
|
1312
|
+
'latestReleaseDate': '2026-04-22',
|
|
1269
1313
|
'lts': False,
|
|
1270
1314
|
'releaseDate': '2025-06-17',
|
|
1271
|
-
'support':
|
|
1315
|
+
'support': '2026-04-23'},
|
|
1272
1316
|
{ 'cycle': '2.14',
|
|
1273
|
-
'eol':
|
|
1317
|
+
'eol': '2026-04-23',
|
|
1274
1318
|
'latest': '2.14.8',
|
|
1275
1319
|
'latestReleaseDate': '2026-01-29',
|
|
1276
1320
|
'lts': False,
|
|
@@ -1388,8 +1432,8 @@ ENDOFLIFE_DATE = {
|
|
|
1388
1432
|
'https://endoflife.date/api/keycloak.json': [
|
|
1389
1433
|
{ 'cycle': '26.6',
|
|
1390
1434
|
'eol': False,
|
|
1391
|
-
'latest': '26.6.
|
|
1392
|
-
'latestReleaseDate': '2026-04-
|
|
1435
|
+
'latest': '26.6.1',
|
|
1436
|
+
'latestReleaseDate': '2026-04-15',
|
|
1393
1437
|
'lts': False,
|
|
1394
1438
|
'releaseDate': '2026-04-08'},
|
|
1395
1439
|
{ 'cycle': '26.5',
|
|
@@ -1769,20 +1813,20 @@ ENDOFLIFE_DATE = {
|
|
|
1769
1813
|
'https://endoflife.date/api/mastodon.json': [
|
|
1770
1814
|
{ 'cycle': '4.5',
|
|
1771
1815
|
'eol': False,
|
|
1772
|
-
'latest': '4.5.
|
|
1773
|
-
'latestReleaseDate': '2026-
|
|
1816
|
+
'latest': '4.5.9',
|
|
1817
|
+
'latestReleaseDate': '2026-04-15',
|
|
1774
1818
|
'lts': False,
|
|
1775
1819
|
'releaseDate': '2025-11-06'},
|
|
1776
1820
|
{ 'cycle': '4.4',
|
|
1777
1821
|
'eol': False,
|
|
1778
|
-
'latest': '4.4.
|
|
1779
|
-
'latestReleaseDate': '2026-
|
|
1822
|
+
'latest': '4.4.16',
|
|
1823
|
+
'latestReleaseDate': '2026-04-15',
|
|
1780
1824
|
'lts': False,
|
|
1781
1825
|
'releaseDate': '2025-07-08'},
|
|
1782
1826
|
{ 'cycle': '4.3',
|
|
1783
1827
|
'eol': '2026-05-06',
|
|
1784
|
-
'latest': '4.3.
|
|
1785
|
-
'latestReleaseDate': '2026-
|
|
1828
|
+
'latest': '4.3.22',
|
|
1829
|
+
'latestReleaseDate': '2026-04-15',
|
|
1786
1830
|
'lts': False,
|
|
1787
1831
|
'releaseDate': '2024-10-08'},
|
|
1788
1832
|
{ 'cycle': '4.2',
|
|
@@ -1857,8 +1901,8 @@ ENDOFLIFE_DATE = {
|
|
|
1857
1901
|
'https://endoflife.date/api/matomo.json': [
|
|
1858
1902
|
{ 'cycle': '5',
|
|
1859
1903
|
'eol': False,
|
|
1860
|
-
'latest': '5.
|
|
1861
|
-
'latestReleaseDate': '2026-
|
|
1904
|
+
'latest': '5.10.0',
|
|
1905
|
+
'latestReleaseDate': '2026-05-04',
|
|
1862
1906
|
'lts': False,
|
|
1863
1907
|
'releaseDate': '2023-12-18',
|
|
1864
1908
|
'support': True},
|
|
@@ -1988,26 +2032,34 @@ ENDOFLIFE_DATE = {
|
|
|
1988
2032
|
|
|
1989
2033
|
|
|
1990
2034
|
'https://endoflife.date/api/moodle.json': [
|
|
2035
|
+
{ 'cycle': '5.2',
|
|
2036
|
+
'eol': '2027-10-04',
|
|
2037
|
+
'latest': '5.2.0',
|
|
2038
|
+
'latestReleaseDate': '2026-04-16',
|
|
2039
|
+
'lts': False,
|
|
2040
|
+
'releaseDate': '2026-04-20',
|
|
2041
|
+
'support': '2027-04-19',
|
|
2042
|
+
'supportedPhpVersions': '8.2 - 8.4'},
|
|
1991
2043
|
{ 'cycle': '5.1',
|
|
1992
2044
|
'eol': '2027-04-19',
|
|
1993
|
-
'latest': '5.1.
|
|
1994
|
-
'latestReleaseDate': '2026-
|
|
2045
|
+
'latest': '5.1.4',
|
|
2046
|
+
'latestReleaseDate': '2026-04-16',
|
|
1995
2047
|
'lts': False,
|
|
1996
2048
|
'releaseDate': '2025-10-06',
|
|
1997
2049
|
'support': '2026-10-05',
|
|
1998
2050
|
'supportedPhpVersions': '8.2 - 8.4'},
|
|
1999
2051
|
{ 'cycle': '5.0',
|
|
2000
2052
|
'eol': '2026-10-05',
|
|
2001
|
-
'latest': '5.0.
|
|
2002
|
-
'latestReleaseDate': '2026-
|
|
2053
|
+
'latest': '5.0.7',
|
|
2054
|
+
'latestReleaseDate': '2026-04-16',
|
|
2003
2055
|
'lts': False,
|
|
2004
2056
|
'releaseDate': '2025-04-14',
|
|
2005
2057
|
'support': '2026-04-20',
|
|
2006
2058
|
'supportedPhpVersions': '8.1 - 8.4'},
|
|
2007
2059
|
{ 'cycle': '4.5',
|
|
2008
2060
|
'eol': '2027-10-04',
|
|
2009
|
-
'latest': '4.5.
|
|
2010
|
-
'latestReleaseDate': '2026-
|
|
2061
|
+
'latest': '4.5.11',
|
|
2062
|
+
'latestReleaseDate': '2026-04-16',
|
|
2011
2063
|
'lts': True,
|
|
2012
2064
|
'releaseDate': '2024-10-07',
|
|
2013
2065
|
'support': '2025-10-06',
|
|
@@ -2088,14 +2140,22 @@ ENDOFLIFE_DATE = {
|
|
|
2088
2140
|
|
|
2089
2141
|
|
|
2090
2142
|
'https://endoflife.date/api/mysql.json': [
|
|
2143
|
+
{ 'cycle': '9.7',
|
|
2144
|
+
'eol': '2034-04-21',
|
|
2145
|
+
'latest': '9.7.0',
|
|
2146
|
+
'latestReleaseDate': '2026-04-07',
|
|
2147
|
+
'link': 'https://dev.mysql.com/doc/relnotes/mysql/9.7/en/news-9-7-0.html',
|
|
2148
|
+
'lts': True,
|
|
2149
|
+
'releaseDate': '2026-04-21',
|
|
2150
|
+
'support': True},
|
|
2091
2151
|
{ 'cycle': '9.6',
|
|
2092
|
-
'eol':
|
|
2093
|
-
'latest': '9.6.
|
|
2094
|
-
'latestReleaseDate': '
|
|
2152
|
+
'eol': '2026-04-21',
|
|
2153
|
+
'latest': '9.6.1',
|
|
2154
|
+
'latestReleaseDate': '2026-01-16',
|
|
2095
2155
|
'link': 'https://dev.mysql.com/doc/relnotes/mysql/9.6/en/news-9-6-0.html',
|
|
2096
2156
|
'lts': False,
|
|
2097
2157
|
'releaseDate': '2026-01-20',
|
|
2098
|
-
'support':
|
|
2158
|
+
'support': '2026-04-21'},
|
|
2099
2159
|
{ 'cycle': '9.5',
|
|
2100
2160
|
'eol': '2026-01-20',
|
|
2101
2161
|
'latest': '9.5.2',
|
|
@@ -2145,8 +2205,8 @@ ENDOFLIFE_DATE = {
|
|
|
2145
2205
|
'support': '2024-10-15'},
|
|
2146
2206
|
{ 'cycle': '8.4',
|
|
2147
2207
|
'eol': '2032-04-30',
|
|
2148
|
-
'latest': '8.4.
|
|
2149
|
-
'latestReleaseDate': '
|
|
2208
|
+
'latest': '8.4.9',
|
|
2209
|
+
'latestReleaseDate': '2026-04-07',
|
|
2150
2210
|
'lts': True,
|
|
2151
2211
|
'releaseDate': '2024-04-10',
|
|
2152
2212
|
'support': '2029-04-30'},
|
|
@@ -2173,8 +2233,8 @@ ENDOFLIFE_DATE = {
|
|
|
2173
2233
|
'support': '2023-10-25'},
|
|
2174
2234
|
{ 'cycle': '8.0',
|
|
2175
2235
|
'eol': '2026-04-30',
|
|
2176
|
-
'latest': '8.0.
|
|
2177
|
-
'latestReleaseDate': '2026-
|
|
2236
|
+
'latest': '8.0.46',
|
|
2237
|
+
'latestReleaseDate': '2026-04-07',
|
|
2178
2238
|
'lts': '2023-07-18',
|
|
2179
2239
|
'releaseDate': '2018-04-08',
|
|
2180
2240
|
'support': '2025-04-30'},
|
|
@@ -2207,14 +2267,14 @@ ENDOFLIFE_DATE = {
|
|
|
2207
2267
|
'https://endoflife.date/api/nextcloud.json': [
|
|
2208
2268
|
{ 'cycle': '33',
|
|
2209
2269
|
'eol': '2027-02-28',
|
|
2210
|
-
'latest': '33.0.
|
|
2211
|
-
'latestReleaseDate': '2026-04-
|
|
2270
|
+
'latest': '33.0.3',
|
|
2271
|
+
'latestReleaseDate': '2026-04-30',
|
|
2212
2272
|
'lts': False,
|
|
2213
2273
|
'releaseDate': '2026-02-18'},
|
|
2214
2274
|
{ 'cycle': '32',
|
|
2215
2275
|
'eol': '2026-09-30',
|
|
2216
|
-
'latest': '32.0.
|
|
2217
|
-
'latestReleaseDate': '2026-04-
|
|
2276
|
+
'latest': '32.0.9',
|
|
2277
|
+
'latestReleaseDate': '2026-04-30',
|
|
2218
2278
|
'lts': False,
|
|
2219
2279
|
'releaseDate': '2025-09-27'},
|
|
2220
2280
|
{ 'cycle': '31',
|
|
@@ -2361,15 +2421,15 @@ ENDOFLIFE_DATE = {
|
|
|
2361
2421
|
'https://endoflife.date/api/openvpn.json': [
|
|
2362
2422
|
{ 'cycle': '2.7',
|
|
2363
2423
|
'eol': False,
|
|
2364
|
-
'latest': '2.7.
|
|
2365
|
-
'latestReleaseDate': '2026-
|
|
2424
|
+
'latest': '2.7.4',
|
|
2425
|
+
'latestReleaseDate': '2026-04-30',
|
|
2366
2426
|
'lts': False,
|
|
2367
2427
|
'releaseDate': '2026-02-11',
|
|
2368
2428
|
'support': True},
|
|
2369
2429
|
{ 'cycle': '2.6',
|
|
2370
2430
|
'eol': '2028-08-31',
|
|
2371
|
-
'latest': '2.6.
|
|
2372
|
-
'latestReleaseDate': '2026-
|
|
2431
|
+
'latest': '2.6.20',
|
|
2432
|
+
'latestReleaseDate': '2026-04-22',
|
|
2373
2433
|
'lts': False,
|
|
2374
2434
|
'releaseDate': '2023-01-25',
|
|
2375
2435
|
'support': '2026-08-31'},
|
|
@@ -2544,29 +2604,29 @@ ENDOFLIFE_DATE = {
|
|
|
2544
2604
|
'https://endoflife.date/api/postfix.json': [
|
|
2545
2605
|
{ 'cycle': '3.11',
|
|
2546
2606
|
'eol': False,
|
|
2547
|
-
'latest': '3.11.
|
|
2548
|
-
'latestReleaseDate': '2026-
|
|
2607
|
+
'latest': '3.11.2',
|
|
2608
|
+
'latestReleaseDate': '2026-05-02',
|
|
2549
2609
|
'link': 'https://www.postfix.org/announcements/postfix-3.11.0.html',
|
|
2550
2610
|
'lts': False,
|
|
2551
2611
|
'releaseDate': '2026-03-06'},
|
|
2552
2612
|
{ 'cycle': '3.10',
|
|
2553
2613
|
'eol': False,
|
|
2554
|
-
'latest': '3.10.
|
|
2555
|
-
'latestReleaseDate': '2026-02
|
|
2614
|
+
'latest': '3.10.9',
|
|
2615
|
+
'latestReleaseDate': '2026-05-02',
|
|
2556
2616
|
'link': 'https://www.postfix.org/announcements/postfix-3.10.0.html',
|
|
2557
2617
|
'lts': False,
|
|
2558
2618
|
'releaseDate': '2025-02-16'},
|
|
2559
2619
|
{ 'cycle': '3.9',
|
|
2560
2620
|
'eol': False,
|
|
2561
|
-
'latest': '3.9.
|
|
2562
|
-
'latestReleaseDate': '2026-02
|
|
2621
|
+
'latest': '3.9.10',
|
|
2622
|
+
'latestReleaseDate': '2026-05-02',
|
|
2563
2623
|
'link': 'https://www.postfix.org/announcements/postfix-3.9.2.html',
|
|
2564
2624
|
'lts': False,
|
|
2565
2625
|
'releaseDate': '2024-03-06'},
|
|
2566
2626
|
{ 'cycle': '3.8',
|
|
2567
2627
|
'eol': False,
|
|
2568
|
-
'latest': '3.8.
|
|
2569
|
-
'latestReleaseDate': '2026-02
|
|
2628
|
+
'latest': '3.8.16',
|
|
2629
|
+
'latestReleaseDate': '2026-05-02',
|
|
2570
2630
|
'link': 'https://www.postfix.org/announcements/postfix-3.9.2.html',
|
|
2571
2631
|
'lts': False,
|
|
2572
2632
|
'releaseDate': '2023-04-17'},
|
|
@@ -3191,43 +3251,43 @@ ENDOFLIFE_DATE = {
|
|
|
3191
3251
|
'support': '2026-03-02'},
|
|
3192
3252
|
{ 'cycle': '8.1',
|
|
3193
3253
|
'eol': '2026-08-31',
|
|
3194
|
-
'latest': '8.1.
|
|
3195
|
-
'latestReleaseDate': '2026-
|
|
3254
|
+
'latest': '8.1.3',
|
|
3255
|
+
'latestReleaseDate': '2026-04-13',
|
|
3196
3256
|
'lts': False,
|
|
3197
3257
|
'releaseDate': '2026-02-10',
|
|
3198
3258
|
'support': '2026-02-10'},
|
|
3199
3259
|
{ 'cycle': '8.0',
|
|
3200
3260
|
'eol': '2026-06-30',
|
|
3201
|
-
'latest': '8.0.
|
|
3202
|
-
'latestReleaseDate': '2026-
|
|
3261
|
+
'latest': '8.0.4',
|
|
3262
|
+
'latestReleaseDate': '2026-04-13',
|
|
3203
3263
|
'lts': False,
|
|
3204
3264
|
'releaseDate': '2026-01-12',
|
|
3205
3265
|
'support': '2026-01-12'},
|
|
3206
3266
|
{ 'cycle': '7.13',
|
|
3207
3267
|
'eol': '2026-05-31',
|
|
3208
|
-
'latest': '7.13.
|
|
3209
|
-
'latestReleaseDate': '2026-
|
|
3268
|
+
'latest': '7.13.6',
|
|
3269
|
+
'latestReleaseDate': '2026-04-13',
|
|
3210
3270
|
'lts': False,
|
|
3211
3271
|
'releaseDate': '2025-12-05',
|
|
3212
3272
|
'support': '2025-12-05'},
|
|
3213
3273
|
{ 'cycle': '7.12',
|
|
3214
3274
|
'eol': '2026-04-30',
|
|
3215
|
-
'latest': '7.12.
|
|
3216
|
-
'latestReleaseDate': '2026-
|
|
3275
|
+
'latest': '7.12.7',
|
|
3276
|
+
'latestReleaseDate': '2026-04-13',
|
|
3217
3277
|
'lts': False,
|
|
3218
3278
|
'releaseDate': '2025-10-31',
|
|
3219
3279
|
'support': '2025-10-31'},
|
|
3220
3280
|
{ 'cycle': '7.11',
|
|
3221
3281
|
'eol': '2026-03-31',
|
|
3222
|
-
'latest': '7.11.
|
|
3223
|
-
'latestReleaseDate': '2026-
|
|
3282
|
+
'latest': '7.11.7',
|
|
3283
|
+
'latestReleaseDate': '2026-04-13',
|
|
3224
3284
|
'lts': False,
|
|
3225
3285
|
'releaseDate': '2025-10-17',
|
|
3226
3286
|
'support': '2025-10-17'},
|
|
3227
3287
|
{ 'cycle': '7.10',
|
|
3228
3288
|
'eol': '2026-06-30',
|
|
3229
|
-
'latest': '7.10.
|
|
3230
|
-
'latestReleaseDate': '2026-
|
|
3289
|
+
'latest': '7.10.10',
|
|
3290
|
+
'latestReleaseDate': '2026-04-13',
|
|
3231
3291
|
'lts': True,
|
|
3232
3292
|
'releaseDate': '2025-09-04',
|
|
3233
3293
|
'support': '2025-09-04'},
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
needed by LibreNMS check plugins."""
|
|
13
13
|
|
|
14
14
|
__author__ = 'Linuxfabrik GmbH, Zurich/Switzerland'
|
|
15
|
-
__version__ = '
|
|
15
|
+
__version__ = '2026042401'
|
|
16
16
|
|
|
17
17
|
from . import (
|
|
18
18
|
base, # pylint: disable=C0413
|
|
@@ -124,12 +124,17 @@ def get_state(librestate, severity='crit'):
|
|
|
124
124
|
"""
|
|
125
125
|
Translate LibreNMS service state to a Nagios-compatible state.
|
|
126
126
|
|
|
127
|
-
LibreNMS
|
|
128
|
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
127
|
+
LibreNMS encodes the alert lifecycle in `alerts.state` (see
|
|
128
|
+
`LibreNMS/Enum/AlertState.php`):
|
|
129
|
+
- 0 = CLEAR / RECOVERED
|
|
130
|
+
- 1 = ACTIVE
|
|
131
|
+
- 2 = ACKNOWLEDGED
|
|
132
|
+
- 3 = WORSE
|
|
133
|
+
- 4 = BETTER
|
|
134
|
+
- 5 = CHANGED
|
|
131
135
|
|
|
132
|
-
|
|
136
|
+
ACTIVE, WORSE, BETTER and CHANGED all represent an open, notifiable
|
|
137
|
+
alert, so they map to WARN/CRIT. ACKNOWLEDGED and CLEAR map to OK.
|
|
133
138
|
|
|
134
139
|
### Parameters
|
|
135
140
|
- **librestate** (`int`):
|
|
@@ -154,8 +159,10 @@ def get_state(librestate, severity='crit'):
|
|
|
154
159
|
1
|
|
155
160
|
>>> get_state(1, severity='crit')
|
|
156
161
|
2
|
|
162
|
+
>>> get_state(3, severity='crit')
|
|
163
|
+
2
|
|
157
164
|
"""
|
|
158
165
|
|
|
159
|
-
if librestate
|
|
166
|
+
if librestate not in (1, 3, 4, 5):
|
|
160
167
|
return STATE_OK
|
|
161
168
|
return STATE_CRIT if severity == 'crit' else STATE_WARN
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: linuxfabrik-lib
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4.1
|
|
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.
|
|
@@ -97,6 +97,11 @@ A mature, production-grade Python library collection providing 35+ modules with
|
|
|
97
97
|
The library requires Python 3.9+ and runs on every platform.
|
|
98
98
|
|
|
99
99
|
|
|
100
|
+
## Documentation
|
|
101
|
+
|
|
102
|
+
Full documentation is available at [linuxfabrik.github.io/lib](https://linuxfabrik.github.io/lib/). It is automatically built and deployed on every push to `main`.
|
|
103
|
+
|
|
104
|
+
|
|
100
105
|
## Installation
|
|
101
106
|
|
|
102
107
|
Add `linuxfabrik-lib` as a dependency to your project, or install it manually:
|
|
@@ -106,11 +111,6 @@ pip install --user linuxfabrik-lib
|
|
|
106
111
|
```
|
|
107
112
|
|
|
108
113
|
|
|
109
|
-
## Documentation
|
|
110
|
-
|
|
111
|
-
Full API documentation is available at [linuxfabrik.github.io/lib](https://linuxfabrik.github.io/lib/). It is automatically built and deployed on every push to `main`.
|
|
112
|
-
|
|
113
|
-
|
|
114
114
|
## Design Principles
|
|
115
115
|
|
|
116
116
|
These libraries are built with a clear set of priorities:
|
|
@@ -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.4.1"
|
|
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,9 +11,10 @@
|
|
|
11
11
|
"""Provides datetime functions."""
|
|
12
12
|
|
|
13
13
|
__author__ = 'Linuxfabrik GmbH, Zurich/Switzerland'
|
|
14
|
-
__version__ = '
|
|
14
|
+
__version__ = '2026042201'
|
|
15
15
|
|
|
16
16
|
import datetime
|
|
17
|
+
import re
|
|
17
18
|
import sys
|
|
18
19
|
import time
|
|
19
20
|
|
|
@@ -96,6 +97,60 @@ def get_weekday(epoch):
|
|
|
96
97
|
return _WEEKDAYS[time.localtime(epoch).tm_wday]
|
|
97
98
|
|
|
98
99
|
|
|
100
|
+
_MACRO_COMPONENT = re.compile(r'\{%([YymdHMS])\}')
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def macro2timestr(s, format=''):
|
|
104
|
+
"""
|
|
105
|
+
Expand time macros in a string.
|
|
106
|
+
|
|
107
|
+
Supported macros (case-sensitive, strftime-faithful):
|
|
108
|
+
|
|
109
|
+
- `{today}` → current date, formatted with `format` (default `%Y-%m-%d`).
|
|
110
|
+
- `{yesterday}` → current date minus one day, formatted with `format`.
|
|
111
|
+
- `{%Y}` / `{%y}` → 4-digit / 2-digit year of `now`.
|
|
112
|
+
- `{%m}` → month of `now` (01-12).
|
|
113
|
+
- `{%d}` → day of `now` (01-31).
|
|
114
|
+
- `{%H}` → hour of `now` (00-23).
|
|
115
|
+
- `{%M}` → minute of `now` (00-59).
|
|
116
|
+
- `{%S}` → second of `now` (00-59).
|
|
117
|
+
|
|
118
|
+
Unknown tokens are passed through unchanged.
|
|
119
|
+
|
|
120
|
+
### Parameters
|
|
121
|
+
- **s** (`str`): Template string.
|
|
122
|
+
- **format** (`str`, optional): strftime pattern used for `{today}`
|
|
123
|
+
and `{yesterday}`. Defaults to ISO 8601 date `%Y-%m-%d`.
|
|
124
|
+
|
|
125
|
+
### Returns
|
|
126
|
+
- **str**: `s` with all recognised macros replaced.
|
|
127
|
+
|
|
128
|
+
### Example
|
|
129
|
+
>>> # Assuming today is 2026-04-22:
|
|
130
|
+
>>> macro2timestr('/var/log/laravel/laravel-{today}.log')
|
|
131
|
+
'/var/log/laravel/laravel-2026-04-22.log'
|
|
132
|
+
>>> macro2timestr('C:\\\\logs\\\\{%Y}{%m}{%d}.log')
|
|
133
|
+
'C:\\\\logs\\\\20260422.log'
|
|
134
|
+
>>> macro2timestr('{today}', format='%Y%m%d')
|
|
135
|
+
'20260422'
|
|
136
|
+
>>> macro2timestr('{yesterday}', format='%d.%m.%Y')
|
|
137
|
+
'21.04.2026'
|
|
138
|
+
"""
|
|
139
|
+
default_format = format or '%Y-%m-%d'
|
|
140
|
+
base = now(as_type='datetime')
|
|
141
|
+
|
|
142
|
+
result = s.replace('{today}', base.strftime(default_format))
|
|
143
|
+
result = result.replace(
|
|
144
|
+
'{yesterday}',
|
|
145
|
+
(base - datetime.timedelta(days=1)).strftime(default_format),
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
return _MACRO_COMPONENT.sub(
|
|
149
|
+
lambda match: base.strftime('%' + match.group(1)),
|
|
150
|
+
result,
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
|
|
99
154
|
def now(as_type=''):
|
|
100
155
|
"""
|
|
101
156
|
Returns the current date and time in various formats.
|
|
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.3.0 → linuxfabrik_lib-3.4.1}/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
|