web-scanner 2.0.0__tar.gz → 2.0.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.
Files changed (37) hide show
  1. {web_scanner-2.0.0 → web_scanner-2.0.1}/PKG-INFO +8 -7
  2. {web_scanner-2.0.0 → web_scanner-2.0.1}/README.md +7 -6
  3. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/__init__.py +1 -1
  4. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/app.py +10 -1
  5. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/export.py +10 -9
  6. {web_scanner-2.0.0 → web_scanner-2.0.1}/.gitignore +0 -0
  7. {web_scanner-2.0.0 → web_scanner-2.0.1}/LICENSE +0 -0
  8. {web_scanner-2.0.0 → web_scanner-2.0.1}/app.py +0 -0
  9. {web_scanner-2.0.0 → web_scanner-2.0.1}/pyproject.toml +0 -0
  10. {web_scanner-2.0.0 → web_scanner-2.0.1}/requirements.txt +0 -0
  11. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/__main__.py +0 -0
  12. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/cli.py +0 -0
  13. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/colors.py +0 -0
  14. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/__init__.py +0 -0
  15. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/context.py +0 -0
  16. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/models.py +0 -0
  17. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/module.py +0 -0
  18. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/scanner.py +0 -0
  19. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/helpers.py +0 -0
  20. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/__init__.py +0 -0
  21. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/dns.py +0 -0
  22. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/headers.py +0 -0
  23. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/links.py +0 -0
  24. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/security.py +0 -0
  25. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/seo.py +0 -0
  26. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/ssl.py +0 -0
  27. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/subdomains.py +0 -0
  28. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/tech.py +0 -0
  29. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/whois.py +0 -0
  30. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/net/__init__.py +0 -0
  31. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/net/http.py +0 -0
  32. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/__init__.py +0 -0
  33. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/app.tcss +0 -0
  34. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/data/countries.json +0 -0
  35. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/tables.py +0 -0
  36. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/widgets.py +0 -0
  37. {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/worldmap.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: web-scanner
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: An async Textual TUI for website reconnaissance — DNS, WHOIS, TLS, security, tech-stack and SEO, with no paid APIs.
5
5
  Project-URL: Homepage, https://github.com/iamramizk/web-scanner
6
6
  Project-URL: Repository, https://github.com/iamramizk/web-scanner
@@ -750,11 +750,14 @@ The easiest way is with [pipx](https://pipx.pypa.io/) (or [uv](https://docs.astr
750
750
  which installs `webscan` into its own isolated environment:
751
751
 
752
752
  ```bash
753
- pipx install git+https://github.com/iamramizk/web-scanner
753
+ pipx install web-scanner
754
754
  # or
755
- uv tool install git+https://github.com/iamramizk/web-scanner
755
+ uv tool install web-scanner
756
756
  ```
757
757
 
758
+ To install the latest unreleased code, point either tool at the repo instead:
759
+ `pipx install git+https://github.com/iamramizk/web-scanner`.
760
+
758
761
  ### From source (development)
759
762
 
760
763
  ```bash
@@ -779,14 +782,12 @@ Press `s` inside the app to save every tab to CSV. When installed, results are w
779
782
 
780
783
  ## Updating
781
784
 
782
- Once it's on PyPI:
783
-
784
785
  ```bash
785
786
  pipx upgrade web-scanner
786
787
  ```
787
788
 
788
- For a Git install, `pipx upgrade` won't see new commits (the version is unchanged), so
789
- reinstall from the source:
789
+ If you installed from Git, `pipx upgrade` won't see new commits (the version is unchanged),
790
+ so reinstall from source instead:
790
791
 
791
792
  ```bash
792
793
  pipx install --force git+https://github.com/iamramizk/web-scanner
@@ -49,11 +49,14 @@ The easiest way is with [pipx](https://pipx.pypa.io/) (or [uv](https://docs.astr
49
49
  which installs `webscan` into its own isolated environment:
50
50
 
51
51
  ```bash
52
- pipx install git+https://github.com/iamramizk/web-scanner
52
+ pipx install web-scanner
53
53
  # or
54
- uv tool install git+https://github.com/iamramizk/web-scanner
54
+ uv tool install web-scanner
55
55
  ```
56
56
 
57
+ To install the latest unreleased code, point either tool at the repo instead:
58
+ `pipx install git+https://github.com/iamramizk/web-scanner`.
59
+
57
60
  ### From source (development)
58
61
 
59
62
  ```bash
@@ -78,14 +81,12 @@ Press `s` inside the app to save every tab to CSV. When installed, results are w
78
81
 
79
82
  ## Updating
80
83
 
81
- Once it's on PyPI:
82
-
83
84
  ```bash
84
85
  pipx upgrade web-scanner
85
86
  ```
86
87
 
87
- For a Git install, `pipx upgrade` won't see new commits (the version is unchanged), so
88
- reinstall from the source:
88
+ If you installed from Git, `pipx upgrade` won't see new commits (the version is unchanged),
89
+ so reinstall from source instead:
89
90
 
90
91
  ```bash
91
92
  pipx install --force git+https://github.com/iamramizk/web-scanner
@@ -1,3 +1,3 @@
1
1
  """web-scanner v2 — async website reconnaissance TUI package."""
2
2
 
3
- __version__ = "2.0.0"
3
+ __version__ = "2.0.1"
@@ -250,7 +250,16 @@ class WebScannerApp(App):
250
250
  self.query_one("#progress", Static).update("[dim]nothing to save yet[/]")
251
251
  return
252
252
  folder = export_csvs(self.ctx.domain, self.modules, self.results)
253
- msg = f"[dim]saved → {folder}[/]" if folder else "[dim]nothing to save yet[/]"
253
+ if folder:
254
+ base = folder.parent # where it saved, minus the domain_<ts> folder name
255
+ names = [p for p in base.parts if p != base.anchor] # drop the '/' root
256
+ tail = names[-2:]
257
+ shown = "/".join(tail) if tail else str(base)
258
+ if len(names) > len(tail):
259
+ shown = "…/" + shown
260
+ msg = f"[dim]saved → {shown}[/]"
261
+ else:
262
+ msg = "[dim]nothing to save yet[/]"
254
263
  self.query_one("#progress", Static).update(msg)
255
264
 
256
265
  def action_toggle_edit(self) -> None:
@@ -21,16 +21,17 @@ from .tables import TAB_HEADERS
21
21
  def _output_base() -> Path:
22
22
  """Parent directory for the ``<domain>_<ts>/`` scan folder.
23
23
 
24
- Running from the source checkout (or an editable ``pip install -e .``) keeps the
25
- repo's gitignored ``output/`` folder the package sits next to ``pyproject.toml``.
26
- Installed elsewhere (e.g. via pipx/uv) there is no such marker: the scan folder is
27
- dropped straight into the current working directory (no wrapping ``output/`` dir),
28
- rather than some hidden site-packages path.
24
+ Keyed on the current working directory, not on where the package is installed
25
+ an editable install still runs from wherever the user `cd`'d to. If cwd is the
26
+ project's own source checkout (a ``pyproject.toml`` next to the ``webscanner/``
27
+ package) results go in the repo's gitignored ``output/`` folder, keeping the
28
+ checkout tidy. Anywhere else, the ``<domain>_<ts>/`` folder is written straight
29
+ into the current directory.
29
30
  """
30
- repo_root = Path(__file__).resolve().parents[2] # webscanner/ui/export.py -> repo root
31
- if (repo_root / "pyproject.toml").is_file():
32
- return repo_root / "output"
33
- return Path.cwd()
31
+ cwd = Path.cwd()
32
+ if (cwd / "pyproject.toml").is_file() and (cwd / "webscanner" / "__init__.py").is_file():
33
+ return cwd / "output"
34
+ return cwd
34
35
 
35
36
 
36
37
  def _stringify(value: Any) -> str:
File without changes
File without changes
File without changes
File without changes