dar-backup 0.7.2__py3-none-any.whl → 0.8.0__py3-none-any.whl

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.
dar_backup/Changelog.md CHANGED
@@ -1,6 +1,15 @@
1
1
  <!-- markdownlint-disable MD024 -->
2
2
  # dar-backup Changelog
3
3
 
4
+ ## v2-beta-0.8.0 - 2025-06-13
5
+
6
+ Github link: [v2-beta-0.8.0](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.0/v2)
7
+
8
+ ### Added
9
+
10
+ - Modified clone dashboard generator to produce easier to read dashboard and be more robust.
11
+ - Dir_traversal sanitation: clean_log.py now only accepts files in configured log directory to `--file` option.
12
+
4
13
  ## v2-beta-0.7.2 - 2025-06-07
5
14
 
6
15
  Github link: [v2-beta-0.7.2](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.7.2/v2)
@@ -16,7 +25,7 @@ Github link: [v2-beta-0.7.2](https://github.com/per2jensen/dar-backup/tree/v2-be
16
25
  - Enrolling into [Snyk code checker](https://snyk.io/code-checker/) and learning how to work with it.
17
26
 
18
27
  - Snyk helped pointing out vulnerable versions of some packages used.
19
- - Input sanitization started, there is room for improvement.
28
+ - Input sanitation started, there is room for improvement.
20
29
 
21
30
  ## v2-beta-0.7.1 - 2025-05-22
22
31
 
dar_backup/__about__.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.7.2"
1
+ __version__ = "0.8.0"
2
2
 
3
3
  __license__ = '''Licensed under GNU GENERAL PUBLIC LICENSE v3, see the supplied file "LICENSE" for details.
4
4
  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW, not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
dar_backup/clean_log.py CHANGED
@@ -138,6 +138,18 @@ def main():
138
138
 
139
139
  for file_path in args.file:
140
140
 
141
+ if ".." in os.path.normpath(file_path).split(os.sep):
142
+ print(f"Error: Path traversal is not allowed: '{file_path}'")
143
+ sys.exit(1)
144
+
145
+ logfile_dir = os.path.dirname(os.path.realpath(config_settings.logfile_location))
146
+ resolved_path = os.path.realpath(file_path)
147
+
148
+ if not resolved_path.startswith(logfile_dir + os.sep):
149
+ print(f"Error: File is outside allowed directory: '{file_path}'")
150
+ sys.exit(1)
151
+
152
+ # Validate the file path type and existence
141
153
  if not isinstance(file_path, (str, bytes, os.PathLike)):
142
154
  print(f"Error: Invalid file path type: {file_path}")
143
155
  sys.exit(1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dar-backup
3
- Version: 0.7.2
3
+ Version: 0.8.0
4
4
  Summary: A script to do full, differential and incremental backups using dar. Some files are restored from the backups during verification, after which par2 redundancy files are created. The script also has a cleanup feature to remove old backups and par2 files.
5
5
  Project-URL: GPG Public Key, https://keys.openpgp.org/search?q=dar-backup@pm.me
6
6
  Project-URL: Homepage, https://github.com/per2jensen/dar-backup/tree/main/v2
@@ -699,6 +699,8 @@ Requires-Dist: black>=25.1.0; extra == 'dev'
699
699
  Requires-Dist: coverage>=7.8.2; extra == 'dev'
700
700
  Requires-Dist: h11>=0.16.0; extra == 'dev'
701
701
  Requires-Dist: httpcore>=0.17.3; extra == 'dev'
702
+ Requires-Dist: matplotlib>=3.10.3; extra == 'dev'
703
+ Requires-Dist: pandas>=2.3.0; extra == 'dev'
702
704
  Requires-Dist: psutil>=7.0.0; extra == 'dev'
703
705
  Requires-Dist: pytest; extra == 'dev'
704
706
  Requires-Dist: pytest-cov>=6.1.1; extra == 'dev'
@@ -1,9 +1,9 @@
1
1
  dar_backup/.darrc,sha256=-aerqivZmOsW_XBCh9IfbYTUvw0GkzDSr3Vx4GcNB1g,2113
2
- dar_backup/Changelog.md,sha256=9zNIpgLQUpa3_QG172ZR-Bz7Uf5ngnhpW_GQw7GGJu4,11532
2
+ dar_backup/Changelog.md,sha256=CpUyWEnzVvn2otCGTp-N4R_-0zlr1kFe_Y0yQ-xQEZg,11872
3
3
  dar_backup/README.md,sha256=HWrcpd_nhzhL2quLlxp7Xd0i05GxZvJMu5nSw8lJKLk,59901
4
- dar_backup/__about__.py,sha256=za-A4zLS5L2_gT8XDhJozoBlWjX9ihNSMrswofJc5dE,344
4
+ dar_backup/__about__.py,sha256=4n6dyFqIrCJMAEZWvi2IbAzYCvkz4sxqN2wbVMbVWNk,344
5
5
  dar_backup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- dar_backup/clean_log.py,sha256=JVrc3VArmKOxr3n5P3u_9hB4G6nsabkR3o7cRIAZ7FI,5493
6
+ dar_backup/clean_log.py,sha256=pmmyPmLWbm3_3sHwJt9V_xBwUF8v015iS17ypJAGAZ4,6023
7
7
  dar_backup/cleanup.py,sha256=_ggDcpMCB1MhXStvYussp_PdGfhIFtEutT5BNrNkMSY,13297
8
8
  dar_backup/command_runner.py,sha256=IUPYYBsaDFBp0q81Rt2xB9ucuK9eu5bXziRKXhI5YZM,4500
9
9
  dar_backup/config_settings.py,sha256=2UAHvatrVO4ark6lCn2Q7qBvZN6DUMK2ftlNrKpzlWc,5792
@@ -18,8 +18,8 @@ dar_backup/installer.py,sha256=xSXh77qquIZbUTSY3AbhERQbS7bnrPE__M_yqpszdhM,6883
18
18
  dar_backup/manager.py,sha256=d1zliFpSuWc8JhjKqLMC-xOhp5kSIcfeGkMZOVuZcM0,27143
19
19
  dar_backup/rich_progress.py,sha256=SfwFxebBl6jnDQMUQr4McknkW1yQWaJVo1Ju1OD3okA,3221
20
20
  dar_backup/util.py,sha256=iTOGsZyIdkvh9tIu7hD_IXi-9HO6GhVgqact5GGInEY,26063
21
- dar_backup-0.7.2.dist-info/METADATA,sha256=IRUzpVBrqUEvX1-glxHhwt-B288N3EfjYOAxoau-M4E,102497
22
- dar_backup-0.7.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
23
- dar_backup-0.7.2.dist-info/entry_points.txt,sha256=pOK9M8cHeAcGIatrYzkm_1O89kPk0enyYONALYjFBx4,286
24
- dar_backup-0.7.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
25
- dar_backup-0.7.2.dist-info/RECORD,,
21
+ dar_backup-0.8.0.dist-info/METADATA,sha256=_CBNbG6I0C8C18V3ZfZPGWuMSnVD0UrXlswQCK-OnCY,102592
22
+ dar_backup-0.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
23
+ dar_backup-0.8.0.dist-info/entry_points.txt,sha256=pOK9M8cHeAcGIatrYzkm_1O89kPk0enyYONALYjFBx4,286
24
+ dar_backup-0.8.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
25
+ dar_backup-0.8.0.dist-info/RECORD,,