From 57924750f4e37a09377df6ce5c8248a115c2b650 Mon Sep 17 00:00:00 2001 From: Luis Felipe Mileo Date: Mon, 8 Feb 2021 13:07:24 -0300 Subject: [PATCH 1/6] [REF] Compatibilidade com Python3 --- sathub/__init__.py | 4 +++- sathub/comum/config.py | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sathub/__init__.py b/sathub/__init__.py index 1db8ec2..f272589 100644 --- a/sathub/__init__.py +++ b/sathub/__init__.py @@ -17,6 +17,8 @@ # limitations under the License. # +from __future__ import division, print_function, unicode_literals + import base64 import os @@ -30,7 +32,7 @@ app = Flask(__name__) app.debug = conf.is_debug app.secret_key = os.environ.get('SATHUB_SECRET_KEY') or \ - base64.b64encode('Nullum secretum est ubi regnat ebrietas') + base64.b64encode(b'Nullum secretum est ubi regnat ebrietas') import sathub.api import sathub.views diff --git a/sathub/comum/config.py b/sathub/comum/config.py index 95c39bc..de8ea13 100644 --- a/sathub/comum/config.py +++ b/sathub/comum/config.py @@ -24,6 +24,9 @@ import os import sys +if sys.version_info[0] >= 3: + unicode = str + from logging.config import dictConfig from cerberus import Validator From d1519033bd58f5d8a703c787595783229509972f Mon Sep 17 00:00:00 2001 From: Luis Felipe Mileo Date: Mon, 8 Feb 2021 13:46:22 -0300 Subject: [PATCH 2/6] [NEW] Dockerfile --- DOCKER.rst | 4 ++++ Dockerfile | 40 +++++++++++++++++++++++++++++++++++++ dll/libsat_v3_0_0_3_x64.so | Bin 0 -> 68056 bytes dll/sat.ini | 3 +++ requirements/base.txt | 1 + 5 files changed, 48 insertions(+) create mode 100644 DOCKER.rst create mode 100644 Dockerfile create mode 100755 dll/libsat_v3_0_0_3_x64.so create mode 100644 dll/sat.ini diff --git a/DOCKER.rst b/DOCKER.rst new file mode 100644 index 0000000..59aa685 --- /dev/null +++ b/DOCKER.rst @@ -0,0 +1,4 @@ +docker build -t sathub:latest . + +docker run --name sathub -p 5000:5000 -v /dev:/dev --privileged --rm sathub:latest + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e66ab3f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +FROM python:3.8-alpine + +WORKDIR /home/sathub + +COPY ./requirements/base.txt requirements.txt + +COPY ./dll/sat.ini /var/tanca_jetway/sat.ini + +RUN apk --no-cache add \ + build-base \ + python3 \ + python3-dev \ + # wget dependency + openssl \ + # dev dependencies + bash \ + git \ + py3-pip \ + sudo \ + # Pillow dependencies + freetype-dev \ + fribidi-dev \ + harfbuzz-dev \ + jpeg-dev \ + lcms2-dev \ + openjpeg-dev \ + tcl-dev \ + tiff-dev \ + tk-dev \ + zlib-dev \ + zbar-dev && \ + pip install -r requirements.txt + +COPY runserver.py ./ +COPY sathub ./sathub +COPY config-sathub.json ./ +COPY dll ./dll + + +CMD python runserver.py diff --git a/dll/libsat_v3_0_0_3_x64.so b/dll/libsat_v3_0_0_3_x64.so new file mode 100755 index 0000000000000000000000000000000000000000..e326791a87580ea4cd4dcc395397f6c6dd450543 GIT binary patch literal 68056 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 oDSF_OV^V(8EDL@Pf= 0.0.9 satcfe >= 0.0.8 +werkzeug==0.16.1 From 9fe2334f8601f6e3c4b920e68c815856ba840d5f Mon Sep 17 00:00:00 2001 From: Luis Felipe Mileo Date: Mon, 8 Feb 2021 16:56:00 -0300 Subject: [PATCH 3/6] [DOCKER] V2 --- DOCKER.rst | 5 +++++ Dockerfile | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/DOCKER.rst b/DOCKER.rst index 59aa685..9a1c201 100644 --- a/DOCKER.rst +++ b/DOCKER.rst @@ -1,4 +1,9 @@ docker build -t sathub:latest . +v1 docker run --name sathub -p 5000:5000 -v /dev:/dev --privileged --rm sathub:latest +v2 - c/ usuário satjub +docker run --name sathub -p 5000:5000 -v /dev/ttyTS0:/dev/ttyTS0 --privileged --rm sathub:latest + + diff --git a/Dockerfile b/Dockerfile index e66ab3f..26509d6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.8-alpine +RUN adduser -D sathub + WORKDIR /home/sathub COPY ./requirements/base.txt requirements.txt @@ -36,5 +38,8 @@ COPY sathub ./sathub COPY config-sathub.json ./ COPY dll ./dll +RUN chown -R sathub:sathub ./ + +USER sathub CMD python runserver.py From 4d8c6006ada2b502a7e0fecf2fade31169bf090c Mon Sep 17 00:00:00 2001 From: Luis Felipe Mileo Date: Mon, 8 Feb 2021 17:01:01 -0300 Subject: [PATCH 4/6] [DOCKER] V3 --- DOCKER.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCKER.rst b/DOCKER.rst index 9a1c201..a4e36fc 100644 --- a/DOCKER.rst +++ b/DOCKER.rst @@ -6,4 +6,6 @@ docker run --name sathub -p 5000:5000 -v /dev:/dev --privileged --rm sathub:la v2 - c/ usuário satjub docker run --name sathub -p 5000:5000 -v /dev/ttyTS0:/dev/ttyTS0 --privileged --rm sathub:latest +v3 +docker run --name sathub -p 5000:5000 --device=/dev/ttyTS0:/dev/ttyTS0 --privileged --rm sathub:latest From 1450e2a37cfe0e7dc6ffa6b7b4fe91f6a528f64d Mon Sep 17 00:00:00 2001 From: Luis Felipe Mileo Date: Wed, 9 Mar 2022 08:09:39 -0300 Subject: [PATCH 5/6] [UPG] Dependencies --- requirements/base.txt | 3 ++- sathub/forms.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 0a6c2b5..84f8f9e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,8 +1,9 @@ Flask == 0.10.1 Flask-Login == 0.3.0 Flask-RESTful == 0.3.3 -Flask-WTF == 0.12 +Flask-WTF == 1.0.0 Unidecode == 0.04.18 satcomum >= 0.0.9 satcfe >= 0.0.8 werkzeug==0.16.1 +itsdangerous==2.0.1 diff --git a/sathub/forms.py b/sathub/forms.py index d757dcd..2309fa6 100644 --- a/sathub/forms.py +++ b/sathub/forms.py @@ -30,12 +30,12 @@ class LoginForm(Form): username = StringField(u'Nome de Usuário', validators=[ - validators.required(), + validators.InputRequired(), validators.length(min=2, max=20),]) password = PasswordField('Senha', validators=[ - validators.required(), + validators.InputRequired(), validators.length(min=6, max=20),]) class Meta: From f20242ec628ff5b7a50d3094dc1f95d45e022bdc Mon Sep 17 00:00:00 2001 From: Luis Felipe Mileo Date: Wed, 9 Mar 2022 08:10:23 -0300 Subject: [PATCH 6/6] [WIP] Dll Tanca --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 26509d6..245374a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,7 @@ WORKDIR /home/sathub COPY ./requirements/base.txt requirements.txt COPY ./dll/sat.ini /var/tanca_jetway/sat.ini +COPY ./dll/libsat_v3_0_0_3_x64.so /opt/tanca/libsat_v3_0_0_3_x64.so RUN apk --no-cache add \ build-base \