1
0
mirror of https://github.com/craigerl/aprsd.git synced 2024-11-18 06:11:49 -05:00

Merge pull request #99 from craigerl/remove-email-validation

Remove email validation
This commit is contained in:
Walter A. Boring IV 2022-11-25 11:38:13 -05:00 committed by GitHub
commit 19f804bf68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 67 additions and 101 deletions

View File

@ -1,8 +1,16 @@
name: Test and Build Latest Container Image name: Test and Build Latest Container Image
on: on:
schedule:
- cron: "0 10 * * *"
push: push:
branches: [ "master" ] branches:
- "**"
tags:
- "v*.*.*"
pull_request:
branches:
- "master"
jobs: jobs:
tox: tox:
@ -43,8 +51,11 @@ jobs:
- name: Build the Docker image - name: Build the Docker image
uses: docker/build-push-action@v3 uses: docker/build-push-action@v3
with: with:
context: ./docker context: "{{defaultContext}}:docker"
platforms: linux/amd64,linux/arm64,linux/arm/v7 platforms: linux/amd64,linux/arm64,linux/arm/v7
file: ./Dockerfile-dev
build-args: |
BRANCH=${{ steps.branch-name.outputs.current_branch }}
push: true push: true
tags: | tags: |
hemna6969/aprsd:${{ steps.branch-name.outputs.current_branch }} hemna6969/aprsd:${{ steps.branch-name.outputs.current_branch }}

View File

@ -80,5 +80,5 @@ update-requirements: dev ## Update the requirements.txt and dev-requirements.tx
rm dev-requirements.txt rm dev-requirements.txt
touch requirements.txt touch requirements.txt
touch dev-requirements.txt touch dev-requirements.txt
$(VENV)/pip-compile requirements.in $(VENV)/pip-compile --resolver backtracking --annotation-style line requirements.in
$(VENV)/pip-compile dev-requirements.in $(VENV)/pip-compile --resolver backtracking --annotation-style line dev-requirements.in

View File

@ -9,7 +9,6 @@ import threading
import time import time
import imapclient import imapclient
from validate_email import validate_email
from aprsd import messaging, plugin, stats, threads from aprsd import messaging, plugin, stats, threads
from aprsd.utils import trace from aprsd.utils import trace
@ -73,15 +72,8 @@ class EmailPlugin(plugin.APRSDRegexCommandPluginBase):
"""Ensure that email is enabled and start the thread.""" """Ensure that email is enabled and start the thread."""
email_enabled = self.config["aprsd"]["email"].get("enabled", False) email_enabled = self.config["aprsd"]["email"].get("enabled", False)
validation = self.config["aprsd"]["email"].get("validate", False)
if email_enabled: if email_enabled:
valid = validate_email_config(self.config, validation) self.enabled = True
if not valid:
LOG.error("Failed to validate email config options.")
LOG.error("EmailPlugin DISABLED!!!!")
else:
self.enabled = True
else: else:
LOG.info("Email services not enabled.") LOG.info("Email services not enabled.")
@ -266,47 +258,6 @@ def _smtp_connect(config):
return server return server
def validate_shortcuts(config):
shortcuts = config["aprsd"]["email"].get("shortcuts", None)
if not shortcuts:
return
LOG.info(
"Validating {} Email shortcuts. This can take up to 10 seconds"
" per shortcut".format(len(shortcuts)),
)
delete_keys = []
for key in shortcuts:
LOG.info(f"Validating {key}:{shortcuts[key]}")
is_valid = validate_email(
email_address=shortcuts[key],
check_format=True,
check_dns=True,
check_smtp=True,
smtp_from_address=config["aprsd"]["email"]["smtp"]["login"],
smtp_helo_host=config["aprsd"]["email"]["smtp"]["host"],
smtp_timeout=10,
dns_timeout=10,
smtp_debug=False,
)
if not is_valid:
LOG.error(
"'{}' is an invalid email address. Removing shortcut".format(
shortcuts[key],
),
)
delete_keys.append(key)
for key in delete_keys:
del config["aprsd"]["email"]["shortcuts"][key]
LOG.info(
"Available shortcuts: {}".format(
config["aprsd"]["email"]["shortcuts"],
),
)
def get_email_from_shortcut(config, addr): def get_email_from_shortcut(config, addr):
if config["aprsd"]["email"].get("shortcuts", False): if config["aprsd"]["email"].get("shortcuts", False):
return config["aprsd"]["email"]["shortcuts"].get(addr, addr) return config["aprsd"]["email"]["shortcuts"].get(addr, addr)
@ -324,12 +275,6 @@ def validate_email_config(config, disable_validation=False):
LOG.info("Checking SMTP configuration") LOG.info("Checking SMTP configuration")
smtp_server = _smtp_connect(config) smtp_server = _smtp_connect(config)
# Now validate and flag any shortcuts as invalid
if not disable_validation:
validate_shortcuts(config)
else:
LOG.info("Shortcuts email validation is Disabled!!, you were warned.")
if imap_server and smtp_server: if imap_server and smtp_server:
return True return True
else: else:

View File

@ -6,9 +6,10 @@ Sphinx
tox tox
twine twine
pre-commit pre-commit
pip-tools
pytest pytest
pytest-cov pytest-cov
gray gray
pip==22.0.4 #pip==22.0.4
pip-tools==5.4.0 pip
#pip-tools==5.4.0
pip-tools

View File

@ -1,8 +1,8 @@
# #
# This file is autogenerated by pip-compile # This file is autogenerated by pip-compile with python 3.8
# To update, run: # To update, run:
# #
# pip-compile dev-requirements.in # pip-compile --annotation-style=line --resolver=backtracking dev-requirements.in
# #
add-trailing-comma==2.3.0 # via gray add-trailing-comma==2.3.0 # via gray
alabaster==0.7.12 # via sphinx alabaster==0.7.12 # via sphinx
@ -11,7 +11,9 @@ autoflake==1.7.7 # via gray
babel==2.11.0 # via sphinx babel==2.11.0 # via sphinx
black==22.10.0 # via gray black==22.10.0 # via gray
bleach==5.0.1 # via readme-renderer bleach==5.0.1 # via readme-renderer
build==0.9.0 # via pip-tools
certifi==2022.9.24 # via requests certifi==2022.9.24 # via requests
cffi==1.15.1 # via cryptography
cfgv==3.3.1 # via pre-commit cfgv==3.3.1 # via pre-commit
charset-normalizer==2.1.1 # via requests charset-normalizer==2.1.1 # via requests
click==8.1.3 # via black, pip-tools click==8.1.3 # via black, pip-tools
@ -19,36 +21,39 @@ colorlog==6.7.0 # via prettylog
commonmark==0.9.1 # via rich commonmark==0.9.1 # via rich
configargparse==1.5.3 # via gray configargparse==1.5.3 # via gray
coverage[toml]==6.5.0 # via pytest-cov coverage[toml]==6.5.0 # via pytest-cov
cryptography==38.0.3 # via secretstorage
distlib==0.3.6 # via virtualenv distlib==0.3.6 # via virtualenv
docutils==0.19 # via readme-renderer, sphinx docutils==0.19 # via readme-renderer, sphinx
exceptiongroup==1.0.4 # via pytest exceptiongroup==1.0.4 # via pytest
fast-json==0.3.2 # via prettylog fast-json==0.3.2 # via prettylog
filelock==3.8.0 # via tox, virtualenv filelock==3.8.0 # via tox, virtualenv
fixit==0.1.4 # via gray fixit==0.1.4 # via gray
flake8==5.0.4 # via -r dev-requirements.in, fixit, pep8-naming flake8==6.0.0 # via -r dev-requirements.in, fixit, pep8-naming
gray==0.12.0 # via -r dev-requirements.in gray==0.12.0 # via -r dev-requirements.in
identify==2.5.9 # via pre-commit identify==2.5.9 # via pre-commit
idna==3.4 # via requests idna==3.4 # via requests
imagesize==1.4.1 # via sphinx imagesize==1.4.1 # via sphinx
importlib-metadata==5.0.0 # via keyring, sphinx, twine importlib-metadata==5.1.0 # via keyring, sphinx, twine
importlib-resources==5.10.0 # via fixit, jsonschema importlib-resources==5.10.0 # via fixit, jsonschema
iniconfig==1.1.1 # via pytest iniconfig==1.1.1 # via pytest
isort==5.10.1 # via -r dev-requirements.in, gray isort==5.10.1 # via -r dev-requirements.in, gray
jaraco.classes==3.2.3 # via keyring jaraco-classes==3.2.3 # via keyring
jeepney==0.8.0 # via keyring, secretstorage
jinja2==3.1.2 # via sphinx jinja2==3.1.2 # via sphinx
jsonschema==4.17.1 # via fixit jsonschema==4.17.1 # via fixit
keyring==23.11.0 # via twine keyring==23.11.0 # via twine
libcst==0.4.9 # via fixit libcst==0.4.9 # via fixit
markupsafe==2.1.1 # via jinja2 markupsafe==2.1.1 # via jinja2
mccabe==0.7.0 # via flake8 mccabe==0.7.0 # via flake8
more-itertools==9.0.0 # via jaraco.classes more-itertools==9.0.0 # via jaraco-classes
mypy-extensions==0.4.3 # via black, mypy, typing-inspect
mypy==0.991 # via -r dev-requirements.in mypy==0.991 # via -r dev-requirements.in
mypy-extensions==0.4.3 # via black, mypy, typing-inspect
nodeenv==1.7.0 # via pre-commit nodeenv==1.7.0 # via pre-commit
packaging==21.3 # via pytest, sphinx, tox packaging==21.3 # via build, pytest, sphinx, tox
pathspec==0.10.2 # via black pathspec==0.10.2 # via black
pep517==0.13.0 # via build
pep8-naming==0.13.2 # via -r dev-requirements.in pep8-naming==0.13.2 # via -r dev-requirements.in
pip-tools==5.4.0 # via -r dev-requirements.in pip-tools==6.10.0 # via -r dev-requirements.in
pkginfo==1.8.3 # via twine pkginfo==1.8.3 # via twine
pkgutil-resolve-name==1.3.10 # via jsonschema pkgutil-resolve-name==1.3.10 # via jsonschema
platformdirs==2.5.4 # via black, virtualenv platformdirs==2.5.4 # via black, virtualenv
@ -56,22 +61,24 @@ pluggy==1.0.0 # via pytest, tox
pre-commit==2.20.0 # via -r dev-requirements.in pre-commit==2.20.0 # via -r dev-requirements.in
prettylog==0.3.0 # via gray prettylog==0.3.0 # via gray
py==1.11.0 # via tox py==1.11.0 # via tox
pycodestyle==2.9.1 # via flake8 pycodestyle==2.10.0 # via flake8
pyflakes==2.5.0 # via autoflake, flake8 pycparser==2.21 # via cffi
pyflakes==3.0.1 # via autoflake, flake8
pygments==2.13.0 # via readme-renderer, rich, sphinx pygments==2.13.0 # via readme-renderer, rich, sphinx
pyparsing==3.0.9 # via packaging pyparsing==3.0.9 # via packaging
pyrsistent==0.19.2 # via jsonschema pyrsistent==0.19.2 # via jsonschema
pytest-cov==4.0.0 # via -r dev-requirements.in
pytest==7.2.0 # via -r dev-requirements.in, pytest-cov pytest==7.2.0 # via -r dev-requirements.in, pytest-cov
pytest-cov==4.0.0 # via -r dev-requirements.in
pytz==2022.6 # via babel pytz==2022.6 # via babel
pyupgrade==3.2.2 # via gray pyupgrade==3.2.2 # via gray
pyyaml==6.0 # via fixit, libcst, pre-commit pyyaml==6.0 # via fixit, libcst, pre-commit
readme-renderer==37.3 # via twine readme-renderer==37.3 # via twine
requests-toolbelt==0.10.1 # via twine
requests==2.28.1 # via requests-toolbelt, sphinx, twine requests==2.28.1 # via requests-toolbelt, sphinx, twine
requests-toolbelt==0.10.1 # via twine
rfc3986==2.0.0 # via twine rfc3986==2.0.0 # via twine
rich==12.6.0 # via twine rich==12.6.0 # via twine
six==1.16.0 # via bleach, pip-tools, tox secretstorage==3.3.3 # via keyring
six==1.16.0 # via bleach, tox
snowballstemmer==2.2.0 # via sphinx snowballstemmer==2.2.0 # via sphinx
sphinx==5.3.0 # via -r dev-requirements.in sphinx==5.3.0 # via -r dev-requirements.in
sphinxcontrib-applehelp==1.0.2 # via sphinx sphinxcontrib-applehelp==1.0.2 # via sphinx
@ -82,7 +89,7 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx
sphinxcontrib-serializinghtml==1.1.5 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx
tokenize-rt==5.0.0 # via add-trailing-comma, pyupgrade tokenize-rt==5.0.0 # via add-trailing-comma, pyupgrade
toml==0.10.2 # via pre-commit toml==0.10.2 # via pre-commit
tomli==2.0.1 # via autoflake, black, coverage, mypy, pytest, tox tomli==2.0.1 # via autoflake, black, build, coverage, mypy, pep517, pytest, tox
tox==3.27.1 # via -r dev-requirements.in tox==3.27.1 # via -r dev-requirements.in
twine==4.0.1 # via -r dev-requirements.in twine==4.0.1 # via -r dev-requirements.in
typing-extensions==4.4.0 # via black, libcst, mypy, rich, typing-inspect typing-extensions==4.4.0 # via black, libcst, mypy, rich, typing-inspect
@ -90,9 +97,10 @@ typing-inspect==0.8.0 # via libcst
ujson==5.5.0 # via fast-json ujson==5.5.0 # via fast-json
unify==0.5 # via gray unify==0.5 # via gray
untokenize==0.1.1 # via unify untokenize==0.1.1 # via unify
urllib3==1.26.12 # via requests, twine urllib3==1.26.13 # via requests, twine
virtualenv==20.16.7 # via pre-commit, tox virtualenv==20.16.7 # via pre-commit, tox
webencodings==0.5.1 # via bleach webencodings==0.5.1 # via bleach
wheel==0.38.4 # via pip-tools
zipp==3.10.0 # via importlib-metadata, importlib-resources zipp==3.10.0 # via importlib-metadata, importlib-resources
# The following packages are considered to be unsafe in a requirements file: # The following packages are considered to be unsafe in a requirements file:

View File

@ -2,14 +2,14 @@
FROM ubuntu:focal as aprsd FROM ubuntu:focal as aprsd
# Dockerfile for building a container during aprsd development. # Dockerfile for building a container during aprsd development.
ARG branch ARG BRANCH=master
ARG UID ARG UID
ARG GID ARG GID
ENV APRS_USER=aprs ENV APRS_USER=aprs
ENV HOME=/home/aprs ENV HOME=/home/aprs
ENV APRSD=http://github.com/craigerl/aprsd.git ENV APRSD=http://github.com/craigerl/aprsd.git
ENV APRSD_BRANCH=${branch:-master} ENV APRSD_BRANCH=${BRANCH:-master}
ENV VIRTUAL_ENV=$HOME/.venv3 ENV VIRTUAL_ENV=$HOME/.venv3
ENV UID=${UID:-1000} ENV UID=${UID:-1000}
ENV GID=${GID:-1000} ENV GID=${GID:-1000}
@ -40,7 +40,7 @@ RUN cat $HOME/.bashrc
USER root USER root
WORKDIR $HOME WORKDIR $HOME
RUN mkdir $INSTALL RUN mkdir $INSTALL
RUN git clone -b $APRSD_BRANCH $APRSD $INSTALL/aprsd RUN git clone -b $BRANCH $APRSD $INSTALL/aprsd
RUN cd $INSTALL/aprsd && pip3 install -v . RUN cd $INSTALL/aprsd && pip3 install -v .
RUN ls -al /usr/local/bin RUN ls -al /usr/local/bin
RUN ls -al /usr/bin RUN ls -al /usr/bin

View File

@ -11,8 +11,10 @@ cat << EOF
usage: $0 options usage: $0 options
OPTIONS: OPTIONS:
-h Show help
-t The tag/version (${TAG}) (default = master) -t The tag/version (${TAG}) (default = master)
-d Use Dockerfile-dev for a git clone build -d Use Dockerfile-dev for a git clone build
-b Branch to use (default = master)
EOF EOF
} }
@ -20,9 +22,9 @@ EOF
ALL_PLATFORMS=0 ALL_PLATFORMS=0
DEV=0 DEV=0
TAG="latest" TAG="latest"
BRANCH="master" BRANCH=${BRANCH:-master}
while getopts “t:dab:” OPTION while getoptshdat:b:” OPTION
do do
case $OPTION in case $OPTION in
t) t)
@ -37,9 +39,13 @@ do
d) d)
DEV=1 DEV=1
;; ;;
h)
usage
exit 0
;;
?) ?)
usage usage
exit exit -1
;; ;;
esac esac
done done
@ -51,7 +57,7 @@ then
PLATFORMS="linux/arm/v7,linux/arm64,linux/amd64" PLATFORMS="linux/arm/v7,linux/arm64,linux/amd64"
#PLATFORMS="linux/arm/v7,linux/arm/v6,linux/amd64" #PLATFORMS="linux/arm/v7,linux/arm/v6,linux/amd64"
else else
PLATFORMS="linux/amd64" PLATFORMS="linux/amd64,linux/arm/v7"
fi fi
echo "Build with tag=${TAG} BRANCH=${BRANCH} dev?=${DEV} platforms?=${PLATFORMS}" echo "Build with tag=${TAG} BRANCH=${BRANCH} dev?=${DEV} platforms?=${PLATFORMS}"

View File

@ -9,9 +9,6 @@ imapclient
pluggy pluggy
pbr pbr
pyyaml pyyaml
# Allowing a newer version can lead to a conflict with
# requests.
py3-validate-email
requests requests
pytz pytz
six six

View File

@ -1,8 +1,8 @@
# #
# This file is autogenerated by pip-compile # This file is autogenerated by pip-compile with python 3.8
# To update, run: # To update, run:
# #
# pip-compile requirements.in # pip-compile --annotation-style=line --resolver=backtracking requirements.in
# #
aprslib==0.7.2 # via -r requirements.in aprslib==0.7.2 # via -r requirements.in
attrs==22.1.0 # via -r requirements.in, ax253, kiss3 attrs==22.1.0 # via -r requirements.in, ax253, kiss3
@ -12,30 +12,28 @@ bidict==0.22.0 # via python-socketio
bitarray==2.6.0 # via ax253, kiss3 bitarray==2.6.0 # via ax253, kiss3
certifi==2022.9.24 # via requests certifi==2022.9.24 # via requests
charset-normalizer==2.1.1 # via requests charset-normalizer==2.1.1 # via requests
click-completion==0.5.2 # via -r requirements.in
click==8.1.3 # via -r requirements.in, click-completion, flask click==8.1.3 # via -r requirements.in, click-completion, flask
click-completion==0.5.2 # via -r requirements.in
commonmark==0.9.1 # via rich commonmark==0.9.1 # via rich
dnspython==2.2.1 # via eventlet, py3-validate-email dnspython==2.2.1 # via eventlet
eventlet==0.33.2 # via -r requirements.in eventlet==0.33.2 # via -r requirements.in
filelock==3.8.0 # via py3-validate-email flask==2.1.2 # via -r requirements.in, flask-classful, flask-httpauth, flask-socketio
flask-classful==0.14.2 # via -r requirements.in flask-classful==0.14.2 # via -r requirements.in
flask-httpauth==4.7.0 # via -r requirements.in flask-httpauth==4.7.0 # via -r requirements.in
flask-socketio==5.3.2 # via -r requirements.in flask-socketio==5.3.2 # via -r requirements.in
flask==2.1.2 # via -r requirements.in, flask-classful, flask-httpauth, flask-socketio
greenlet==2.0.1 # via eventlet greenlet==2.0.1 # via eventlet
idna==3.4 # via py3-validate-email, requests idna==3.4 # via requests
imapclient==2.3.1 # via -r requirements.in imapclient==2.3.1 # via -r requirements.in
importlib-metadata==5.0.0 # via ax253, flask, kiss3 importlib-metadata==5.1.0 # via ax253, flask, kiss3
itsdangerous==2.1.2 # via flask itsdangerous==2.1.2 # via flask
jinja2==3.1.2 # via click-completion, flask jinja2==3.1.2 # via click-completion, flask
kiss3==8.0.0 # via -r requirements.in kiss3==8.0.0 # via -r requirements.in
markupsafe==2.1.1 # via jinja2 markupsafe==2.1.1 # via jinja2
pbr==5.11.0 # via -r requirements.in pbr==5.11.0 # via -r requirements.in
pluggy==1.0.0 # via -r requirements.in pluggy==1.0.0 # via -r requirements.in
py3-validate-email==1.0.5.post1 # via -r requirements.in
pygments==2.13.0 # via rich pygments==2.13.0 # via rich
pyserial-asyncio==0.6 # via kiss3
pyserial==3.5 # via pyserial-asyncio pyserial==3.5 # via pyserial-asyncio
pyserial-asyncio==0.6 # via kiss3
python-engineio==4.3.4 # via python-socketio python-engineio==4.3.4 # via python-socketio
python-socketio==5.7.2 # via flask-socketio python-socketio==5.7.2 # via flask-socketio
pytz==2022.6 # via -r requirements.in pytz==2022.6 # via -r requirements.in
@ -48,8 +46,8 @@ soupsieve==2.3.2.post1 # via beautifulsoup4
tabulate==0.9.0 # via -r requirements.in tabulate==0.9.0 # via -r requirements.in
thesmuggler==1.0.1 # via -r requirements.in thesmuggler==1.0.1 # via -r requirements.in
typing-extensions==4.4.0 # via rich typing-extensions==4.4.0 # via rich
update_checker==0.18.0 # via -r requirements.in update-checker==0.18.0 # via -r requirements.in
urllib3==1.26.12 # via requests urllib3==1.26.13 # via requests
werkzeug==2.1.2 # via -r requirements.in, flask werkzeug==2.1.2 # via -r requirements.in, flask
wrapt==1.14.1 # via -r requirements.in wrapt==1.14.1 # via -r requirements.in
zipp==3.10.0 # via importlib-metadata zipp==3.10.0 # via importlib-metadata