generated from pavel.muhortov/template-python
Compare commits
No commits in common. "c4b7c54e6b9b8a63c2f7ae7f63283184e3fb2b3f" and "915fc7e492b7dd38541643ae414f02752567028e" have entirely different histories.
c4b7c54e6b
...
915fc7e492
160
.gitignore
vendored
160
.gitignore
vendored
|
@ -1,7 +1,165 @@
|
||||||
|
# ---> Python
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
# Distribution / packaging / credential / logs
|
# Distribution / packaging / credential / logs
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
my_route.db/
|
my_route.db/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
test/
|
test/
|
||||||
|
tmp/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
*.conf
|
||||||
*.log
|
*.log
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
# .python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
#Pipfile.lock
|
||||||
|
|
||||||
|
# poetry
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||||
|
#poetry.lock
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
|
|
||||||
|
# PyCharm
|
||||||
|
# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can
|
||||||
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
|
#.idea/
|
||||||
|
|
||||||
|
# IntelliJ related files
|
||||||
|
.idea
|
||||||
|
*.iml
|
||||||
|
|
||||||
# VSCode related files
|
# VSCode related files
|
||||||
.vscode/
|
.vscode/*
|
12
README.md
12
README.md
|
@ -4,6 +4,7 @@ Route manager by CIDR lists
|
||||||
|
|
||||||
* [`my_route`.py](https://git.hmp.today/pavel.muhortov/my_route#my_route-py)
|
* [`my_route`.py](https://git.hmp.today/pavel.muhortov/my_route#my_route-py)
|
||||||
|
|
||||||
|
|
||||||
____
|
____
|
||||||
|
|
||||||
## `my_route`.py
|
## `my_route`.py
|
||||||
|
@ -15,7 +16,6 @@ ____
|
||||||
>
|
>
|
||||||
> * privileged rights
|
> * privileged rights
|
||||||
> * [Python 3](https://www.python.org/downloads/) (tested version 3.9.5 on [Debian GNU/Linux 11](http://ftp.debian.org/debian/dists/bullseye/))
|
> * [Python 3](https://www.python.org/downloads/) (tested version 3.9.5 on [Debian GNU/Linux 11](http://ftp.debian.org/debian/dists/bullseye/))
|
||||||
> * [git](https://git-scm.com/) (tested version 2.30.2 on [Debian GNU/Linux 11](http://ftp.debian.org/debian/dists/bullseye/))
|
|
||||||
|
|
||||||
| PARAMETERS | DESCRIPTION | DEFAULT|
|
| PARAMETERS | DESCRIPTION | DEFAULT|
|
||||||
|-------------|-------------|--------|
|
|-------------|-------------|--------|
|
||||||
|
@ -27,22 +27,22 @@ ____
|
||||||
|**[-u, --update]**|update cidr file db|`False`|
|
|**[-u, --update]**|update cidr file db|`False`|
|
||||||
|**[-f, --force]**|force download sources for update|`False`|
|
|**[-f, --force]**|force download sources for update|`False`|
|
||||||
|
|
||||||
### Example usage my_route.py
|
Example usage:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# download my_route.py
|
# download
|
||||||
sudo wget https://git.hmp.today/pavel.muhortov/my_route/raw/branch/master/my_route.py -O /usr/local/bin/my_route.py
|
sudo wget https://git.hmp.today/pavel.muhortov/my_route/raw/branch/master/my_route.py -O /usr/local/bin/my_route.py
|
||||||
sudo chmod +x /usr/local/bin/my_route.py
|
sudo chmod +x /usr/local/bin/my_route.py
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# download and edit my_route.conf
|
# download and edit config file
|
||||||
sudo wget https://git.hmp.today/pavel.muhortov/my_route/raw/branch/master/my_route.conf -O /usr/local/bin/my_route.conf
|
sudo wget https://git.hmp.today/pavel.muhortov/my_route/raw/branch/master/my_route.conf -O /usr/local/bin/my_route.conf
|
||||||
sudo nano /usr/local/bin/my_route.conf
|
sudo nano /usr/local/bin/my_route.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# create and edit cidr files or update by sources
|
# create and edit cidr file or update by sources
|
||||||
sudo mkdir /usr/local/bin/my_route.db
|
sudo mkdir /usr/local/bin/my_route.db
|
||||||
sudo tee /usr/local/bin/my_route.db/sources/custom.cidr > /dev/null <<'EOF'
|
sudo tee /usr/local/bin/my_route.db/sources/custom.cidr > /dev/null <<'EOF'
|
||||||
34.117.59.81/32 # ipinfo.io
|
34.117.59.81/32 # ipinfo.io
|
||||||
|
@ -51,5 +51,5 @@ EOF
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# sudo crontab -e
|
# sudo crontab -e
|
||||||
0 0 * * * /usr/bin/python3 /usr/local/bin/my_route.py --update --force
|
0 0 * * * /usr/bin/python3 /usr/local/bin/my_route.py --update
|
||||||
```
|
```
|
||||||
|
|
270
my_route.conf
Executable file → Normal file
270
my_route.conf
Executable file → Normal file
|
@ -36,14 +36,14 @@ atlassian = 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
|
# + simple parsing
|
||||||
# - less accuracy
|
# - less accuracy
|
||||||
herrbischoff = true
|
herrbischoff = true
|
||||||
#
|
#
|
||||||
# ip2location - it's a geolocation database (https://www.ip2location.com)
|
# ip2location - it's a geolocation database (https://www.ip2location.com)
|
||||||
# + more accuracy
|
# + more accuracy
|
||||||
# - you need account
|
# - you need account
|
||||||
# - updated monthly
|
# - download the database once a month recommended
|
||||||
ip2location = true
|
ip2location = true
|
||||||
ip2l_download_token = ip2location_TOKEN
|
ip2l_download_token = ip2location_TOKEN
|
||||||
#
|
#
|
||||||
|
@ -58,14 +58,7 @@ ip2l_download_token = ip2location_TOKEN
|
||||||
# + simple parsing
|
# + simple parsing
|
||||||
# - 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)
|
|
||||||
# + all the benefits of other sources
|
|
||||||
# + all lists ready to use
|
|
||||||
# - you need account
|
|
||||||
wwwhmptoday = true
|
|
||||||
wwwhmptoday_user = username
|
|
||||||
wwwhmptoday_pass = password
|
|
||||||
|
|
||||||
|
|
||||||
[enable-gateway]
|
[enable-gateway]
|
||||||
|
@ -342,260 +335,3 @@ ipv4/za.cidr
|
||||||
ipv4/zm.cidr
|
ipv4/zm.cidr
|
||||||
ipv4/zw.cidr
|
ipv4/zw.cidr
|
||||||
herrbischoff/cidr/ipv4/zz.cidr
|
herrbischoff/cidr/ipv4/zz.cidr
|
||||||
[dev-wg1]
|
|
||||||
# List of CIDR. Only CIDR with the TRUE value will be used.
|
|
||||||
# If different sources contain the same cidr, use the path part to define your preference.
|
|
||||||
ipv4/dev-wg1.cidr = true
|
|
||||||
ipv4/public.cidr = true
|
|
||||||
ip2location/cidr/ipv4/-.cidr
|
|
||||||
ipv4/ad.cidr
|
|
||||||
ipv4/ae.cidr
|
|
||||||
ipv4/af.cidr
|
|
||||||
ipv4/ag.cidr
|
|
||||||
ipv4/ai.cidr
|
|
||||||
ipv4/al.cidr
|
|
||||||
ipv4/am.cidr
|
|
||||||
ipv4/ao.cidr
|
|
||||||
herrbischoff/cidr/ipv4/ap.cidr
|
|
||||||
ipv4/aq.cidr
|
|
||||||
ipv4/ar.cidr
|
|
||||||
ipv4/as.cidr
|
|
||||||
ipv4/at.cidr
|
|
||||||
ipv4/au.cidr
|
|
||||||
ipv4/aw.cidr
|
|
||||||
ipv4/ax.cidr
|
|
||||||
ipv4/az.cidr
|
|
||||||
ipv4/ba.cidr
|
|
||||||
ipv4/bb.cidr
|
|
||||||
ipv4/bd.cidr
|
|
||||||
ipv4/be.cidr
|
|
||||||
ipv4/bf.cidr
|
|
||||||
ipv4/bg.cidr
|
|
||||||
ipv4/bh.cidr
|
|
||||||
ipv4/bi.cidr
|
|
||||||
ipv4/bj.cidr
|
|
||||||
ipv4/bl.cidr
|
|
||||||
ipv4/bm.cidr
|
|
||||||
ipv4/bn.cidr
|
|
||||||
ipv4/bo.cidr
|
|
||||||
ipv4/bq.cidr
|
|
||||||
ipv4/br.cidr
|
|
||||||
ipv4/bs.cidr
|
|
||||||
ipv4/bt.cidr
|
|
||||||
ip2location/cidr/ipv4/bv.cidr
|
|
||||||
ipv4/bw.cidr
|
|
||||||
ipv4/by.cidr
|
|
||||||
ipv4/bz.cidr
|
|
||||||
ipv4/ca.cidr
|
|
||||||
ip2location/cidr/ipv4/cc.cidr
|
|
||||||
ipv4/cd.cidr
|
|
||||||
ipv4/cf.cidr
|
|
||||||
ipv4/cg.cidr
|
|
||||||
ipv4/ch.cidr
|
|
||||||
ipv4/ci.cidr
|
|
||||||
ipv4/ck.cidr
|
|
||||||
ipv4/cl.cidr
|
|
||||||
ipv4/cm.cidr
|
|
||||||
ipv4/cn.cidr
|
|
||||||
ipv4/co.cidr
|
|
||||||
ipv4/cr.cidr
|
|
||||||
ipv4/cu.cidr
|
|
||||||
ipv4/cv.cidr
|
|
||||||
ipv4/cw.cidr
|
|
||||||
ip2location/cidr/ipv4/cx.cidr
|
|
||||||
ipv4/cy.cidr
|
|
||||||
ipv4/cz.cidr
|
|
||||||
ipv4/de.cidr
|
|
||||||
ipv4/dj.cidr
|
|
||||||
ipv4/dk.cidr
|
|
||||||
ipv4/dm.cidr
|
|
||||||
ipv4/do.cidr
|
|
||||||
ipv4/dz.cidr
|
|
||||||
ipv4/ec.cidr
|
|
||||||
ipv4/ee.cidr
|
|
||||||
ipv4/eg.cidr
|
|
||||||
ip2location/cidr/ipv4/eh.cidr
|
|
||||||
ipv4/er.cidr
|
|
||||||
ipv4/es.cidr
|
|
||||||
ipv4/et.cidr
|
|
||||||
ipv4/fi.cidr
|
|
||||||
ipv4/fj.cidr
|
|
||||||
ipv4/fk.cidr
|
|
||||||
ipv4/fm.cidr
|
|
||||||
ipv4/fo.cidr
|
|
||||||
ipv4/fr.cidr
|
|
||||||
ipv4/ga.cidr
|
|
||||||
ipv4/gb.cidr
|
|
||||||
ipv4/gd.cidr
|
|
||||||
ipv4/ge.cidr
|
|
||||||
ipv4/gf.cidr
|
|
||||||
ipv4/gg.cidr
|
|
||||||
ipv4/gh.cidr
|
|
||||||
ipv4/gi.cidr
|
|
||||||
ipv4/gl.cidr
|
|
||||||
ipv4/gm.cidr
|
|
||||||
ipv4/gn.cidr
|
|
||||||
ipv4/gp.cidr
|
|
||||||
ipv4/gq.cidr
|
|
||||||
ipv4/gr.cidr
|
|
||||||
ip2location/cidr/ipv4/gs.cidr
|
|
||||||
ipv4/gt.cidr
|
|
||||||
ipv4/gu.cidr
|
|
||||||
ipv4/gw.cidr
|
|
||||||
ipv4/gy.cidr
|
|
||||||
ipv4/hk.cidr
|
|
||||||
ip2location/cidr/ipv4/hm.cidr
|
|
||||||
ipv4/hn.cidr
|
|
||||||
ipv4/hr.cidr
|
|
||||||
ipv4/ht.cidr
|
|
||||||
ipv4/hu.cidr
|
|
||||||
ipv4/id.cidr
|
|
||||||
ipv4/ie.cidr
|
|
||||||
ipv4/il.cidr
|
|
||||||
ipv4/im.cidr
|
|
||||||
ipv4/in.cidr
|
|
||||||
ipv4/io.cidr
|
|
||||||
ipv4/iq.cidr
|
|
||||||
ipv4/ir.cidr
|
|
||||||
ipv4/is.cidr
|
|
||||||
ipv4/it.cidr
|
|
||||||
ipv4/je.cidr
|
|
||||||
ipv4/jm.cidr
|
|
||||||
ipv4/jo.cidr
|
|
||||||
ipv4/jp.cidr
|
|
||||||
ipv4/ke.cidr
|
|
||||||
ipv4/kg.cidr
|
|
||||||
ipv4/kh.cidr
|
|
||||||
ipv4/ki.cidr
|
|
||||||
ipv4/km.cidr
|
|
||||||
ipv4/kn.cidr
|
|
||||||
ipv4/kp.cidr
|
|
||||||
ipv4/kr.cidr
|
|
||||||
ipv4/kw.cidr
|
|
||||||
ipv4/ky.cidr
|
|
||||||
ipv4/kz.cidr
|
|
||||||
ipv4/la.cidr
|
|
||||||
ipv4/lb.cidr
|
|
||||||
ipv4/lc.cidr
|
|
||||||
ipv4/li.cidr
|
|
||||||
ipv4/lk.cidr
|
|
||||||
ipv4/lr.cidr
|
|
||||||
ipv4/ls.cidr
|
|
||||||
ipv4/lt.cidr
|
|
||||||
ipv4/lu.cidr
|
|
||||||
ipv4/lv.cidr
|
|
||||||
ipv4/ly.cidr
|
|
||||||
ipv4/ma.cidr
|
|
||||||
ipv4/mc.cidr
|
|
||||||
ipv4/md.cidr
|
|
||||||
ipv4/me.cidr
|
|
||||||
ipv4/mf.cidr
|
|
||||||
ipv4/mg.cidr
|
|
||||||
ipv4/mh.cidr
|
|
||||||
ipv4/mk.cidr
|
|
||||||
ipv4/ml.cidr
|
|
||||||
ipv4/mm.cidr
|
|
||||||
ipv4/mn.cidr
|
|
||||||
ipv4/mo.cidr
|
|
||||||
ipv4/mp.cidr
|
|
||||||
ipv4/mq.cidr
|
|
||||||
ipv4/mr.cidr
|
|
||||||
ipv4/ms.cidr
|
|
||||||
ipv4/mt.cidr
|
|
||||||
ipv4/mu.cidr
|
|
||||||
ipv4/mv.cidr
|
|
||||||
ipv4/mw.cidr
|
|
||||||
ipv4/mx.cidr
|
|
||||||
ipv4/my.cidr
|
|
||||||
ipv4/mz.cidr
|
|
||||||
ipv4/na.cidr
|
|
||||||
ipv4/nc.cidr
|
|
||||||
ipv4/ne.cidr
|
|
||||||
ipv4/nf.cidr
|
|
||||||
ipv4/ng.cidr
|
|
||||||
ipv4/ni.cidr
|
|
||||||
ipv4/nl.cidr
|
|
||||||
ipv4/no.cidr
|
|
||||||
ipv4/np.cidr
|
|
||||||
ipv4/nr.cidr
|
|
||||||
ipv4/nu.cidr
|
|
||||||
ipv4/nz.cidr
|
|
||||||
ipv4/om.cidr
|
|
||||||
ipv4/pa.cidr
|
|
||||||
ipv4/pe.cidr
|
|
||||||
ipv4/pf.cidr
|
|
||||||
ipv4/pg.cidr
|
|
||||||
ipv4/ph.cidr
|
|
||||||
ipv4/pk.cidr
|
|
||||||
ipv4/pl.cidr
|
|
||||||
ipv4/pm.cidr
|
|
||||||
ip2location/cidr/ipv4/pn.cidr
|
|
||||||
ipv4/pr.cidr
|
|
||||||
ipv4/ps.cidr
|
|
||||||
ipv4/pt.cidr
|
|
||||||
ipv4/pw.cidr
|
|
||||||
ipv4/py.cidr
|
|
||||||
ipv4/qa.cidr
|
|
||||||
ipv4/re.cidr
|
|
||||||
ipv4/ro.cidr
|
|
||||||
ipv4/rs.cidr
|
|
||||||
ipv4/ru.cidr
|
|
||||||
ipv4/rw.cidr
|
|
||||||
ipv4/sa.cidr
|
|
||||||
ipv4/sb.cidr
|
|
||||||
ipv4/sc.cidr
|
|
||||||
ipv4/sd.cidr
|
|
||||||
ipv4/se.cidr
|
|
||||||
ipv4/sg.cidr
|
|
||||||
ip2location/cidr/ipv4/sh.cidr
|
|
||||||
ipv4/si.cidr
|
|
||||||
ip2location/cidr/ipv4/sj.cidr
|
|
||||||
ipv4/sk.cidr
|
|
||||||
ipv4/sl.cidr
|
|
||||||
ipv4/sm.cidr
|
|
||||||
ipv4/sn.cidr
|
|
||||||
ipv4/so.cidr
|
|
||||||
ipv4/sr.cidr
|
|
||||||
ipv4/ss.cidr
|
|
||||||
ipv4/st.cidr
|
|
||||||
ipv4/sv.cidr
|
|
||||||
ipv4/sx.cidr
|
|
||||||
ipv4/sy.cidr
|
|
||||||
ipv4/sz.cidr
|
|
||||||
ipv4/tc.cidr
|
|
||||||
ipv4/td.cidr
|
|
||||||
ip2location/cidr/ipv4/tf.cidr
|
|
||||||
ipv4/tg.cidr
|
|
||||||
ipv4/th.cidr
|
|
||||||
ipv4/tj.cidr
|
|
||||||
ipv4/tk.cidr
|
|
||||||
ipv4/tl.cidr
|
|
||||||
ipv4/tm.cidr
|
|
||||||
ipv4/tn.cidr
|
|
||||||
ipv4/to.cidr
|
|
||||||
ipv4/tr.cidr
|
|
||||||
ipv4/tt.cidr
|
|
||||||
ipv4/tv.cidr
|
|
||||||
ipv4/tw.cidr
|
|
||||||
ipv4/tz.cidr
|
|
||||||
ipv4/ua.cidr
|
|
||||||
ipv4/ug.cidr
|
|
||||||
ip2location/cidr/ipv4/um.cidr
|
|
||||||
ipv4/us.cidr
|
|
||||||
ipv4/uy.cidr
|
|
||||||
ipv4/uz.cidr
|
|
||||||
ipv4/va.cidr
|
|
||||||
ipv4/vc.cidr
|
|
||||||
ipv4/ve.cidr
|
|
||||||
ipv4/vg.cidr
|
|
||||||
ipv4/vi.cidr
|
|
||||||
ipv4/vn.cidr
|
|
||||||
ipv4/vu.cidr
|
|
||||||
ipv4/wf.cidr
|
|
||||||
ipv4/ws.cidr
|
|
||||||
ipv4/ye.cidr
|
|
||||||
ipv4/yt.cidr
|
|
||||||
ipv4/za.cidr
|
|
||||||
ipv4/zm.cidr
|
|
||||||
ipv4/zw.cidr
|
|
||||||
herrbischoff/cidr/ipv4/zz.cidr
|
|
73
my_route.py
73
my_route.py
|
@ -14,7 +14,7 @@ import logging
|
||||||
import urllib.request
|
import urllib.request
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from os import path, sep, makedirs, remove, rmdir, system, walk
|
from os import path, sep, makedirs, remove, rmdir, walk
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from sys import platform
|
from sys import platform
|
||||||
from subprocess import Popen, PIPE
|
from subprocess import Popen, PIPE
|
||||||
|
@ -393,8 +393,6 @@ class Route(Connect):
|
||||||
db_root_path: str,
|
db_root_path: str,
|
||||||
db_source_code: (str, type(None)) = None,
|
db_source_code: (str, type(None)) = None,
|
||||||
download_token: (str, type(None)) = None,
|
download_token: (str, type(None)) = None,
|
||||||
download_user: (str, type(None)) = None,
|
|
||||||
download_pass: (str, type(None)) = None,
|
|
||||||
force_download: bool = False,
|
force_download: bool = False,
|
||||||
logger_alias: str = inspect.stack()[0].function
|
logger_alias: str = inspect.stack()[0].function
|
||||||
) -> bool:
|
) -> bool:
|
||||||
|
@ -446,14 +444,6 @@ class Route(Connect):
|
||||||
force_download=force_download,
|
force_download=force_download,
|
||||||
logger_alias=logger_alias
|
logger_alias=logger_alias
|
||||||
)
|
)
|
||||||
elif name == 'wwwhmptoday':
|
|
||||||
return self.__update_source_wwwhmptoday(
|
|
||||||
db_root_path=db_root_path,
|
|
||||||
download_user=download_user,
|
|
||||||
download_pass=download_pass,
|
|
||||||
force_download=force_download,
|
|
||||||
logger_alias=logger_alias
|
|
||||||
)
|
|
||||||
|
|
||||||
def __download_db(
|
def __download_db(
|
||||||
self,
|
self,
|
||||||
|
@ -846,49 +836,6 @@ class Route(Connect):
|
||||||
remove(db_source_file)
|
remove(db_source_file)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def __update_source_wwwhmptoday(
|
|
||||||
self,
|
|
||||||
db_root_path: str,
|
|
||||||
download_user: str,
|
|
||||||
download_pass: 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_wwwhmptoday.__annotations__):
|
|
||||||
if not path.exists(db_root_path + sep + 'sources'):
|
|
||||||
force_download = True
|
|
||||||
if force_download:
|
|
||||||
db_temp_path = path.dirname(db_root_path) + sep + 'tmp'
|
|
||||||
cmd_gitclone = (''
|
|
||||||
+ "git clone " + "https://" + download_user + ":" + download_pass
|
|
||||||
+ "@git.hmp.today/pavel.muhortov/my_route.db.git " + db_temp_path
|
|
||||||
)
|
|
||||||
ret_gitclone = system(cmd_gitclone)
|
|
||||||
|
|
||||||
if ret_gitclone == 0:
|
|
||||||
try:
|
|
||||||
makedirs(db_root_path, exist_ok=True)
|
|
||||||
for root, dirs, files in walk(db_temp_path, topdown=False):
|
|
||||||
for file in files:
|
|
||||||
src_file = path.join(path.realpath(root), file)
|
|
||||||
dst_file = src_file.replace(db_temp_path, db_root_path)
|
|
||||||
makedirs(path.dirname(dst_file), exist_ok=True)
|
|
||||||
copyfile(src=src_file, dst=dst_file)
|
|
||||||
remove(path.join(path.realpath(root), file))
|
|
||||||
for directory in dirs:
|
|
||||||
rmdir(path.join(path.realpath(root), directory))
|
|
||||||
rmdir(db_temp_path)
|
|
||||||
return True
|
|
||||||
except OSError as error:
|
|
||||||
local_logger.debug(msg='error: ' + '\n' + str(error))
|
|
||||||
else:
|
|
||||||
local_logger.warning(msg=''
|
|
||||||
+ 'git clone returned '+ str(ret_gitclone) + ' code. '
|
|
||||||
+ 'Restart by interactive and check stdout.'
|
|
||||||
)
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
class Do():
|
class Do():
|
||||||
"""Set of various methods (functions) for routine.
|
"""Set of various methods (functions) for routine.
|
||||||
|
@ -947,8 +894,7 @@ if __name__ == "__main__":
|
||||||
description='Route management by CIDR lists.',
|
description='Route management by CIDR lists.',
|
||||||
epilog='Dependencies: '
|
epilog='Dependencies: '
|
||||||
'- Python 3 (tested version 3.9.5), '
|
'- Python 3 (tested version 3.9.5), '
|
||||||
'- privileged rights, '
|
'- privileged rights '
|
||||||
'- git '
|
|
||||||
)
|
)
|
||||||
args.add_argument('--config', type=str,
|
args.add_argument('--config', type=str,
|
||||||
default=path.splitext(__file__)[0] + '.conf',
|
default=path.splitext(__file__)[0] + '.conf',
|
||||||
|
@ -1013,9 +959,7 @@ if __name__ == "__main__":
|
||||||
enable_sources[key] = {
|
enable_sources[key] = {
|
||||||
'enable': value,
|
'enable': value,
|
||||||
'download_token': None,
|
'download_token': None,
|
||||||
'db_source_code': None,
|
'db_source_code': None
|
||||||
'download_user': None,
|
|
||||||
'download_pass': None
|
|
||||||
}
|
}
|
||||||
if 'ip2location' in enable_sources:
|
if 'ip2location' in enable_sources:
|
||||||
enable_sources['ip2location']['download_token'] = (
|
enable_sources['ip2location']['download_token'] = (
|
||||||
|
@ -1024,13 +968,6 @@ 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:
|
|
||||||
enable_sources['wwwhmptoday']['download_user'] = (
|
|
||||||
conf_sources.data['wwwhmptoday_user']
|
|
||||||
)
|
|
||||||
enable_sources['wwwhmptoday']['download_pass'] = (
|
|
||||||
conf_sources.data['wwwhmptoday_pass']
|
|
||||||
)
|
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
format='%(asctime)s %(levelname)s: %(name)s: %(message)s',
|
format='%(asctime)s %(levelname)s: %(name)s: %(message)s',
|
||||||
|
@ -1046,7 +983,7 @@ if __name__ == "__main__":
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not Do.checkroot():
|
if Do.checkroot():
|
||||||
ro = Route(gateways=enable_gateway, db_root_path=db_root_path)
|
ro = Route(gateways=enable_gateway, db_root_path=db_root_path)
|
||||||
|
|
||||||
if args['update']:
|
if args['update']:
|
||||||
|
@ -1056,8 +993,6 @@ if __name__ == "__main__":
|
||||||
db_root_path=db_root_path,
|
db_root_path=db_root_path,
|
||||||
db_source_code=enable_sources[key]['db_source_code'],
|
db_source_code=enable_sources[key]['db_source_code'],
|
||||||
download_token=enable_sources[key]['download_token'],
|
download_token=enable_sources[key]['download_token'],
|
||||||
download_user=enable_sources[key]['download_user'],
|
|
||||||
download_pass=enable_sources[key]['download_pass'],
|
|
||||||
force_download=args['force'],
|
force_download=args['force'],
|
||||||
logger_alias='update sources ' + key
|
logger_alias='update sources ' + key
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user