NetworkSyslogEnabled and minor network related fixes (#876)

Add `NetworkSyslogEnabled=1` to `minidexed.ini`, increase vebosity, add `syslogserver.py`
pull/871/head^2
probonopd 1 day ago committed by GitHub
parent acf9e11d5f
commit 23a3730d50
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      src/config.cpp
  2. 1
      src/mididevice.cpp
  3. 9
      src/minidexed.cpp
  4. 1
      src/minidexed.ini
  5. 6
      src/net/mdnspublisher.cpp
  6. 8
      submod.sh
  7. 57
      syslogserver.py

@ -209,7 +209,7 @@ void CConfig::Load (void)
m_INetworkIPAddress = m_Properties.GetIPAddress("NetworkIPAddress") != 0;
m_INetworkSubnetMask = m_Properties.GetIPAddress("NetworkSubnetMask") != 0;
m_INetworkDefaultGateway = m_Properties.GetIPAddress("NetworkDefaultGateway") != 0;
m_bSyslogEnabled = m_Properties.GetNumber ("SyslogEnabled", 0) != 0;
m_bSyslogEnabled = m_Properties.GetNumber ("NetworkSyslogEnabled", 0) != 0;
m_INetworkDNSServer = m_Properties.GetIPAddress("NetworkDNSServer") != 0;
const u8 *pSyslogServerIP = m_Properties.GetIPAddress ("NetworkSyslogServerIPAddress");

@ -265,6 +265,7 @@ void CMIDIDevice::MIDIMessageHandler (const u8 *pMessage, size_t nLength, unsign
else
{
// Ignore any other CC messages at this time
LOGNOTE("Ignoring CC %d (%d) on Performance Select Channel %d\n", pMessage[1], pMessage[2], nPerfCh);
}
}
}

@ -2307,6 +2307,7 @@ void CMiniDexed::UpdateNetwork()
if (m_pConfig->GetSyslogEnabled())
{
LOGNOTE ("Syslog server is enabled in configuration");
CIPAddress ServerIP = m_pConfig->GetNetworkSyslogServerIPAddress();
if (ServerIP.IsSet () && !ServerIP.IsNull ())
{
@ -2318,6 +2319,14 @@ void CMiniDexed::UpdateNetwork()
new CSysLogDaemon (m_pNet, ServerIP, usServerPort);
}
else
{
LOGNOTE ("Syslog server IP not set");
}
}
else
{
LOGNOTE ("Syslog server is not enabled in configuration");
}
m_bNetworkReady = true;
}

@ -161,6 +161,7 @@ NetworkIPAddress=0
NetworkSubnetMask=0
NetworkDefaultGateway=0
NetworkDNSServer=0
NetworkSyslogEnabled=1
NetworkSyslogServerIPAddress=0
# Performance

@ -117,10 +117,13 @@ boolean CmDNSPublisher::UnpublishService (const char *pServiceName)
return FALSE;
}
LOGDBG ("Unpublish service %s", (const char *) pService->ServiceName);
SendResponse (pService, FALSE);
/*
if (!SendResponse (pService, TRUE))
{
LOGWARN ("Send failed");
}
*/
for (unsigned i = 0; i < pService->nTextRecords; i++)
{
delete pService->ppText[i];
@ -172,10 +175,13 @@ void CmDNSPublisher::Run (void)
TService *pService =
static_cast<TService *> (CPtrList::GetPtr (pElement));
assert (pService);
SendResponse (pService, FALSE);
/*
if (!SendResponse (pService, FALSE))
{
LOGWARN ("Send failed");
}
*/
pElement = m_ServiceList.GetNext (pElement);
}
m_Mutex.Release ();

@ -2,13 +2,13 @@
set -ex
# Update top-level modules as a baseline
git submodule update --init --recursive
git submodule update --init --recursive -f
# Use fixed master branch of circle-stdlib then re-update
cd circle-stdlib/
git reset --hard
git checkout 1111eee # Matches Circle Step49
git submodule update --init --recursive
git checkout 1111eee -f # Matches Circle Step49
git submodule update --init --recursive -f
cd -
# Optional update submodules explicitly
@ -23,5 +23,5 @@ cd -
# Use fixed master branch of Synth_Dexed
cd Synth_Dexed/
git reset --hard
git checkout c9f5274
git checkout c9f5274 -f
cd -

@ -0,0 +1,57 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Syslog server to receive and display syslog messages from MiniDexed.
"""
import socket
import time
import threading
class SyslogServer:
def __init__(self, host='0.0.0.0', port=8514):
self.host = host
self.port = port
self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.server.bind((self.host, self.port))
self.start_time = None
self.running = True
def start(self):
ip_address = socket.gethostbyname(socket.gethostname())
print(f"Syslog server listening on {ip_address}:{self.port}")
input_thread = threading.Thread(target=self.wait_for_input)
input_thread.daemon = True
input_thread.start()
while self.running:
try:
data, address = self.server.recvfrom(1024)
self.handle_message(data)
except KeyboardInterrupt:
self.running = False
def handle_message(self, data):
message = data[2:].decode('utf-8').strip()
if self.start_time is None:
self.start_time = time.time()
relative_time = "0:00:00.000"
else:
elapsed_time = time.time() - self.start_time
hours = int(elapsed_time // 3600)
minutes = int((elapsed_time % 3600) // 60)
seconds = int(elapsed_time % 60)
milliseconds = int((elapsed_time % 1) * 1000)
relative_time = f"{hours:02d}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}"
print(f"{relative_time} {message}")
def wait_for_input(self):
input("Press any key to exit...")
self.running = False
if __name__ == "__main__":
server = SyslogServer()
server.start()
print("Syslog server stopped.")
Loading…
Cancel
Save