From e739441268569748c42e059c02343e92dd00db64 Mon Sep 17 00:00:00 2001 From: Hemna Date: Fri, 11 Feb 2022 10:01:49 -0500 Subject: [PATCH] Fix logging issue with log messages This patch changes the base Message class to ensure that all printing of the message class only outputs the message in the truncated and bad word filtering enabled in the log. --- aprsd/messaging.py | 59 +++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/aprsd/messaging.py b/aprsd/messaging.py index 04f6009..adb3829 100644 --- a/aprsd/messaging.py +++ b/aprsd/messaging.py @@ -184,6 +184,7 @@ class Message(metaclass=abc.ABCMeta): last_send_attempt = 0 transport = None + _raw_message = None def __init__( self, @@ -208,6 +209,23 @@ class Message(metaclass=abc.ABCMeta): def send(self): """Child class must declare.""" + def _filter_for_send(self): + """Filter and format message string for FCC.""" + # max? ftm400 displays 64, raw msg shows 74 + # and ftm400-send is max 64. setting this to + # 67 displays 64 on the ftm400. (+3 {01 suffix) + # feature req: break long ones into two msgs + message = self._raw_message[:67] + # We all miss George Carlin + return re.sub("fuck|shit|cunt|piss|cock|bitch", "****", message) + + @property + def message(self): + return self._filter_for_send().rstrip("\n") + + def __str__(self): + return self.message + class RawMessage(Message): """Send a raw message. @@ -217,11 +235,11 @@ class RawMessage(Message): """ - message = None + last_send_age = last_send_time = None def __init__(self, message, allow_delay=True): super().__init__(fromcall=None, tocall=None, msg_id=None, allow_delay=allow_delay) - self.message = message + self._raw_message = message def dict(self): now = datetime.datetime.now() @@ -230,17 +248,14 @@ class RawMessage(Message): last_send_age = str(now - self.last_send_time) return { "type": "raw", - "message": self.message.rstrip("\n"), - "raw": self.message.rstrip("\n"), + "message": self.message, + "raw": str(self), "retry_count": self.retry_count, "last_send_attempt": self.last_send_attempt, "last_send_time": str(self.last_send_time), "last_send_age": last_send_age, } - def __str__(self): - return self.message - def send(self): tracker = MsgTrack() tracker.add(self) @@ -252,7 +267,7 @@ class RawMessage(Message): cl = client.factory.create().client log_message( "Sending Message Direct", - str(self).rstrip("\n"), + str(self), self.message, tocall=self.tocall, fromcall=self.fromcall, @@ -264,7 +279,7 @@ class RawMessage(Message): class TextMessage(Message): """Send regular ARPS text/command messages/replies.""" - message = None + last_send_time = last_send_age = None def __init__( self, @@ -278,7 +293,7 @@ class TextMessage(Message): fromcall=fromcall, tocall=tocall, msg_id=msg_id, allow_delay=allow_delay, ) - self.message = message + self._raw_message = message def dict(self): now = datetime.datetime.now() @@ -292,8 +307,8 @@ class TextMessage(Message): "type": "text-message", "fromcall": self.fromcall, "tocall": self.tocall, - "message": self.message.rstrip("\n"), - "raw": str(self).rstrip("\n"), + "message": self.message, + "raw": str(self), "retry_count": self.retry_count, "last_send_attempt": self.last_send_attempt, "last_send_time": str(self.last_send_time), @@ -305,20 +320,10 @@ class TextMessage(Message): return "{}>APZ100::{}:{}{{{}\n".format( self.fromcall, self.tocall.ljust(9), - self._filter_for_send(), + self.message, str(self.id), ) - def _filter_for_send(self): - """Filter and format message string for FCC.""" - # max? ftm400 displays 64, raw msg shows 74 - # and ftm400-send is max 64. setting this to - # 67 displays 64 on the ftm400. (+3 {01 suffix) - # feature req: break long ones into two msgs - message = self.message[:67] - # We all miss George Carlin - return re.sub("fuck|shit|cunt|piss|cock|bitch", "****", message) - def send(self): tracker = MsgTrack() tracker.add(self) @@ -334,7 +339,7 @@ class TextMessage(Message): cl = client.factory.create().client log_message( "Sending Message Direct", - str(self).rstrip("\n"), + str(self), self.message, tocall=self.tocall, fromcall=self.fromcall, @@ -347,8 +352,8 @@ class TextMessage(Message): class SendMessageThread(threads.APRSDThread): def __init__(self, message): self.msg = message - name = self.msg.message[:5] - super().__init__(f"SendMessage-{self.msg.id}-{name}") + name = self.msg._raw_message[:5] + super().__init__(f"TXPKT-{self.msg.id}-{name}") def loop(self): """Loop until a message is acked or it gets delayed. @@ -395,7 +400,7 @@ class SendMessageThread(threads.APRSDThread): # tracking the time. log_message( "Sending Message", - str(msg).rstrip("\n"), + str(msg), msg.message, tocall=self.msg.tocall, retry_number=msg.last_send_attempt,