generated from pavel.muhortov/template-python
Compare commits
3 Commits
75b65f85c0
...
8b2b1d3de0
Author | SHA1 | Date | |
---|---|---|---|
8b2b1d3de0 | |||
7375df5a2c | |||
f9d50ef65d |
|
@ -34,6 +34,12 @@ amazon = true
|
||||||
# - contain only atlassian ip ranges
|
# - contain only atlassian ip ranges
|
||||||
atlassian = true
|
atlassian = true
|
||||||
#
|
#
|
||||||
|
# antifilter - it's a parsed RKN block list (https://antifilter.network/download/ipsmart.lst)
|
||||||
|
# + absoutely free
|
||||||
|
# + simple parsing
|
||||||
|
# - it's necessary only in Russia
|
||||||
|
antifilter = true
|
||||||
|
#
|
||||||
# herrbischoff - it's a GitHub repository (https://github.com/herrbischoff/country-ip-blocks)
|
# herrbischoff - it's a GitHub repository (https://github.com/herrbischoff/country-ip-blocks)
|
||||||
# + absoutely free
|
# + absoutely free
|
||||||
# + updated hourly
|
# + updated hourly
|
||||||
|
@ -59,13 +65,13 @@ ip2l_download_token = ip2location_TOKEN
|
||||||
# - access to updates only by paid subscription
|
# - access to updates only by paid subscription
|
||||||
ip2l_database_code = DB1CIDR
|
ip2l_database_code = DB1CIDR
|
||||||
#
|
#
|
||||||
# wwwhmptoday - it's compilation from all other sources (https://git.hmp.today/pavel.muhortov/my_route.db)
|
# githmptoday - it's compilation from all other sources (https://git.hmp.today/pavel.muhortov/my_route.db)
|
||||||
# + all the benefits of other sources
|
# + all the benefits of other sources
|
||||||
# + all lists ready to use
|
# + all lists ready to use
|
||||||
# - you need account
|
# - you need account
|
||||||
wwwhmptoday = true
|
githmptoday = true
|
||||||
wwwhmptoday_user = username
|
githmptoday_user = username
|
||||||
wwwhmptoday_pass = password
|
githmptoday_pass = password
|
||||||
|
|
||||||
|
|
||||||
[enable-gateway]
|
[enable-gateway]
|
||||||
|
@ -77,6 +83,9 @@ dev-wg1 = true
|
||||||
|
|
||||||
[via-192.168.0.1]
|
[via-192.168.0.1]
|
||||||
# List of CIDR. Only CIDR with the TRUE value will be used.
|
# List of CIDR. Only CIDR with the TRUE value will be used.
|
||||||
|
# The order of the entries is important:
|
||||||
|
# - the "add" action applies entries from top to bottom,
|
||||||
|
# - the "del" action applies entries from bottom to top.
|
||||||
# If different sources contain the same cidr, use the path part to define your preference.
|
# If different sources contain the same cidr, use the path part to define your preference.
|
||||||
ipv4/via-192.168.0.1.cidr = true
|
ipv4/via-192.168.0.1.cidr = true
|
||||||
ipv4/atlassian.cidr = true
|
ipv4/atlassian.cidr = true
|
||||||
|
@ -87,6 +96,9 @@ ipv4/private.cidr
|
||||||
|
|
||||||
[dev-wg1]
|
[dev-wg1]
|
||||||
# List of CIDR. Only CIDR with the TRUE value will be used.
|
# List of CIDR. Only CIDR with the TRUE value will be used.
|
||||||
|
# The order of the entries is important:
|
||||||
|
# - the "add" action applies entries from top to bottom,
|
||||||
|
# - the "del" action applies entries from bottom to top.
|
||||||
# If different sources contain the same cidr, use the path part to define your preference.
|
# If different sources contain the same cidr, use the path part to define your preference.
|
||||||
ipv4/dev-wg1.cidr = true
|
ipv4/dev-wg1.cidr = true
|
||||||
ipv4/public.cidr = true
|
ipv4/public.cidr = true
|
||||||
|
|
97
my_route.py
97
my_route.py
|
@ -300,10 +300,10 @@ class Route(Connect):
|
||||||
apply_counter = 0
|
apply_counter = 0
|
||||||
gways_counter = 0
|
gways_counter = 0
|
||||||
files_counter = 0
|
files_counter = 0
|
||||||
|
commands_list = []
|
||||||
for gw, cidr_apply in self._gw.items():
|
for gw, cidr_apply in self._gw.items():
|
||||||
gways_counter += 1
|
gways_counter += 1
|
||||||
for cidr in cidr_apply:
|
for cidr in cidr_apply:
|
||||||
local_logger = logging.getLogger(cidr)
|
|
||||||
for cidr_file in cidr_current:
|
for cidr_file in cidr_current:
|
||||||
if cidr in cidr_file:
|
if cidr in cidr_file:
|
||||||
with open(cidr_file, mode='r', encoding='utf-8') as file:
|
with open(cidr_file, mode='r', encoding='utf-8') as file:
|
||||||
|
@ -317,10 +317,16 @@ class Route(Connect):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
command = ['ip', 'ro', action, route, gw_type, gw_name]
|
command = ['ip', 'ro', action, route, gw_type, gw_name]
|
||||||
local_logger.info(msg=' '.join(command))
|
commands_list.append({'cidr': cidr, 'command': command})
|
||||||
if not imitate:
|
|
||||||
if self.__cmd(command=command) == 0:
|
if action == 'delete':
|
||||||
apply_counter += 1
|
commands_list = reversed(commands_list)
|
||||||
|
for command in commands_list:
|
||||||
|
local_logger = logging.getLogger(command['cidr'])
|
||||||
|
local_logger.info(msg=' '.join(command['command']))
|
||||||
|
if not imitate:
|
||||||
|
if self.__cmd(command=command['command']) == 0:
|
||||||
|
apply_counter += 1
|
||||||
|
|
||||||
local_logger = logging.getLogger(logger_alias)
|
local_logger = logging.getLogger(logger_alias)
|
||||||
local_logger.info(msg=""
|
local_logger.info(msg=""
|
||||||
|
@ -426,6 +432,12 @@ class Route(Connect):
|
||||||
force_download=force_download,
|
force_download=force_download,
|
||||||
logger_alias=logger_alias
|
logger_alias=logger_alias
|
||||||
)
|
)
|
||||||
|
elif name == 'antifilter':
|
||||||
|
return self.__update_source_antifilter(
|
||||||
|
db_root_path=db_root_path,
|
||||||
|
force_download=force_download,
|
||||||
|
logger_alias=logger_alias
|
||||||
|
)
|
||||||
elif name == 'atlassian':
|
elif name == 'atlassian':
|
||||||
return self.__update_source_atlassian(
|
return self.__update_source_atlassian(
|
||||||
db_root_path=db_root_path,
|
db_root_path=db_root_path,
|
||||||
|
@ -446,8 +458,8 @@ class Route(Connect):
|
||||||
force_download=force_download,
|
force_download=force_download,
|
||||||
logger_alias=logger_alias
|
logger_alias=logger_alias
|
||||||
)
|
)
|
||||||
elif name == 'wwwhmptoday':
|
elif name == 'githmptoday':
|
||||||
return self.__update_source_wwwhmptoday(
|
return self.__update_source_githmptoday(
|
||||||
db_root_path=db_root_path,
|
db_root_path=db_root_path,
|
||||||
download_user=download_user,
|
download_user=download_user,
|
||||||
download_pass=download_pass,
|
download_pass=download_pass,
|
||||||
|
@ -658,6 +670,63 @@ class Route(Connect):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def __update_source_antifilter(
|
||||||
|
self,
|
||||||
|
db_root_path: str,
|
||||||
|
force_download: bool = False,
|
||||||
|
logger_alias: str = inspect.stack()[0].function
|
||||||
|
) -> bool:
|
||||||
|
local_logger = logging.getLogger(logger_alias)
|
||||||
|
if Do.args_valid(locals(), self.__update_source_antifilter.__annotations__):
|
||||||
|
db_source_url = "https://antifilter.network/download/ipsmart.lst"
|
||||||
|
db_source_name = "antifilter"
|
||||||
|
db_source_root = db_root_path + sep + "sources" + sep + db_source_name
|
||||||
|
db_source_file = db_source_root + sep + "ipsmart.lst"
|
||||||
|
db_source_cidr_root = db_source_root + sep + "cidr"
|
||||||
|
|
||||||
|
|
||||||
|
if not path.exists(db_source_file):
|
||||||
|
force_download = True
|
||||||
|
if force_download:
|
||||||
|
if not self.__download_db(
|
||||||
|
url=db_source_url,
|
||||||
|
dst=db_source_file,
|
||||||
|
logger_alias=logger_alias
|
||||||
|
):
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
with open(db_source_file, mode='r', encoding='utf-8') as db_source_raw:
|
||||||
|
db_source_data = db_source_raw.read().splitlines()
|
||||||
|
db_parsed_data_ipv4 = []
|
||||||
|
db_parsed_data_ipv6 = []
|
||||||
|
for item in db_source_data:
|
||||||
|
if not ":" in item:
|
||||||
|
db_parsed_data_ipv4.append(item)
|
||||||
|
else:
|
||||||
|
db_parsed_data_ipv6.append(item)
|
||||||
|
|
||||||
|
makedirs(db_source_cidr_root + sep + "ipv4", exist_ok=True)
|
||||||
|
db_source_cidr_ipv4_file = (""
|
||||||
|
+ db_source_cidr_root + sep + "ipv4"
|
||||||
|
+ sep + db_source_name + ".cidr"
|
||||||
|
)
|
||||||
|
with open(db_source_cidr_ipv4_file, mode='w+', encoding='utf-8') as cidr_dump:
|
||||||
|
cidr_dump.write('\n'.join(db_parsed_data_ipv4))
|
||||||
|
local_logger.info(msg=db_source_cidr_ipv4_file + ' saved')
|
||||||
|
|
||||||
|
makedirs(db_source_cidr_root + sep + "ipv6", exist_ok=True)
|
||||||
|
db_source_cidr_ipv6_file = (""
|
||||||
|
+ db_source_cidr_root + sep + "ipv6"
|
||||||
|
+ sep + db_source_name + ".cidr"
|
||||||
|
)
|
||||||
|
with open(db_source_cidr_ipv6_file, mode='w+', encoding='utf-8') as cidr_dump:
|
||||||
|
cidr_dump.write('\n'.join(db_parsed_data_ipv6))
|
||||||
|
local_logger.info(msg=db_source_cidr_ipv6_file + ' saved')
|
||||||
|
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def __update_source_herrbischoff(
|
def __update_source_herrbischoff(
|
||||||
self,
|
self,
|
||||||
db_root_path: str,
|
db_root_path: str,
|
||||||
|
@ -846,7 +915,7 @@ class Route(Connect):
|
||||||
remove(db_source_file)
|
remove(db_source_file)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def __update_source_wwwhmptoday(
|
def __update_source_githmptoday(
|
||||||
self,
|
self,
|
||||||
db_root_path: str,
|
db_root_path: str,
|
||||||
download_user: str,
|
download_user: str,
|
||||||
|
@ -855,7 +924,7 @@ class Route(Connect):
|
||||||
logger_alias: str = inspect.stack()[0].function
|
logger_alias: str = inspect.stack()[0].function
|
||||||
) -> bool:
|
) -> bool:
|
||||||
local_logger = logging.getLogger(logger_alias)
|
local_logger = logging.getLogger(logger_alias)
|
||||||
if Do.args_valid(locals(), self.__update_source_wwwhmptoday.__annotations__):
|
if Do.args_valid(locals(), self.__update_source_githmptoday.__annotations__):
|
||||||
if not path.exists(db_root_path + sep + 'sources'):
|
if not path.exists(db_root_path + sep + 'sources'):
|
||||||
force_download = True
|
force_download = True
|
||||||
if force_download:
|
if force_download:
|
||||||
|
@ -1024,12 +1093,12 @@ if __name__ == "__main__":
|
||||||
enable_sources['ip2location']['db_source_code'] = (
|
enable_sources['ip2location']['db_source_code'] = (
|
||||||
conf_sources.data['ip2l_database_code']
|
conf_sources.data['ip2l_database_code']
|
||||||
)
|
)
|
||||||
if 'wwwhmptoday' in enable_sources:
|
if 'githmptoday' in enable_sources:
|
||||||
enable_sources['wwwhmptoday']['download_user'] = (
|
enable_sources['githmptoday']['download_user'] = (
|
||||||
conf_sources.data['wwwhmptoday_user']
|
conf_sources.data['githmptoday_user']
|
||||||
)
|
)
|
||||||
enable_sources['wwwhmptoday']['download_pass'] = (
|
enable_sources['githmptoday']['download_pass'] = (
|
||||||
conf_sources.data['wwwhmptoday_pass']
|
conf_sources.data['githmptoday_pass']
|
||||||
)
|
)
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user