Sphinx generate docs

This commit is contained in:
Merelden 2025-10-14 12:17:13 +05:00
parent 5bc23e7eb8
commit af1420dbde
216 changed files with 39471 additions and 13 deletions

View file

@ -0,0 +1,426 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Auth Service" href="auth_service.html"><link rel="prev" title="Сервисы" href="../services.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>ARP Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/arp_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.arp_service">
<span id="arp-service"></span><h1>ARP Service<a class="headerlink" href="#module-services.arp_service" title="Link to this heading"></a></h1>
<p>Сервис низкоуровневого ARP-сканирования локальной сети.</p>
<p>Назначение:</p>
<ul class="simple">
<li><p>Обнаружение активных узлов в пределах сетей хоста путём широковещательных ARP‑запросов от имени выбранного интерфейса.</p></li>
<li><p>Помощь сервисам более высокого уровня (например, IPService) при проверке занятости адресов перед применением конфигураций.</p></li>
</ul>
<p>Особенности реализации:</p>
<ul class="simple">
<li><p>Определяет подключённые сети интерфейса через <cite>netifaces</cite> и строит CIDR для сканирования.</p></li>
<li><p>Формирует ARP‑пакеты с помощью <cite>scapy</cite> (Ether/ARP) и отправляет их с таймаутом.</p></li>
<li><p>Добавляет локальный адрес интерфейса в результирующий список клиентов.</p></li>
</ul>
<p>Требования/ограничения:</p>
<ul class="simple">
<li><p>Для отправки ARP‑кадров могут потребоваться повышенные привилегии или capability на сырой сокет.</p></li>
</ul>
<dl class="py class">
<dt class="sig sig-object py" id="services.arp_service.NetworkScanner">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.arp_service.</span></span><span class="sig-name descname"><span class="pre">NetworkScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.arp_service.NetworkScanner" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Инициализация сетевого сканера.</p>
<p>Предоставляет методы для сканирования сети с использованием ARP-запросов и
вывода информации о клиентах.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.arp_service.NetworkScanner.print_clients">
<span class="sig-name descname"><span class="pre">print_clients</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">clients</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner.print_clients"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.arp_service.NetworkScanner.print_clients" title="Link to this definition"></a></dt>
<dd><p>Выводит список адресов клиентов в формате таблицы.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>clients (List[dict]): Список словарей с ключами “ip” и “mac”,</dt><dd><p>представляющих клиентов.</p>
</dd>
</dl>
</dd>
</dl>
<p>Выводит IP-адреса и MAC-адреса в отсортированном по IP порядке.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.arp_service.NetworkScanner.scan_network">
<span class="sig-name descname"><span class="pre">scan_network</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">attempts</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner.scan_network"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.arp_service.NetworkScanner.scan_network" title="Link to this definition"></a></dt>
<dd><p>Сканирует сеть для обнаружения активных клиентов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>attempts (int, optional): Количество попыток отправки ARP-запросов.</dt><dd><p>По умолчанию 3.</p>
</dd>
<dt>timeout (int, optional): Таймаут ожидания ответа в секундах.</dt><dd><p>По умолчанию 2.</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>List[dict]: Список словарей с ключами “ip” и “mac”, представляющих</dt><dd><p>обнаруженных клиентов, включая локальные IP-адреса.</p>
</dd>
</dl>
</dd>
<dt>Note:</dt><dd><p>Учитывает локальные IP-адреса интерфейса и удаляет дубликаты.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="auth_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Auth Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="../services.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Сервисы</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">ARP Service</a><ul>
<li><a class="reference internal" href="#services.arp_service.NetworkScanner"><code class="docutils literal notranslate"><span class="pre">NetworkScanner</span></code></a><ul>
<li><a class="reference internal" href="#services.arp_service.NetworkScanner.print_clients"><code class="docutils literal notranslate"><span class="pre">NetworkScanner.print_clients()</span></code></a></li>
<li><a class="reference internal" href="#services.arp_service.NetworkScanner.scan_network"><code class="docutils literal notranslate"><span class="pre">NetworkScanner.scan_network()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,419 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Connect Service" href="connect_service.html"><link rel="prev" title="ARP Service" href="arp_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>Auth Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/auth_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.auth_service">
<span id="auth-service"></span><h1>Auth Service<a class="headerlink" href="#module-services.auth_service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.auth_service.AuthService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.auth_service.</span></span><span class="sig-name descname"><span class="pre">AuthService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для регистрации, авторизации и управления сессиями</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.create_access_token">
<span class="sig-name descname"><span class="pre">create_access_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.create_access_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.create_access_token" title="Link to this definition"></a></dt>
<dd><p>Создаёт токен</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.get_current_user">
<span class="sig-name descname"><span class="pre">get_current_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(OAuth2PasswordBearer)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/auth.html#models.auth.UserResponse" title="models.auth.UserResponse"><span class="pre">UserResponse</span></a></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.get_current_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.get_current_user" title="Link to this definition"></a></dt>
<dd><p>Получает текущего пользователя по токену</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.get_user_by_session">
<span class="sig-name descname"><span class="pre">get_user_by_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.get_user_by_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.get_user_by_session" title="Link to this definition"></a></dt>
<dd><p>Получает пользователя и токен по client_id</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.login">
<span class="sig-name descname"><span class="pre">login</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/auth.html#models.auth.UserLogin" title="models.auth.UserLogin"><span class="pre">UserLogin</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.login"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.login" title="Link to this definition"></a></dt>
<dd><p>Авторизует пользователя, создаёт сессию и возвращает токен</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.logout">
<span class="sig-name descname"><span class="pre">logout</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.logout"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.logout" title="Link to this definition"></a></dt>
<dd><p>Выполняет выход из системы, удаляя последнюю сессию для client_id</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.register">
<span class="sig-name descname"><span class="pre">register</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/auth.html#models.auth.UserCreate" title="models.auth.UserCreate"><span class="pre">UserCreate</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/auth.html#models.auth.UserResponse" title="models.auth.UserResponse"><span class="pre">UserResponse</span></a></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.register"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.register" title="Link to this definition"></a></dt>
<dd><p>Регистрирует нового пользователя</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.verify_token">
<span class="sig-name descname"><span class="pre">verify_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.verify_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.verify_token" title="Link to this definition"></a></dt>
<dd><p>Проверяет токен</p>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="connect_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Connect Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="arp_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">ARP Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Auth Service</a><ul>
<li><a class="reference internal" href="#services.auth_service.AuthService"><code class="docutils literal notranslate"><span class="pre">AuthService</span></code></a><ul>
<li><a class="reference internal" href="#services.auth_service.AuthService.create_access_token"><code class="docutils literal notranslate"><span class="pre">AuthService.create_access_token()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.get_current_user"><code class="docutils literal notranslate"><span class="pre">AuthService.get_current_user()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.get_user_by_session"><code class="docutils literal notranslate"><span class="pre">AuthService.get_user_by_session()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.login"><code class="docutils literal notranslate"><span class="pre">AuthService.login()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.logout"><code class="docutils literal notranslate"><span class="pre">AuthService.logout()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.register"><code class="docutils literal notranslate"><span class="pre">AuthService.register()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.verify_token"><code class="docutils literal notranslate"><span class="pre">AuthService.verify_token()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,450 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Firewalld Service" href="firewalld_service.html"><link rel="prev" title="Auth Service" href="auth_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>Connect Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/connect_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.connect_service">
<span id="connect-service"></span><h1>Connect Service<a class="headerlink" href="#module-services.connect_service" title="Link to this heading"></a></h1>
<p>Сервис управления подключениями Wi‑Fi через <cite>nmcli</cite>.</p>
<p>Назначение:</p>
<ul class="simple">
<li><p>Предоставляет операции подключения/отключения к точкам доступа и проверки текущего статуса, ориентируясь на системный NetworkManager.</p></li>
</ul>
<p>Поведение:</p>
<ul class="simple">
<li><p>Автоматически определяет активный Wi‑Fi‑интерфейс.</p></li>
<li><p>Валидирует наличие SSID в листинге перед подключением и интерпретирует частые ошибки <cite>nmcli</cite> (неверный пароль, отсутствующая сеть и т.п.).</p></li>
</ul>
<p>Ограничения:</p>
<ul class="simple">
<li><p>Требуются права для управления сетевыми соединениями в системе.</p></li>
<li><p>В окружениях без NetworkManager команды <cite>nmcli</cite> будут недоступны.</p></li>
</ul>
<dl class="py class">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.connect_service.</span></span><span class="sig-name descname"><span class="pre">WifiConnectionService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для управления подключением к Wi-Fi сетям с использованием nmcli.</p>
<p>Предоставляет методы для подключения, отключения и проверки статуса Wi-Fi соединений.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService.connect">
<span class="sig-name descname"><span class="pre">connect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.connect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService.connect" title="Link to this definition"></a></dt>
<dd><p>Подключается к Wi-Fi сети по SSID и паролю.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ssid (str): Идентификатор сети Wi-Fi.
password (str): Пароль для подключения.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[str]]: Кортеж (успех, сообщение об ошибке).</dt><dd><ul class="simple">
<li><p>Успех: (True, None).</p></li>
<li><p>Ошибка: (False, сообщение об ошибке).</p></li>
</ul>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><p>subprocess.CalledProcessError: Если команда nmcli завершилась с ошибкой.
Exception: Если произошла неизвестная ошибка при выполнении.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService.disconnect">
<span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService.disconnect" title="Link to this definition"></a></dt>
<dd><p>Отключается от Wi-Fi сети по указанному SSID.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ssid (str): Идентификатор сети Wi-Fi для отключения.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[str]]: Кортеж (успех, сообщение об ошибке).</dt><dd><ul class="simple">
<li><p>Успех: (True, None или сообщение, если подключение не найдено).</p></li>
<li><p>Ошибка: (False, сообщение об ошибке).</p></li>
</ul>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><p>subprocess.CalledProcessError: Если команда nmcli завершилась с ошибкой.
Exception: Если произошла неизвестная ошибка при выполнении.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService.get_status">
<span class="sig-name descname"><span class="pre">get_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.get_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService.get_status" title="Link to this definition"></a></dt>
<dd><p>Проверяет статус текущего подключения к Wi-Fi.</p>
<dl class="simple">
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[str]]: Кортеж (успех, SSID или сообщение об ошибке).</dt><dd><ul class="simple">
<li><p>Успех: (True, SSID текущей сети).</p></li>
<li><p>Ошибка или отсутствие подключения: (False, сообщение об ошибке).</p></li>
</ul>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при выполнении команды nmcli.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="firewalld_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Firewalld Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="auth_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Auth Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Connect Service</a><ul>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService</span></code></a><ul>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService.connect"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService.connect()</span></code></a></li>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService.disconnect"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService.disconnect()</span></code></a></li>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService.get_status"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService.get_status()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,480 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="IP Service" href="ip_service.html"><link rel="prev" title="Connect Service" href="connect_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>Firewalld Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/firewalld_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.firewalld_service">
<span id="firewalld-service"></span><h1>Firewalld Service<a class="headerlink" href="#module-services.firewalld_service" title="Link to this heading"></a></h1>
<p>Сервис для управления firewalld через D‑Bus.</p>
<p>Назначение:
- Обёртка над интерфейсами <cite>org.fedoraproject.FirewallD1</cite> для выполнения</p>
<blockquote>
<div><p>типовых операций по зонам: просмотр/изменение дефолтной зоны, добавление и
удаление сервисов, портов, источников, перезагрузка конфигурации.</p>
</div></blockquote>
<p>Примечания:
- Используется <cite>pydbus.SystemBus</cite> для доступа к системной шине.
- Методы генерируют дружелюбные исключения при ошибках, содержащие контекст</p>
<blockquote>
<div><p>операции.</p>
</div></blockquote>
<dl class="py class">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.firewalld_service.</span></span><span class="sig-name descname"><span class="pre">FirewalldService</span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.add_port">
<span class="sig-name descname"><span class="pre">add_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.add_port" title="Link to this definition"></a></dt>
<dd><p>Add a port to a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.add_service">
<span class="sig-name descname"><span class="pre">add_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.add_service" title="Link to this definition"></a></dt>
<dd><p>Add a service to a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.add_source">
<span class="sig-name descname"><span class="pre">add_source</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_source"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.add_source" title="Link to this definition"></a></dt>
<dd><p>Add a source to a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_default_zone">
<span class="sig-name descname"><span class="pre">get_default_zone</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_default_zone"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_default_zone" title="Link to this definition"></a></dt>
<dd><p>Get the default zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_ports">
<span class="sig-name descname"><span class="pre">get_ports</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_ports"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_ports" title="Link to this definition"></a></dt>
<dd><p>Get list of ports in a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_services">
<span class="sig-name descname"><span class="pre">get_services</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_services"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_services" title="Link to this definition"></a></dt>
<dd><p>Get list of services in a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_sources">
<span class="sig-name descname"><span class="pre">get_sources</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_sources"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_sources" title="Link to this definition"></a></dt>
<dd><p>Get list of sources in a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_zone_settings">
<span class="sig-name descname"><span class="pre">get_zone_settings</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_zone_settings"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_zone_settings" title="Link to this definition"></a></dt>
<dd><p>Get all settings for a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_zones">
<span class="sig-name descname"><span class="pre">get_zones</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_zones"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_zones" title="Link to this definition"></a></dt>
<dd><p>Get list of all zones.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.reload">
<span class="sig-name descname"><span class="pre">reload</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.reload"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.reload" title="Link to this definition"></a></dt>
<dd><p>Reload firewall rules.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.remove_port">
<span class="sig-name descname"><span class="pre">remove_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.remove_port" title="Link to this definition"></a></dt>
<dd><p>Remove a port from a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.remove_service">
<span class="sig-name descname"><span class="pre">remove_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.remove_service" title="Link to this definition"></a></dt>
<dd><p>Remove a service from a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.remove_source">
<span class="sig-name descname"><span class="pre">remove_source</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_source"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.remove_source" title="Link to this definition"></a></dt>
<dd><p>Remove a source from a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.set_default_zone">
<span class="sig-name descname"><span class="pre">set_default_zone</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.set_default_zone"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.set_default_zone" title="Link to this definition"></a></dt>
<dd><p>Set the default zone.</p>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="ip_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">IP Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="connect_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Connect Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Firewalld Service</a><ul>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService"><code class="docutils literal notranslate"><span class="pre">FirewalldService</span></code></a><ul>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.add_port"><code class="docutils literal notranslate"><span class="pre">FirewalldService.add_port()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.add_service"><code class="docutils literal notranslate"><span class="pre">FirewalldService.add_service()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.add_source"><code class="docutils literal notranslate"><span class="pre">FirewalldService.add_source()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_default_zone"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_default_zone()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_ports"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_ports()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_services"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_services()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_sources"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_sources()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_zone_settings"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_zone_settings()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_zones"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_zones()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.reload"><code class="docutils literal notranslate"><span class="pre">FirewalldService.reload()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.remove_port"><code class="docutils literal notranslate"><span class="pre">FirewalldService.remove_port()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.remove_service"><code class="docutils literal notranslate"><span class="pre">FirewalldService.remove_service()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.remove_source"><code class="docutils literal notranslate"><span class="pre">FirewalldService.remove_source()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.set_default_zone"><code class="docutils literal notranslate"><span class="pre">FirewalldService.set_default_zone()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,440 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Network Service" href="network_service.html"><link rel="prev" title="Firewalld Service" href="firewalld_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>IP Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/ip_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.ip_service">
<span id="ip-service"></span><h1>IP Service<a class="headerlink" href="#module-services.ip_service" title="Link to this heading"></a></h1>
<p>Сервис проверки и применения IP‑настроек через NetworkManager (D‑Bus).</p>
<p>Назначение:
- Перед применением конфигурации проверяет занятость IP адреса, сканируя сегмент</p>
<blockquote>
<div><p>сети средствами ARP (через <cite>NetworkScanner</cite>).</p>
</div></blockquote>
<ul class="simple">
<li><p>Применяет изменения профиля подключения через <cite>sdbus_async.networkmanager</cite> и
выполняет переподключение интерфейса.</p></li>
</ul>
<p>Требования/ограничения:
- Доступ к системной шине D‑Bus и права на изменения сетевых профилей.
- Структура входных данных должна соответствовать схеме <cite>ipv4_updates</cite> для</p>
<blockquote>
<div><p>корректного обновления вложенных полей у профиля.</p>
</div></blockquote>
<dl class="py class">
<dt class="sig sig-object py" id="services.ip_service.IPService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.ip_service.</span></span><span class="sig-name descname"><span class="pre">IPService</span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ip_service.IPService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис проверки доступности IP-адреса и применения настроек сети.</p>
<p>Предоставляет асинхронные методы для проверки занятости IP-адреса с использованием
ARP-сканирования и применения настроек через NetworkManager.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.ip_service.IPService.apply_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">apply_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService.apply_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ip_service.IPService.apply_ip_config" title="Link to this definition"></a></dt>
<dd><p>Применяет проверенные настройки IP к указанному соединению.</p>
<p>Перезапускает шину D-Bus, обновляет настройки соединения через NetworkManager,
отключает и переподключает устройство к сети.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>args (Dict[str, Any]): Словарь с данными, включая:</dt><dd><ul class="simple">
<li><p>“connection_id” (str): Идентификатор соединения.</p></li>
<li><p>“ipv4_updates” (Dict): Обновления настроек IPv4.</p></li>
</ul>
</dd>
</dl>
<p>translations (Translations): Объект переводов.</p>
</dd>
<dt>Raises:</dt><dd><p>ValueError: Если соединение с указанным ID не найдено.
RuntimeError: Если устройство для интерфейса не найдено.</p>
</dd>
<dt>Note:</dt><dd><p>Требуются права для изменения настроек через NetworkManager.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ip_service.IPService.check_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">check_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService.check_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ip_service.IPService.check_ip_config" title="Link to this definition"></a></dt>
<dd><p>Проверяет доступность IP-адреса перед его применением.</p>
<p>Выполняет ARP-сканирование сети для проверки, занят ли указанный IP-адрес.
Перезапускает шину D-Bus перед выполнением.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>args (Dict[str, Any]): Словарь с данными, включая “ipv4_updates”</dt><dd><p>с полем “ipv4.address-data” для нового IP-адреса.</p>
</dd>
</dl>
<p>translations (Translations): Объект переводов.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Dict[str, Any]: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“available” (bool): Доступен ли IP-адрес.</p></li>
<li><p>“message” (str): Сообщение о результате проверки.</p></li>
</ul>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при сканировании ARP.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="network_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Network Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="firewalld_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Firewalld Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">IP Service</a><ul>
<li><a class="reference internal" href="#services.ip_service.IPService"><code class="docutils literal notranslate"><span class="pre">IPService</span></code></a><ul>
<li><a class="reference internal" href="#services.ip_service.IPService.apply_ip_config"><code class="docutils literal notranslate"><span class="pre">IPService.apply_ip_config()</span></code></a></li>
<li><a class="reference internal" href="#services.ip_service.IPService.check_ip_config"><code class="docutils literal notranslate"><span class="pre">IPService.check_ip_config()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,607 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Settings Service" href="settings_service.html"><link rel="prev" title="IP Service" href="ip_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>Network Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/network_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.network_service">
<span id="network-service"></span><h1>Network Service<a class="headerlink" href="#module-services.network_service" title="Link to this heading"></a></h1>
<p>Сервис чтения сетевого состояния через NetworkManager (D‑Bus).</p>
<p>Назначение:
- Предоставляет асинхронные методы для сборки унифицированных моделей</p>
<blockquote>
<div><p>сетевых интерфейсов (Ethernet/Wi‑Fi), их IP‑конфигураций, а также получения
имени хоста. Используется API‑слоем для визуализации и управления.</p>
</div></blockquote>
<p>Особенности:
- Фильтрация loopback и явно неактивных интерфейсов.
- Адаптация данных D‑Bus в pydantic‑модели (<cite>NetworkInterface</cite>, <cite>WiFiDevice</cite>,</p>
<blockquote>
<div><p><cite>NetworkInterfacesContainer</cite>).</p>
</div></blockquote>
<dl class="py class">
<dt class="sig sig-object py" id="services.network_service.NetworkService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.network_service.</span></span><span class="sig-name descname"><span class="pre">NetworkService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для взаимодействия с NetworkManager через D-Bus.</p>
<p>Предоставляет асинхронные методы для получения информации о сетевых интерфейсах,
их конфигурациях IP, Wi-Fi и состояниях.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_activated_interfaces">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_activated_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_activated_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_activated_interfaces" title="Link to this definition"></a></dt>
<dd><p>Получает список активных сетевых интерфейсов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><p>List[NetworkInterface]: Список активных интерфейсов (state == “100”).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_activated_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_activated_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_activated_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_activated_interfaces_container" title="Link to this definition"></a></dt>
<dd><p>Получает объект, содержащий список активных интерфейсов и координаты контейнера.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
<p>container_x (int, optional): Координата X контейнера. По умолчанию 0.
container_y (int, optional): Координата Y контейнера. По умолчанию 0.</p>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с активными интерфейсами и координатами.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_connection_name">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_connection_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_connection_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_connection_name" title="Link to this definition"></a></dt>
<dd><p>Извлекает имя соединения (GENERAL.CONNECTION) для устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>device (NetworkDeviceGeneric): Объект устройства NetworkManager.</p>
</dd>
<dt>Returns:</dt><dd><p>str: Имя соединения или “unknown” в случае ошибки.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении настроек соединения.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_deactivated_interfaces">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_deactivated_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_deactivated_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_deactivated_interfaces" title="Link to this definition"></a></dt>
<dd><p>Получает список неактивных сетевых интерфейсов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><p>List[NetworkInterface]: Список интерфейсов с state != “100”.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_deactivated_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_deactivated_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_deactivated_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_deactivated_interfaces_container" title="Link to this definition"></a></dt>
<dd><p>Получает объект, содержащий список неактивных интерфейсов и координаты контейнера.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
<p>container_x (int, optional): Координата X контейнера. По умолчанию 0.
container_y (int, optional): Координата Y контейнера. По умолчанию 0.</p>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с неактивными интерфейсами и координатами.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_hostname">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_hostname" title="Link to this definition"></a></dt>
<dd><p>Возвращает имя хоста из команды hostname в формате JSON.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>Dict[str, str]: Словарь с ключом “hostname” и значением имени хоста.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>RuntimeError: Если произошла ошибка при выполнении команды hostname</dt><dd><p>или обработке вывода.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_interfaces_by_state">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_interfaces_by_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_interfaces_by_state"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_interfaces_by_state" title="Link to this definition"></a></dt>
<dd><p>Получает список интерфейсов по указанному состоянию.</p>
<dl>
<dt>Args:</dt><dd><p>state (str): Состояние интерфейса (например, “100” для активных).
initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</p>
<blockquote>
<div><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
</div></blockquote>
</dd>
<dt>Returns:</dt><dd><p>List[NetworkInterface]: Список интерфейсов с указанным состоянием.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_interfaces_container" title="Link to this definition"></a></dt>
<dd><p>Получает объект, содержащий список интерфейсов и координаты контейнера.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>state (Optional[str], optional): Состояние интерфейсов (например, “100”).</dt><dd><p>По умолчанию None (все интерфейсы).</p>
</dd>
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
<p>container_x (int, optional): Координата X контейнера. По умолчанию 0.
container_y (int, optional): Координата Y контейнера. По умолчанию 0.</p>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с интерфейсами и координатами контейнера.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip_version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.IndividualIPConfig" title="models.network.IndividualIPConfig"><span class="pre">IndividualIPConfig</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_ip_config" title="Link to this definition"></a></dt>
<dd><p>Получает конфигурацию IP для устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>device (NetworkDeviceGeneric): Объект устройства NetworkManager.
ip_version (str): Версия IP (“4” или “6”).</p>
</dd>
<dt>Returns:</dt><dd><p>List[IndividualIPConfig]: Список конфигураций IP, включая адреса и маршруты.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении данных IP.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_ip_method">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_ip_method</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_ip_method"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_ip_method" title="Link to this definition"></a></dt>
<dd><p>Получает метод IP (например, “auto”, “manual”) для указанного устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>device (NetworkDeviceGeneric): Объект устройства NetworkManager.
ip_type (str): Тип IP (например, “ipv4” или “ipv6”).</p>
</dd>
<dt>Returns:</dt><dd><p>str: Метод IP или “unknown” в случае ошибки.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении настроек соединения.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_network_interfaces">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_network_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="../models/network.html#models.network.WiFiDevice" title="models.network.WiFiDevice"><span class="pre">WiFiDevice</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_network_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_network_interfaces" title="Link to this definition"></a></dt>
<dd><p>Получает список сетевых интерфейсов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None (используются (100, 100)).</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>List[Union[NetworkInterface, WiFiDevice]]: Список объектов интерфейсов,</dt><dd><p>включая Wi-Fi устройства.</p>
</dd>
</dl>
</dd>
</dl>
<p>Исключает интерфейсы типа LOOPBACK и неактивные состояния (state == “10”).</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_network_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_network_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_network_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_network_interfaces_container" title="Link to this definition"></a></dt>
<dd><p>Получает контейнер с сетевыми интерфейсами и координатами контейнера.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Optional[Dict[str, Tuple[int, int]]], optional):</dt><dd><p>Словарь начальных координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с интерфейсами и координатами (0, 0).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_wifi_info">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_wifi_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">wifi_device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceWireless</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_wifi_info"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_wifi_info" title="Link to this definition"></a></dt>
<dd><p>Получает информацию о Wi-Fi устройстве.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>wifi_device (NetworkDeviceWireless): Объект Wi-Fi устройства NetworkManager.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Dict[str, Optional[Union[str, int]]]: Словарь с данными Wi-Fi (SSID, BSSID,</dt><dd><p>bitrate, strength, frequency, mode), где значения могут быть None.</p>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении данных точки доступа.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="settings_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Settings Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="ip_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">IP Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Network Service</a><ul>
<li><a class="reference internal" href="#services.network_service.NetworkService"><code class="docutils literal notranslate"><span class="pre">NetworkService</span></code></a><ul>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_activated_interfaces"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_activated_interfaces()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_activated_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_activated_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_connection_name"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_connection_name()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_deactivated_interfaces"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_deactivated_interfaces()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_deactivated_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_deactivated_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_hostname"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_hostname()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_interfaces_by_state"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_interfaces_by_state()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_ip_config"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_ip_config()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_ip_method"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_ip_method()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_network_interfaces"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_network_interfaces()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_network_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_network_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_wifi_info"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_wifi_info()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,414 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Subnet Service" href="subnet_service.html"><link rel="prev" title="Network Service" href="network_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>Settings Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/settings_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.settings_service">
<span id="settings-service"></span><h1>Settings Service<a class="headerlink" href="#module-services.settings_service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.settings_service.SettingsService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.settings_service.</span></span><span class="sig-name descname"><span class="pre">SettingsService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для управления настройками и очистки данных сети.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.settings_service.SettingsService.clear_all_data">
<span class="sig-name descname"><span class="pre">clear_all_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_all_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService.clear_all_data" title="Link to this definition"></a></dt>
<dd><p>Очищает данные узлов всех подсетей и точек доступа Wi-Fi.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True, если очистка успешна.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при записи в один из файлов.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.settings_service.SettingsService.clear_subnet">
<span class="sig-name descname"><span class="pre">clear_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService.clear_subnet" title="Link to this definition"></a></dt>
<dd><p>Очищает данные узлов подсети в указанном файле или во всех файлах.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>subnet (Optional[str]): Подсеть в формате CIDR (например, “10.1.1.0/24”).</dt><dd><p>Если None, очищает все подсети.</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><p>bool: True, если очистка успешна.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при записи в файл.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.settings_service.SettingsService.clear_wifi">
<span class="sig-name descname"><span class="pre">clear_wifi</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService.clear_wifi" title="Link to this definition"></a></dt>
<dd><p>Очищает данные точек доступа Wi-Fi в файле wifi.json.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True, если очистка успешна.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при записи в файл.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="subnet_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Subnet Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="network_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Network Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Settings Service</a><ul>
<li><a class="reference internal" href="#services.settings_service.SettingsService"><code class="docutils literal notranslate"><span class="pre">SettingsService</span></code></a><ul>
<li><a class="reference internal" href="#services.settings_service.SettingsService.clear_all_data"><code class="docutils literal notranslate"><span class="pre">SettingsService.clear_all_data()</span></code></a></li>
<li><a class="reference internal" href="#services.settings_service.SettingsService.clear_subnet"><code class="docutils literal notranslate"><span class="pre">SettingsService.clear_subnet()</span></code></a></li>
<li><a class="reference internal" href="#services.settings_service.SettingsService.clear_wifi"><code class="docutils literal notranslate"><span class="pre">SettingsService.clear_wifi()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,690 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="UFW Service" href="ufw_service.html"><link rel="prev" title="Settings Service" href="settings_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>Subnet Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/subnet_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.subnet_service">
<span id="subnet-service"></span><h1>Subnet Service<a class="headerlink" href="#module-services.subnet_service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">DeviceInfoCollector</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для сбора информации об устройствах, включая вендоров и хостнеймы.</p>
<dl class="simple">
<dt>Источники данных:</dt><dd><ul class="simple">
<li><p>MacLookup: сопоставление префикса MAC (OUI) с названием производителя.</p></li>
<li><p>DNS: <cite>gethostbyaddr</cite> с малым таймаутом для обратного разрешения имени.</p></li>
<li><p>NetBIOS (nbtscan): опрос сегмента сети для извлечения NetBIOS‑имён.</p></li>
</ul>
</dd>
<dt>Политика кэширования:</dt><dd><ul class="simple">
<li><p>Результаты <cite>get_vendor</cite> кэшируются с помощью <cite>functools.lru_cache</cite>.</p></li>
<li><p>Результаты <cite>nbtscan</cite> аккумулируются в словарях <cite>nbtscan_cache</cite>/<cite>nbtscan_results</cite>
на время жизни экземпляра.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector.get_hostname">
<span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector.get_hostname" title="Link to this definition"></a></dt>
<dd><p>Получает хостнейм для указанного IP-адреса.</p>
<p>Пробует сначала DNS, затем NetBIOS.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ip (str): IP-адрес устройства.</p>
</dd>
<dt>Returns:</dt><dd><p>Optional[str]: Хостнейм или None, если не удалось определить.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector.get_vendor">
<span class="sig-name descname"><span class="pre">get_vendor</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.get_vendor"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector.get_vendor" title="Link to this definition"></a></dt>
<dd><p>Получает вендора устройства по MAC-адресу.</p>
<p>Использует кэширование для повышения производительности.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.</p>
</dd>
<dt>Returns:</dt><dd><p>str: Название вендора или “Неизвестный” в случае ошибки.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector.scan_nbtscan">
<span class="sig-name descname"><span class="pre">scan_nbtscan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.scan_nbtscan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector.scan_nbtscan" title="Link to this definition"></a></dt>
<dd><p>Сканирует подсеть с помощью nbtscan для получения хостнеймов.</p>
<p>Сохраняет результаты в кэш и логирует процесс.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">DeviceStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'storage/subnets'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для хранения и управления данными об устройствах.</p>
<dl>
<dt>Формат файла подсети:</dt><dd><p>JSON‑структура вида
{</p>
<blockquote>
<div><p>“devices”: [Device, …]</p>
</div></blockquote>
<p>}</p>
</dd>
<dt>Политика очистки:</dt><dd><ul class="simple">
<li><p>Метод <cite>_clean_old_devices</cite> удаляет оффлайн‑устройства, не наблюдавшиеся
более 7 дней, чтобы поддерживать актуальность списка.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage.get_subnet_file">
<span class="sig-name descname"><span class="pre">get_subnet_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.get_subnet_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage.get_subnet_file" title="Link to this definition"></a></dt>
<dd><p>Возвращает путь к файлу для конкретной подсети.</p>
<p>Заменяет символы ‘/’ на ‘_’ для корректного имени файла.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.</p>
</dd>
<dt>Returns:</dt><dd><p>Path: Путь к файлу.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage.load_devices">
<span class="sig-name descname"><span class="pre">load_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="../models/subnet.html#models.subnet.Device" title="models.subnet.Device"><span class="pre">Device</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.load_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage.load_devices" title="Link to this definition"></a></dt>
<dd><p>Загружает устройства для указанной подсети.</p>
<p>Читает данные из JSON-файла и фильтрует устаревшие устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.</p>
</dd>
<dt>Returns:</dt><dd><p>Dict[str, Device]: Словарь устройств с MAC как ключом.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage.save_devices">
<span class="sig-name descname"><span class="pre">save_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">devices</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/subnet.html#models.subnet.Device" title="models.subnet.Device"><span class="pre">Device</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.save_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage.save_devices" title="Link to this definition"></a></dt>
<dd><p>Сохраняет устройства для указанной подсети.</p>
<p>Записывает данные в JSON-файл.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.
devices (List[Device]): Список устройств для сохранения.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при сохранении.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.NetworkScanner">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">NetworkScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#NetworkScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.NetworkScanner" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для сканирования подсети с использованием ARP-запросов.</p>
<dl class="simple">
<dt>Назначение:</dt><dd><p>Обнаруживает активные устройства в локальной сети, отправляя широковещательные
ARP‑запросы по указанной подсети и собирая ответы (IP, MAC).</p>
</dd>
<dt>Детали реализации:</dt><dd><ul class="simple">
<li><p>Использует <cite>scapy</cite> (<cite>Ether</cite> + <cite>ARP</cite>) для генерации пакетов и <cite>srp</cite> для
отправки/получения на канальном уровне от имени заданного интерфейса.</p></li>
<li><p>Таймаут ожидания ответа короткий (2 секунды), ориентирован на интерактивные
сценарии UI.</p></li>
</ul>
</dd>
<dt>Ограничения и замечания:</dt><dd><ul class="simple">
<li><p>Требуются права для отправки низкоуровневых пакетов (capabilities/root).</p></li>
<li><p>В сетях с фильтрацией широковещания количество обнаруженных устройств
может быть ограничено.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.NetworkScanner.scan">
<span class="sig-name descname"><span class="pre">scan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#NetworkScanner.scan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.NetworkScanner.scan" title="Link to this definition"></a></dt>
<dd><p>Сканирует подсеть с использованием ARP-запросов.</p>
<p>Отправляет ARP-пакеты для обнаружения активных устройств и возвращает
список кортежей (IP, MAC).</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR (например, “10.1.1.0/24”).</p>
</dd>
<dt>Returns:</dt><dd><p>List[Tuple[str, str]]: Список кортежей (IP-адрес, MAC-адрес) обнаруженных устройств.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка сканирования.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.PortScanner">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">PortScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#PortScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.PortScanner" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для сканирования открытых портов на устройствах.</p>
<dl class="simple">
<dt>Назначение:</dt><dd><p>Плейсхолдер для будущего функционала активного сканирования TCP/UDP‑портов
у обнаруженных узлов. В текущей версии возвращает пустой список.</p>
</dd>
<dt>План развития:</dt><dd><ul class="simple">
<li><p>Добавить неблокирующее сканирование наиболее распространённых портов
(22, 80, 443 и т.д.) с ограничением по времени.</p></li>
<li><p>Настраиваемые профили глубины и скорости сканирования.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.PortScanner.scan">
<span class="sig-name descname"><span class="pre">scan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#PortScanner.scan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.PortScanner.scan" title="Link to this definition"></a></dt>
<dd><p>Сканирует открытые порты на указанном IP-адресе.</p>
<p>Пока возвращает пустой список, так как функциональность не реализована.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ip (str): IP-адрес устройства для сканирования.</p>
</dd>
<dt>Returns:</dt><dd><p>List[str]: Список открытых портов (пока пустой).</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">SubnetService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для сканирования подсетей и управления устройствами.</p>
<dl class="simple">
<dt>Роль сервиса:</dt><dd><p>Объединяет сетевое сканирование (ARP), сбор дополнительной информации
(вендор, хостнейм), слияние с кэшем предыдущих результатов и персистентное
хранение данных по подсетям. Предоставляет вспомогательные операции для
локального узла и работы с заметками устройств.</p>
</dd>
<dt>Поток выполнения скана (<cite>scan_subnet</cite>):</dt><dd><ol class="arabic simple">
<li><p>Определение подсети (вручную или авто по интерфейсу).</p></li>
<li><p>Загрузка ранее сохранённых устройств подсети.</p></li>
<li><p>Добавление локального устройства (если принадлежит подсети).</p></li>
<li><p>ARP‑сканирование и параллельная обработка узлов (обогащение данных).</p></li>
<li><p>Маркировка оффлайн‑узлов из кэша, не встреченных в текущем скане.</p></li>
<li><p>Сортировка по IP и сохранение объединённого списка в JSON.</p></li>
</ol>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.add_note">
<span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.add_note" title="Link to this definition"></a></dt>
<dd><p>Добавляет заметку для устройства по MAC-адресу.</p>
<p>Привязывает заметку к устройству, если оно существует.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
note (str): Текст заметки.
translations (Translations): Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[Tuple[str, Dict]]]: Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.delete_note">
<span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.delete_note" title="Link to this definition"></a></dt>
<dd><p>Удаляет заметку для устройства по MAC-адресу.</p>
<p>Удаляет привязанную заметку, если она существует.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
translations (Translations): Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[Tuple[str, Dict]]]: Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.scan_subnet">
<span class="sig-name descname"><span class="pre">scan_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/subnet.html#models.subnet.SubnetScanResult" title="models.subnet.SubnetScanResult"><span class="pre">SubnetScanResult</span></a></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.scan_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.scan_subnet" title="Link to this definition"></a></dt>
<dd><p>Сканирует указанную подсеть и возвращает результаты.</p>
<p>Выполняет ARP-сканирование, собирает информацию о устройствах и сохраняет данные.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>subnet (Optional[str]): Подсеть в формате CIDR (например, “10.1.1.0/24”).</dt><dd><p>Если None или пустая строка, определяется автоматически.</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>SubnetScanResult: Объект с результатами сканирования, содержащий список</dt><dd><p>устройств или сообщение об ошибке.</p>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка сканирования.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.update_note">
<span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.update_note" title="Link to this definition"></a></dt>
<dd><p>Обновляет заметку для устройства по MAC-адресу.</p>
<p>Изменяет существующую заметку, если она есть.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
note (str): Новый текст заметки.
translations (Translations): Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[Tuple[str, Dict]]]: Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="services.subnet_service.get_subnet_service">
<span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">get_subnet_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#get_subnet_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.get_subnet_service" title="Link to this definition"></a></dt>
<dd><p>Фабричная функция для создания экземпляра SubnetService.</p>
<p>Использует зависимости FastAPI для получения объекта переводов и возвращает
экземпляр SubnetService с текущей локализацией.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations (Translations): Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><p>SubnetService: Экземпляр сервиса для работы с подсетями.</p>
</dd>
</dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="ufw_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">UFW Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="settings_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Settings Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Subnet Service</a><ul>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector.get_hostname"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector.get_hostname()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector.get_vendor"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector.get_vendor()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector.scan_nbtscan"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector.scan_nbtscan()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage"><code class="docutils literal notranslate"><span class="pre">DeviceStorage</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage.get_subnet_file"><code class="docutils literal notranslate"><span class="pre">DeviceStorage.get_subnet_file()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage.load_devices"><code class="docutils literal notranslate"><span class="pre">DeviceStorage.load_devices()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage.save_devices"><code class="docutils literal notranslate"><span class="pre">DeviceStorage.save_devices()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.NetworkScanner"><code class="docutils literal notranslate"><span class="pre">NetworkScanner</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.NetworkScanner.scan"><code class="docutils literal notranslate"><span class="pre">NetworkScanner.scan()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.PortScanner"><code class="docutils literal notranslate"><span class="pre">PortScanner</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.PortScanner.scan"><code class="docutils literal notranslate"><span class="pre">PortScanner.scan()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService"><code class="docutils literal notranslate"><span class="pre">SubnetService</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.add_note"><code class="docutils literal notranslate"><span class="pre">SubnetService.add_note()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.delete_note"><code class="docutils literal notranslate"><span class="pre">SubnetService.delete_note()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.scan_subnet"><code class="docutils literal notranslate"><span class="pre">SubnetService.scan_subnet()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.update_note"><code class="docutils literal notranslate"><span class="pre">SubnetService.update_note()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.get_subnet_service"><code class="docutils literal notranslate"><span class="pre">get_subnet_service()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,493 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Wifi Service" href="wifi_service.html"><link rel="prev" title="Subnet Service" href="subnet_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>UFW Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">UFW Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="wifi_service.html">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/ufw_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.ufw_service">
<span id="ufw-service"></span><h1>UFW Service<a class="headerlink" href="#module-services.ufw_service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.ufw_service.UFWService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.ufw_service.</span></span><span class="sig-name descname"><span class="pre">UFWService</span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис взаимодействия с UFW (Uncomplicated Firewall).</p>
<dl class="simple">
<dt>Назначение:</dt><dd><ul class="simple">
<li><p>Чтение статуса и списка правил брандмауэра.</p></li>
<li><p>Добавление, удаление и массовая обработка правил с поддержкой диапазонов портов,
комментариев и выбором протоколов.</p></li>
</ul>
</dd>
<dt>Детали реализации:</dt><dd><ul class="simple">
<li><p>Команды выполняются через <cite>sudo ufw …</cite>; вывод парсится в модели pydantic.</p></li>
<li><p>Для операций удаления соблюдается порядок с конца, чтобы не нарушать нумерацию.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_rules">
<span class="sig-name descname"><span class="pre">add_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_rules" title="Link to this definition"></a></dt>
<dd><p>Добавляет правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules: Список правил для добавления</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Результат добавления правил</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_rules_base">
<span class="sig-name descname"><span class="pre">add_rules_base</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_rules_base"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_rules_base" title="Link to this definition"></a></dt>
<dd><p>Базовый метод для добавления правил UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules: Список правил для добавления
direction: Направление трафика (“in” или “out”)</p>
</dd>
<dt>Returns:</dt><dd><p>bool: True если все правила были успешно добавлены, False в противном случае</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_ufw_in_rules">
<span class="sig-name descname"><span class="pre">add_ufw_in_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_ufw_in_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_ufw_in_rules" title="Link to this definition"></a></dt>
<dd><p>Добавляет входящие (in) правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules (List[UFWRule]): Список правил для добавления</p>
</dd>
<dt>Returns:</dt><dd><p>bool: True если все правила были успешно добавлены, False в противном случае</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_ufw_out_rules">
<span class="sig-name descname"><span class="pre">add_ufw_out_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_ufw_out_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_ufw_out_rules" title="Link to this definition"></a></dt>
<dd><p>Добавляет исходящие (out) правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules (List[UFWRule]): Список правил для добавления</p>
</dd>
<dt>Returns:</dt><dd><p>bool: True если все правила были успешно добавлены, False в противном случае</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.delete_rules">
<span class="sig-name descname"><span class="pre">delete_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rule_numbers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.delete_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.delete_rules" title="Link to this definition"></a></dt>
<dd><p>Удаляет правила UFW по их номерам.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rule_numbers (List[int]): Список номеров правил для удаления</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Результат операции удаления</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.disable_ufw">
<span class="sig-name descname"><span class="pre">disable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.disable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.disable_ufw" title="Link to this definition"></a></dt>
<dd><p>Выключает UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True если успешно выключен, False в противном случае</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.enable_ufw">
<span class="sig-name descname"><span class="pre">enable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.enable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.enable_ufw" title="Link to this definition"></a></dt>
<dd><p>Включает UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True если успешно включен, False в противном случае</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.get_ufw_rules">
<span class="sig-name descname"><span class="pre">get_ufw_rules</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRulesResponse" title="models.ufw.UFWRulesResponse"><span class="pre">UFWRulesResponse</span></a></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.get_ufw_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.get_ufw_rules" title="Link to this definition"></a></dt>
<dd><p>Получает список правил UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>UFWRulesResponse: Объект, содержащий статус UFW и список правил</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.get_ufw_status">
<span class="sig-name descname"><span class="pre">get_ufw_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/ufw.html#models.ufw.UFWStatus" title="models.ufw.UFWStatus"><span class="pre">UFWStatus</span></a></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.get_ufw_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.get_ufw_status" title="Link to this definition"></a></dt>
<dd><p>Проверяет статус UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>UFWStatus: Объект с информацией о статусе UFW</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="wifi_service.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Wifi Service</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="subnet_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Subnet Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">UFW Service</a><ul>
<li><a class="reference internal" href="#services.ufw_service.UFWService"><code class="docutils literal notranslate"><span class="pre">UFWService</span></code></a><ul>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.add_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_rules_base"><code class="docutils literal notranslate"><span class="pre">UFWService.add_rules_base()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_ufw_in_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.add_ufw_in_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_ufw_out_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.add_ufw_out_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.delete_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.delete_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.disable_ufw"><code class="docutils literal notranslate"><span class="pre">UFWService.disable_ufw()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.enable_ufw"><code class="docutils literal notranslate"><span class="pre">UFWService.enable_ufw()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.get_ufw_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.get_ufw_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.get_ufw_status"><code class="docutils literal notranslate"><span class="pre">UFWService.get_ufw_status()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>

View file

@ -0,0 +1,456 @@
<!doctype html>
<html class="no-js" lang="en" data-content_root="../../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Модели" href="../models.html"><link rel="prev" title="UFW Service" href="ufw_service.html">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
<title>Wifi Service - GONETS SRV 0.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../../index.html"><div class="brand">GONETS SRV 0.0.3 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
<span class="sidebar-brand-text">GONETS SRV 0.0.3 documentation</span>
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Разделы</span></p>
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="../services.html">Сервисы</a><input aria-label="Toggle navigation of Сервисы" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arp_service.html">ARP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="auth_service.html">Auth Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="connect_service.html">Connect Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="firewalld_service.html">Firewalld Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ip_service.html">IP Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="network_service.html">Network Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="settings_service.html">Settings Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="subnet_service.html">Subnet Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="ufw_service.html">UFW Service</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Wifi Service</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../models.html">Модели</a><input aria-label="Toggle navigation of Модели" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/auth.html">models.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/network.html">models.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/request.html">models.request</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/subnet.html">models.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/ufw.html">models.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/wifi.html">models.wifi</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../endpoints.html">API эндпоинты</a><input aria-label="Toggle navigation of API эндпоинты" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/auth.html">api.v1.auth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ip.html">api.v1.ip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/network.html">api.v1.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/settings.html">api.v1.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/subnet.html">api.v1.subnet</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/ufw.html">api.v1.ufw</a></li>
<li class="toctree-l2"><a class="reference internal" href="../endpoints/websocket.html">api.v1.websocket</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../config.html">Конфигурация</a><input aria-label="Toggle navigation of Конфигурация" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../config/cors.html">config.cors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/init_config.html">config.init_config</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/ports.html">config.ports</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../core.html">Core</a><input aria-label="Toggle navigation of Core" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../core/cli_executor.html">core.cli_executor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../storage.html">Хранилища</a><input aria-label="Toggle navigation of Хранилища" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../storage/json_storage.html">storage.json_storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../storage/session_storage.html">storage.session_storage</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../utils.html">Утилиты</a><input aria-label="Toggle navigation of Утилиты" class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../utils/i18n.html">utils.i18n</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../../_sources/api/services/wifi_service.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.wifi_service">
<span id="wifi-service"></span><h1>Wifi Service<a class="headerlink" href="#module-services.wifi_service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.wifi_service.WifiService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.wifi_service.</span></span><span class="sig-name descname"><span class="pre">WifiService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для сканирования текущих Wi‑Fi точек доступа и заметок.</p>
<dl class="simple">
<dt>Источники данных:</dt><dd><ul class="simple">
<li><p><cite>pywifi</cite> для базового сканирования и получения списка AP.</p></li>
<li><p><cite>iw dev &lt;iface&gt; scan</cite> для уточнения частоты, сигнала и безопасности.</p></li>
<li><p><cite>MacLookup</cite> для определения вендора по BSSID.</p></li>
</ul>
</dd>
<dt>Политики:</dt><dd><ul class="simple">
<li><p>Выбор лучшего AP по SSID по уровню сигнала.</p></li>
<li><p>Кэширование определения вендора.</p></li>
<li><p>Сохранение SSID даже без заметок для будущих операций.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.add_note">
<span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.add_note" title="Link to this definition"></a></dt>
<dd><p>Добавляет заметку к сети Wi-Fi по SSID.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.delete_note">
<span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.delete_note" title="Link to this definition"></a></dt>
<dd><p>Удаляет заметку сети Wi-Fi по SSID.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.get_vendor">
<span class="sig-name descname"><span class="pre">get_vendor</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.get_vendor"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.get_vendor" title="Link to this definition"></a></dt>
<dd><p>Определяет вендора по MAC-адресу с использованием кэширования.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.scan_wifi">
<span class="sig-name descname"><span class="pre">scan_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">30</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/wifi.html#models.wifi.WifiScanResult" title="models.wifi.WifiScanResult"><span class="pre">WifiScanResult</span></a></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.scan_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.scan_wifi" title="Link to this definition"></a></dt>
<dd><p>Сканирует текущие Wi-Fi точки доступа.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.update_note">
<span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.update_note" title="Link to this definition"></a></dt>
<dd><p>Обновляет заметку сети Wi-Fi по SSID.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.wifi_service.WifiStorage">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.wifi_service.</span></span><span class="sig-name descname"><span class="pre">WifiStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">storage_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'storage/wifi/wifi.json'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiStorage" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для хранения данных о Wi‑Fi сетях и их заметках по SSID.</p>
<dl>
<dt>Формат:</dt><dd><dl class="simple">
<dt>{</dt><dd><p>“networks”: [{“ssid”: str, “note”: Optional[str]}]</p>
</dd>
</dl>
<p>}</p>
</dd>
<dt>Поведение:</dt><dd><ul class="simple">
<li><p>Создаёт директорию хранения при инициализации, ведёт логирование путей.</p></li>
<li><p>Валидация структуры при чтении, безопасная запись с Unicode и отступами.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiStorage.load_notes">
<span class="sig-name descname"><span class="pre">load_notes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage.load_notes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiStorage.load_notes" title="Link to this definition"></a></dt>
<dd><p>Загружает заметки по SSID из файла хранения.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiStorage.save_notes">
<span class="sig-name descname"><span class="pre">save_notes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">notes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage.save_notes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiStorage.save_notes" title="Link to this definition"></a></dt>
<dd><p>Сохраняет заметки по SSID в файл.</p>
</dd></dl>
</dd></dl>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="../models.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Модели</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="ufw_service.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">UFW Service</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2025, GONETS
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Wifi Service</a><ul>
<li><a class="reference internal" href="#services.wifi_service.WifiService"><code class="docutils literal notranslate"><span class="pre">WifiService</span></code></a><ul>
<li><a class="reference internal" href="#services.wifi_service.WifiService.add_note"><code class="docutils literal notranslate"><span class="pre">WifiService.add_note()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.delete_note"><code class="docutils literal notranslate"><span class="pre">WifiService.delete_note()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.get_vendor"><code class="docutils literal notranslate"><span class="pre">WifiService.get_vendor()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.scan_wifi"><code class="docutils literal notranslate"><span class="pre">WifiService.scan_wifi()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.update_note"><code class="docutils literal notranslate"><span class="pre">WifiService.update_note()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.wifi_service.WifiStorage"><code class="docutils literal notranslate"><span class="pre">WifiStorage</span></code></a><ul>
<li><a class="reference internal" href="#services.wifi_service.WifiStorage.load_notes"><code class="docutils literal notranslate"><span class="pre">WifiStorage.load_notes()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiStorage.save_notes"><code class="docutils literal notranslate"><span class="pre">WifiStorage.save_notes()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../../_static/documentation_options.js?v=47de8214"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>