mirror of
https://github.com/craigerl/aprsd.git
synced 2024-10-31 15:07:13 -04:00
Update regex processing and regex for plugins
The regex search is now by default case insensitive. Also update each core plugin to better match the command. ping plugin can now match on p p foo ping pIng Weather plugins can now match on w wx wX Wx KM6LYW weather WeaTher
This commit is contained in:
parent
83d2e708eb
commit
3d0bb8ae8e
@ -86,7 +86,6 @@ def server(ctx, flush):
|
|||||||
packets.WatchList().load()
|
packets.WatchList().load()
|
||||||
packets.SeenList().load()
|
packets.SeenList().load()
|
||||||
|
|
||||||
|
|
||||||
rx_thread = rx.APRSDPluginRXThread(
|
rx_thread = rx.APRSDPluginRXThread(
|
||||||
packet_queue=threads.packet_queue,
|
packet_queue=threads.packet_queue,
|
||||||
)
|
)
|
||||||
|
@ -462,7 +462,7 @@ def init_flask(loglevel, quiet):
|
|||||||
|
|
||||||
socketio = SocketIO(
|
socketio = SocketIO(
|
||||||
flask_app, logger=False, engineio_logger=False,
|
flask_app, logger=False, engineio_logger=False,
|
||||||
async_mode="threading",
|
# async_mode="threading",
|
||||||
)
|
)
|
||||||
# import eventlet
|
# import eventlet
|
||||||
# eventlet.monkey_patch()
|
# eventlet.monkey_patch()
|
||||||
|
@ -228,7 +228,7 @@ class APRSDRegexCommandPluginBase(APRSDPluginBase, metaclass=abc.ABCMeta):
|
|||||||
and isinstance(packet, packets.core.MessagePacket)
|
and isinstance(packet, packets.core.MessagePacket)
|
||||||
and message
|
and message
|
||||||
):
|
):
|
||||||
if re.search(self.command_regex, message):
|
if re.search(self.command_regex, message, re.IGNORECASE):
|
||||||
self.rx_inc()
|
self.rx_inc()
|
||||||
try:
|
try:
|
||||||
result = self.process(packet)
|
result = self.process(packet)
|
||||||
@ -262,7 +262,6 @@ class HelpPlugin(APRSDRegexCommandPluginBase):
|
|||||||
This plugin is in this file to prevent a circular import.
|
This plugin is in this file to prevent a circular import.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
version = "1.0"
|
|
||||||
command_regex = "^[hH]"
|
command_regex = "^[hH]"
|
||||||
command_name = "help"
|
command_name = "help"
|
||||||
|
|
||||||
|
@ -76,9 +76,24 @@ class EmailPlugin(plugin.APRSDRegexCommandPluginBase):
|
|||||||
"""Ensure that email is enabled and start the thread."""
|
"""Ensure that email is enabled and start the thread."""
|
||||||
if CONF.email_plugin.enabled:
|
if CONF.email_plugin.enabled:
|
||||||
self.enabled = True
|
self.enabled = True
|
||||||
|
|
||||||
|
if not CONF.email_plugin.callsign:
|
||||||
|
self.enabled = False
|
||||||
|
LOG.error("email_plugin.callsign is not set.")
|
||||||
|
return
|
||||||
|
|
||||||
|
if not CONF.email_plugin.imap_login:
|
||||||
|
LOG.error("email_plugin.imap_login not set. Disabling Plugin")
|
||||||
|
self.enabled = False
|
||||||
|
return
|
||||||
|
|
||||||
|
if not CONF.email_plugin.smtp_login:
|
||||||
|
LOG.error("email_plugin.smtp_login not set. Disabling Plugin")
|
||||||
|
self.enabled = False
|
||||||
|
return
|
||||||
|
|
||||||
shortcuts = _build_shortcuts_dict()
|
shortcuts = _build_shortcuts_dict()
|
||||||
LOG.info(f"Email shortcuts {shortcuts}")
|
LOG.info(f"Email shortcuts {shortcuts}")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
LOG.info("Email services not enabled.")
|
LOG.info("Email services not enabled.")
|
||||||
self.enabled = False
|
self.enabled = False
|
||||||
|
@ -12,7 +12,7 @@ LOG = logging.getLogger("APRSD")
|
|||||||
class FortunePlugin(plugin.APRSDRegexCommandPluginBase):
|
class FortunePlugin(plugin.APRSDRegexCommandPluginBase):
|
||||||
"""Fortune."""
|
"""Fortune."""
|
||||||
|
|
||||||
command_regex = "^[fF]"
|
command_regex = r"^([f]|[f]\s|fortune)"
|
||||||
command_name = "fortune"
|
command_name = "fortune"
|
||||||
short_description = "Give me a fortune"
|
short_description = "Give me a fortune"
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ LOG = logging.getLogger("APRSD")
|
|||||||
class LocationPlugin(plugin.APRSDRegexCommandPluginBase, plugin.APRSFIKEYMixin):
|
class LocationPlugin(plugin.APRSDRegexCommandPluginBase, plugin.APRSFIKEYMixin):
|
||||||
"""Location!"""
|
"""Location!"""
|
||||||
|
|
||||||
command_regex = "^[lL]"
|
command_regex = r"^([l]|[l]\s|location)"
|
||||||
command_name = "location"
|
command_name = "location"
|
||||||
short_description = "Where in the world is a CALLSIGN's last GPS beacon?"
|
short_description = "Where in the world is a CALLSIGN's last GPS beacon?"
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ LOG = logging.getLogger("APRSD")
|
|||||||
class PingPlugin(plugin.APRSDRegexCommandPluginBase):
|
class PingPlugin(plugin.APRSDRegexCommandPluginBase):
|
||||||
"""Ping."""
|
"""Ping."""
|
||||||
|
|
||||||
command_regex = "^[pP]"
|
command_regex = r"^([p]|[p]\s|ping)"
|
||||||
command_name = "ping"
|
command_name = "ping"
|
||||||
short_description = "reply with a Pong!"
|
short_description = "reply with a Pong!"
|
||||||
|
|
||||||
|
@ -16,7 +16,8 @@ LOG = logging.getLogger("APRSD")
|
|||||||
class TimePlugin(plugin.APRSDRegexCommandPluginBase):
|
class TimePlugin(plugin.APRSDRegexCommandPluginBase):
|
||||||
"""Time command."""
|
"""Time command."""
|
||||||
|
|
||||||
command_regex = "^[tT]"
|
# Look for t or t<space> or T<space> or time
|
||||||
|
command_regex = r"^([t]|[t]\s|time)"
|
||||||
command_name = "time"
|
command_name = "time"
|
||||||
short_description = "What is the current local time."
|
short_description = "What is the current local time."
|
||||||
|
|
||||||
@ -54,7 +55,7 @@ class TimePlugin(plugin.APRSDRegexCommandPluginBase):
|
|||||||
class TimeOWMPlugin(TimePlugin, plugin.APRSFIKEYMixin):
|
class TimeOWMPlugin(TimePlugin, plugin.APRSFIKEYMixin):
|
||||||
"""OpenWeatherMap based timezone fetching."""
|
"""OpenWeatherMap based timezone fetching."""
|
||||||
|
|
||||||
command_regex = "^[tT]"
|
command_regex = r"^([t]|[t]\s|time)"
|
||||||
command_name = "time"
|
command_name = "time"
|
||||||
short_description = "Current time of GPS beacon's timezone. Uses OpenWeatherMap"
|
short_description = "Current time of GPS beacon's timezone. Uses OpenWeatherMap"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ LOG = logging.getLogger("APRSD")
|
|||||||
class VersionPlugin(plugin.APRSDRegexCommandPluginBase):
|
class VersionPlugin(plugin.APRSDRegexCommandPluginBase):
|
||||||
"""Version of APRSD Plugin."""
|
"""Version of APRSD Plugin."""
|
||||||
|
|
||||||
command_regex = "^[vV]"
|
command_regex = r"^([v]|[v]\s|version)"
|
||||||
command_name = "version"
|
command_name = "version"
|
||||||
short_description = "What is the APRSD Version"
|
short_description = "What is the APRSD Version"
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ class USWeatherPlugin(plugin.APRSDRegexCommandPluginBase, plugin.APRSFIKEYMixin)
|
|||||||
"weather" - returns weather near the calling callsign
|
"weather" - returns weather near the calling callsign
|
||||||
"""
|
"""
|
||||||
|
|
||||||
command_regex = "^[wW]"
|
command_regex = r"^([w]|[w]\s|[w][x]|[w][x]\s|weather)"
|
||||||
command_name = "USWeather"
|
command_name = "USWeather"
|
||||||
short_description = "Provide USA only weather of GPS Beacon location"
|
short_description = "Provide USA only weather of GPS Beacon location"
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ class USMetarPlugin(plugin.APRSDRegexCommandPluginBase, plugin.APRSFIKEYMixin):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
command_regex = "^[metar]"
|
command_regex = r"^([m]|[m]|[m]\s|metar)"
|
||||||
command_name = "USMetar"
|
command_name = "USMetar"
|
||||||
short_description = "USA only METAR of GPS Beacon location"
|
short_description = "USA only METAR of GPS Beacon location"
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ class OWMWeatherPlugin(plugin.APRSDRegexCommandPluginBase):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
command_regex = "^[wW]"
|
command_regex = r"^([w]|[w]\s|[w][x]|[w][x]\s|weather)"
|
||||||
command_name = "OpenWeatherMap"
|
command_name = "OpenWeatherMap"
|
||||||
short_description = "OpenWeatherMap weather of GPS Beacon location"
|
short_description = "OpenWeatherMap weather of GPS Beacon location"
|
||||||
|
|
||||||
@ -301,7 +301,7 @@ class AVWXWeatherPlugin(plugin.APRSDRegexCommandPluginBase):
|
|||||||
docker build -f Dockerfile -t avwx-api:master .
|
docker build -f Dockerfile -t avwx-api:master .
|
||||||
"""
|
"""
|
||||||
|
|
||||||
command_regex = "^[mM]"
|
command_regex = r"^([m]|[m]|[m]\s|metar)"
|
||||||
command_name = "AVWXWeather"
|
command_name = "AVWXWeather"
|
||||||
short_description = "AVWX weather of GPS Beacon location"
|
short_description = "AVWX weather of GPS Beacon location"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user