diff --git a/ogn/aprs_utils.py b/ogn/aprs_utils.py index b026aae..0fbdd25 100644 --- a/ogn/aprs_utils.py +++ b/ogn/aprs_utils.py @@ -34,3 +34,10 @@ def createTimestamp(hhmmss, reference): elif abs(reference.hour - hh) > 1: raise Exception("Time difference is too big. Reference time:%s - timestamp:%s" % (reference, hhmmss)) return datetime(reference.year, reference.month, reference.day, hh, mm, ss) + + +def create_aprs_login(user_name, pass_code, app_name, app_version, aprs_filter=None): + if not aprs_filter: + return "user %s pass %s vers %s %s\n" % (user_name, pass_code, app_name, app_version) + else: + return "user %s pass %s vers %s %s filter %s\n" % (user_name, pass_code, app_name, app_version, aprs_filter) diff --git a/ogn/gateway/__init__.py b/ogn/gateway/__init__.py index ec585e4..2a12b37 100644 --- a/ogn/gateway/__init__.py +++ b/ogn/gateway/__init__.py @@ -4,6 +4,7 @@ from time import time from ogn.gateway import settings from ogn.commands.dbutils import session from ogn.aprs_parser import parse_aprs +from ogn.aprs_utils import create_aprs_login from ogn.exceptions import AprsParseError, OgnParseError from ogn.logger import logger @@ -11,8 +12,6 @@ from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from ogn.model import Base -MODULE_VERSION = "0.1" - class ognGateway: def __init__(self): @@ -27,7 +26,7 @@ class ognGateway: self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) self.sock.connect((settings.APRS_SERVER_HOST, settings.APRS_SERVER_PORT)) - login = 'user %s pass %s vers ogn-gateway-python %s %s\n' % (aprs_user, settings.APRS_PASSCODE, MODULE_VERSION, settings.APRS_FILTER) + login = create_aprs_login(aprs_user, -1, settings.APRS_APP_NAME, settings.APRS_APP_VER, settings.APRS_FILTER) self.sock.send(login.encode()) self.sock_file = self.sock.makefile('rw') diff --git a/ogn/gateway/settings.py b/ogn/gateway/settings.py index 3216638..d311da2 100644 --- a/ogn/gateway/settings.py +++ b/ogn/gateway/settings.py @@ -1,7 +1,7 @@ APRS_SERVER_HOST = 'aprs.glidernet.org' APRS_SERVER_PORT = 14580 -APRS_USER = 'PyGrabber' -APRS_PASSCODE = -1 # Read only +APRS_APP_NAME = 'ogn-gateway-python' +APRS_APP_VER = '0.2' -APRS_FILTER = "filter r/+50.0000/+10.0000/5000" +APRS_FILTER = 'r/50.0000/10.0000/5000' APRS_KEEPALIVE_TIME = 240 diff --git a/tests/test_aprs_utils.py b/tests/test_aprs_utils.py index 5f8f0dd..351d976 100644 --- a/tests/test_aprs_utils.py +++ b/tests/test_aprs_utils.py @@ -1,7 +1,7 @@ import unittest from datetime import datetime -from ogn.aprs_utils import dmsToDeg, createTimestamp +from ogn.aprs_utils import dmsToDeg, createTimestamp, create_aprs_login class TestStringMethods(unittest.TestCase): @@ -21,5 +21,13 @@ class TestStringMethods(unittest.TestCase): with self.assertRaises(Exception): createTimestamp(datetime(2015, 10, 15, 23, 59, 59), '123456') + def test_create_aprs_login(self): + basic_login = create_aprs_login('klaus', -1, 'myApp', '0.1') + self.assertEqual('user klaus pass -1 vers myApp 0.1\n', basic_login) + + login_with_filter = create_aprs_login('klaus', -1, 'myApp', '0.1', 'r/48.0/11.0/100') + self.assertEqual('user klaus pass -1 vers myApp 0.1 filter r/48.0/11.0/100\n', login_with_filter) + + if __name__ == '__main__': unittest.main()