nginx-lens 0.1.8__tar.gz → 0.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.
Files changed (48) hide show
  1. {nginx_lens-0.1.8/nginx_lens.egg-info → nginx_lens-0.2.0}/PKG-INFO +1 -1
  2. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/README.md +27 -11
  3. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/route.py +1 -1
  4. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/graph.py +3 -4
  5. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/route.py +2 -1
  6. {nginx_lens-0.1.8 → nginx_lens-0.2.0/nginx_lens.egg-info}/PKG-INFO +1 -1
  7. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/setup.py +1 -1
  8. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/LICENSE +0 -0
  9. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/__init__.py +0 -0
  10. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/base.py +0 -0
  11. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/conflicts.py +0 -0
  12. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/dead_locations.py +0 -0
  13. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/diff.py +0 -0
  14. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/duplicates.py +0 -0
  15. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/empty_blocks.py +0 -0
  16. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/include.py +0 -0
  17. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/rewrite.py +0 -0
  18. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/unused.py +0 -0
  19. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/analyzer/warnings.py +0 -0
  20. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/__init__.py +0 -0
  21. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/analyze.py +0 -0
  22. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/cli.py +0 -0
  23. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/diff.py +0 -0
  24. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/health.py +0 -0
  25. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/include.py +0 -0
  26. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/logs.py +0 -0
  27. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/syntax.py +0 -0
  28. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/commands/tree.py +0 -0
  29. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/exporter/__init__.py +0 -0
  30. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/exporter/graph.py +0 -0
  31. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/exporter/html.py +0 -0
  32. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/exporter/markdown.py +0 -0
  33. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/nginx_lens.egg-info/SOURCES.txt +0 -0
  34. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/nginx_lens.egg-info/dependency_links.txt +0 -0
  35. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/nginx_lens.egg-info/entry_points.txt +0 -0
  36. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/nginx_lens.egg-info/requires.txt +0 -0
  37. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/nginx_lens.egg-info/top_level.txt +0 -0
  38. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/parser/__init__.py +0 -0
  39. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/parser/nginx_parser.py +0 -0
  40. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/pyproject.toml +0 -0
  41. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/setup.cfg +0 -0
  42. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/tests/test_conflicts.py +0 -0
  43. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/tests/test_duplicates.py +0 -0
  44. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/tests/test_empty_blocks.py +0 -0
  45. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/tests/test_health.py +0 -0
  46. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/tests/test_parser.py +0 -0
  47. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/upstream_checker/__init__.py +0 -0
  48. {nginx_lens-0.1.8 → nginx_lens-0.2.0}/upstream_checker/checker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nginx-lens
3
- Version: 0.1.8
3
+ Version: 0.2.0
4
4
  Summary: CLI-инструмент для анализа, визуализации и диагностики конфигураций Nginx
5
5
  Author: Daniil Astrouski
6
6
  Author-email: shelovesuastra@gmail.com
@@ -14,35 +14,35 @@
14
14
 
15
15
  ### Справочник утилиты
16
16
 
17
- ![nginx-lens --help](docs/main-help.png)
17
+ ![nginx-lens --help](docs/main-help.jpeg)
18
18
 
19
19
  ### Справочник для команд
20
20
 
21
- ![nginx-lens <команда> --help](docs/command-help.png)
21
+ ![nginx-lens <команда> --help](docs/command-help.jpeg)
22
22
 
23
23
  ### Доступность upstream-серверов
24
24
 
25
- ![nginx-lens health <путь_к_конфигу>](docs/example-health.png)
25
+ ![nginx-lens health <путь_к_конфигу>](docs/example-health.jpeg)
26
26
 
27
27
  ### Древовидная визуализация структуры конфига
28
28
 
29
- ![nginx-lens tree <путь_к_конфигу>](docs/example-tree.png)
29
+ ![nginx-lens tree <путь_к_конфигу>](docs/example-tree.jpeg)
30
30
 
31
31
  ### Древовидная визуализация include'ов
32
32
 
33
- ![nginx-lens include-tree <путь_к_конфигу>](docs/example-include-tree.png)
33
+ ![nginx-lens include-tree <путь_к_конфигу>](docs/example-include-tree.jpeg)
34
34
 
35
35
  ### Удобный анализатор логов
36
36
 
37
- ![nginx-lens logs <путь_к_файлу_лога>](docs/example-logs.png)
37
+ ![nginx-lens logs <путь_к_файлу_лога>](docs/example-logs.jpeg)
38
38
 
39
39
  ### Аудит конфигурации
40
40
 
41
- ![nginx-lens analyze <путь_к_конфигу>](docs/example-analyze.png)
41
+ ![nginx-lens analyze <путь_к_конфигу>](docs/example-analyze.jpeg)
42
42
 
43
43
  ### Визуализация маршрутов
44
44
 
45
- ![nginx-lens graph <путь_к_конфигу>](docs/example-graph.png)
45
+ ![nginx-lens graph <путь_к_конфигу>](docs/example-graph.jpeg)
46
46
 
47
47
  ### Поиск маршрута для URL
48
48
 
@@ -50,11 +50,11 @@
50
50
 
51
51
  ### Сравнение конфигов
52
52
 
53
- ![nginx-lens diff <путь_к_первому_конфигу> <путь_к_второму_конфигу>](docs/example-diff.png)
53
+ ![nginx-lens diff <путь_к_первому_конфигу> <путь_к_второму_конфигу>](docs/example-diff.jpeg)
54
54
 
55
55
  ### Удобная проверка синтаксиса конфига
56
56
 
57
- ![nginx-lens syntax](docs/example-syntax.png)
57
+ ![nginx-lens syntax](docs/example-syntax.jpeg)
58
58
 
59
59
 
60
60
  ## Установка и системные требования
@@ -62,7 +62,23 @@
62
62
  - **Python 3.8+**
63
63
  - Linux/macOS (работает и под Windows WSL)
64
64
 
65
- ### Установка через PyPI (рекомендуется)
65
+ ### Установка с помощью bash-скрипта (Рекомендуется)
66
+
67
+ ```bash
68
+ wget https://raw.githubusercontent.com/shelovesuastra/nginx-lens/install-nginx-lens.sh
69
+ # или
70
+ curl https://raw.githubusercontent.com/shelovesuastra/nginx-lens/install-nginx-lens.sh
71
+
72
+ chmod +x install-nginx-lens.sh
73
+
74
+ ./install-nginx-lens.sh
75
+ # или
76
+ sh ./install-nginx-lens.sh
77
+ # или
78
+ bash ./install-nginx-lens.sh
79
+ ```
80
+
81
+ ### Установка через PyPI
66
82
 
67
83
  ```bash
68
84
  pipx install nginx-lens
@@ -33,7 +33,7 @@ def find_route(tree, url: str) -> Optional[Dict[str, Any]]:
33
33
  if score > best_server_score:
34
34
  best_server = d
35
35
  best_server_score = score
36
- if not best_server:
36
+ if not best_server or best_server_score < 2:
37
37
  return None
38
38
  # 2. Внутри server ищем лучший location (longest prefix match)
39
39
  best_loc = None
@@ -29,9 +29,8 @@ def graph(
29
29
  # Для каждого server/location строим маршрут
30
30
  def walk(d, chain, upstreams):
31
31
  if d.get('block') == 'server':
32
- srv = d.get('arg','') or '[no arg]'
33
32
  for sub in d.get('directives', []):
34
- walk(sub, chain + [('server', srv)], upstreams)
33
+ walk(sub, chain + [('server', None)], upstreams)
35
34
  elif d.get('block') == 'location':
36
35
  loc = d.get('arg','')
37
36
  for sub in d.get('directives', []):
@@ -81,10 +80,10 @@ def graph(
81
80
  server_val = route[0][1]
82
81
  server_block = None
83
82
  for d in tree.directives:
84
- if d.get('block') == 'server' and (d.get('arg','') == server_val or (not d.get('arg') and (server_val == '[no arg]' or not server_val))):
83
+ if d.get('block') == 'server':
85
84
  server_block = d
86
85
  break
87
- label = get_server_label(server_block) if server_block else (server_val or 'default')
86
+ label = get_server_label(server_block) if server_block else 'default'
88
87
  server_file = server_block.get('__file__') if server_block else None
89
88
  t.append(f"[", style="white")
90
89
  t.append(f"server: {label}", style="bold blue")
@@ -60,4 +60,5 @@ def route(
60
60
  text += f"[bold]proxy_pass:[/bold] {proxy_pass}\n"
61
61
  console.print(Panel(text, title="Route", style="green"))
62
62
  return
63
- console.print(Panel(f"Ни один ваш конфиг в /etc/nginx не обрабатывает этот URL", style="red"))
63
+ search_dir = os.path.dirname(configs[0]) if configs else '/etc/nginx'
64
+ console.print(Panel(f"Маршрут для {url} не найден ни в одном .conf в {search_dir}", style="yellow"))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nginx-lens
3
- Version: 0.1.8
3
+ Version: 0.2.0
4
4
  Summary: CLI-инструмент для анализа, визуализации и диагностики конфигураций Nginx
5
5
  Author: Daniil Astrouski
6
6
  Author-email: shelovesuastra@gmail.com
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="nginx-lens",
5
- version="0.1.8",
5
+ version="0.2.0",
6
6
  description="CLI-инструмент для анализа, визуализации и диагностики конфигураций Nginx",
7
7
  author="Daniil Astrouski",
8
8
  author_email="shelovesuastra@gmail.com",
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