Сделать патч VM network guard устойчивым
Этот коммит содержится в:
@@ -18,11 +18,21 @@ def bridge_exists(name: str) -> bool:
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
if 'def bridge_exists(name: str) -> bool:' not in text:
|
if 'def bridge_exists(name: str) -> bool:' not in text:
|
||||||
marker = '\n\ndef default_network_mode() -> str:'
|
markers = [
|
||||||
if marker not in text:
|
'\n\ndef default_network_mode() -> str:',
|
||||||
raise SystemExit('default_network_mode marker not found')
|
'\n\ndef valid_vm_name(name: str) -> bool:',
|
||||||
text = text.replace(marker, helper + marker, 1)
|
'\n\ndef parse_virsh_list() -> list[dict[str, str]]:',
|
||||||
changed.append('bridge_exists helper added')
|
]
|
||||||
|
inserted = False
|
||||||
|
for marker in markers:
|
||||||
|
if marker in text:
|
||||||
|
text = text.replace(marker, helper + marker, 1)
|
||||||
|
changed.append('bridge_exists helper added')
|
||||||
|
inserted = True
|
||||||
|
break
|
||||||
|
if not inserted:
|
||||||
|
print('WARN: bridge helper marker not found, skip helper injection')
|
||||||
|
changed.append('bridge_exists helper skipped')
|
||||||
else:
|
else:
|
||||||
changed.append('bridge_exists helper already present')
|
changed.append('bridge_exists helper already present')
|
||||||
|
|
||||||
@@ -33,7 +43,7 @@ old_validation = ''' elif network_mode == "bridge" and (not bridge or not re.
|
|||||||
'''
|
'''
|
||||||
new_validation = ''' elif network_mode == "bridge" and (not bridge or not re.fullmatch(r"[a-zA-Z0-9_.:-]+", bridge)):
|
new_validation = ''' elif network_mode == "bridge" and (not bridge or not re.fullmatch(r"[a-zA-Z0-9_.:-]+", bridge)):
|
||||||
error = "Некорректное имя bridge."
|
error = "Некорректное имя bridge."
|
||||||
elif network_mode == "bridge" and not bridge_exists(bridge):
|
elif network_mode == "bridge" and 'bridge_exists' in globals() and not bridge_exists(bridge):
|
||||||
error = f"Bridge {bridge} не найден на сервере. Для VPS выбери режим NAT Router — virtuality-nat, либо сначала создай bridge {bridge}."
|
error = f"Bridge {bridge} не найден на сервере. Для VPS выбери режим NAT Router — virtuality-nat, либо сначала создай bridge {bridge}."
|
||||||
else:
|
else:
|
||||||
iso = Path(iso_path).resolve()
|
iso = Path(iso_path).resolve()
|
||||||
@@ -42,10 +52,11 @@ new_validation = ''' elif network_mode == "bridge" and (not bridge or not re.
|
|||||||
if old_validation in text:
|
if old_validation in text:
|
||||||
text = text.replace(old_validation, new_validation, 1)
|
text = text.replace(old_validation, new_validation, 1)
|
||||||
changed.append('bridge existence validation added')
|
changed.append('bridge existence validation added')
|
||||||
elif new_validation in text:
|
elif 'Bridge {bridge} не найден на сервере' in text:
|
||||||
changed.append('bridge existence validation already present')
|
changed.append('bridge existence validation already present')
|
||||||
else:
|
else:
|
||||||
raise SystemExit('bridge validation marker not found')
|
print('WARN: bridge validation marker not found, skip validation injection')
|
||||||
|
changed.append('bridge validation skipped')
|
||||||
|
|
||||||
app_path.write_text(text)
|
app_path.write_text(text)
|
||||||
print('vm network guard patch applied:')
|
print('vm network guard patch applied:')
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user