Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions guardian/dispatcher/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def kill_old_filters(self) -> None:
# Kill other filters
for priority_identifier in list(self.filters)[:-1]:
debug_logger.debug("Killing %s", self.filters[priority_identifier])
self.filters.pop(priority_identifier).stop()
self.filters.pop(priority_identifier).stop(overwrite_title=False)

def start_latest_filter(self, kill_others: bool = True) -> None:
self.filters[list(self.filters)[-1]].start()
Expand All @@ -66,7 +66,7 @@ def kill_latest_filter(self) -> None:
debug_logger.debug(
"Killing latest filter %s", self.filters[latest_priority]
)
self.filters.pop(latest_priority).stop()
self.filters.pop(latest_priority).stop(overwrite_title=True)
self._current_priority -= 1

def is_filter_running(self) -> bool:
Expand Down
6 changes: 5 additions & 1 deletion guardian/network/sessions.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import pydivert

from network.sessioninfo import SessionInfo
from util.console import get_original_console_title, set_console_title
from util.network import ip_in_cidr_block_set
from util.types import CIDR_BLOCK

Expand Down Expand Up @@ -114,10 +115,13 @@ def __str__(self) -> str:
def start(self) -> None:
self.process.start()
logger.info("Dispatched %s blocker process", self.__class__.__name__)
set_console_title(f"{get_original_console_title()} - {self.__class__.__name__}")

def stop(self) -> None:
def stop(self, overwrite_title: bool = True) -> None:
self.process.terminate()
logger.info("Terminated %s blocker process", self.__class__.__name__)
if overwrite_title:
set_console_title(get_original_console_title())

@abstractmethod
def is_packet_allowed(self, packet: pydivert.Packet) -> bool:
Expand Down
18 changes: 18 additions & 0 deletions guardian/util/console.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from ctypes import WinDLL, create_unicode_buffer

kernel32 = WinDLL("kernel32", use_last_error=True)


def get_console_title() -> str:
BUF_SIZE = 256
buffer = create_unicode_buffer(256)
kernel32.GetConsoleTitleW(buffer, BUF_SIZE)
return buffer.value


def set_console_title(title: str) -> None:
kernel32.SetConsoleTitleW(title)


def get_original_console_title() -> str:
return get_console_title().split(" - ")[0]