Add infector

This commit is contained in:
RemiZOffAlex 2024-09-27 12:16:37 +03:00
parent d12f65af5a
commit 763624dcd3
5 changed files with 101 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
__pycache__
dist

View File

@ -0,0 +1,5 @@
# Infector
```
python -m infector
```

42
infector/__init__.py Normal file
View File

@ -0,0 +1,42 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
import npyscreen
from pyroute2 import NDB
ndb = NDB()
def network_config(ip, mask, gateway):
# ip = IPRoute()
# index = ip.link_lookup(ifname='em1')[0]
# ip.addr('add', index, address='192.168.0.1', mask=24)
# ip.close()
# ip = IPDB()
# with ip.interfaces.br0 as br0:
# em1.add_ip('{ip}/{mask}'.format(ip=ip, mask=mask))
# ip.release()
with ndb.interfaces['br0'] as br0:
br0.add_ip('{ip}/{mask}'.format(ip=ip, mask=mask)).commit()
ndb.routes.create(dst='0.0.0.0/0', gateway=gateway).commit()
def TestApp(*args):
# These lines create the form and populate it with widgets.
# A fairly complex screen in only 8 or so lines of code - a line for each control.
F = npyscreen.Form(name = "SaaS",)
ip = F.add(npyscreen.TitleText, name = "IP:",)
mask = F.add(npyscreen.TitleText, name = "Netmask:",)
gateway = F.add(npyscreen.TitleText, name = "Gateway:",)
# This lets the user interact with the Form.
F.edit()
network_config(ip, mask, gateway)
return {
'ip': ip.value,
'mask': mask.value,
'gateway': gateway.value,
}

10
infector/__main__.py Normal file
View File

@ -0,0 +1,10 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
import npyscreen
from . import TestApp
result = npyscreen.wrapper_basic(TestApp)
print(result)

42
pyproject.toml Normal file
View File

@ -0,0 +1,42 @@
[project]
name = "infector"
version ="0.1"
authors = [
{ name="RemiZOffAlex", email="remizoffalex@gmail.com" },
]
maintainers = [
{ name="RemiZOffAlex", email="remizoffalex@gmail.com" },
]
description = "infector - инсталлятор системы"
requires-python = ">=3.10"
classifiers = [
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: System Administrators",
"Operating System :: POSIX :: Linux",
"Programming Language :: Formal",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
# "Topic :: Software Development :: Code Generators",
# "Topic :: Software Development :: Compilers",
"Topic :: Software Development :: Libraries",
]
keywords = ["config", "configurator", "configuration management"]
dependencies = [
"pyyaml",
"pyroute2",
"npyscreen",
"middleware@git+https://codex.r10x.net/RemiZOffAlex/middleware",
]
[build-system]
requires = ["flit_core >=3.2,<4"]
build-backend = "flit_core.buildapi"
[tool.flit.sdist]
include = []
exclude = []