1
0
mirror of https://github.com/craigerl/aprsd.git synced 2025-02-03 09:44:15 -05:00

Compare commits

..

No commits in common. "993b40d936fa833cc97e895d85e304f93dd723ad" and "14274c93b59f146c7a9ef9dd9e0d2e085c86b191" have entirely different histories.

7 changed files with 75 additions and 242 deletions

View File

@ -4,13 +4,6 @@ All notable changes to this project will be documented in this file. Dates are d
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
#### [v3.4.3](https://github.com/craigerl/aprsd/compare/v3.4.2...v3.4.3)
> 29 October 2024
- Change virtual env name to .venv [`882e907`](https://github.com/craigerl/aprsd/commit/882e90767dd967a4d1018c834a074b33ca9dcb06)
- Fixed issue in send_message command [`ecf30d3`](https://github.com/craigerl/aprsd/commit/ecf30d33978e26150bf41ff60b97ff00ab5d5f96)
#### [v3.4.2](https://github.com/craigerl/aprsd/compare/v3.4.1...v3.4.2) #### [v3.4.2](https://github.com/craigerl/aprsd/compare/v3.4.1...v3.4.2)
> 18 October 2024 > 18 October 2024

View File

@ -1,5 +1,5 @@
WORKDIR?=. WORKDIR?=.
VENVDIR ?= $(WORKDIR)/.venv VENVDIR ?= $(WORKDIR)/.aprsd-venv
.DEFAULT_GOAL := help .DEFAULT_GOAL := help

View File

@ -1,54 +0,0 @@
import logging
import os
import signal
import click
from oslo_config import cfg
import socketio
import aprsd
from aprsd import cli_helper
from aprsd import main as aprsd_main
from aprsd import utils
from aprsd.main import cli
os.environ["APRSD_ADMIN_COMMAND"] = "1"
from aprsd import wsgi as aprsd_wsgi
CONF = cfg.CONF
LOG = logging.getLogger("APRSD")
# main() ###
@cli.command()
@cli_helper.add_options(cli_helper.common_options)
@click.pass_context
@cli_helper.process_standard_options
def admin(ctx):
"""Start the aprsd admin interface."""
signal.signal(signal.SIGINT, aprsd_main.signal_handler)
signal.signal(signal.SIGTERM, aprsd_main.signal_handler)
level, msg = utils._check_version()
if level:
LOG.warning(msg)
else:
LOG.info(msg)
LOG.info(f"APRSD Started version: {aprsd.__version__}")
# Dump all the config options now.
CONF.log_opt_values(LOG, logging.DEBUG)
async_mode = "threading"
sio = socketio.Server(logger=True, async_mode=async_mode)
aprsd_wsgi.app.wsgi_app = socketio.WSGIApp(sio, aprsd_wsgi.app.wsgi_app)
aprsd_wsgi.init_app()
sio.register_namespace(aprsd_wsgi.LoggingNamespace("/logs"))
CONF.log_opt_values(LOG, logging.DEBUG)
aprsd_wsgi.app.run(
threaded=True,
debug=False,
port=CONF.admin.web_port,
host=CONF.admin.web_ip,
)

View File

@ -14,7 +14,6 @@ from aprsd.client import client_factory
from aprsd.main import cli from aprsd.main import cli
import aprsd.packets # noqa : F401 import aprsd.packets # noqa : F401
from aprsd.packets import collector from aprsd.packets import collector
from aprsd.packets import log as packet_log
from aprsd.threads import tx from aprsd.threads import tx
@ -104,7 +103,7 @@ def send_message(
cl = client_factory.create() cl = client_factory.create()
packet = cl.decode_packet(packet) packet = cl.decode_packet(packet)
collector.PacketCollector().rx(packet) collector.PacketCollector().rx(packet)
packet_log.log(packet, tx=False) packet.log("RX")
# LOG.debug("Got packet back {}".format(packet)) # LOG.debug("Got packet back {}".format(packet))
if isinstance(packet, packets.AckPacket): if isinstance(packet, packets.AckPacket):
got_ack = True got_ack = True

View File

@ -54,7 +54,7 @@ def cli(ctx):
def load_commands(): def load_commands():
from .cmds import ( # noqa from .cmds import ( # noqa
admin, completion, dev, fetch_stats, healthcheck, list_plugins, listen, completion, dev, fetch_stats, healthcheck, list_plugins, listen,
send_message, server, webchat, send_message, server, webchat,
) )
@ -79,15 +79,11 @@ def signal_handler(sig, frame):
), ),
) )
time.sleep(1.5) time.sleep(1.5)
try: packets.PacketTrack().save()
packets.PacketTrack().save() packets.WatchList().save()
packets.WatchList().save() packets.SeenList().save()
packets.SeenList().save() packets.PacketList().save()
packets.PacketList().save() collector.Collector().collect()
collector.Collector().collect()
except Exception as e:
LOG.error(f"Failed to save data: {e}")
sys.exit(0)
# signal.signal(signal.SIGTERM, sys.exit(0)) # signal.signal(signal.SIGTERM, sys.exit(0))
# sys.exit(0) # sys.exit(0)

View File

@ -3,7 +3,6 @@ import importlib.metadata as imp
import io import io
import json import json
import logging import logging
import os
import queue import queue
import flask import flask
@ -24,12 +23,6 @@ CONF = cfg.CONF
LOG = logging.getLogger("gunicorn.access") LOG = logging.getLogger("gunicorn.access")
logging_queue = queue.Queue() logging_queue = queue.Queue()
# ADMIN_COMMAND True means we are running from `aprsd admin`
# the `aprsd admin` command will import this file after setting
# the APRSD_ADMIN_COMMAND environment variable.
ADMIN_COMMAND = os.environ.get("APRSD_ADMIN_COMMAND", False)
auth = HTTPBasicAuth() auth = HTTPBasicAuth()
users: dict[str, str] = {} users: dict[str, str] = {}
app = Flask( app = Flask(
@ -269,7 +262,6 @@ def init_app(config_file=None, log_level=None):
return log_level return log_level
print(f"__name__ = {__name__}")
if __name__ == "__main__": if __name__ == "__main__":
async_mode = "threading" async_mode = "threading"
@ -305,7 +297,7 @@ if __name__ == "uwsgi_file_aprsd_wsgi":
CONF.log_opt_values(LOG, logging.DEBUG) CONF.log_opt_values(LOG, logging.DEBUG)
if __name__ == "aprsd.wsgi" and not ADMIN_COMMAND: if __name__ == "aprsd.wsgi":
# set async_mode to 'threading', 'eventlet', 'gevent' or 'gevent_uwsgi' to # set async_mode to 'threading', 'eventlet', 'gevent' or 'gevent_uwsgi' to
# force a mode else, the best mode is selected automatically from what's # force a mode else, the best mode is selected automatically from what's
# installed # installed

View File

@ -4,162 +4,69 @@
# #
# pip-compile --annotation-style=line requirements.in # pip-compile --annotation-style=line requirements.in
# #
aprslib==0.7.2 aprslib==0.7.2 # via -r requirements.in
# via -r requirements.in attrs==24.2.0 # via ax253, kiss3, rush
attrs==24.2.0 ax253==0.1.5.post1 # via kiss3
# via beautifulsoup4==4.12.3 # via -r requirements.in
# ax253 bidict==0.23.1 # via python-socketio
# kiss3 bitarray==3.0.0 # via ax253, kiss3
# rush blinker==1.8.2 # via flask
ax253==0.1.5.post1 certifi==2024.8.30 # via requests
# via kiss3 charset-normalizer==3.4.0 # via requests
beautifulsoup4==4.12.3 click==8.1.7 # via -r requirements.in, click-params, flask
# via -r requirements.in click-params==0.5.0 # via -r requirements.in
bidict==0.23.1 commonmark==0.9.1 # via rich
# via python-socketio dataclasses==0.6 # via -r requirements.in
bitarray==3.0.0 dataclasses-json==0.6.7 # via -r requirements.in
# via debtcollector==3.0.0 # via oslo-config
# ax253 deprecated==1.2.14 # via click-params
# kiss3 flask==3.0.3 # via -r requirements.in, flask-httpauth, flask-socketio
blinker==1.8.2 flask-httpauth==4.8.0 # via -r requirements.in
# via flask flask-socketio==5.4.1 # via -r requirements.in
certifi==2024.8.30 geographiclib==2.0 # via geopy
# via requests geopy==2.4.1 # via -r requirements.in
charset-normalizer==3.4.0 h11==0.14.0 # via wsproto
# via requests idna==3.10 # via requests
click==8.1.7 imapclient==3.0.1 # via -r requirements.in
# via importlib-metadata==8.5.0 # via ax253, kiss3
# -r requirements.in itsdangerous==2.2.0 # via flask
# click-params jinja2==3.1.4 # via flask
# flask kiss3==8.0.0 # via -r requirements.in
click-params==0.5.0 loguru==0.7.2 # via -r requirements.in
# via -r requirements.in markupsafe==3.0.2 # via jinja2, werkzeug
commonmark==0.9.1 marshmallow==3.23.0 # via dataclasses-json
# via rich mypy-extensions==1.0.0 # via typing-inspect
dataclasses==0.6 netaddr==1.3.0 # via oslo-config
# via -r requirements.in oslo-config==9.6.0 # via -r requirements.in
dataclasses-json==0.6.7 oslo-i18n==6.4.0 # via oslo-config
# via -r requirements.in packaging==24.1 # via marshmallow
debtcollector==3.0.0 pbr==6.1.0 # via oslo-i18n, stevedore
# via oslo-config pluggy==1.5.0 # via -r requirements.in
deprecated==1.2.14 pygments==2.18.0 # via rich
# via click-params pyserial==3.5 # via pyserial-asyncio
flask==3.0.3 pyserial-asyncio==0.6 # via kiss3
# via python-engineio==4.10.1 # via python-socketio
# -r requirements.in python-socketio==5.11.4 # via -r requirements.in, flask-socketio
# flask-httpauth pytz==2024.2 # via -r requirements.in
# flask-socketio pyyaml==6.0.2 # via -r requirements.in, oslo-config
flask-httpauth==4.8.0 requests==2.32.3 # via -r requirements.in, oslo-config, update-checker
# via -r requirements.in rfc3986==2.0.0 # via oslo-config
flask-socketio==5.4.1 rich==12.6.0 # via -r requirements.in
# via -r requirements.in rush==2021.4.0 # via -r requirements.in
geographiclib==2.0 shellingham==1.5.4 # via -r requirements.in
# via geopy simple-websocket==1.1.0 # via python-engineio
geopy==2.4.1 six==1.16.0 # via -r requirements.in
# via -r requirements.in soupsieve==2.6 # via beautifulsoup4
h11==0.14.0 stevedore==5.3.0 # via oslo-config
# via wsproto tabulate==0.9.0 # via -r requirements.in
idna==3.10 thesmuggler==1.0.1 # via -r requirements.in
# via requests typing-extensions==4.12.2 # via typing-inspect
imapclient==3.0.1 typing-inspect==0.9.0 # via dataclasses-json
# via -r requirements.in tzlocal==5.2 # via -r requirements.in
importlib-metadata==8.5.0 update-checker==0.18.0 # via -r requirements.in
# via urllib3==2.2.3 # via requests
# ax253 validators==0.22.0 # via click-params
# kiss3 werkzeug==3.0.4 # via flask
itsdangerous==2.2.0 wrapt==1.16.0 # via -r requirements.in, debtcollector, deprecated
# via flask wsproto==1.2.0 # via simple-websocket
jinja2==3.1.4 zipp==3.20.2 # via importlib-metadata
# via flask
kiss3==8.0.0
# via -r requirements.in
loguru==0.7.2
# via -r requirements.in
markupsafe==3.0.2
# via
# jinja2
# werkzeug
marshmallow==3.23.0
# via dataclasses-json
mypy-extensions==1.0.0
# via typing-inspect
netaddr==1.3.0
# via oslo-config
oslo-config==9.6.0
# via -r requirements.in
oslo-i18n==6.4.0
# via oslo-config
packaging==24.1
# via marshmallow
pbr==6.1.0
# via
# oslo-i18n
# stevedore
pluggy==1.5.0
# via -r requirements.in
pygments==2.18.0
# via rich
pyserial==3.5
# via pyserial-asyncio
pyserial-asyncio==0.6
# via kiss3
python-engineio==4.10.1
# via python-socketio
python-socketio==5.11.4
# via
# -r requirements.in
# flask-socketio
pytz==2024.2
# via -r requirements.in
pyyaml==6.0.2
# via
# -r requirements.in
# oslo-config
requests==2.32.3
# via
# -r requirements.in
# oslo-config
# update-checker
rfc3986==2.0.0
# via oslo-config
rich==12.6.0
# via -r requirements.in
rush==2021.4.0
# via -r requirements.in
shellingham==1.5.4
# via -r requirements.in
simple-websocket==1.1.0
# via python-engineio
six==1.16.0
# via -r requirements.in
soupsieve==2.6
# via beautifulsoup4
stevedore==5.3.0
# via oslo-config
tabulate==0.9.0
# via -r requirements.in
thesmuggler==1.0.1
# via -r requirements.in
typing-extensions==4.12.2
# via typing-inspect
typing-inspect==0.9.0
# via dataclasses-json
tzlocal==5.2
# via -r requirements.in
update-checker==0.18.0
# via -r requirements.in
urllib3==2.2.3
# via requests
validators==0.22.0
# via click-params
werkzeug==3.0.6
# via flask
wrapt==1.16.0
# via
# -r requirements.in
# debtcollector
# deprecated
wsproto==1.2.0
# via simple-websocket
zipp==3.20.2
# via importlib-metadata