mirror of
https://github.com/g4klx/ircDDBGateway.git
synced 2026-01-20 15:10:18 +01:00
Merge remote-tracking branch 'upstream/master' into openwrt
This commit is contained in:
commit
b310efa1cd
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -8,4 +8,4 @@ Release
|
|||
*.bak
|
||||
.vs
|
||||
*.a
|
||||
|
||||
*.d
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\$(ProjectName)</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,24 @@
|
|||
OBJECTS = APRSParser.o APRSTransmitAppD.o APRSTransmit.o
|
||||
|
||||
.PHONY: all
|
||||
all: aprstransmitd
|
||||
|
||||
aprstransmitd: $(OBJECTS)
|
||||
aprstransmitd: $(OBJECTS) ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o aprstransmitd
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 aprstransmitd $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) aprstransmitd *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
|
||||
|
|
|
|||
|
|
@ -1486,4 +1486,5 @@ Support the GPS data from the Kenwood TH-D74.
|
|||
--------
|
||||
|
||||
Add support for external GPS input for mobile systems.
|
||||
Add audio bypass processing for fast data mode.
|
||||
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@
|
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<PreBuildEvent>
|
||||
|
|
@ -189,6 +193,7 @@
|
|||
<ClCompile Include="IRCDDBGatewayConfig.cpp" />
|
||||
<ClCompile Include="LogEvent.cpp" />
|
||||
<ClCompile Include="Logger.cpp" />
|
||||
<ClCompile Include="NatTraversalHandler.cpp" />
|
||||
<ClCompile Include="PollData.cpp" />
|
||||
<ClCompile Include="RemoteHandler.cpp" />
|
||||
<ClCompile Include="RemoteLinkData.cpp" />
|
||||
|
|
@ -260,6 +265,7 @@
|
|||
<ClInclude Include="IRCDDBGatewayConfig.h" />
|
||||
<ClInclude Include="LogEvent.h" />
|
||||
<ClInclude Include="Logger.h" />
|
||||
<ClInclude Include="NatTraversalHandler.h" />
|
||||
<ClInclude Include="PollData.h" />
|
||||
<ClInclude Include="ReflectorCallback.h" />
|
||||
<ClInclude Include="RemoteHandler.h" />
|
||||
|
|
|
|||
|
|
@ -209,6 +209,9 @@
|
|||
<ClCompile Include="XLXHostsFileDownloader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="NatTraversalHandler.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="AMBEData.h">
|
||||
|
|
@ -433,5 +436,8 @@
|
|||
<ClInclude Include="XLXHostsFileDownloader.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="NatTraversalHandler.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -39,6 +39,8 @@ CCallsignList* CDCSHandler::m_blackList = NULL;
|
|||
|
||||
CDCSHandler::CDCSHandler(IReflectorCallback* handler, const wxString& reflector, const wxString& repeater, CDCSProtocolHandler* protoHandler, const in_addr& address, unsigned int port, DIRECTION direction) :
|
||||
m_reflector(reflector.Clone()),
|
||||
m_xlxReflector(),
|
||||
m_isXlx(false),
|
||||
m_repeater(repeater.Clone()),
|
||||
m_handler(protoHandler),
|
||||
m_yourAddress(address),
|
||||
|
|
@ -78,6 +80,11 @@ m_rptCall2()
|
|||
m_linkState = DCS_LINKED;
|
||||
} else {
|
||||
m_linkState = DCS_LINKING;
|
||||
m_isXlx = m_reflector.StartsWith(wxT("XLX"));
|
||||
if (m_isXlx) {
|
||||
m_xlxReflector = m_reflector.Clone();
|
||||
m_reflector = wxT("DCS") + m_reflector.Right(m_reflector.length() - 3);
|
||||
}
|
||||
m_tryTimer.start();
|
||||
}
|
||||
}
|
||||
|
|
@ -162,10 +169,10 @@ void CDCSHandler::getInfo(IReflectorCallback* handler, CRemoteRepeaterData& data
|
|||
if (reflector->m_destination == handler) {
|
||||
if (reflector->m_direction == DIR_INCOMING && reflector->m_repeater.IsEmpty()) {
|
||||
if (reflector->m_linkState != DCS_UNLINKING)
|
||||
data.addLink(reflector->m_reflector, PROTO_DCS, reflector->m_linkState == DCS_LINKED, DIR_INCOMING, true);
|
||||
data.addLink(GET_DISP_REFLECTOR(reflector), PROTO_DCS, reflector->m_linkState == DCS_LINKED, DIR_INCOMING, true);
|
||||
} else {
|
||||
if (reflector->m_linkState != DCS_UNLINKING)
|
||||
data.addLink(reflector->m_reflector, PROTO_DCS, reflector->m_linkState == DCS_LINKED, reflector->m_direction, false);
|
||||
data.addLink(GET_DISP_REFLECTOR(reflector), PROTO_DCS, reflector->m_linkState == DCS_LINKED, reflector->m_direction, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -634,10 +641,10 @@ bool CDCSHandler::processInt(CConnectData& connect, CD_TYPE type)
|
|||
return false;
|
||||
|
||||
if (m_linkState == DCS_LINKING) {
|
||||
wxLogMessage(wxT("DCS ACK message received from %s"), m_reflector.c_str());
|
||||
wxLogMessage(wxT("DCS ACK message received from %s"), GET_DISP_REFLECTOR(this).c_str());
|
||||
|
||||
if (m_direction == DIR_OUTGOING && m_destination != NULL)
|
||||
m_destination->linkUp(DP_DCS, m_reflector);
|
||||
m_destination->linkUp(DP_DCS, GET_DISP_REFLECTOR(this));
|
||||
|
||||
m_tryTimer.stop();
|
||||
m_stateChange = true;
|
||||
|
|
@ -651,16 +658,16 @@ bool CDCSHandler::processInt(CConnectData& connect, CD_TYPE type)
|
|||
return false;
|
||||
|
||||
if (m_linkState == DCS_LINKING) {
|
||||
wxLogMessage(wxT("DCS NAK message received from %s"), m_reflector.c_str());
|
||||
wxLogMessage(wxT("DCS NAK message received from %s"), GET_DISP_REFLECTOR(this).c_str());
|
||||
|
||||
if (m_direction == DIR_OUTGOING && m_destination != NULL)
|
||||
m_destination->linkRefused(DP_DCS, m_reflector);
|
||||
m_destination->linkRefused(DP_DCS, GET_DISP_REFLECTOR(this));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (m_linkState == DCS_UNLINKING) {
|
||||
wxLogMessage(wxT("DCS NAK message received from %s"), m_reflector.c_str());
|
||||
wxLogMessage(wxT("DCS NAK message received from %s"), GET_DISP_REFLECTOR(this).c_str());
|
||||
|
||||
if (m_direction == DIR_OUTGOING && m_destination != NULL)
|
||||
m_destination->linkFailed(DP_DCS, m_reflector, false);
|
||||
|
|
@ -675,10 +682,10 @@ bool CDCSHandler::processInt(CConnectData& connect, CD_TYPE type)
|
|||
return false;
|
||||
|
||||
if (m_linkState == DCS_LINKED) {
|
||||
wxLogMessage(wxT("DCS disconnect message received from %s"), m_reflector.c_str());
|
||||
wxLogMessage(wxT("DCS disconnect message received from %s"), GET_DISP_REFLECTOR(this).c_str());
|
||||
|
||||
if (m_direction == DIR_OUTGOING && m_destination != NULL)
|
||||
m_destination->linkFailed(DP_DCS, m_reflector, false);
|
||||
m_destination->linkFailed(DP_DCS, GET_DISP_REFLECTOR(this), false);
|
||||
|
||||
m_stateChange = true;
|
||||
}
|
||||
|
|
@ -706,20 +713,20 @@ bool CDCSHandler::clockInt(unsigned int ms)
|
|||
|
||||
switch (m_linkState) {
|
||||
case DCS_LINKING:
|
||||
wxLogMessage(wxT("DCS link to %s has failed to connect"), m_reflector.c_str());
|
||||
wxLogMessage(wxT("DCS link to %s has failed to connect"), GET_DISP_REFLECTOR(this).c_str());
|
||||
break;
|
||||
case DCS_LINKED:
|
||||
wxLogMessage(wxT("DCS link to %s has failed (poll inactivity)"), m_reflector.c_str());
|
||||
wxLogMessage(wxT("DCS link to %s has failed (poll inactivity)"), GET_DISP_REFLECTOR(this).c_str());
|
||||
break;
|
||||
case DCS_UNLINKING:
|
||||
wxLogMessage(wxT("DCS link to %s has failed to disconnect cleanly"), m_reflector.c_str());
|
||||
wxLogMessage(wxT("DCS link to %s has failed to disconnect cleanly"), GET_DISP_REFLECTOR(this).c_str());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_direction == DIR_OUTGOING) {
|
||||
bool reconnect = m_destination->linkFailed(DP_DCS, m_reflector, true);
|
||||
bool reconnect = m_destination->linkFailed(DP_DCS, GET_DISP_REFLECTOR(this), true);
|
||||
if (reconnect) {
|
||||
CConnectData reply(m_gatewayType, m_repeater, m_reflector, CT_LINK1, m_yourAddress, m_yourPort);
|
||||
m_handler->writeConnect(reply);
|
||||
|
|
@ -844,7 +851,7 @@ void CDCSHandler::writeStatus(wxFFile& file)
|
|||
wxString text;
|
||||
text.Printf(wxT("%04d-%02d-%02d %02d:%02d:%02d: DCS link - Type: Repeater Rptr: %s Refl: %s Dir: Outgoing\n"),
|
||||
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec,
|
||||
reflector->m_repeater.c_str(), reflector->m_reflector.c_str());
|
||||
reflector->m_repeater.c_str(), GET_DISP_REFLECTOR(reflector).c_str());
|
||||
file.Write(text);
|
||||
}
|
||||
break;
|
||||
|
|
@ -854,7 +861,7 @@ void CDCSHandler::writeStatus(wxFFile& file)
|
|||
wxString text;
|
||||
text.Printf(wxT("%04d-%02d-%02d %02d:%02d:%02d: DCS link - Type: Repeater Rptr: %s Refl: %s Dir: Incoming\n"),
|
||||
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec,
|
||||
reflector->m_repeater.c_str(), reflector->m_reflector.c_str());
|
||||
reflector->m_repeater.c_str(), GET_DISP_REFLECTOR(reflector).c_str());
|
||||
file.Write(text);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@
|
|||
#include <wx/wx.h>
|
||||
#include <wx/ffile.h>
|
||||
|
||||
#define GET_DISP_REFLECTOR(refl) (refl->m_isXlx ? refl->m_xlxReflector : refl->m_reflector)
|
||||
|
||||
enum DCS_STATE {
|
||||
DCS_LINKING,
|
||||
DCS_LINKED,
|
||||
|
|
@ -109,6 +111,8 @@ private:
|
|||
static CCallsignList* m_blackList;
|
||||
|
||||
wxString m_reflector;
|
||||
wxString m_xlxReflector;
|
||||
bool m_isXlx;
|
||||
wxString m_repeater;
|
||||
CDCSProtocolHandler* m_handler;
|
||||
in_addr m_yourAddress;
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ CDDData* CDDHandler::read()
|
|||
if (m_maxRoutes == 0U)
|
||||
return NULL;
|
||||
|
||||
#if !defined(WIN32)
|
||||
#if defined(__WINDOWS__)
|
||||
return NULL;
|
||||
#else
|
||||
// Check that the read() won't block
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2009-2015 by Jonathan Naylor, G4KLX
|
||||
* Copyright (C) 2009-2015,2018,2019 by Jonathan Naylor, G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -32,8 +32,7 @@ const bool DATA_SYNC_BITS[] = {true, false, true, false, true, false, true,
|
|||
true, false, true, true, false, true, false, false,
|
||||
false, true, true, false, true, false, false, false};
|
||||
|
||||
const unsigned char END_PATTERN_BYTES[] = {0x55, 0x55, 0x55, 0x55, 0xC8, 0x7A,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
const unsigned char END_PATTERN_BYTES[] = {0x55, 0x55, 0x55, 0x55, 0xC8, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
const bool END_PATTERN_BITS[] = {true, false, true, false, true, false, true, false,
|
||||
true, false, true, false, true, false, true, false,
|
||||
true, false, true, false, true, false, true, false,
|
||||
|
|
@ -84,10 +83,14 @@ const unsigned int DATA_BLOCK_SIZE_BYTES = 21U * DV_FRAME_LENGTH_BYTES;
|
|||
const unsigned int LONG_CALLSIGN_LENGTH = 8U;
|
||||
const unsigned int SHORT_CALLSIGN_LENGTH = 4U;
|
||||
|
||||
const unsigned char SLOW_DATA_TYPE_MASK = 0xF0U;
|
||||
const unsigned char SLOW_DATA_TYPE_GPS = 0x30U;
|
||||
const unsigned char SLOW_DATA_TYPE_TEXT = 0x40U;
|
||||
const unsigned char SLOW_DATA_TYPE_HEADER = 0x50U;
|
||||
const unsigned char SLOW_DATA_TYPE_MASK = 0xF0U;
|
||||
const unsigned char SLOW_DATA_TYPE_GPS = 0x30U;
|
||||
const unsigned char SLOW_DATA_TYPE_TEXT = 0x40U;
|
||||
const unsigned char SLOW_DATA_TYPE_HEADER = 0x50U;
|
||||
const unsigned char SLOW_DATA_TYPE_FAST_DATA1 = 0x80U;
|
||||
const unsigned char SLOW_DATA_TYPE_FAST_DATA2 = 0x90U;
|
||||
const unsigned char SLOW_DATA_TYPE_SQUELCH = 0xC0U;
|
||||
const unsigned char SLOW_DATA_LENGTH_MASK = 0x0FU;
|
||||
|
||||
const unsigned char DATA_MASK = 0x80U;
|
||||
const unsigned char REPEATER_MASK = 0x40U;
|
||||
|
|
|
|||
|
|
@ -167,6 +167,8 @@ wxString CDTMF::translate()
|
|||
return processReflector(wxT("XRF"), command.Mid(1U));
|
||||
else if (command.GetChar(0U) == wxT('D'))
|
||||
return processReflector(wxT("DCS"), command.Mid(1U));
|
||||
else if (command.GetChar(0U) == wxT('A'))
|
||||
return processReflector(wxT("XLX"), command.Mid(1U));
|
||||
else
|
||||
return processCCS(command);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,7 +144,8 @@ CAMBEData* CG2ProtocolHandler::readAMBE()
|
|||
return data;
|
||||
}
|
||||
|
||||
void CG2ProtocolHandler::punchUDPHole(const wxString& address)
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
void CG2ProtocolHandler::traverseNat(const wxString& address)
|
||||
{
|
||||
unsigned char buffer[1];
|
||||
::memset(buffer, 0, 1);
|
||||
|
|
@ -155,6 +156,7 @@ void CG2ProtocolHandler::punchUDPHole(const wxString& address)
|
|||
|
||||
m_socket.write(buffer, 1, addr, G2_DV_PORT);
|
||||
}
|
||||
#endif
|
||||
|
||||
void CG2ProtocolHandler::close()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -52,7 +52,9 @@ public:
|
|||
CHeaderData* readHeader();
|
||||
CAMBEData* readAMBE();
|
||||
|
||||
void punchUDPHole(const wxString& addr);
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
void traverseNat(const wxString& addr);
|
||||
#endif
|
||||
|
||||
void close();
|
||||
|
||||
|
|
|
|||
|
|
@ -141,7 +141,6 @@ const wxString KEY_DCS_ENABLED = wxT("dcsEnabled");
|
|||
const wxString KEY_CCS_ENABLED = wxT("ccsEnabled");
|
||||
const wxString KEY_CCS_HOST = wxT("ccsHost");
|
||||
const wxString KEY_XLX_ENABLED = wxT("xlxEnabled");
|
||||
const wxString KEY_XLX_OVERRIDE_LOCAL = wxT("xlxOverrideLocal");
|
||||
const wxString KEY_XLX_HOSTS_FILE_URL = wxT("xlxHostsFileUrl");
|
||||
const wxString KEY_STARNET_BAND1 = wxT("starNetBand1");
|
||||
const wxString KEY_STARNET_CALLSIGN1 = wxT("starNetCallsign1");
|
||||
|
|
@ -267,8 +266,7 @@ const bool DEFAULT_DCS_ENABLED = true;
|
|||
const bool DEFAULT_CCS_ENABLED = true;
|
||||
const wxString DEFAULT_CCS_HOST = wxT("CCS704 ");
|
||||
const bool DEFAULT_XLX_ENABLED = true;
|
||||
const bool DEFAULT_XLX_OVERRIDE_LOCAL = true;
|
||||
const wxString DEFAULT_XLX_HOSTS_FILE_URL = _T("http://xlxapi.rlx.lu/api.php?do=GetReflectorHostname");
|
||||
const wxString DEFAULT_XLX_HOSTS_FILE_URL = wxT("http://xlxapi.rlx.lu/api.php?do=GetXLXDMRMaster");//we use the XLXDMRMaster list because it starts with XLX instead of DCS, XRF etc ....
|
||||
const wxString DEFAULT_STARNET_BAND = wxEmptyString;
|
||||
const wxString DEFAULT_STARNET_CALLSIGN = wxEmptyString;
|
||||
const wxString DEFAULT_STARNET_LOGOFF = wxEmptyString;
|
||||
|
|
@ -422,7 +420,6 @@ m_dcsEnabled(DEFAULT_DCS_ENABLED),
|
|||
m_ccsEnabled(DEFAULT_CCS_ENABLED),
|
||||
m_ccsHost(DEFAULT_CCS_HOST),
|
||||
m_xlxEnabled(DEFAULT_XLX_ENABLED),
|
||||
m_xlxOverrideLocal(DEFAULT_XLX_OVERRIDE_LOCAL),
|
||||
m_xlxHostsFileUrl(DEFAULT_XLX_HOSTS_FILE_URL),
|
||||
m_starNet1Band(DEFAULT_STARNET_BAND),
|
||||
m_starNet1Callsign(DEFAULT_STARNET_CALLSIGN),
|
||||
|
|
@ -761,10 +758,10 @@ m_y(DEFAULT_WINDOW_Y)
|
|||
m_config->Read(m_name + KEY_CCS_HOST, &m_ccsHost, DEFAULT_CCS_HOST);
|
||||
|
||||
m_config->Read(m_name + KEY_XLX_ENABLED, &m_xlxEnabled, DEFAULT_XLX_ENABLED);
|
||||
|
||||
m_config->Read(m_name + KEY_XLX_OVERRIDE_LOCAL, &m_xlxOverrideLocal, DEFAULT_XLX_OVERRIDE_LOCAL);
|
||||
|
||||
|
||||
m_config->Read(m_name + KEY_XLX_HOSTS_FILE_URL, &m_xlxHostsFileUrl, DEFAULT_XLX_HOSTS_FILE_URL);
|
||||
if(m_xlxEnabled && m_xlxHostsFileUrl.Trim().IsEmpty())//To avoid support nightmare, fill the url with the default one when xlx is enabled and the url is left empty
|
||||
m_xlxHostsFileUrl = DEFAULT_XLX_HOSTS_FILE_URL;
|
||||
|
||||
m_config->Read(m_name + KEY_STARNET_BAND1, &m_starNet1Band, DEFAULT_STARNET_BAND);
|
||||
|
||||
|
|
@ -1045,7 +1042,6 @@ m_dcsEnabled(DEFAULT_DCS_ENABLED),
|
|||
m_ccsEnabled(DEFAULT_CCS_ENABLED),
|
||||
m_ccsHost(DEFAULT_CCS_HOST),
|
||||
m_xlxEnabled(DEFAULT_XLX_ENABLED),
|
||||
m_xlxOverrideLocal(DEFAULT_XLX_OVERRIDE_LOCAL),
|
||||
m_xlxHostsFileUrl(DEFAULT_XLX_HOSTS_FILE_URL),
|
||||
m_starNet1Band(DEFAULT_STARNET_BAND),
|
||||
m_starNet1Callsign(DEFAULT_STARNET_CALLSIGN),
|
||||
|
|
@ -1438,10 +1434,7 @@ m_y(DEFAULT_WINDOW_Y)
|
|||
} else if (key.IsSameAs(KEY_XLX_ENABLED)) {
|
||||
val.ToLong(&temp1);
|
||||
m_xlxEnabled = temp1 == 1L;
|
||||
} else if (key.IsSameAs(KEY_XLX_OVERRIDE_LOCAL)) {
|
||||
val.ToLong(&temp1);
|
||||
m_xlxOverrideLocal = temp1 == 1L;
|
||||
} else if (key.IsSameAs(KEY_XLX_HOSTS_FILE_URL)) {
|
||||
} else if (key.IsSameAs(KEY_XLX_HOSTS_FILE_URL) && !val.Trim().IsEmpty()) { //always load default url if the value in the config file is empty
|
||||
m_xlxHostsFileUrl = val;
|
||||
} else if (key.IsSameAs(KEY_STARNET_BAND1)) {
|
||||
m_starNet1Band = val;
|
||||
|
|
@ -1968,17 +1961,15 @@ void CIRCDDBGatewayConfig::setDCS(bool dcsEnabled, bool ccsEnabled, const wxStri
|
|||
m_ccsHost = ccsHost;
|
||||
}
|
||||
|
||||
void CIRCDDBGatewayConfig::getXLX(bool& xlxEnabled, bool& xlxOverrideLocal, wxString& xlxHostsFileUrl)
|
||||
void CIRCDDBGatewayConfig::getXLX(bool& xlxEnabled, wxString& xlxHostsFileUrl)
|
||||
{
|
||||
xlxEnabled = m_xlxEnabled;
|
||||
xlxOverrideLocal = m_xlxOverrideLocal;
|
||||
xlxHostsFileUrl = m_xlxHostsFileUrl;
|
||||
}
|
||||
|
||||
void CIRCDDBGatewayConfig::setXLX(bool xlxEnabled, bool xlxOverrideLocal, wxString xlxHostsFileUrl)
|
||||
void CIRCDDBGatewayConfig::setXLX(bool xlxEnabled, wxString xlxHostsFileUrl)
|
||||
{
|
||||
m_xlxEnabled = xlxEnabled;
|
||||
m_xlxOverrideLocal = xlxOverrideLocal;
|
||||
m_xlxHostsFileUrl = xlxHostsFileUrl;
|
||||
}
|
||||
|
||||
|
|
@ -2419,7 +2410,6 @@ bool CIRCDDBGatewayConfig::write()
|
|||
m_config->Write(m_name + KEY_CCS_ENABLED, m_ccsEnabled);
|
||||
m_config->Write(m_name + KEY_CCS_HOST, m_ccsHost);
|
||||
m_config->Write(m_name + KEY_XLX_ENABLED, m_xlxEnabled);
|
||||
m_config->Write(m_name + KEY_XLX_OVERRIDE_LOCAL, m_xlxOverrideLocal);
|
||||
m_config->Write(m_name + KEY_XLX_HOSTS_FILE_URL, m_xlxHostsFileUrl);
|
||||
m_config->Write(m_name + KEY_STARNET_BAND1, m_starNet1Band);
|
||||
m_config->Write(m_name + KEY_STARNET_CALLSIGN1, m_starNet1Callsign);
|
||||
|
|
@ -2630,7 +2620,6 @@ bool CIRCDDBGatewayConfig::write()
|
|||
buffer.Printf(wxT("%s=%d"), KEY_CCS_ENABLED.c_str(), m_ccsEnabled ? 1 : 0); file.AddLine(buffer);
|
||||
buffer.Printf(wxT("%s=%s"), KEY_CCS_HOST.c_str(), m_ccsHost.c_str()); file.AddLine(buffer);
|
||||
buffer.Printf(wxT("%s=%d"), KEY_XLX_ENABLED.c_str(), m_xlxEnabled ? 1 : 0); file.AddLine(buffer);
|
||||
buffer.Printf(wxT("%s=%d"), KEY_XLX_OVERRIDE_LOCAL.c_str(), m_xlxOverrideLocal ? 1 : 0); file.AddLine(buffer);
|
||||
buffer.Printf(wxT("%s=%s"), KEY_XLX_HOSTS_FILE_URL.c_str(), m_xlxHostsFileUrl.c_str()); file.AddLine(buffer);
|
||||
buffer.Printf(wxT("%s=%s"), KEY_STARNET_BAND1.c_str(), m_starNet1Band.c_str()); file.AddLine(buffer);
|
||||
buffer.Printf(wxT("%s=%s"), KEY_STARNET_CALLSIGN1.c_str(), m_starNet1Callsign.c_str()); file.AddLine(buffer);
|
||||
|
|
|
|||
|
|
@ -71,8 +71,8 @@ public:
|
|||
void getDCS(bool& dcsEnabled, bool& ccsEnabled, wxString& ccsHost) const;
|
||||
void setDCS(bool dcsEnabled, bool ccsEnabled, const wxString& ccsHost);
|
||||
|
||||
void getXLX(bool& xlxEnabled, bool& xlxOverrideLocal, wxString& xlxHostsFileUrl);
|
||||
void setXLX(bool xlxEnabled, bool xlxOverrideLocal, wxString xlxHostsFileUrl);
|
||||
void getXLX(bool& xlxEnabled, wxString& xlxHostsFileUrl);
|
||||
void setXLX(bool xlxEnabled, wxString xlxHostsFileUrl);
|
||||
|
||||
#if defined(DEXTRA_LINK) || defined(DCS_LINK)
|
||||
void getStarNet1(wxString& band, wxString& callsign, wxString& logoff, wxString& info, wxString& permanent, unsigned int& userTimeout, unsigned int& groupTimeout, STARNET_CALLSIGN_SWITCH& callsignSwitch, bool& txMsgSwitch, wxString& reflector) const;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2002,2003,2009,2011,2012 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2002,2003,2009,2011,2012,2019 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -66,11 +66,10 @@ CLogger::~CLogger()
|
|||
delete m_file;
|
||||
}
|
||||
|
||||
void CLogger::DoLog(wxLogLevel level, const wxChar* msg, time_t timestamp)
|
||||
void CLogger::DoLogRecord(wxLogLevel level, const wxString& msg, const wxLogRecordInfo& info)
|
||||
{
|
||||
wxASSERT(m_file != NULL);
|
||||
wxASSERT(m_file->IsOpened());
|
||||
wxASSERT(msg != NULL);
|
||||
|
||||
wxString letter;
|
||||
|
||||
|
|
@ -94,15 +93,15 @@ void CLogger::DoLog(wxLogLevel level, const wxChar* msg, time_t timestamp)
|
|||
}
|
||||
|
||||
wxString message;
|
||||
message.Printf(wxT("%s: %04d-%02d-%02d %02d:%02d:%02d: %s\n"), letter.c_str(), tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, msg);
|
||||
message.Printf(wxT("%s: %04d-%02d-%02d %02d:%02d:%02d: %s\n"), letter.c_str(), tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, msg.c_str());
|
||||
|
||||
DoLogString(message.c_str(), timestamp);
|
||||
writeLog(message.c_str(), info.timestamp);
|
||||
|
||||
if (level == wxLOG_FatalError)
|
||||
::abort();
|
||||
}
|
||||
|
||||
void CLogger::DoLogString(const wxChar* msg, time_t timestamp)
|
||||
void CLogger::writeLog(const wxChar* msg, time_t timestamp)
|
||||
{
|
||||
wxASSERT(m_file != NULL);
|
||||
wxASSERT(m_file->IsOpened());
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2002,2003,2009,2011,2012 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2002,2003,2009,2011,2012,2019 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -28,8 +28,7 @@ public:
|
|||
CLogger(const wxString& directory, const wxString& name);
|
||||
virtual ~CLogger();
|
||||
|
||||
virtual void DoLog(wxLogLevel level, const wxChar* msg, time_t timestamp);
|
||||
virtual void DoLogString(const wxChar* msg, time_t timestamp);
|
||||
virtual void DoLogRecord(wxLogLevel level, const wxString& msg, const wxLogRecordInfo& info);
|
||||
|
||||
virtual void DoLogRecord(wxLogLevel level, const wxString& msg, const wxLogRecordInfo& info);
|
||||
|
||||
|
|
@ -38,6 +37,8 @@ private:
|
|||
wxFFile* m_file;
|
||||
wxFileName m_fileName;
|
||||
int m_day;
|
||||
|
||||
void writeLog(const wxChar* msg, time_t timestamp);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,19 +4,25 @@ OBJECTS = AMBEData.o AnnouncementUnit.o APRSCollector.o APRSWriter.o APRSWriterT
|
|||
DPlusAuthenticator.o DPlusHandler.o DPlusProtocolHandler.o DPlusProtocolHandlerPool.o DRATSServer.o DTMF.o \
|
||||
DummyRepeaterProtocolHandler.o DVTOOLFileReader.o EchoUnit.o G2Handler.o G2ProtocolHandler.o GatewayCache.o \
|
||||
HBRepeaterProtocolHandler.o HeaderData.o HeaderLogger.o HeardData.o HostFile.o IcomRepeaterProtocolHandler.o IRCDDBGatewayConfig.o \
|
||||
LogEvent.o Logger.o PollData.o RemoteHandler.o RemoteLinkData.o RemoteProtocolHandler.o RemoteRepeaterData.o RemoteStarNetGroup.o \
|
||||
LogEvent.o Logger.o NatTraversalHandler.o PollData.o RemoteHandler.o RemoteLinkData.o RemoteProtocolHandler.o RemoteRepeaterData.o RemoteStarNetGroup.o \
|
||||
RemoteStarNetUser.o RepeaterCache.o RepeaterHandler.o SHA256.o SlowDataEncoder.o StarNetHandler.o StatusData.o \
|
||||
TCPReaderWriterClient.o TCPReaderWriterServer.o TextCollector.o TextData.o Timer.o UDPReaderWriter.o UserCache.o Utils.o \
|
||||
VersionUnit.o XLXHostsFileDownloader.o
|
||||
|
||||
.PHONY: all
|
||||
all: Common.a
|
||||
|
||||
Common.a: $(OBJECTS)
|
||||
Common.a: $(OBJECTS) ../ircDDB/IRCDDB.a
|
||||
$(AR) rcs Common.a $(OBJECTS)
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../ircDDB -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../ircDDB $< > $*.d
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) Common.a *.o *.d *.bak *~
|
||||
|
||||
../ircDDB/IRCDDB.a:
|
||||
|
|
|
|||
61
Common/NatTraversalHandler.cpp
Normal file
61
Common/NatTraversalHandler.cpp
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (C) 2010,2011,2012,2013,2014,2015,2016,2017,2018 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
|
||||
#include "NatTraversalHandler.h"
|
||||
|
||||
const unsigned int CACHE_SIZE = 500U;
|
||||
|
||||
CNatTraversalHandler::CNatTraversalHandler() :
|
||||
m_g2cache(CACHE_SIZE),
|
||||
m_g2Handler(NULL)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CNatTraversalHandler::~CNatTraversalHandler()
|
||||
{
|
||||
for (CNatTraversalCache_t::iterator it = m_g2cache.begin(); it != m_g2cache.end(); ++it)
|
||||
delete it->second;
|
||||
}
|
||||
|
||||
void CNatTraversalHandler::setG2Handler(CG2ProtocolHandler * handler)
|
||||
{
|
||||
m_g2Handler = handler;
|
||||
}
|
||||
|
||||
void CNatTraversalHandler::traverseNatG2(const wxString& address)
|
||||
{
|
||||
if(m_g2Handler != NULL){
|
||||
CNatTraversalRecord* record = m_g2cache[address];
|
||||
|
||||
if(record == NULL) {
|
||||
record = new CNatTraversalRecord(address);
|
||||
m_g2cache[address] = record;
|
||||
}
|
||||
|
||||
std::time_t currentTime = std::time(NULL);
|
||||
if(currentTime - record->getTimestamp() > G2_TRAVERSAL_TIMEOUT) {
|
||||
record->setTimestamp(currentTime);
|
||||
m_g2Handler->traverseNat(address);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
80
Common/NatTraversalHandler.h
Normal file
80
Common/NatTraversalHandler.h
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* Copyright (C) 2010,2011,2012,2013,2014,2015,2016,2017,2018 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
#ifndef NatTraversalHandler_H
|
||||
#define NatTraversalHandler_H
|
||||
|
||||
#define G2_TRAVERSAL_TIMEOUT 29 //seconds
|
||||
|
||||
#include "G2ProtocolHandler.h"
|
||||
|
||||
#include <wx/wx.h>
|
||||
#include <ctime>
|
||||
|
||||
enum NAT_TRAVERSAL_TYPE {
|
||||
NTT_G2,
|
||||
//NTT_DEXTRA
|
||||
//NTT_DCS
|
||||
//NTT_DPLUS
|
||||
};
|
||||
|
||||
class CNatTraversalRecord {
|
||||
public:
|
||||
CNatTraversalRecord(const wxString& address) :
|
||||
m_address(address),
|
||||
m_timestamp(0)
|
||||
{
|
||||
}
|
||||
|
||||
std::time_t getTimestamp() const
|
||||
{
|
||||
return m_timestamp;
|
||||
}
|
||||
|
||||
void setTimestamp(std::time_t timestamp)
|
||||
{
|
||||
m_timestamp = timestamp;
|
||||
}
|
||||
|
||||
private:
|
||||
wxString m_address;
|
||||
std::time_t m_timestamp;
|
||||
};
|
||||
|
||||
WX_DECLARE_STRING_HASH_MAP(CNatTraversalRecord*, CNatTraversalCache_t);
|
||||
|
||||
/*
|
||||
* This keeps track of when we UDP punched to one destination so to avoid unnecessary traffic on each ircddb reporting
|
||||
*/
|
||||
class CNatTraversalHandler {
|
||||
public:
|
||||
CNatTraversalHandler();
|
||||
~CNatTraversalHandler();
|
||||
|
||||
void setG2Handler(CG2ProtocolHandler* handler);
|
||||
void traverseNatG2(const wxString& address);
|
||||
|
||||
private:
|
||||
CNatTraversalCache_t m_g2cache;
|
||||
CG2ProtocolHandler* m_g2Handler;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2010-2015 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2010-2015,2018,2019 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -95,6 +95,7 @@ m_flag1(0x00U),
|
|||
m_flag2(0x00U),
|
||||
m_flag3(0x00U),
|
||||
m_restricted(false),
|
||||
m_fastData(false),
|
||||
m_frames(0U),
|
||||
m_silence(0U),
|
||||
m_errors(0U),
|
||||
|
|
@ -582,6 +583,9 @@ void CRepeaterHandler::processRepeater(CHeaderData& header)
|
|||
m_silence = 0U;
|
||||
m_errors = 0U;
|
||||
|
||||
// Assume voice mode
|
||||
m_fastData = false;
|
||||
|
||||
// An RF header resets the reconnect timer
|
||||
m_linkReconnectTimer.start();
|
||||
|
||||
|
|
@ -736,32 +740,42 @@ void CRepeaterHandler::processRepeater(CAMBEData& data)
|
|||
unsigned char buffer[DV_FRAME_MAX_LENGTH_BYTES];
|
||||
data.getData(buffer, DV_FRAME_MAX_LENGTH_BYTES);
|
||||
|
||||
if (::memcmp(buffer, NULL_AMBE_DATA_BYTES, VOICE_FRAME_LENGTH_BYTES) == 0)
|
||||
m_silence++;
|
||||
// Check for the fast data signature
|
||||
if (!m_fastData) {
|
||||
unsigned char slowDataType = (buffer[VOICE_FRAME_LENGTH_BYTES] ^ SCRAMBLER_BYTE1) & SLOW_DATA_TYPE_MASK;
|
||||
if (slowDataType == SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == SLOW_DATA_TYPE_FAST_DATA2)
|
||||
m_fastData = true;
|
||||
}
|
||||
|
||||
// Don't do DTMF decoding or blanking if off and not on crossband either
|
||||
if (m_dtmfEnabled && m_g2Status != G2_XBAND) {
|
||||
bool pressed = m_dtmf.decode(buffer, data.isEnd());
|
||||
if (pressed) {
|
||||
// Replace the DTMF with silence
|
||||
::memcpy(buffer, NULL_AMBE_DATA_BYTES, VOICE_FRAME_LENGTH_BYTES);
|
||||
data.setData(buffer, DV_FRAME_LENGTH_BYTES);
|
||||
}
|
||||
// Don't do AMBE processing when in Fast Data mode
|
||||
if (!m_fastData) {
|
||||
if (::memcmp(buffer, NULL_AMBE_DATA_BYTES, VOICE_FRAME_LENGTH_BYTES) == 0)
|
||||
m_silence++;
|
||||
|
||||
bool dtmfDone = m_dtmf.hasCommand();
|
||||
if (dtmfDone) {
|
||||
wxString command = m_dtmf.translate();
|
||||
// Don't do DTMF decoding or blanking if off and not on crossband either
|
||||
if (m_dtmfEnabled && m_g2Status != G2_XBAND) {
|
||||
bool pressed = m_dtmf.decode(buffer, data.isEnd());
|
||||
if (pressed) {
|
||||
// Replace the DTMF with silence
|
||||
::memcpy(buffer, NULL_AMBE_DATA_BYTES, VOICE_FRAME_LENGTH_BYTES);
|
||||
data.setData(buffer, DV_FRAME_LENGTH_BYTES);
|
||||
}
|
||||
|
||||
// Only process the DTMF command if the your call is CQCQCQ and not a restricted user
|
||||
if (!m_restricted && m_yourCall.Left(4U).IsSameAs(wxT("CQCQ"))) {
|
||||
if (command.IsEmpty()) {
|
||||
// Do nothing
|
||||
} else if (isCCSCommand(command)) {
|
||||
ccsCommandHandler(command, m_myCall1, wxT("DTMF"));
|
||||
} else if (command.IsSameAs(wxT(" I"))) {
|
||||
m_infoNeeded = true;
|
||||
} else {
|
||||
reflectorCommandHandler(command, m_myCall1, wxT("DTMF"));
|
||||
bool dtmfDone = m_dtmf.hasCommand();
|
||||
if (dtmfDone) {
|
||||
wxString command = m_dtmf.translate();
|
||||
|
||||
// Only process the DTMF command if the your call is CQCQCQ and not a restricted user
|
||||
if (!m_restricted && m_yourCall.Left(4U).IsSameAs(wxT("CQCQ"))) {
|
||||
if (command.IsEmpty()) {
|
||||
// Do nothing
|
||||
} else if (isCCSCommand(command)) {
|
||||
ccsCommandHandler(command, m_myCall1, wxT("DTMF"));
|
||||
} else if (command.IsSameAs(wxT(" I"))) {
|
||||
m_infoNeeded = true;
|
||||
} else {
|
||||
reflectorCommandHandler(command, m_myCall1, wxT("DTMF"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2010-2015 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2010-2015,2018 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -208,6 +208,7 @@ private:
|
|||
unsigned char m_flag2;
|
||||
unsigned char m_flag3;
|
||||
bool m_restricted;
|
||||
bool m_fastData;
|
||||
|
||||
// Statistics
|
||||
unsigned int m_frames;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2010-2015,2018 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2010-2015,2018,2019 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -24,9 +24,9 @@
|
|||
const wxString VENDOR_NAME = wxT("G4KLX");
|
||||
|
||||
#if defined(__WXDEBUG__)
|
||||
const wxString VERSION = wxT("20180719 - DEBUG");
|
||||
const wxString VERSION = wxT("20190402 - DEBUG");
|
||||
#else
|
||||
const wxString VERSION = wxT("20180719");
|
||||
const wxString VERSION = wxT("20190402");
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -67,8 +67,8 @@ wxString CXLXHostsFileDownloader::Download(const wxString & xlxHostsFileURL)
|
|||
return wxEmptyString;
|
||||
}
|
||||
|
||||
wxInputStream* in = NULL;
|
||||
if((in = http.GetInputStream(path)) && in->IsOk()) {
|
||||
wxInputStream* in = http.GetInputStream(path);
|
||||
if(in != NULL && in->IsOk()) {
|
||||
wxFile file;
|
||||
wxString xlxHostsFileName = wxFileName::CreateTempFileName(_T("XLX_Hosts_"), &file);
|
||||
wxLogMessage(_T("Created temporary file %s"), xlxHostsFileName);
|
||||
|
|
|
|||
|
|
@ -19,9 +19,13 @@
|
|||
|
||||
#ifndef XLXHostsFileDownloader_H
|
||||
#define XLXHostsFileDownloader_H
|
||||
#define XLX_USE_WGET
|
||||
|
||||
#include <wx/wx.h>
|
||||
|
||||
#if !defined (__WINDOWS__)
|
||||
#define XLX_USE_WGET //for some reason libwx is missing the net stuff on some distros, therefore always use wget if we are not compiling under windows
|
||||
#endif
|
||||
|
||||
class CXLXHostsFileDownloader {
|
||||
public:
|
||||
static wxString Download(const wxString & xlxHostsFileURL);
|
||||
|
|
|
|||
|
|
@ -1,89 +1,104 @@
|
|||
# DCS_Hosts.txt downloaded from http://www.pistar.uk/downloads/DCS_Hosts.txt
|
||||
# DCS Hosts resolved from xreflector.net DNS, with additional hosts
|
||||
# sourced from http://xlxapi.rlx.lu/api.php?do=GetReflectorHostname
|
||||
# Please report issues at https://www.facebook.com/groups/pistar/
|
||||
# File created at Tuesday 10th of July 2018 08:13:04 PM BST
|
||||
# Prepared at ar-dns.net - Sun, 19 May 2019 12:38:05 GMT
|
||||
DCS000 23.111.174.198
|
||||
DCS001 176.10.105.252
|
||||
DCS002 195.225.116.201
|
||||
DCS003 176.10.105.254
|
||||
DCS004 77.243.52.148
|
||||
DCS005 87.117.229.174 L
|
||||
DCS006 24.233.213.165 L
|
||||
DCS007 80.69.86.234
|
||||
DCS008 87.106.84.53
|
||||
DCS009 89.185.97.35
|
||||
DCS010 85.197.129.86 L
|
||||
DCS011 81.95.126.168
|
||||
DCS012 194.38.140.205 L
|
||||
DCS013 195.159.104.200
|
||||
DCS014 52.63.223.130
|
||||
DCS015 213.202.228.119
|
||||
DCS016 75.99.228.34
|
||||
DCS017 81.169.228.115 L
|
||||
DCS018 212.237.50.28
|
||||
DCS019 31.7.247.58
|
||||
DCS020 75.76.90.90
|
||||
DCS021 183.177.205.142
|
||||
DCS022 157.7.142.179
|
||||
DCS023 77.85.192.94
|
||||
DCS024 75.151.47.163
|
||||
DCS025 87.229.30.227
|
||||
DCS026 65.175.188.230
|
||||
DCS027 128.199.57.19
|
||||
DCS028 172.104.63.79 L
|
||||
DCS029 74.210.135.144
|
||||
DCS001 dcs001.xreflector.net
|
||||
DCS002 dcs002.xreflector.net
|
||||
DCS003 dcs003.xreflector.net
|
||||
DCS004 dcs004.xreflector.net
|
||||
DCS005 dcs.bm-dmr.uk
|
||||
DCS006 dcs006.xreflector.net
|
||||
DCS006 146.168.196.187
|
||||
DCS007 dcs007.xreflector.net
|
||||
DCS008 dcs008.xreflector.net
|
||||
DCS009 dcs009.xreflector.net
|
||||
DCS010 85.197.129.86
|
||||
DCS010 dcs010.xreflector.net
|
||||
DCS011 dcs011.xreflector.net
|
||||
DCS012 194.38.140.205
|
||||
DCS012 dcs012.xreflector.net
|
||||
DCS013 dcs013.xreflector.net
|
||||
DCS014 dcs014.xreflector.net
|
||||
DCS015 dcs015.xreflector.net
|
||||
DCS016 dcs016.xreflector.net
|
||||
DCS017 dcs017.xreflector.net
|
||||
DCS018 dcs018.xreflector.net
|
||||
DCS019 dcs019.xreflector.net
|
||||
DCS020 3.208.40.45
|
||||
DCS021 dcs021.xreflector.net
|
||||
DCS022 dcs022.xreflector.net
|
||||
DCS023 dcs023.xreflector.net
|
||||
DCS024 dcs024.xreflector.net
|
||||
DCS025 dcs025.xreflector.net
|
||||
DCS026 dcs026.xreflector.net
|
||||
DCS027 dcs027.xreflector.net
|
||||
DCS028 xlx028.org
|
||||
DCS029 dcs029.xreflector.net
|
||||
DCS030 194.59.177.44
|
||||
DCS032 158.64.26.140
|
||||
DCS033 51.255.35.215
|
||||
DCS032 dcs032.xreflector.net
|
||||
DCS033 dcs033.xreflector.net
|
||||
DCS035 45.79.94.184
|
||||
DCS036 151.12.36.112
|
||||
DCS038 5.249.151.111
|
||||
DCS039 31.14.142.119
|
||||
DCS040 109.71.45.29
|
||||
DCS044 77.243.52.148
|
||||
DCS041 45.62.226.137
|
||||
DCS044 dcs044.xreflector.net
|
||||
DCS045 64.137.172.60
|
||||
DCS046 176.10.140.161
|
||||
DCS047 121.94.194.251
|
||||
DCS047 202.171.147.58
|
||||
DCS049 212.71.234.224
|
||||
DCS050 80.211.155.206
|
||||
DCS051 93.186.254.219
|
||||
DCS052 121.119.96.205
|
||||
DCS053 91.214.62.136
|
||||
DCS052 121.116.69.175
|
||||
DCS053 5.133.99.12
|
||||
DCS054 52.86.180.251
|
||||
DCS055 52.80.4.154
|
||||
DCS057 173.216.181.178
|
||||
DCS058 115.162.207.228
|
||||
DCS057 74.193.217.15
|
||||
DCS058 150.66.16.176
|
||||
DCS059 18.219.32.21
|
||||
DCS060 212.237.36.181
|
||||
DCS061 68.115.205.110
|
||||
DCS062 70.88.145.163
|
||||
DCS061 208.71.169.83
|
||||
DCS062 72.17.20.173
|
||||
DCS064 122.222.1.50
|
||||
DCS066 80.116.203.88
|
||||
DCS066 79.55.195.190
|
||||
DCS067 95.60.130.176
|
||||
DCS068 92.222.145.202
|
||||
DCS069 89.36.214.120
|
||||
DCS071 211.60.41.185
|
||||
DCS072 75.60.237.17
|
||||
DCS073 114.224.6.211
|
||||
DCS074 212.237.211.82
|
||||
DCS075 5.135.162.136
|
||||
DCS076 203.137.116.117
|
||||
DCS077 5.249.151.111
|
||||
DCS078 109.10.128.221
|
||||
DCS079 184.23.183.98
|
||||
DCS080 121.85.175.69
|
||||
DCS081 121.84.13.151
|
||||
DCS085 27.92.11.123
|
||||
DCS086 220.133.89.28
|
||||
DCS077 216.21.9.156
|
||||
DCS078 109.15.57.11
|
||||
DCS079 121.162.91.31
|
||||
DCS080 121.81.128.207
|
||||
DCS081 121.82.151.243
|
||||
DCS082 110.232.113.108
|
||||
DCS083 185.205.210.217
|
||||
DCS084 45.79.93.167
|
||||
DCS085 113.150.26.8
|
||||
DCS086 52.80.139.252
|
||||
DCS087 44.137.36.209
|
||||
DCS088 194.109.192.235
|
||||
DCS089 194.109.192.236
|
||||
DCS090 91.92.136.252
|
||||
DCS092 212.237.30.36
|
||||
DCS092 104.200.25.53
|
||||
DCS093 185.177.59.221
|
||||
DCS095 203.137.76.53
|
||||
DCS098 111.169.16.250
|
||||
DCS097 80.211.154.173
|
||||
DCS098 203.136.233.165
|
||||
DCS099 80.211.27.75
|
||||
DCS101 45.62.213.101
|
||||
DCS100 45.62.234.223
|
||||
DCS101 64.137.236.164
|
||||
DCS102 23.111.174.196
|
||||
DCS103 64.137.224.126
|
||||
DCS104 23.111.174.197
|
||||
DCS105 51.254.99.78
|
||||
DCS109 182.168.101.180
|
||||
DCS109 115.179.53.132
|
||||
DCS110 150.7.164.10
|
||||
DCS111 61.195.96.160
|
||||
DCS112 94.177.235.81
|
||||
DCS113 151.12.36.103
|
||||
DCS114 5.135.188.16
|
||||
DCS115 217.182.128.3
|
||||
|
|
@ -92,23 +107,37 @@ DCS118 5.249.148.252
|
|||
DCS119 125.129.207.86
|
||||
DCS120 81.150.10.63
|
||||
DCS121 174.37.249.156
|
||||
DCS122 83.137.45.100
|
||||
DCS122 83.137.45.126
|
||||
DCS124 211.14.169.234
|
||||
DCS125 213.181.208.52
|
||||
DCS129 219.116.28.227
|
||||
DCS127 190.112.228.107
|
||||
DCS128 153.248.144.11
|
||||
DCS129 111.64.166.200
|
||||
DCS130 194.59.177.45
|
||||
DCS131 80.127.118.226
|
||||
DCS132 91.203.55.87
|
||||
DCS134 159.89.176.86
|
||||
DCS135 74.208.214.69
|
||||
DCS140 95.211.211.145
|
||||
DCS142 44.168.48.8
|
||||
DCS145 178.59.23.138
|
||||
DCS146 213.7.197.202
|
||||
DCS147 46.41.1.127
|
||||
DCS150 80.211.10.212
|
||||
DCS153 210.189.104.236
|
||||
DCS155 18.235.96.93
|
||||
DCS158 150.66.16.176
|
||||
DCS160 61.195.109.179
|
||||
DCS170 210.178.113.173
|
||||
DCS171 121.162.91.45
|
||||
DCS171 210.178.113.123
|
||||
DCS175 162.248.92.25
|
||||
DCS180 192.241.240.7
|
||||
DCS185 89.106.108.151
|
||||
DCS190 190.194.12.53
|
||||
DCS199 153.126.179.214
|
||||
DCS200 185.203.119.158
|
||||
DCS202 148.251.122.251
|
||||
DCS204 185.85.18.162
|
||||
DCS204 85.214.126.111
|
||||
DCS206 193.190.240.227
|
||||
DCS208 151.80.155.39
|
||||
DCS210 64.137.224.107
|
||||
|
|
@ -119,8 +148,9 @@ DCS216 74.214.25.135
|
|||
DCS220 124.41.83.11
|
||||
DCS222 212.43.96.84
|
||||
DCS224 203.137.99.97
|
||||
DCS226 94.176.6.37
|
||||
DCS228 188.60.43.206
|
||||
DCS226 2.226.183.226
|
||||
DCS227 89.33.44.100
|
||||
DCS228 85.6.171.146
|
||||
DCS229 194.191.4.54
|
||||
DCS230 80.250.3.114
|
||||
DCS232 89.185.97.35
|
||||
|
|
@ -129,188 +159,309 @@ DCS238 172.104.239.219
|
|||
DCS241 151.80.158.227
|
||||
DCS242 73.14.84.43
|
||||
DCS246 172.93.48.159
|
||||
DCS255 142.91.158.199
|
||||
DCS257 47.157.82.87
|
||||
DCS258 75.60.237.19
|
||||
DCS261 44.144.0.23
|
||||
DCS262 87.139.70.67
|
||||
DCS263 85.214.193.146
|
||||
DCS264 52.2.131.118
|
||||
DCS265 212.237.51.82
|
||||
DCS266 212.237.51.82
|
||||
DCS268 194.38.140.204
|
||||
DCS270 158.64.26.132
|
||||
DCS272 177.194.25.234
|
||||
DCS274 75.115.207.48
|
||||
DCS280 87.19.134.242
|
||||
DCS282 210.188.25.17
|
||||
DCS284 95.158.165.32
|
||||
DCS290 94.176.6.45
|
||||
DCS285 91.92.93.15
|
||||
DCS287 43.245.172.2
|
||||
DCS288 121.75.75.200
|
||||
DCS290 44.182.7.20
|
||||
DCS291 101.143.242.189
|
||||
DCS295 64.137.160.185
|
||||
DCS298 119.238.135.207
|
||||
DCS299 125.236.227.43
|
||||
DCS300 45.62.244.43
|
||||
DCS295 45.62.224.93
|
||||
DCS298 122.131.152.80
|
||||
DCS299 203.86.194.92
|
||||
DCS300 45.62.247.43
|
||||
DCS302 144.217.241.23
|
||||
DCS303 75.70.52.143
|
||||
DCS305 145.239.116.57
|
||||
DCS307 72.21.76.154
|
||||
DCS310 52.11.207.121
|
||||
DCS311 46.41.0.214
|
||||
DCS312 192.241.160.183
|
||||
DCS313 34.213.108.164
|
||||
DCS315 65.101.7.50
|
||||
DCS317 44.48.8.15
|
||||
DCS321 31.207.110.45
|
||||
DCS328 212.237.33.114
|
||||
DCS329 114.181.139.32
|
||||
DCS330 18.222.199.205
|
||||
DCS332 188.213.168.99
|
||||
DCS333 194.116.29.73
|
||||
DCS334 96.47.95.121
|
||||
DCS335 185.206.145.2
|
||||
DCS336 23.226.233.133
|
||||
DCS338 122.116.216.47
|
||||
DCS339 198.98.53.247
|
||||
DCS345 45.62.237.34
|
||||
DCS357 52.39.82.54
|
||||
DCS352 35.230.162.146
|
||||
DCS357 93.152.167.4
|
||||
DCS358 93.152.167.4
|
||||
DCS359 94.156.172.213
|
||||
DCS360 222.229.25.105
|
||||
DCS364 159.65.231.53
|
||||
DCS365 59.139.141.204
|
||||
DCS367 xrf367.ad6dm.net
|
||||
DCS367 18.216.66.72
|
||||
DCS370 188.213.168.24
|
||||
DCS371 212.237.8.77
|
||||
DCS373 101.143.25.116
|
||||
DCS373 119.229.134.1
|
||||
DCS374 61.195.108.146
|
||||
DCS376 75.145.119.225
|
||||
DCS377 186.159.96.100
|
||||
DCS379 104.218.36.162
|
||||
DCS380 160.16.65.39
|
||||
DCS382 211.131.185.61
|
||||
DCS382 211.131.3.119
|
||||
DCS388 138.197.67.52
|
||||
DCS389 106.70.187.224
|
||||
DCS389 106.71.212.36
|
||||
DCS389 xlxdmr.duckdns.org
|
||||
DCS390 149.7.214.253
|
||||
DCS393 139.91.200.186
|
||||
DCS395 5.249.151.111
|
||||
DCS398 45.62.243.153
|
||||
DCS399 185.227.110.247
|
||||
DCS400 13.58.192.185
|
||||
DCS404 91.229.143.187
|
||||
DCS410 166.78.156.246
|
||||
DCS410 166.78.145.146
|
||||
DCS411 82.171.119.45
|
||||
DCS412 61.195.107.113
|
||||
DCS420 174.138.113.116
|
||||
DCS421 118.189.181.236
|
||||
DCS431 61.195.98.225
|
||||
DCS433 217.160.22.17
|
||||
DCS434 51.254.128.134
|
||||
DCS440 114.161.161.90
|
||||
DCS438 80.211.189.236
|
||||
DCS440 153.176.140.229
|
||||
DCS441 203.137.99.110
|
||||
DCS444 188.68.37.51
|
||||
DCS449 159.89.183.117
|
||||
DCS450 64.137.224.233
|
||||
DCS454 221.125.255.216
|
||||
DCS454 218.250.250.21
|
||||
DCS455 208.71.169.83
|
||||
DCS456 xrf456.de
|
||||
DCS456 54.37.204.187
|
||||
DCS460 183.53.66.145
|
||||
DCS464 52.192.129.174
|
||||
DCS470 104.49.29.243
|
||||
DCS477 139.162.213.89
|
||||
DCS479 198.58.106.10
|
||||
DCS486 51.255.172.249
|
||||
DCS487 93.66.214.109
|
||||
DCS499 203.137.76.22
|
||||
DCS500 172.104.32.192
|
||||
DCS500 58.96.21.253
|
||||
DCS501 198.211.98.63
|
||||
DCS502 190.148.222.28
|
||||
DCS505 110.141.219.161
|
||||
DCS505 45.248.50.37
|
||||
DCS506 121.200.19.211
|
||||
DCS508 185.188.4.15
|
||||
DCS511 84.52.159.10
|
||||
DCS515 133.130.114.45
|
||||
DCS510 110.141.219.161
|
||||
DCS511 213.172.232.13
|
||||
DCS515 203.137.78.35
|
||||
DCS518 176.9.1.168
|
||||
DCS519 167.114.104.65
|
||||
DCS520 119.59.125.192
|
||||
DCS519 149.56.165.76
|
||||
DCS520 xlx.dtdxa.com
|
||||
DCS521 150.129.184.54
|
||||
DCS522 14.102.146.160
|
||||
DCS525 176.65.95.90
|
||||
DCS538 133.218.172.211
|
||||
DCS544 210.131.32.240
|
||||
DCS550 94.177.240.69
|
||||
DCS523 175.142.199.32
|
||||
DCS525 80.211.68.38
|
||||
DCS530 116.251.193.99
|
||||
DCS534 208.71.169.83
|
||||
DCS538 131.129.217.94
|
||||
DCS544 202.218.152.66
|
||||
DCS550 89.36.222.146
|
||||
DCS551 140.227.198.45
|
||||
DCS553 45.79.92.86
|
||||
DCS554 52.35.183.178
|
||||
DCS555 64.137.186.11
|
||||
DCS555 xlx555.dtdxa.com
|
||||
DCS567 212.91.156.69
|
||||
DCS569 203.137.111.98
|
||||
DCS583 116.70.242.224
|
||||
DCS595 175.179.56.111
|
||||
DCS570 172.104.13.31
|
||||
DCS573 216.189.148.204
|
||||
DCS583 116.70.240.104
|
||||
DCS587 68.32.126.21
|
||||
DCS595 220.146.24.34
|
||||
DCS599 203.137.118.190
|
||||
DCS600 13.69.14.204
|
||||
DCS601 51.141.52.193
|
||||
DCS602 212.56.100.200
|
||||
DCS603 216.10.169.35
|
||||
DCS603 216.246.155.99
|
||||
DCS604 139.162.241.24
|
||||
DCS605 183.76.179.238
|
||||
DCS608 219.122.253.83
|
||||
DCS609 219.122.253.83
|
||||
DCS610 89.186.80.81
|
||||
DCS626 202.137.244.157
|
||||
DCS634 61.199.25.130
|
||||
DCS613 198.50.202.39
|
||||
DCS619 167.99.168.82
|
||||
DCS626 45.77.234.162
|
||||
DCS627 121.75.75.200
|
||||
DCS630 61.195.125.81
|
||||
DCS634 222.148.104.64
|
||||
DCS647 217.182.168.54
|
||||
DCS651 198.96.90.144
|
||||
DCS655 146.64.235.19
|
||||
DCS666 54.144.216.63
|
||||
DCS666 86.153.215.35
|
||||
DCS672 180.27.223.252
|
||||
DCS673 180.147.243.178
|
||||
DCS684 212.237.17.83
|
||||
DCS689 97.107.128.47
|
||||
DCS698 85.197.129.86
|
||||
DCS695 155.254.33.145
|
||||
DCS698 203.137.123.89
|
||||
DCS699 82.102.5.239
|
||||
DCS700 78.47.222.93
|
||||
DCS700 2.29.27.21
|
||||
DCS701 61.195.107.77
|
||||
DCS703 61.195.98.254
|
||||
DCS704 150.66.34.110
|
||||
DCS706 93.186.255.126
|
||||
DCS707 90.145.156.196
|
||||
DCS708 202.218.37.62
|
||||
DCS708 150.66.20.222
|
||||
DCS709 212.237.34.32
|
||||
DCS711 212.237.18.27
|
||||
DCS712 180.11.74.19
|
||||
DCS714 85.214.119.76
|
||||
DCS712 153.215.181.34
|
||||
DCS713 218.251.63.99
|
||||
DCS714 81.169.140.163
|
||||
DCS717 44.137.70.100
|
||||
DCS722 80.211.2.161
|
||||
DCS724 66.55.64.14
|
||||
DCS730 186.64.123.59
|
||||
DCS723 45.33.118.112
|
||||
DCS724 xlx.dvbrazil.com.br
|
||||
DCS724 75.99.228.35
|
||||
DCS725 172.245.9.180
|
||||
DCS730 190.14.50.165
|
||||
DCS732 190.159.68.105
|
||||
DCS733 45.56.117.158
|
||||
DCS734 181.208.254.236
|
||||
DCS735 104.131.81.32
|
||||
DCS737 195.130.75.246
|
||||
DCS740 173.208.200.180
|
||||
DCS738 210.171.151.238
|
||||
DCS740 104.167.114.230
|
||||
DCS741 203.137.78.41
|
||||
DCS746 178.254.34.44
|
||||
DCS747 87.147.133.4
|
||||
DCS747 93.209.44.227
|
||||
DCS748 64.137.197.36
|
||||
DCS749 45.77.102.203
|
||||
DCS750 203.86.206.49
|
||||
DCS751 203.118.145.79
|
||||
DCS752 66.154.105.195
|
||||
DCS755 178.22.148.229
|
||||
DCS757 43.229.63.42
|
||||
DCS762 129.21.36.65
|
||||
DCS766 201.62.48.61
|
||||
DCS773 94.177.175.230
|
||||
DCS768 80.211.199.231
|
||||
DCS770 153.126.173.9
|
||||
DCS773 89.46.75.166
|
||||
DCS775 149.202.61.17
|
||||
DCS776 218.221.163.75
|
||||
DCS776 182.168.37.205
|
||||
DCS777 194.182.66.76
|
||||
DCS781 101.143.242.199
|
||||
DCS782 153.221.123.92
|
||||
DCS787 46.41.1.96
|
||||
DCS788 192.168.0.96
|
||||
DCS789 45.33.119.142
|
||||
DCS794 101.143.242.95
|
||||
DCS800 87.252.188.119
|
||||
DCS801 213.47.71.17
|
||||
DCS803 77.117.38.125
|
||||
DCS806 92.105.198.59
|
||||
DCS803 77.117.21.251
|
||||
DCS806 92.107.25.23
|
||||
DCS807 153.167.124.196
|
||||
DCS808 18.220.252.27
|
||||
DCS810 64.137.238.189
|
||||
DCS809 78.46.11.69
|
||||
DCS810 71.41.121.228
|
||||
DCS811 64.137.238.189
|
||||
DCS812 203.145.233.141
|
||||
DCS813 97.76.81.165
|
||||
DCS817 18.235.96.93
|
||||
DCS818 120.79.155.116
|
||||
DCS825 51.75.252.197
|
||||
DCS828 195.225.116.244
|
||||
DCS833 78.226.112.146
|
||||
DCS844 137.226.79.122
|
||||
DCS847 162.243.4.29
|
||||
DCS850 88.198.94.77
|
||||
DCS860 80.81.9.242
|
||||
DCS852 42.2.140.44
|
||||
DCS858 54.227.203.214
|
||||
DCS859 54.227.203.214
|
||||
DCS860 24.134.86.93
|
||||
DCS861 66.175.218.63
|
||||
DCS865 45.32.212.226
|
||||
DCS866 93.233.182.237
|
||||
DCS867 51.254.115.5
|
||||
DCS870 103.3.234.95
|
||||
DCS871 182.245.190.200
|
||||
DCS878 203.137.123.113
|
||||
DCS883 153.185.38.99
|
||||
DCS880 176.10.105.211
|
||||
DCS883 153.179.224.224
|
||||
DCS886 118.163.103.178
|
||||
DCS887 118.163.103.177
|
||||
DCS888 95.239.164.147
|
||||
DCS893 103.235.127.147
|
||||
DCS888 46.18.142.169
|
||||
DCS889 130.149.36.93
|
||||
DCS893 104.223.59.212
|
||||
DCS897 212.237.2.183
|
||||
DCS900 94.177.237.192
|
||||
DCS903 80.211.29.226
|
||||
DCS904 211.14.169.215
|
||||
DCS906 212.237.11.53
|
||||
DCS907 88.11.249.48
|
||||
DCS907 176.84.63.187
|
||||
DCS908 92.222.23.124
|
||||
DCS909 216.86.147.198
|
||||
DCS910 94.177.207.26
|
||||
DCS911 5.196.73.89
|
||||
DCS911 xlx911.patrweb.com
|
||||
DCS912 80.211.1.143
|
||||
DCS915 72.28.30.93
|
||||
DCS919 80.211.232.174
|
||||
DCS920 81.150.10.62
|
||||
DCS921 44.143.184.83
|
||||
DCS922 81.150.10.62
|
||||
DCS925 90.255.232.101
|
||||
DCS929 158.69.166.132
|
||||
DCS930 94.177.160.5
|
||||
DCS931 71.120.181.98
|
||||
DCS931 68.131.30.206
|
||||
DCS933 164.132.104.167
|
||||
DCS935 188.213.166.199
|
||||
DCS940 202.218.37.121
|
||||
DCS944 202.218.34.210
|
||||
DCS945 155.94.147.186
|
||||
DCS945 213.202.229.40
|
||||
DCS946 212.227.174.45
|
||||
DCS950 158.64.26.134
|
||||
DCS951 18.188.166.109
|
||||
DCS956 192.99.245.120
|
||||
DCS959 203.137.98.121
|
||||
DCS964 52.173.142.244
|
||||
DCS972 46.121.158.50
|
||||
DCS965 47.23.66.19
|
||||
DCS966 203.150.19.24
|
||||
DCS967 95.158.165.32
|
||||
DCS969 142.93.46.36
|
||||
DCS970 157.7.221.186
|
||||
DCS972 109.226.48.53
|
||||
DCS973 211.14.169.43
|
||||
DCS974 94.177.217.52
|
||||
DCS975 176.31.161.9
|
||||
DCS986 81.89.102.160
|
||||
DCS976 212.237.36.71
|
||||
DCS979 217.162.36.91
|
||||
DCS980 80.211.84.249
|
||||
DCS986 194.59.205.218
|
||||
DCS987 185.32.183.148
|
||||
DCS988 80.211.236.189
|
||||
DCS989 50.27.131.75
|
||||
DCS990 35.164.237.63
|
||||
DCS991 2.237.27.66
|
||||
DCS995 158.69.201.255
|
||||
DCS991 80.211.19.121
|
||||
DCS992 149.28.243.165
|
||||
DCS993 97.64.20.63
|
||||
DCS994 35.177.233.106
|
||||
DCS995 118.27.30.92
|
||||
DCS996 47.104.177.248
|
||||
DCS997 94.177.187.40
|
||||
DCS998 44.140.236.20
|
||||
DCS999 94.177.173.53
|
||||
DSC034 dcs034.xreflector.net
|
||||
# EOF - Sun, 19 May 2019 12:38:05 GMT
|
||||
|
|
|
|||
|
|
@ -1,374 +1,747 @@
|
|||
# Prepared at ar-dns.net - Sun, 19 May 2019 12:35:55 GMT
|
||||
XRF000 23.111.174.198
|
||||
XRF000 000.xreflector.org
|
||||
XRF001 77.57.24.143
|
||||
XRF001 xlx001.homepc.it
|
||||
XRF002 140.82.62.162
|
||||
XRF002 xrf002.dstar.club
|
||||
XRF003 173.199.124.183
|
||||
XRF003 xlx003.xrefl.net
|
||||
XRF004 44.103.34.3
|
||||
XRF004 xrf004.kb8zgl.net
|
||||
XRF005 216.16.240.236
|
||||
XRF005 50.116.62.225
|
||||
XRF005 ve3tnk.homelinux.net
|
||||
XRF006 34.213.176.201
|
||||
XRF006 xrf006.xrefl.net
|
||||
XRF007 82.223.18.138
|
||||
XRF008 xrf008.kingsofdigital.net
|
||||
XRF009 www.hamtalk.net
|
||||
XRF007 82.223.18.138
|
||||
XRF008 45.77.153.132
|
||||
XRF008 xrf008.kingsofdigital.net
|
||||
XRF009 118.150.164.96
|
||||
XRF009 www.hamtalk.net
|
||||
XRF010 85.197.129.86
|
||||
XRF010 xlx010.n8qq.com
|
||||
XRF011 81.95.126.168
|
||||
XRF012 xrf012.papasys.com
|
||||
XRF011 xlx011.warn.org
|
||||
XRF012 52.26.161.5
|
||||
XRF012 xrf012.papasys.com
|
||||
XRF013 34.213.176.201
|
||||
XRF013 xrf013.perform2themax.com
|
||||
XRF014 xrf014.iz0rin.it
|
||||
XRF015 213.202.228.119
|
||||
XRF015 194.59.205.228
|
||||
XRF015 xrf015.theapplecore.me
|
||||
XRF016 xrf016.ampr.at
|
||||
XRF017 92.177.212.64
|
||||
XRF018 99.167.129.166
|
||||
XRF019 46.28.108.233
|
||||
XRF020 xlx020.iz7auh.net
|
||||
XRF021 44.103.32.250
|
||||
XRF022 xrf022.tms-it.net
|
||||
XRF023 xlx023.dtdns.net
|
||||
XRF024 xrf024.dstar.at
|
||||
XRF018 flatcap.badweather.net
|
||||
XRF019 46.28.108.233
|
||||
XRF019 xlx019.ok2it.com
|
||||
XRF020 xrf020.k2dls.net
|
||||
XRF021 44.103.34.4
|
||||
XRF022 83.137.45.98
|
||||
XRF022 xrf022.tms-it.net
|
||||
XRF023 185.177.59.166
|
||||
XRF023 xlx023.dtdns.net
|
||||
XRF024 94.199.173.123
|
||||
XRF024 xrf024.dstar.at
|
||||
XRF025 89.38.150.252
|
||||
XRF025 025.ham-digital.es
|
||||
XRF026 65.175.188.230
|
||||
XRF027 194.116.29.78
|
||||
XRF028 stn028.dstar.be
|
||||
XRF027 194.116.29.78
|
||||
XRF028 172.104.63.79
|
||||
XRF028 stn028.dstar.be
|
||||
XRF029 80.123.238.76
|
||||
XRF030 xrf030.oe3xht.at
|
||||
XRF029 xrf029.tms-it.net
|
||||
XRF030 194.59.177.44
|
||||
XRF030 xrf030.oe3xht.at
|
||||
XRF031 83.241.141.245
|
||||
XRF031 xlx031.ddns.net
|
||||
XRF032 158.64.26.140
|
||||
XRF032 xlx032.epf.lu
|
||||
XRF033 46.226.178.81
|
||||
XRF035 xrf035.wa7dre.org
|
||||
XRF036 xlx036.macasoft.it
|
||||
XRF033 46.226.178.81
|
||||
XRF034 xrf034.dynu.net
|
||||
XRF035 45.79.94.184
|
||||
XRF035 xrf035.wa7dre.org
|
||||
XRF036 151.12.36.112
|
||||
XRF036 xlx036.macasoft.it
|
||||
XRF037 185.58.193.163
|
||||
XRF038 66.6.171.228
|
||||
XRF038 44.103.34.19
|
||||
XRF039 31.14.142.119
|
||||
XRF040 109.71.45.29
|
||||
XRF040 xrf040.dyndns.org
|
||||
XRF041 167.88.37.80
|
||||
XRF041 167.88.37.80
|
||||
XRF042 xrf042.luthienstar.fr
|
||||
XRF044 82.1.185.173
|
||||
XRF043 xrf043.aotnet.it
|
||||
XRF044 82.1.185.173
|
||||
XRF045 45.62.233.223
|
||||
XRF046 176.10.140.161
|
||||
XRF046 xlx.c4fm.se
|
||||
XRF047 xlx047.ddns.net
|
||||
XRF047 202.171.147.58
|
||||
XRF047 xlx047.ddns.net
|
||||
XRF048 xrf048.n5uxt.org
|
||||
XRF049 212.71.234.224
|
||||
XRF050 dstar.emcomspain.xreflector.es
|
||||
XRF049 212.71.234.224
|
||||
XRF050 80.211.155.206
|
||||
XRF050 dstar.emcomspain.xreflector.es
|
||||
XRF051 93.186.254.219
|
||||
XRF052 xrf052.dip.jp
|
||||
XRF052 121.119.96.205
|
||||
XRF052 xrf052.dip.jp
|
||||
XRF053 185.97.120.120
|
||||
XRF053 xlx.grvdc.eu
|
||||
XRF054 52.86.180.251
|
||||
XRF054 xrf054.metro-uhf.org
|
||||
XRF055 52.80.4.154
|
||||
XRF055 dstar.zzux.com
|
||||
XRF056 xrf056.homepc.it
|
||||
XRF057 74.193.217.15
|
||||
XRF057 xlx057.ddns.net
|
||||
XRF058 xrf058.dip.jp
|
||||
XRF058 133.208.235.3
|
||||
XRF058 xrf058.dip.jp
|
||||
XRF059 18.219.32.21
|
||||
XRF060 212.237.36.181
|
||||
XRF060 212.237.36.181
|
||||
XRF061 68.115.205.110
|
||||
XRF062 72.17.20.173
|
||||
XRF062 xlx.maryland-dstar.net
|
||||
XRF063 162.248.141.148
|
||||
XRF064 122.222.1.50
|
||||
XRF064 xrf064.owari.biz
|
||||
XRF065 212.237.53.67
|
||||
XRF065 212.237.53.67
|
||||
XRF066 87.7.192.18
|
||||
XRF066 xlx066.homepc.it
|
||||
XRF067 95.60.130.176
|
||||
XRF067 xrf067.f5kav.org
|
||||
XRF068 92.222.145.202
|
||||
XRF068 xrf068.ircddb.it
|
||||
XRF070 xrf070.iptime.org
|
||||
XRF069 xrf069.sustrai.org
|
||||
XRF070 xrf070.iptime.org
|
||||
XRF071 211.60.41.185
|
||||
XRF071 xrf.elechomebrew.com
|
||||
XRF073 147.102.7.34
|
||||
XRF072 75.60.237.17
|
||||
XRF072 xrf072.dv.or.kr
|
||||
XRF073 147.102.7.34
|
||||
XRF074 212.237.211.82
|
||||
XRF074 xrf074.dyndns.org
|
||||
XRF075 5.135.162.136
|
||||
XRF075 xrf075.ir9bs.it
|
||||
XRF076 203.137.116.117
|
||||
XRF076 xrf076.xreflector-jp.org
|
||||
XRF077 xrf077.duckdns.org
|
||||
XRF078 xlx.grvdc.eu
|
||||
XRF079 xlx079.dvham.com
|
||||
XRF077 216.21.9.156
|
||||
XRF077 xrf077.duckdns.org
|
||||
XRF078 109.15.57.11
|
||||
XRF078 xlx.grvdc.eu
|
||||
XRF079 184.23.183.98
|
||||
XRF079 xlx079.dvham.com
|
||||
XRF080 121.81.128.207
|
||||
XRF080 jr3vh.dip.jp
|
||||
XRF081 121.82.151.243
|
||||
XRF081 jr3vh.dip.jp
|
||||
XRF082 110.232.113.108
|
||||
XRF082 xlx082.pungsan.com
|
||||
XRF083 185.205.210.217
|
||||
XRF083 xlx083.pungsan.com
|
||||
XRF084 45.79.93.167
|
||||
XRF085 113.150.26.8
|
||||
XRF085 jr1ofp.dip.jp
|
||||
XRF086 52.80.139.252
|
||||
XRF087 44.137.36.209
|
||||
XRF088 194.109.192.235
|
||||
XRF088 xrf088.pa4tw.nl
|
||||
XRF089 194.109.192.236
|
||||
XRF089 xlx089.pa4tw.nl
|
||||
XRF090 91.92.136.252
|
||||
XRF092 212.237.30.36
|
||||
XRF095 xrf095.xreflector-jp.org
|
||||
XRF091 89.36.219.197
|
||||
XRF092 104.200.25.53
|
||||
XRF093 185.177.59.221
|
||||
XRF094 157.7.221.186
|
||||
XRF095 203.137.76.53
|
||||
XRF095 xrf095.xreflector-jp.org
|
||||
XRF097 80.211.154.173
|
||||
XRF098 203.136.233.165
|
||||
XRF098 xrf098.dip.jp
|
||||
XRF099 80.211.27.75
|
||||
XRF099 xlx099.iz7auh.net
|
||||
XRF100 45.62.233.223
|
||||
XRF100 xlx100.xlxreflector.org
|
||||
XRF101 45.62.213.101
|
||||
XRF101 xlx101.xlxreflector.org
|
||||
XRF102 23.111.174.196
|
||||
XRF102 xlx102.xlxreflector.org
|
||||
XRF103 64.137.224.126
|
||||
XRF103 xlx103.xlxreflector.org
|
||||
XRF104 23.111.174.197
|
||||
XRF104 xlx104.xlxreflector.org
|
||||
XRF105 51.254.99.78
|
||||
XRF109 xrf109.tokyo
|
||||
XRF110 xrf110.xreflector-jp.org
|
||||
XRF111 xrf111.xreflector-jp.org
|
||||
XRF105 51.254.99.78
|
||||
XRF105 xrf105.xlxreflector.org
|
||||
XRF109 182.168.128.138
|
||||
XRF109 xrf109.tokyo
|
||||
XRF110 150.7.164.10
|
||||
XRF110 xrf110.xreflector-jp.org
|
||||
XRF111 61.195.96.160
|
||||
XRF111 xrf111.xreflector-jp.org
|
||||
XRF112 94.177.235.81
|
||||
XRF112 112.xreflector.es
|
||||
XRF113 212.227.202.198
|
||||
XRF113 212.227.202.198
|
||||
XRF113 xlx113.homepc.it
|
||||
XRF114 5.135.188.16
|
||||
XRF115 217.182.128.3
|
||||
XRF115 reflector-xlx.hb9vd.ch
|
||||
XRF116 31.185.101.211
|
||||
XRF118 5.249.148.252
|
||||
XRF118 xlx118.ns0.it
|
||||
XRF119 125.129.207.86
|
||||
XRF119 xlx119.dvham.com
|
||||
XRF120 81.150.10.63
|
||||
XRF121 174.37.249.156
|
||||
XRF123 213.126.90.100
|
||||
XRF122 83.137.45.126
|
||||
XRF122 xrf.vpn4ham.com
|
||||
XRF123 213.126.90.100
|
||||
XRF124 211.14.169.234
|
||||
XRF124 xrf124.xreflector-jp.org
|
||||
XRF125 xlx125.dyndns.hu
|
||||
XRF129 guwgw.cir-ins.com
|
||||
XRF125 213.181.208.52
|
||||
XRF125 xlx125.dyndns.hu
|
||||
XRF127 190.112.228.107
|
||||
XRF127 pj2man.hopto.org
|
||||
XRF128 153.147.157.213
|
||||
XRF129 220.209.106.220
|
||||
XRF129 guwgw.cir-ins.com
|
||||
XRF130 194.59.177.45
|
||||
XRF131 xlx131.pe1er.nl
|
||||
XRF132 xrf132.dstar.radom.pl
|
||||
XRF131 80.127.118.226
|
||||
XRF131 xlx131.pe1er.nl
|
||||
XRF132 91.203.55.87
|
||||
XRF132 xrf132.dstar.radom.pl
|
||||
XRF133 xrf133.gb7de.co.uk
|
||||
XRF134 159.89.176.86
|
||||
XRF134 159.89.176.86
|
||||
XRF135 74.208.214.69
|
||||
XRF140 95.211.211.145
|
||||
XRF145 178.59.23.138
|
||||
XRF146 213.7.90.5
|
||||
XRF146 xlx146.ddns.net
|
||||
XRF147 46.41.1.127
|
||||
XRF150 80.211.10.212
|
||||
XRF170 dvham.mooo.com
|
||||
XRF150 argentina.mmdvm.es
|
||||
XRF153 210.189.104.236
|
||||
XRF155 18.235.96.93
|
||||
XRF158 150.66.16.176
|
||||
XRF160 61.195.109.179
|
||||
XRF164 122.222.1.50
|
||||
XRF168 xrf168.duckdns.org
|
||||
XRF170 210.178.113.173
|
||||
XRF170 dvham.mooo.com
|
||||
XRF171 210.178.113.123
|
||||
XRF171 xrf171.dvham.com
|
||||
XRF180 xlx180.warn.org
|
||||
XRF175 162.248.92.25
|
||||
XRF177 xlx177.webandcloud.net
|
||||
XRF180 192.241.240.7
|
||||
XRF180 xlx180.warn.org
|
||||
XRF181 122.19.214.143
|
||||
XRF185 89.106.108.151
|
||||
XRF190 190.194.12.53
|
||||
XRF199 153.126.179.214
|
||||
XRF200 185.203.119.158
|
||||
XRF200 185.203.119.158
|
||||
XRF200 xrf200.theapplecore.me
|
||||
XRF202 148.251.122.251
|
||||
XRF204 85.214.126.111
|
||||
XRF204 xlx204.ph0dv.nl
|
||||
XRF206 193.190.240.227
|
||||
XRF208 151.80.155.39
|
||||
XRF208 xlx208.f5kav.org
|
||||
XRF210 64.137.224.107
|
||||
XRF210 210.xreflector.org
|
||||
XRF212 52.38.90.188
|
||||
XRF212 xlx212.dstar.club
|
||||
XRF214 185.47.129.230
|
||||
XRF214 xlx214.sustrai.org
|
||||
XRF215 185.87.96.172
|
||||
XRF216 74.214.25.135
|
||||
XRF220 xlx220.sapotech.com
|
||||
XRF220 124.41.83.11
|
||||
XRF220 xlx220.sapotech.com
|
||||
XRF222 212.43.96.84
|
||||
XRF222 xlx222.webandcloud.net
|
||||
XRF223 208.73.201.157
|
||||
XRF223 xrf223.parkerradio.org
|
||||
XRF224 203.137.99.97
|
||||
XRF224 xrf224.xreflector-jp.org
|
||||
XRF226 2.226.183.226
|
||||
XRF226 xrf226.hamnet.ro
|
||||
XRF228 212.237.33.114
|
||||
XRF229 194.191.4.54
|
||||
XRF227 89.33.44.100
|
||||
XRF228 212.237.33.114
|
||||
XRF229 194.191.4.54
|
||||
XRF229 dstar.hamnet.xyz
|
||||
XRF230 80.250.3.114
|
||||
XRF230 ref.dstar.cz
|
||||
XRF232 89.185.97.35
|
||||
XRF232 xrf232.tms-it.net
|
||||
XRF233 xlx233.f1smf.com
|
||||
XRF233 xlx233.f1smf.com
|
||||
XRF235 5.150.254.97
|
||||
XRF238 172.104.239.219
|
||||
XRF241 151.80.158.227
|
||||
XRF242 xrf242.k7edw.com
|
||||
XRF246 xlx.mkagawa.com
|
||||
XRF248 xrf248.dyndns.org
|
||||
XRF235 xlx235.duckdns.org
|
||||
XRF238 172.104.239.219
|
||||
XRF238 xlx.brandmeister.digital
|
||||
XRF241 151.80.158.227
|
||||
XRF242 73.14.84.43
|
||||
XRF242 xrf242.k7edw.com
|
||||
XRF246 172.93.48.159
|
||||
XRF246 xlx.mkagawa.com
|
||||
XRF248 xrf248.dyndns.org
|
||||
XRF250 xrf250.dstar.su
|
||||
XRF252 je7zbu.jpn.ph
|
||||
XRF255 142.91.158.199
|
||||
XRF255 xrf255.reflector.up4dar.de
|
||||
XRF257 47.157.82.87
|
||||
XRF258 75.60.237.19
|
||||
XRF261 44.144.0.23
|
||||
XRF262 92.201.84.2
|
||||
XRF262 xrf262.reflector.up4dar.de
|
||||
XRF263 85.214.193.146
|
||||
XRF264 52.2.131.118
|
||||
XRF265 51.255.43.60
|
||||
XRF266 212.237.51.82
|
||||
XRF266 212.237.51.82
|
||||
XRF268 194.38.140.204
|
||||
XRF270 158.64.26.132
|
||||
XRF270 xrf270.reflector.up4dar.de
|
||||
XRF275 xrf275.dyndns.org
|
||||
XRF277 xlx277.dyndns.org
|
||||
XRF282 xrf282.dip.jp
|
||||
XRF284 95.158.165.32
|
||||
XRF288 99.108.210.100
|
||||
XRF290 94.176.6.45
|
||||
XRF272 200.231.36.188
|
||||
XRF275 xrf275.dyndns.org
|
||||
XRF277 xlx277.dyndns.org
|
||||
XRF280 95.234.119.44
|
||||
XRF282 210.188.25.17
|
||||
XRF282 xrf282.dip.jp
|
||||
XRF284 95.158.165.32
|
||||
XRF285 91.92.93.15
|
||||
XRF287 43.245.172.2
|
||||
XRF288 99.108.210.100
|
||||
XRF290 44.182.7.20
|
||||
XRF291 101.143.242.189
|
||||
XRF291 xrf291.xreflector-jp.org
|
||||
XRF295 xrf295.dyndns.org
|
||||
XRF298 xrf298.dip.jp
|
||||
XRF299 xlx299.zl2ro.nz
|
||||
XRF295 45.62.224.93
|
||||
XRF295 xrf295.dyndns.org
|
||||
XRF298 220.144.59.222
|
||||
XRF298 xrf298.dip.jp
|
||||
XRF299 203.86.194.92
|
||||
XRF299 xlx299.zl2ro.nz
|
||||
XRF300 45.62.244.43
|
||||
XRF300 300.xreflector.org
|
||||
XRF302 144.217.241.23
|
||||
XRF302 xlx302.hopto.org
|
||||
XRF303 75.70.52.143
|
||||
XRF305 145.239.116.57
|
||||
XRF307 72.21.76.154
|
||||
XRF307 xlx307.ddns.net
|
||||
XRF310 52.11.207.121
|
||||
XRF310 xrf310.xrefl.net
|
||||
XRF311 xrf311.ernix.de
|
||||
XRF311 46.41.0.214
|
||||
XRF311 xrf311.ernix.de
|
||||
XRF312 192.241.160.183
|
||||
XRF312 xrf312.xrefl.net
|
||||
XRF313 34.213.108.164
|
||||
XRF313 xlx313.openstd.net
|
||||
XRF315 65.101.7.50
|
||||
XRF314 162.248.10.154
|
||||
XRF315 65.101.7.50
|
||||
XRF317 44.48.8.15
|
||||
XRF317 xrf317.crossroadsdmr.org
|
||||
XRF318 xrf318.xrefl.net
|
||||
XRF321 31.207.110.45
|
||||
XRF321 vps.makeitrad.com
|
||||
XRF328 cisarbasel.ddns.net
|
||||
XRF328 212.237.33.114
|
||||
XRF328 cisarbasel.ddns.net
|
||||
XRF329 114.181.139.32
|
||||
XRF330 18.222.199.205
|
||||
XRF332 188.213.168.99
|
||||
XRF333 xrf333.f1smf.com
|
||||
XRF333 194.116.29.73
|
||||
XRF333 xrf333.f1smf.com
|
||||
XRF334 96.47.95.121
|
||||
XRF335 185.206.145.2
|
||||
XRF335 185.206.145.2
|
||||
XRF336 23.226.233.133
|
||||
XRF336 xrf336.mawcg.org
|
||||
XRF338 122.116.216.47
|
||||
XRF339 198.98.53.247
|
||||
XRF339 xlx339.avarc.ca
|
||||
XRF345 45.62.237.34
|
||||
XRF345 xrf345.dyndns.org
|
||||
XRF350 350.opendstar.eu
|
||||
XRF352 35.230.162.146
|
||||
XRF353 94.173.206.53
|
||||
XRF356 93.152.167.4
|
||||
XRF357 93.152.167.4
|
||||
XRF357 xlx357.w6kd.com
|
||||
XRF358 93.152.167.4
|
||||
XRF359 94.156.172.213
|
||||
XRF360 xrf360.dip.jp
|
||||
XRF360 222.229.25.105
|
||||
XRF360 xrf360.dip.jp
|
||||
XRF364 159.65.231.53
|
||||
XRF365 59.139.141.204
|
||||
XRF365 xrf365.dip.jp
|
||||
XRF370 xrf370.selfip.com
|
||||
XRF371 xlx371.selfip.com
|
||||
XRF373 101.143.25.116
|
||||
XRF374 xrf374.xreflector-jp.org
|
||||
XRF367 18.216.66.72
|
||||
XRF367 xrf367.ad6dm.net
|
||||
XRF370 188.213.168.24
|
||||
XRF370 xrf370.selfip.com
|
||||
XRF371 212.237.8.77
|
||||
XRF371 xlx371.selfip.com
|
||||
XRF373 119.229.134.1
|
||||
XRF373 xrf73.dip.jp
|
||||
XRF374 61.195.108.146
|
||||
XRF374 xrf374.xreflector-jp.org
|
||||
XRF376 75.145.119.225
|
||||
XRF379 184.23.183.98
|
||||
XRF380 kdk.ddns.net
|
||||
XRF377 186.159.96.100
|
||||
XRF379 104.218.36.162
|
||||
XRF380 160.16.65.39
|
||||
XRF380 kdk.ddns.net
|
||||
XRF382 211.131.19.200
|
||||
XRF382 xrf382.pgw.jp
|
||||
XRF387 195.130.59.77
|
||||
XRF387 195.130.59.77
|
||||
XRF388 138.197.67.52
|
||||
XRF389 106.71.83.168
|
||||
XRF389 106.70.187.224
|
||||
XRF389 xlxdmr.duckdns.org
|
||||
XRF390 149.7.214.253
|
||||
XRF398 104.167.117.71
|
||||
XRF400 xlx400.iz7auh.net
|
||||
XRF390 xrf390.aotnet.it
|
||||
XRF393 139.91.200.186
|
||||
XRF395 5.249.151.111
|
||||
XRF398 104.167.117.71
|
||||
XRF399 185.227.110.247
|
||||
XRF400 13.58.192.185
|
||||
XRF400 xlx400.iz7auh.net
|
||||
XRF404 91.229.143.187
|
||||
XRF404 xlx.bendiksverden.net
|
||||
XRF410 166.78.156.246
|
||||
XRF412 xrf412.dip.jp
|
||||
XRF410 xlx.n5amd.com
|
||||
XRF411 82.171.119.45
|
||||
XRF412 61.195.107.113
|
||||
XRF412 xrf412.dip.jp
|
||||
XRF420 174.138.113.116
|
||||
XRF420 kc9qen.com
|
||||
XRF421 118.189.181.236
|
||||
XRF423 4ix.hacktic.de
|
||||
XRF431 xrf431.xreflector-jp.org
|
||||
XRF431 61.195.98.225
|
||||
XRF431 xrf431.xreflector-jp.org
|
||||
XRF433 217.160.22.17
|
||||
XRF433 xrf433.de
|
||||
XRF434 51.254.128.134
|
||||
XRF438 80.211.189.236
|
||||
XRF434 51.254.128.134
|
||||
XRF438 80.211.189.236
|
||||
XRF440 153.133.72.142
|
||||
XRF440 xrf440.e-kyushu.net
|
||||
XRF441 203.137.99.110
|
||||
XRF441 xrf441.xreflector-jp.org
|
||||
XRF443 xrf443.arisondrio.it
|
||||
XRF444 xlx444.pa3dfn.nl
|
||||
XRF449 159.89.183.117
|
||||
XRF450 450.xreflector.org
|
||||
XRF454 42.2.222.178
|
||||
XRF456 xrf456.de
|
||||
XRF444 188.68.37.51
|
||||
XRF444 xlx444.pa3dfn.nl
|
||||
XRF446 78.226.112.146
|
||||
XRF449 159.89.183.117
|
||||
XRF450 64.137.224.233
|
||||
XRF450 450.xreflector.org
|
||||
XRF454 218.250.250.21
|
||||
XRF455 208.71.169.83
|
||||
XRF456 54.37.204.187
|
||||
XRF456 xrf456.de
|
||||
XRF460 183.53.66.145
|
||||
XRF464 52.192.129.174
|
||||
XRF470 104.49.29.243
|
||||
XRF473 104.49.29.243
|
||||
XRF477 139.162.213.89
|
||||
XRF479 198.58.106.10
|
||||
XRF486 51.255.172.249
|
||||
XRF486 xlx486.iz8gur.it
|
||||
XRF487 93.66.214.109
|
||||
XRF490 xrf490.dyndns.org
|
||||
XRF499 203.137.76.22
|
||||
XRF499 xrf499.xreflector-jp.org
|
||||
XRF500 125.63.57.138
|
||||
XRF501 104.130.72.187
|
||||
XRF500 125.63.57.138
|
||||
XRF500 xrf500.org
|
||||
XRF501 104.130.72.187
|
||||
XRF502 74.208.88.137
|
||||
XRF505 110.141.219.161
|
||||
XRF506 121.200.19.211
|
||||
XRF508 185.188.4.15
|
||||
XRF510 xrf510.s56g.net
|
||||
XRF511 xlx511.ddns.net
|
||||
XRF515 133.130.114.45
|
||||
XRF518 xrf518.n18.de
|
||||
XRF511 213.172.232.13
|
||||
XRF511 xlx511.ddns.net
|
||||
XRF515 203.137.78.35
|
||||
XRF515 shounandstar.dip.jp
|
||||
XRF518 176.9.1.168
|
||||
XRF518 xrf518.n18.de
|
||||
XRF519 24.55.196.105
|
||||
XRF520 119.59.125.192
|
||||
XRF519 xrf519.ve3zin.com
|
||||
XRF520 xlx.dtdxa.com
|
||||
XRF521 150.129.184.54
|
||||
XRF523 175.141.51.82
|
||||
XRF525 176.65.95.90
|
||||
XRF522 14.102.146.160
|
||||
XRF523 175.142.199.32
|
||||
XRF525 80.211.68.38
|
||||
XRF530 116.251.193.99
|
||||
XRF534 208.71.169.83
|
||||
XRF538 124.41.76.58
|
||||
XRF538 xrf538.dip.jp
|
||||
XRF544 202.218.152.66
|
||||
XRF544 xlx544.ddns.net
|
||||
XRF550 89.36.222.146
|
||||
XRF550 550.xreflector.es
|
||||
XRF551 140.227.198.45
|
||||
XRF553 45.79.92.86
|
||||
XRF554 52.35.183.178
|
||||
XRF555 xrf555.w6kd.com
|
||||
XRF556 xrf556.w6kd.com
|
||||
XRF555 xlx555.dtdxa.com
|
||||
XRF556 xrf556.w6kd.com
|
||||
XRF559 98.239.113.175
|
||||
XRF567 212.91.156.69
|
||||
XRF569 203.137.111.98
|
||||
XRF569 xlxreflector.jpn.ph
|
||||
XRF570 104.128.230.153
|
||||
XRF573 216.189.148.204
|
||||
XRF580 67.20.31.79
|
||||
XRF583 183.76.149.117
|
||||
XRF580 67.20.31.79
|
||||
XRF583 116.70.240.104
|
||||
XRF587 68.32.126.21
|
||||
XRF595 220.146.23.42
|
||||
XRF595 hamradio.dip.jp
|
||||
XRF599 203.137.118.190
|
||||
XRF600 xrf600.gb7de.co.uk
|
||||
XRF599 xrf599.n5wls.net
|
||||
XRF600 13.69.14.204
|
||||
XRF600 xrf600.gb7de.co.uk
|
||||
XRF601 51.141.52.193
|
||||
XRF602 212.56.100.200
|
||||
XRF603 216.246.155.99
|
||||
XRF603 xlx603.cnharc.org
|
||||
XRF608 xrf608.dip.jp
|
||||
XRF610 xrf610.vkradio.com
|
||||
XRF604 139.162.241.24
|
||||
XRF605 183.76.179.238
|
||||
XRF608 219.122.253.83
|
||||
XRF608 xrf608.dip.jp
|
||||
XRF609 219.122.253.83
|
||||
XRF610 89.186.80.81
|
||||
XRF610 xrf610.vkradio.com
|
||||
XRF613 198.50.202.39
|
||||
XRF619 167.99.168.82
|
||||
XRF626 45.77.234.162
|
||||
XRF626 626.nz
|
||||
XRF634 xrf634.dip.jp
|
||||
XRF655 146.64.235.19
|
||||
XRF666 vpngrf.webandcloud.net
|
||||
XRF627 121.75.75.200
|
||||
XRF630 61.195.125.81
|
||||
XRF634 180.46.54.237
|
||||
XRF634 xrf634.dip.jp
|
||||
XRF647 217.182.168.54
|
||||
XRF651 66.240.165.26
|
||||
XRF655 146.64.235.19
|
||||
XRF666 86.186.35.158
|
||||
XRF666 vpngrf.webandcloud.net
|
||||
XRF673 180.147.243.178
|
||||
XRF673 xrf673.xreflector-jp.org
|
||||
XRF684 212.237.17.83
|
||||
XRF678 xrf678.ddns.net
|
||||
XRF684 212.237.17.83
|
||||
XRF689 97.107.128.47
|
||||
XRF695 155.254.33.145
|
||||
XRF698 203.137.123.89
|
||||
XRF699 82.102.5.239
|
||||
XRF699 xlx.tekniksnack.se
|
||||
XRF700 xrf700.d-star.se
|
||||
XRF701 xrf701.xreflector-jp.org
|
||||
XRF700 78.47.222.93
|
||||
XRF700 xrf700.d-star.se
|
||||
XRF701 61.195.107.77
|
||||
XRF701 xrf701.xreflector-jp.org
|
||||
XRF703 61.195.98.254
|
||||
XRF706 xlx706.iz0rin.it
|
||||
XRF704 150.66.34.110
|
||||
XRF706 93.186.255.126
|
||||
XRF706 xlx706.iz0rin.it
|
||||
XRF707 90.145.156.196
|
||||
XRF707 xrf707.openquad.net
|
||||
XRF708 202.218.37.62
|
||||
XRF708 xrf708.xreflector-jp.org
|
||||
XRF709 212.237.34.32
|
||||
XRF710 oe7mfi.ddns.net
|
||||
XRF709 xlx.dvmega.co.uk
|
||||
XRF710 oe7mfi.ddns.net
|
||||
XRF711 212.237.18.27
|
||||
XRF712 180.11.74.19
|
||||
XRF712 153.215.181.34
|
||||
XRF712 xrf712.ddo.jp
|
||||
XRF713 218.251.63.99
|
||||
XRF714 85.214.119.76
|
||||
XRF714 xrf714.ea3hkb.com
|
||||
XRF715 xlx715.ea3hkb.net
|
||||
XRF716 xlx716.duckdns.org
|
||||
XRF717 44.137.70.100
|
||||
XRF717 44.137.70.100
|
||||
XRF719 199.227.117.121
|
||||
XRF720 23.237.16.149
|
||||
XRF720 xrf720.freestar.us
|
||||
XRF722 722.xreflector.es
|
||||
XRF722 80.211.2.161
|
||||
XRF722 722.xreflector.es
|
||||
XRF723 45.33.118.112
|
||||
XRF724 189.20.209.70
|
||||
XRF724 xlx.dvbrazil.com.br
|
||||
XRF727 w4icy.inerrantenergy.com
|
||||
XRF730 186.64.123.59
|
||||
XRF732 xlx.hk4km.co
|
||||
XRF733 45.56.117.158
|
||||
XRF725 172.245.9.180
|
||||
XRF727 108.33.72.83
|
||||
XRF727 w4icy.inerrantenergy.com
|
||||
XRF730 186.64.123.59
|
||||
XRF732 190.159.68.105
|
||||
XRF732 xlx.hk4km.co
|
||||
XRF733 45.56.117.158
|
||||
XRF733 xlx733.ddns.net
|
||||
XRF735 104.131.81.32
|
||||
XRF737 195.130.75.246
|
||||
XRF738 210.171.151.238
|
||||
XRF740 104.167.114.230
|
||||
XRF740 imagewell.duckdns.org
|
||||
XRF741 203.137.78.41
|
||||
XRF746 178.254.34.44
|
||||
XRF747 87.147.142.9
|
||||
XRF747 xrf747.de
|
||||
XRF748 64.137.197.36
|
||||
XRF748 xrf748.dyndns.org
|
||||
XRF752 xlx752.zl2wl.nz
|
||||
XRF749 45.77.102.203
|
||||
XRF750 203.86.206.49
|
||||
XRF751 203.118.145.79
|
||||
XRF752 66.154.105.195
|
||||
XRF752 xlx752.zl2wl.nz
|
||||
XRF755 178.22.148.229
|
||||
XRF755 xlx.radioamateur.tk
|
||||
XRF757 43.229.63.42
|
||||
XRF757 xrf757.openquad.net
|
||||
XRF762 129.21.36.65
|
||||
XRF766 201.62.48.61
|
||||
XRF766 xlx.amrase.org.br
|
||||
XRF767 xrf767.de
|
||||
XRF768 80.211.199.231
|
||||
XRF770 153.126.173.9
|
||||
XRF773 94.177.175.230
|
||||
XRF773 xrf773.iz0rin.it
|
||||
XRF775 149.202.61.17
|
||||
XRF776 xlx776.tokyo
|
||||
XRF777 112.218.40.91
|
||||
XRF775 149.202.61.17
|
||||
XRF776 218.221.181.241
|
||||
XRF776 xlx776.tokyo
|
||||
XRF777 112.218.40.91
|
||||
XRF780 96.53.97.22
|
||||
XRF781 101.143.242.199
|
||||
XRF781 xrf781.xreflector-jp.org
|
||||
XRF782 122.16.56.210
|
||||
XRF787 46.41.1.96
|
||||
XRF787 xrf787.de
|
||||
XRF788 192.168.0.96
|
||||
XRF789 45.33.119.142
|
||||
XRF794 xrf794.xreflector-jp.org
|
||||
XRF789 xrf789.dstarxlx.com.br
|
||||
XRF794 101.143.242.95
|
||||
XRF794 xrf794.xreflector-jp.org
|
||||
XRF800 87.252.188.119
|
||||
XRF801 213.47.71.17
|
||||
XRF801 f4hin.fr
|
||||
XRF803 77.117.77.117
|
||||
XRF806 92.105.198.59
|
||||
XRF803 77.117.21.251
|
||||
XRF806 92.107.25.23
|
||||
XRF807 122.18.165.164
|
||||
XRF807 hajikko.iobb.net
|
||||
XRF808 xrf808.n5wls.net
|
||||
XRF810 810.xreflector.org
|
||||
XRF808 18.220.252.27
|
||||
XRF808 xrf808.n5wls.net
|
||||
XRF809 78.46.11.69
|
||||
XRF810 64.137.238.189
|
||||
XRF810 810.xreflector.org
|
||||
XRF811 64.137.238.189
|
||||
XRF812 203.145.233.141
|
||||
XRF812 xrf812.xreflector-jp.org
|
||||
XRF813 97.76.81.165
|
||||
XRF813 xlx.inerrantenergy.com
|
||||
XRF817 18.235.96.93
|
||||
XRF818 120.79.155.116
|
||||
XRF825 51.75.252.197
|
||||
XRF828 195.225.116.244
|
||||
XRF828 xlx828.ddnss.de
|
||||
XRF833 78.226.112.146
|
||||
XRF844 137.226.79.122
|
||||
XRF847 162.243.4.29
|
||||
XRF850 88.198.94.77
|
||||
XRF850 xrf850.xrfmaster.net
|
||||
XRF851 xrf851.rsdt.de
|
||||
XRF851 xrf851.rsdt.de
|
||||
XRF852 42.2.140.44
|
||||
XRF858 xrf858.ke0lmx.net
|
||||
XRF859 54.227.203.214
|
||||
XRF859 xlx859.ke0lmx.net
|
||||
XRF860 24.134.86.93
|
||||
XRF860 xrf.njpaasterisk.org
|
||||
XRF870 xrf870.ddns.net
|
||||
XRF878 xrf878.xreflector-jp.org
|
||||
XRF861 66.175.218.63
|
||||
XRF865 45.32.212.226
|
||||
XRF866 93.233.176.219
|
||||
XRF867 51.254.115.5
|
||||
XRF870 103.3.234.95
|
||||
XRF870 xrf870.ddns.net
|
||||
XRF871 222.172.252.56
|
||||
XRF878 203.137.123.113
|
||||
XRF878 xrf878.xreflector-jp.org
|
||||
XRF880 176.10.105.211
|
||||
XRF883 xrf883.dip.jp
|
||||
XRF883 153.179.226.85
|
||||
XRF883 xrf883.dip.jp
|
||||
XRF886 118.163.103.178
|
||||
XRF886 xrf886.metropit.net
|
||||
XRF887 118.163.103.177
|
||||
XRF888 46.18.142.169
|
||||
XRF888 xlx888.ns0.it
|
||||
XRF893 103.235.127.147
|
||||
XRF900 94.177.237.192
|
||||
XRF889 130.149.36.93
|
||||
XRF893 104.223.59.212
|
||||
XRF897 92.222.23.124
|
||||
XRF900 94.177.237.192
|
||||
XRF901 xrf901.dyndns.org
|
||||
XRF902 xrf902.dyndns.org
|
||||
XRF903 80.211.29.226
|
||||
XRF905 199.212.121.20
|
||||
XRF903 80.211.29.226
|
||||
XRF904 211.14.169.215
|
||||
XRF905 199.212.121.20
|
||||
XRF906 212.237.11.53
|
||||
XRF906 xrf906.radioclubveleta.es
|
||||
XRF907 xlx907.ddns.net
|
||||
XRF908 92.222.23.124
|
||||
XRF909 www.ealink.es
|
||||
XRF907 88.3.75.162
|
||||
XRF907 xlx907.ddns.net
|
||||
XRF908 92.222.23.124
|
||||
XRF909 216.86.147.198
|
||||
XRF909 www.ealink.es
|
||||
XRF910 92.177.212.64
|
||||
XRF911 5.196.73.89
|
||||
XRF911 xlx911.patrweb.com
|
||||
XRF912 80.211.1.143
|
||||
XRF915 72.28.30.93
|
||||
XRF919 80.211.232.174
|
||||
XRF920 xrf920.oe7xxr.ampr.at
|
||||
XRF921 44.143.184.83
|
||||
XRF921 xlx921.oe7xxr.ampr.at
|
||||
XRF922 xrf922.mb6er.com
|
||||
XRF922 81.150.10.62
|
||||
XRF922 xrf922.mb6er.com
|
||||
XRF925 90.255.232.101
|
||||
XRF929 158.69.166.132
|
||||
XRF929 xrf929.ddns.net
|
||||
XRF930 94.177.160.5
|
||||
XRF930 xreflector.ddns.net
|
||||
XRF931 68.131.30.206
|
||||
XRF931 xref.kw4yb.com
|
||||
XRF933 164.132.104.167
|
||||
XRF935 xlx935.ddns.net
|
||||
XRF940 xrf940.xreflector-jp.org
|
||||
XRF944 xrf944.xreflector-jp.org
|
||||
XRF945 xlx945.xreflector.es
|
||||
XRF935 188.213.166.199
|
||||
XRF935 xlx935.ddns.net
|
||||
XRF940 202.218.37.121
|
||||
XRF940 xrf940.xreflector-jp.org
|
||||
XRF944 202.218.34.210
|
||||
XRF944 xrf944.xreflector-jp.org
|
||||
XRF945 213.202.229.40
|
||||
XRF945 xlx945.xreflector.es
|
||||
XRF946 212.227.174.45
|
||||
XRF950 158.64.26.134
|
||||
XRF950 xlx950.epf.lu
|
||||
XRF951 18.188.166.109
|
||||
XRF956 192.99.245.120
|
||||
XRF959 203.137.98.121
|
||||
XRF960 80.211.226.89
|
||||
XRF964 52.173.142.244
|
||||
XRF965 47.23.66.19
|
||||
XRF966 203.150.19.24
|
||||
XRF967 95.158.165.32
|
||||
XRF967 xlx967.uk.to
|
||||
XRF969 142.93.46.36
|
||||
XRF970 157.7.221.186
|
||||
XRF972 46.121.158.50
|
||||
XRF973 xrf973.xreflector-jp.org
|
||||
XRF974 xlx974.dynu.net
|
||||
XRF975 176.31.161.9
|
||||
XRF976 212.237.36.71
|
||||
XRF973 211.14.169.43
|
||||
XRF973 xrf973.xreflector-jp.org
|
||||
XRF974 94.177.217.52
|
||||
XRF974 xlx974.dynu.net
|
||||
XRF975 176.31.161.9
|
||||
XRF976 212.237.36.71
|
||||
XRF977 977.opendstar.eu
|
||||
XRF978 74.104.179.159
|
||||
XRF978 978.opendstar.eu
|
||||
XRF979 217.162.36.91
|
||||
XRF981 153.210.14.45
|
||||
XRF986 81.89.102.160
|
||||
XRF987 185.32.183.148
|
||||
XRF987 xrf987.metro-uhf.org
|
||||
XRF988 988.xreflector.es
|
||||
XRF989 xrf989.bbhill.net
|
||||
XRF988 80.211.236.189
|
||||
XRF988 988.xreflector.es
|
||||
XRF989 50.27.131.75
|
||||
XRF989 xrf989.bbhill.net
|
||||
XRF990 35.164.237.63
|
||||
XRF991 91.92.136.118
|
||||
XRF991 91.92.136.118
|
||||
XRF993 97.64.20.63
|
||||
XRF994 35.177.233.106
|
||||
XRF995 118.27.30.92
|
||||
XRF995 xlx995.ddns.net
|
||||
XRF996 47.104.177.248
|
||||
XRF996 47.104.177.248
|
||||
XRF997 94.177.187.40
|
||||
XRF997 xrf997.iw2gob.it
|
||||
XRF998 44.140.236.20
|
||||
XRF998 xlx.sm7.hamnet.nu
|
||||
XRF999 94.177.173.53
|
||||
XRF999 xrf999.no-ip.org
|
||||
XRFWDX 47.149.178.211
|
||||
XRFWDX worldwidedx.com
|
||||
# EOF - Sun, 19 May 2019 12:35:55 GMT
|
||||
|
|
|
|||
1062
Data/DPlus_Hosts.txt
1062
Data/DPlus_Hosts.txt
File diff suppressed because it is too large
Load diff
|
|
@ -1,3 +1,4 @@
|
|||
.PHONY: install
|
||||
install:
|
||||
install -d -g bin -o root -m 0775 $(DATADIR)
|
||||
install -g bin -o root -m 0664 CCS_Hosts.txt $(DATADIR)
|
||||
|
|
|
|||
|
|
@ -109,12 +109,13 @@ bool CDCSSet::Validate()
|
|||
if (n == wxNOT_FOUND)
|
||||
return false;
|
||||
|
||||
n = m_ccsEnabled->GetCurrentSelection();
|
||||
if (n == wxNOT_FOUND)
|
||||
return false;
|
||||
bool ccsEnabled = m_ccsEnabled->GetCurrentSelection() == 1;
|
||||
bool ccsHostSelected = m_ccsHosts->GetCurrentSelection() != wxNOT_FOUND;
|
||||
|
||||
if (m_ccsHosts->GetCurrentSelection() == wxNOT_FOUND)
|
||||
if (ccsEnabled && !ccsHostSelected) {
|
||||
wxMessageBox(_("CCS is enabled and no CCS host has been selected. Either disable CCS or select a CCS host."));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@
|
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
@ -139,6 +143,7 @@
|
|||
<ClCompile Include="DExtraSet.cpp" />
|
||||
<ClCompile Include="DPlusSet.cpp" />
|
||||
<ClCompile Include="DPRSSet.cpp" />
|
||||
<ClCompile Include="MobileGPSSet.cpp" />
|
||||
<ClCompile Include="PortTextCtrl.cpp" />
|
||||
<ClCompile Include="RemoteSet.cpp" />
|
||||
<ClCompile Include="RepeaterDataSet.cpp" />
|
||||
|
|
@ -155,6 +160,7 @@
|
|||
<ClInclude Include="DExtraSet.h" />
|
||||
<ClInclude Include="DPlusSet.h" />
|
||||
<ClInclude Include="DPRSSet.h" />
|
||||
<ClInclude Include="MobileGPSSet.h" />
|
||||
<ClInclude Include="PortTextCtrl.h" />
|
||||
<ClInclude Include="RemoteSet.h" />
|
||||
<ClInclude Include="RepeaterDataSet.h" />
|
||||
|
|
|
|||
|
|
@ -53,6 +53,9 @@
|
|||
<ClCompile Include="XLXSet.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MobileGPSSet.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="AddressTextCtrl.h">
|
||||
|
|
@ -97,5 +100,8 @@
|
|||
<ClInclude Include="XLXSet.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MobileGPSSet.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -1,14 +1,20 @@
|
|||
OBJECTS = AddressTextCtrl.o CallsignTextCtrl.o DCSSet.o DescriptionTextCtrl.o DExtraSet.o DPlusSet.o DPRSSet.o PortTextCtrl.o RemoteSet.o \
|
||||
OBJECTS = AddressTextCtrl.o CallsignTextCtrl.o DCSSet.o DescriptionTextCtrl.o DExtraSet.o DPlusSet.o DPRSSet.o MobileGPSSet.o PortTextCtrl.o RemoteSet.o \
|
||||
RepeaterDataSet.o RepeaterInfoSet.o RestrictedTextCtrl.o StarNetSet.o XLXSet.o
|
||||
|
||||
.PHONY: all
|
||||
all: GUICommon.a
|
||||
|
||||
GUICommon.a: $(OBJECTS)
|
||||
GUICommon.a: $(OBJECTS) ../Common/Common.a
|
||||
$(AR) rcs GUICommon.a $(OBJECTS)
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CFLAGS) -I../Common -c -o $@ $<
|
||||
$(CXX) -MM $(CFLAGS) -I../Common $< > $*.d
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) GUICommon.a *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
118
GUICommon/MobileGPSSet.cpp
Normal file
118
GUICommon/MobileGPSSet.cpp
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* Copyright (C) 2018 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "MobileGPSSet.h"
|
||||
|
||||
const unsigned int CONTROL_WIDTH1 = 130U;
|
||||
const unsigned int CONTROL_WIDTH2 = 80U;
|
||||
|
||||
const unsigned int ADDRESS_LENGTH = 15U;
|
||||
const unsigned int PORT_LENGTH = 5U;
|
||||
|
||||
const unsigned int BORDER_SIZE = 5U;
|
||||
|
||||
CMobileGPSSet::CMobileGPSSet(wxWindow* parent, int id, const wxString& title, bool enabled, const wxString& address, unsigned int port) :
|
||||
wxPanel(parent, id),
|
||||
m_title(title),
|
||||
m_enabled(NULL),
|
||||
m_address(NULL),
|
||||
m_port(NULL)
|
||||
{
|
||||
wxFlexGridSizer* sizer = new wxFlexGridSizer(2);
|
||||
|
||||
wxStaticText* enabledLabel = new wxStaticText(this, -1, _("Mobile GPS"));
|
||||
sizer->Add(enabledLabel, 0, wxALL | wxALIGN_RIGHT, BORDER_SIZE);
|
||||
|
||||
m_enabled = new wxChoice(this, -1, wxDefaultPosition, wxSize(CONTROL_WIDTH1, -1));
|
||||
m_enabled->Append(_("Disabled"));
|
||||
m_enabled->Append(_("Enabled"));
|
||||
sizer->Add(m_enabled, 0, wxALL | wxALIGN_LEFT, BORDER_SIZE);
|
||||
m_enabled->SetSelection(enabled ? 1 : 0);
|
||||
|
||||
wxStaticText* addressLabel = new wxStaticText(this, -1, _("Address"));
|
||||
sizer->Add(addressLabel, 0, wxALL | wxALIGN_RIGHT, BORDER_SIZE);
|
||||
|
||||
m_address = new CAddressTextCtrl(this, -1, address, wxDefaultPosition, wxSize(CONTROL_WIDTH1, -1));
|
||||
m_address->SetMaxLength(ADDRESS_LENGTH);
|
||||
sizer->Add(m_address, 0, wxALL | wxALIGN_LEFT, BORDER_SIZE);
|
||||
|
||||
wxStaticText* portLabel = new wxStaticText(this, -1, _("Port"));
|
||||
sizer->Add(portLabel, 0, wxALL | wxALIGN_RIGHT, BORDER_SIZE);
|
||||
|
||||
wxString buffer;
|
||||
buffer.Printf(wxT("%u"), port);
|
||||
|
||||
m_port = new CPortTextCtrl(this, -1, buffer, wxDefaultPosition, wxSize(CONTROL_WIDTH2, -1));
|
||||
m_port->SetMaxLength(PORT_LENGTH);
|
||||
sizer->Add(m_port, 0, wxALL | wxALIGN_LEFT, BORDER_SIZE);
|
||||
|
||||
SetAutoLayout(true);
|
||||
|
||||
SetSizer(sizer);
|
||||
}
|
||||
|
||||
|
||||
CMobileGPSSet::~CMobileGPSSet()
|
||||
{
|
||||
}
|
||||
|
||||
bool CMobileGPSSet::Validate()
|
||||
{
|
||||
if (m_enabled->GetCurrentSelection() == wxNOT_FOUND)
|
||||
return false;
|
||||
|
||||
wxString address = getAddress();
|
||||
|
||||
if (address.IsEmpty()) {
|
||||
wxMessageDialog dialog(this, _("The Mobile GPS Address is not valid"), m_title + _(" Error"), wxICON_ERROR);
|
||||
dialog.ShowModal();
|
||||
return false;
|
||||
}
|
||||
|
||||
unsigned int port = getPort();
|
||||
|
||||
if (port == 0U || port > 65535U) {
|
||||
wxMessageDialog dialog(this, _("The Mobile GPS Port is not valid"), m_title + _(" Error"), wxICON_ERROR);
|
||||
dialog.ShowModal();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CMobileGPSSet::getEnabled() const
|
||||
{
|
||||
int c = m_enabled->GetCurrentSelection();
|
||||
if (c == wxNOT_FOUND)
|
||||
return false;
|
||||
|
||||
return c == 1;
|
||||
}
|
||||
|
||||
wxString CMobileGPSSet::getAddress() const
|
||||
{
|
||||
return m_address->GetValue();
|
||||
}
|
||||
|
||||
unsigned int CMobileGPSSet::getPort() const
|
||||
{
|
||||
unsigned long n;
|
||||
m_port->GetValue().ToULong(&n);
|
||||
|
||||
return n;
|
||||
}
|
||||
46
GUICommon/MobileGPSSet.h
Normal file
46
GUICommon/MobileGPSSet.h
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (C) 2018 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef MobileGPSSet_H
|
||||
#define MobileGPSSet_H
|
||||
|
||||
#include "AddressTextCtrl.h"
|
||||
#include "PortTextCtrl.h"
|
||||
#include "Defs.h"
|
||||
|
||||
#include <wx/wx.h>
|
||||
|
||||
class CMobileGPSSet: public wxPanel {
|
||||
public:
|
||||
CMobileGPSSet(wxWindow* parent, int id, const wxString& title, bool enabled, const wxString& address, unsigned int port);
|
||||
virtual ~CMobileGPSSet();
|
||||
|
||||
virtual bool Validate();
|
||||
|
||||
virtual bool getEnabled() const;
|
||||
virtual wxString getAddress() const;
|
||||
virtual unsigned int getPort() const;
|
||||
|
||||
private:
|
||||
wxString m_title;
|
||||
wxChoice* m_enabled;
|
||||
CAddressTextCtrl* m_address;
|
||||
CPortTextCtrl* m_port;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -20,6 +20,8 @@
|
|||
#include "XLXSet.h"
|
||||
#include "Defs.h"
|
||||
|
||||
#include <wx/url.h>
|
||||
|
||||
// TODO F4FXL try to figure out why below symbols are not found under ubuntu
|
||||
//#include <wx/url.h>
|
||||
|
||||
|
|
@ -34,11 +36,10 @@ BEGIN_EVENT_TABLE(CXLXSet, wxPanel)
|
|||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
CXLXSet::CXLXSet(wxWindow* parent, int id, const wxString& title, bool xlxEnabled, bool xlxOverrideLocal, const wxString& xlxHostsFileUrl) :
|
||||
CXLXSet::CXLXSet(wxWindow* parent, int id, const wxString& title, bool xlxEnabled, const wxString& xlxHostsFileUrl) :
|
||||
wxPanel(parent, id),
|
||||
m_title(title),
|
||||
m_xlxEnabled(NULL),
|
||||
m_xlxOverrideLocal(NULL),
|
||||
m_xlxHostsFileUrl(NULL)
|
||||
{
|
||||
wxFlexGridSizer* sizer = new wxFlexGridSizer(2);
|
||||
|
|
@ -51,15 +52,6 @@ m_xlxHostsFileUrl(NULL)
|
|||
m_xlxEnabled->Append(_("Enabled"));
|
||||
sizer->Add(m_xlxEnabled, 0, wxALL | wxALIGN_LEFT, BORDER_SIZE);
|
||||
m_xlxEnabled->SetSelection(xlxEnabled ? 1 : 0);
|
||||
|
||||
wxStaticText* xlxOverrideLocalLabel = new wxStaticText(this, -1, _("Override local hosts files"));
|
||||
sizer->Add(xlxOverrideLocalLabel, 0, wxALL | wxALIGN_RIGHT, BORDER_SIZE);
|
||||
|
||||
m_xlxOverrideLocal = new wxChoice(this, CHOICE_ENABLED, wxDefaultPosition, wxSize(CONTROL_WIDTH, -1));
|
||||
m_xlxOverrideLocal->Append(_("No"));
|
||||
m_xlxOverrideLocal->Append(_("Yes"));
|
||||
sizer->Add(m_xlxOverrideLocal, 0, wxALL | wxALIGN_LEFT, BORDER_SIZE);
|
||||
m_xlxOverrideLocal->SetSelection(xlxOverrideLocal ? 1 : 0);
|
||||
|
||||
wxStaticText* xlxHostsFileUrlLabel = new wxStaticText(this, -1, _("Hosts file URL"));
|
||||
sizer->Add(xlxHostsFileUrlLabel, 0, wxALL | wxALIGN_RIGHT, BORDER_SIZE);
|
||||
|
|
@ -88,28 +80,22 @@ bool CXLXSet::Validate()
|
|||
int n = m_xlxEnabled->GetCurrentSelection();
|
||||
if (n == wxNOT_FOUND)
|
||||
return false;
|
||||
|
||||
n = m_xlxOverrideLocal->GetCurrentSelection();
|
||||
if (n == wxNOT_FOUND)
|
||||
return false;
|
||||
|
||||
#if defined(__WINDOWS__)
|
||||
// TODO F4FXL try to figure out why below symbols are not found under ubuntu
|
||||
/*wxString value = m_xlxHostsFileUrl->GetValue();
|
||||
wxString value = m_xlxHostsFileUrl->GetValue();
|
||||
wxURL url(value);
|
||||
if (url.GetError() != wxURL_NOERR)
|
||||
return false;*/
|
||||
if (url.GetError() == wxURL_NOERR)
|
||||
return true;
|
||||
|
||||
wxMessageDialog dialog(this, _("The XLX host file URL is not valid"), m_title + _(" Error"), wxICON_ERROR);
|
||||
dialog.ShowModal();
|
||||
return false;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CXLXSet::getXLXOverrideLocal() const
|
||||
{
|
||||
int c = m_xlxEnabled->GetCurrentSelection();
|
||||
if (c == wxNOT_FOUND)
|
||||
return false;
|
||||
|
||||
return c == 1;
|
||||
}
|
||||
|
||||
bool CXLXSet::getXLXEnabled() const
|
||||
{
|
||||
|
|
@ -124,13 +110,16 @@ wxString CXLXSet::getXLXHostsFileUrl() const
|
|||
{
|
||||
wxString value = m_xlxHostsFileUrl->GetValue();
|
||||
|
||||
|
||||
#if defined(__WINDOWS__)
|
||||
// TODO F4FXL try to figure out why below symbols are not found under ubuntu
|
||||
//wxURL url(value);
|
||||
//if (url.GetError() == wxURL_NOERR)
|
||||
// return value;
|
||||
|
||||
wxURL url(value);
|
||||
if (url.GetError() == wxURL_NOERR)
|
||||
return value;
|
||||
|
||||
return wxEmptyString;
|
||||
#else
|
||||
return value;
|
||||
#endif
|
||||
}
|
||||
|
||||
void CXLXSet::onEnabled(wxCommandEvent &event)
|
||||
|
|
|
|||
|
|
@ -23,13 +23,12 @@
|
|||
|
||||
class CXLXSet : public wxPanel {
|
||||
public:
|
||||
CXLXSet(wxWindow* parent, int id, const wxString& title, bool xlxEnabled, bool xlxOverrideLocal, const wxString& xlxHostsFileUrl);
|
||||
CXLXSet(wxWindow* parent, int id, const wxString& title, bool xlxEnabled, const wxString& xlxHostsFileUrl);
|
||||
virtual ~CXLXSet();
|
||||
|
||||
virtual bool Validate();
|
||||
|
||||
virtual bool getXLXEnabled() const;
|
||||
virtual bool getXLXOverrideLocal() const;
|
||||
virtual wxString getXLXHostsFileUrl() const;
|
||||
|
||||
virtual void onEnabled(wxCommandEvent& event);
|
||||
|
|
@ -37,7 +36,6 @@ public:
|
|||
private:
|
||||
wxString m_title;
|
||||
wxChoice* m_xlxEnabled;
|
||||
wxChoice* m_xlxOverrideLocal;
|
||||
wxTextCtrl* m_xlxHostsFileUrl;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
|
|
|||
53
Makefile
53
Makefile
|
|
@ -1,7 +1,14 @@
|
|||
ifeq ($(TARGET), opendv)
|
||||
export DATADIR := "/usr/share/opendv"
|
||||
export LOGDIR := "/var/log/opendv"
|
||||
export CONFDIR := "/etc"
|
||||
export BINDIR := "/usr/sbin"
|
||||
else
|
||||
export DATADIR := "/usr/share/ircddbgateway"
|
||||
export LOGDIR := "/var/log"
|
||||
export CONFDIR := "/etc"
|
||||
export BINDIR := "/usr/bin"
|
||||
endif
|
||||
|
||||
# Add -DDCS_LINK to the end of the CFLAGS line below to add DCS linking to StarNet
|
||||
# Add -DDEXTRA_LINK to the end of the CFLAGS line below to add DExtra linking to StarNet
|
||||
|
|
@ -9,49 +16,63 @@ export BINDIR := "/usr/bin"
|
|||
export CXX := $(shell wx-config --cxx)
|
||||
export CFLAGS := -O2 -Wall $(shell wx-config --cxxflags) -DLOG_DIR='$(LOGDIR)' -DCONF_DIR='$(CONFDIR)' -DDATA_DIR='$(DATADIR)'
|
||||
export GUILIBS := $(shell wx-config --libs adv,core,base)
|
||||
export LIBS := $(shell wx-config --libs base)
|
||||
export LIBS := $(shell wx-config --libs base,net)
|
||||
export LDFLAGS :=
|
||||
|
||||
.PHONY: all
|
||||
all: ircDDBGateway/ircddbgatewayd ircDDBGatewayConfig/ircddbgatewayconfig APRSTransmit/aprstransmitd RemoteControl/remotecontrold \
|
||||
StarNetServer/starnetserverd TextTransmit/texttransmitd TimerControl/timercontrold TimeServer/timeserverd VoiceTransmit/voicetransmitd
|
||||
|
||||
ircDDBGateway/ircddbgatewayd: Common/Common.a ircDDB/IRCDDB.a
|
||||
ircDDBGateway/ircddbgatewayd: Common/Common.a ircDDB/IRCDDB.a force
|
||||
$(MAKE) -C ircDDBGateway
|
||||
|
||||
ircDDBGatewayConfig/ircddbgatewayconfig: GUICommon/GUICommon.a Common/Common.a
|
||||
ircDDBGatewayConfig/ircddbgatewayconfig: GUICommon/GUICommon.a Common/Common.a force
|
||||
$(MAKE) -C ircDDBGatewayConfig
|
||||
|
||||
APRSTransmit/aprstransmitd: Common/Common.a
|
||||
APRSTransmit/aprstransmitd: Common/Common.a force
|
||||
$(MAKE) -C APRSTransmit
|
||||
|
||||
RemoteControl/remotecontrold: Common/Common.a
|
||||
RemoteControl/remotecontrold: Common/Common.a force
|
||||
$(MAKE) -C RemoteControl
|
||||
|
||||
StarNetServer/starnetserverd: Common/Common.a ircDDB/IRCDDB.a
|
||||
StarNetServer/starnetserverd: Common/Common.a ircDDB/IRCDDB.a force
|
||||
$(MAKE) -C StarNetServer
|
||||
|
||||
TextTransmit/texttransmitd: Common/Common.a
|
||||
TextTransmit/texttransmitd: Common/Common.a force
|
||||
$(MAKE) -C TextTransmit
|
||||
|
||||
TimerControl/timercontrold: Common/Common.a GUICommon/GUICommon.a
|
||||
TimerControl/timercontrold: Common/Common.a GUICommon/GUICommon.a force
|
||||
$(MAKE) -C TimerControl
|
||||
|
||||
TimeServer/timeserverd: Common/Common.a GUICommon/GUICommon.a
|
||||
TimeServer/timeserverd: Common/Common.a GUICommon/GUICommon.a force
|
||||
$(MAKE) -C TimeServer
|
||||
|
||||
VoiceTransmit/voicetransmitd: Common/Common.a
|
||||
VoiceTransmit/voicetransmitd: Common/Common.a force
|
||||
$(MAKE) -C VoiceTransmit
|
||||
|
||||
GUICommon/GUICommon.a:
|
||||
GUICommon/GUICommon.a: force
|
||||
$(MAKE) -C GUICommon
|
||||
|
||||
Common/Common.a:
|
||||
Common/Common.a: force
|
||||
$(MAKE) -C Common
|
||||
|
||||
ircDDB/IRCDDB.a:
|
||||
ircDDB/IRCDDB.a: force
|
||||
$(MAKE) -C ircDDB
|
||||
|
||||
.PHONY: install
|
||||
install: all
|
||||
ifeq ($(TARGET), opendv)
|
||||
useradd --user-group -M --system opendv --shell /bin/false || true
|
||||
|
||||
# Add the opendv user to the audio group so that it can open audio
|
||||
# devices when using the audio based drivers such as the Sound Card
|
||||
# one. Maybe this should be moved to DStarRepeater instead ...
|
||||
usermod --groups audio --append opendv || true
|
||||
usermod --groups dialout --append opendv || true
|
||||
usermod --groups gpio --append opendv || true
|
||||
mkdir /var/log/opendv || true
|
||||
chown opendv:opendv /var/log/opendv
|
||||
endif
|
||||
$(MAKE) -C Data install
|
||||
$(MAKE) -C APRSTransmit install
|
||||
$(MAKE) -C ircDDBGateway install
|
||||
|
|
@ -63,6 +84,7 @@ install: all
|
|||
$(MAKE) -C VoiceTransmit install
|
||||
$(MAKE) -C ircDDBGatewayConfig install
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(MAKE) -C Common clean
|
||||
$(MAKE) -C ircDDB clean
|
||||
|
|
@ -76,3 +98,8 @@ clean:
|
|||
$(MAKE) -C TimeServer clean
|
||||
$(MAKE) -C VoiceTransmit clean
|
||||
$(MAKE) -C ircDDBGatewayConfig clean
|
||||
|
||||
.PHONY: force
|
||||
force :
|
||||
@true
|
||||
|
||||
|
|
|
|||
40
MakefileGUI
40
MakefileGUI
|
|
@ -1,7 +1,14 @@
|
|||
ifeq ($(TARGET), opendv)
|
||||
export DATADIR := "/usr/share/opendv"
|
||||
export LOGDIR := "/var/log/opendv"
|
||||
export CONFDIR := "/etc"
|
||||
export BINDIR := "/usr/sbin"
|
||||
else
|
||||
export DATADIR := "/usr/share/ircddbgateway"
|
||||
export LOGDIR := "/var/log"
|
||||
export CONFDIR := "/etc"
|
||||
export BINDIR := "/usr/bin"
|
||||
endif
|
||||
|
||||
# Add -DDCS_LINK to the end of the CFLAGS line below to add DCS linking to StarNet
|
||||
# Add -DDEXTRA_LINK to the end of the CFLAGS line below to add DExtra linking to StarNet
|
||||
|
|
@ -9,48 +16,50 @@ export BINDIR := "/usr/bin"
|
|||
export CXX := $(shell wx-config --cxx)
|
||||
export CFLAGS := -O2 -Wall $(shell wx-config --cxxflags) -DLOG_DIR='$(LOGDIR)' -DCONF_DIR='$(CONFDIR)' -DDATA_DIR='$(DATADIR)'
|
||||
export GUILIBS := $(shell wx-config --libs adv,core,base)
|
||||
export LIBS := $(shell wx-config --libs base)
|
||||
export LIBS := $(shell wx-config --libs base,net)
|
||||
export LDFLAGS :=
|
||||
|
||||
.PHONY: all
|
||||
all: ircDDBGateway/ircddbgateway ircDDBGatewayConfig/ircddbgatewayconfig APRSTransmit/aprstransmitd RemoteControl/remotecontrol \
|
||||
StarNetServer/starnetserver TextTransmit/texttransmitd TimerControl/timercontrol TimeServer/timeserver VoiceTransmit/voicetransmitd
|
||||
|
||||
ircDDBGateway/ircddbgateway: GUICommon/GUICommon.a Common/Common.a ircDDB/IRCDDB.a
|
||||
ircDDBGateway/ircddbgateway: GUICommon/GUICommon.a Common/Common.a ircDDB/IRCDDB.a force
|
||||
$(MAKE) -C ircDDBGateway -f MakefileGUI
|
||||
|
||||
ircDDBGatewayConfig/ircddbgatewayconfig: GUICommon/GUICommon.a Common/Common.a
|
||||
ircDDBGatewayConfig/ircddbgatewayconfig: GUICommon/GUICommon.a Common/Common.a force
|
||||
$(MAKE) -C ircDDBGatewayConfig
|
||||
|
||||
APRSTransmit/aprstransmitd: Common/Common.a
|
||||
APRSTransmit/aprstransmitd: Common/Common.a force
|
||||
$(MAKE) -C APRSTransmit
|
||||
|
||||
RemoteControl/remotecontrol: Common/Common.a
|
||||
RemoteControl/remotecontrol: Common/Common.a force
|
||||
$(MAKE) -C RemoteControl -f MakefileGUI
|
||||
|
||||
StarNetServer/starnetserver: Common/Common.a ircDDB/IRCDDB.a
|
||||
StarNetServer/starnetserver: Common/Common.a ircDDB/IRCDDB.a force
|
||||
$(MAKE) -C StarNetServer -f MakefileGUI
|
||||
|
||||
TextTransmit/texttransmitd: Common/Common.a
|
||||
TextTransmit/texttransmitd: Common/Common.a force
|
||||
$(MAKE) -C TextTransmit
|
||||
|
||||
TimerControl/timercontrol: Common/Common.a GUICommon/GUICommon.a
|
||||
TimerControl/timercontrol: Common/Common.a GUICommon/GUICommon.a force
|
||||
$(MAKE) -C TimerControl -f MakefileGUI
|
||||
|
||||
TimeServer/timeserver: Common/Common.a GUICommon/GUICommon.a
|
||||
TimeServer/timeserver: Common/Common.a GUICommon/GUICommon.a force
|
||||
$(MAKE) -C TimeServer -f MakefileGUI
|
||||
|
||||
VoiceTransmit/voicetransmitd: Common/Common.a
|
||||
VoiceTransmit/voicetransmitd: Common/Common.a force
|
||||
$(MAKE) -C VoiceTransmit
|
||||
|
||||
GUICommon/GUICommon.a:
|
||||
GUICommon/GUICommon.a: force
|
||||
$(MAKE) -C GUICommon
|
||||
|
||||
Common/Common.a:
|
||||
Common/Common.a: force
|
||||
$(MAKE) -C Common
|
||||
|
||||
ircDDB/IRCDDB.a:
|
||||
ircDDB/IRCDDB.a: force
|
||||
$(MAKE) -C ircDDB
|
||||
|
||||
.PHONY: install
|
||||
install: all
|
||||
$(MAKE) -C Data install
|
||||
$(MAKE) -C APRSTransmit install
|
||||
|
|
@ -63,6 +72,7 @@ install: all
|
|||
$(MAKE) -C VoiceTransmit install
|
||||
$(MAKE) -C ircDDBGatewayConfig install
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(MAKE) -C Common clean
|
||||
$(MAKE) -C ircDDB clean
|
||||
|
|
@ -76,3 +86,7 @@ clean:
|
|||
$(MAKE) -C TimeServer -f MakefileGUI clean
|
||||
$(MAKE) -C VoiceTransmit clean
|
||||
$(MAKE) -C ircDDBGatewayConfig clean
|
||||
|
||||
.PHONY: force
|
||||
force:
|
||||
true;
|
||||
|
|
|
|||
23
README.md
23
README.md
|
|
@ -10,7 +10,7 @@ This is the ircDDB Gateway. It allows a D-Star Repeater to interface into callsi
|
|||
* XLX reflectors.
|
||||
* CCS7 routing.
|
||||
* D-RATS data transfers.
|
||||
* Gateway DPRS data to aprs.fi.
|
||||
* Gateway DPRS data to APRS-IS.
|
||||
* Full multi lingual text and voice announcements.
|
||||
* DTMF or UR call control.
|
||||
* Remote control interface.
|
||||
|
|
@ -22,3 +22,24 @@ There are many external programs that allow for inserting voice or text messages
|
|||
They all build on 32-bit and 64-bit Linux as well as on Windows using Visual Studio 2017 on x86 and x64.
|
||||
|
||||
This software is licenced under the GPL v2.
|
||||
|
||||
# Build and installing
|
||||
## Regular build
|
||||
```shell
|
||||
make
|
||||
make -f MakefileGUI #only required if you want to build the GUI programs
|
||||
sudo make install
|
||||
```
|
||||
## Drop-in replacement for dl5di OpenDV packages
|
||||
This will conpile the program to be used as a drop in replacement for the no longer maintained DL5DI OpenDV packages. Systemd files to run ircddbgatewayd as daemon will also be installed.
|
||||
```shell
|
||||
export TARGET=opendv
|
||||
make
|
||||
make -f MakefileGUI #only required if you want to build the GUI programs
|
||||
sudo make install
|
||||
```
|
||||
Now you should edit the configuration in the file /etc/ircddbgateway to match your needs.
|
||||
```shell
|
||||
sudo systemctl enable ircddbgatewayd.service #enable service
|
||||
sudo service ircddbgatewayd start
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,17 +1,24 @@
|
|||
OBJECTS = RemoteControlAppD.o RemoteControlCallsignData.o RemoteControlConfig.o RemoteControlLinkData.o RemoteControlRemoteControlHandler.o \
|
||||
RemoteControlRepeaterData.o RemoteControlStarNetGroup.o RemoteControlStarNetUser.o
|
||||
|
||||
.PHONY: all
|
||||
all: remotecontrold
|
||||
|
||||
remotecontrold: $(OBJECTS)
|
||||
remotecontrold: $(OBJECTS) ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o remotecontrold
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 remotecontrold $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) remotecontrold *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -2,17 +2,25 @@ OBJECTS = RemoteControlApp.o RemoteControlCallsignData.o RemoteControlConfig.o R
|
|||
RemoteControlPreferences.o RemoteControlRemoteControlHandler.o RemoteControlRemoteSet.o RemoteControlRepeaterData.o \
|
||||
RemoteControlRepeaterPanel.o RemoteControlStarNetGroup.o RemoteControlStarNetPanel.o RemoteControlStarNetUser.o
|
||||
|
||||
.PHONY: all
|
||||
all: remotecontrol
|
||||
|
||||
remotecontrol: $(OBJECTS)
|
||||
remotecontrol: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a $(LDFLAGS) $(GUILIBS) -o remotecontrol
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CFLAGS) -I../Common -I../GUICommon -c -o $@ $<
|
||||
$(CXX) -MM $(CFLAGS) -I../Common -I../GUICommon $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 remotecontrol $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) remotecontrol *.o *.d *.bak *~
|
||||
|
||||
../GUICommon/GUICommon.a:
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,24 @@
|
|||
OBJECTS = StarNetServerAppD.o StarNetServerConfig.o StarNetServerThread.o StarNetServerThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: starnetserverd
|
||||
|
||||
starnetserverd: $(OBJECTS)
|
||||
starnetserverd: $(OBJECTS) ../Common/Common.a ../ircDDB/IRCDDB.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a ../ircDDB/IRCDDB.a $(LDFLAGS) $(LIBS) -o starnetserverd
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -I../ircDDB -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common -I../ircDDB $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 starnetserverd $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) starnetserverd *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
../ircDDB/IRCDDB.a:
|
||||
|
|
|
|||
|
|
@ -2,17 +2,25 @@ OBJECTS = StarNetServerApp.o StarNetServerCallsignSet.o StarNetServerConfig.o St
|
|||
StarNetServerLogRedirect.o StarNetServerMiscellaneousSet.o StarNetServerPreferences.o StarNetServerThread.o \
|
||||
StarNetServerThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: starnetserver
|
||||
|
||||
starnetserver: $(OBJECTS)
|
||||
starnetserver: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a ../ircDDB/IRCDDB.a $(LDFLAGS) $(GUILIBS) -o starnetserver
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CFLAGS) -I../Common -I../GUICommon -I../ircDDB -c -o $@ $<
|
||||
$(CXX) -MM $(CFLAGS) -I../Common -I../GUICommon -I../ircDDB $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 starnetserver $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) starnetserver *.o *.d *.bak *~
|
||||
|
||||
../GUICommon/GUICommon.a:
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,23 @@
|
|||
OBJECTS = TextTransmit.o
|
||||
|
||||
.PHONY: all
|
||||
all: texttransmitd
|
||||
|
||||
texttransmitd: $(OBJECTS)
|
||||
texttransmitd: $(OBJECTS) ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o texttransmitd
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 texttransmitd $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) texttransmitd *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,23 @@
|
|||
OBJECTS = TimeServerD.o TimeServerConfig.o TimeServerThread.o TimeServerThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: timeserverd
|
||||
|
||||
timeserverd: $(OBJECTS)
|
||||
timeserverd: $(OBJECTS) ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o timeserverd
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 timeserverd $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) timeserverd *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -1,17 +1,25 @@
|
|||
OBJECTS = TimeServerApp.o TimeServerAnnouncementsSet.o TimeServerConfig.o TimeServerFrame.o TimeServerGatewaySet.o TimeServerLogRedirect.o \
|
||||
TimeServerPreferences.o TimeServerThread.o TimeServerThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: timeserver
|
||||
|
||||
timeserver: $(OBJECTS)
|
||||
timeserver: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a $(LDFLAGS) $(GUILIBS) -o timeserver
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CFLAGS) -I../Common -I../GUICommon -c -o $@ $<
|
||||
$(CXX) -MM $(CFLAGS) -I../Common -I../GUICommon $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 timeserver $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) timeserver *.o *.d *.bak *~
|
||||
|
||||
../GUICommon/GUICommon.a:
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,25 @@
|
|||
OBJECTS = TimerControlAppD.o TimerControlConfig.o TimerControlItemFile.o TimerControlRemoteControlHandler.o TimerControlThread.o \
|
||||
TimerControlThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: timercontrold
|
||||
|
||||
timercontrold: $(OBJECTS)
|
||||
timercontrold: $(OBJECTS) ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o timercontrold
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 timercontrold $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) timercontrold *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
|
||||
|
|
|
|||
|
|
@ -2,17 +2,25 @@ OBJECTS = TimerControlApp.o TimerControlConfig.o TimerControlFrame.o TimerContro
|
|||
TimerControlRemoteControlHandler.o TimerControlRemoteSet.o TimerControlRepeaterPanel.o TimerControlThread.o \
|
||||
TimerControlThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: timercontrol
|
||||
|
||||
timercontrol: $(OBJECTS)
|
||||
timercontrol: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a $(LDFLAGS) $(GUILIBS) -o timercontrol
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CFLAGS) -I../Common -I../GUICommon -c -o $@ $<
|
||||
$(CXX) -MM $(CFLAGS) -I../Common -I../GUICommon $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 timercontrol $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) timercontrol *.o *.d *.bak *~
|
||||
|
||||
../GUICommon/GUICommon.a:
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,23 @@
|
|||
OBJECTS = VoiceStore.o VoiceTransmit.o
|
||||
|
||||
.PHONY: all
|
||||
all: voicetransmitd
|
||||
|
||||
voicetransmitd: $(OBJECTS)
|
||||
voicetransmitd: $(OBJECTS) ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a $(LDFLAGS) $(LIBS) -o voicetransmitd
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 voicetransmitd $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) voicetransmitd *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,19 @@
|
|||
OBJECTS = IRCClient.o IRCDDBApp.o IRCDDBClient.o IRCDDB.o IRCDDBMultiClient.o IRCMessage.o IRCMessageQueue.o IRCProtocol.o IRCReceiver.o \
|
||||
IRCutils.o
|
||||
|
||||
.PHONY: all
|
||||
all: IRCDDB.a
|
||||
|
||||
IRCDDB.a: $(OBJECTS)
|
||||
$(AR) rcs IRCDDB.a $(OBJECTS)
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) $< > $*.d
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) IRCDDB.a *.o *.d *.bak *~
|
||||
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@
|
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
|
|
@ -171,8 +171,10 @@ int CIRCDDBGatewayApp::OnExit()
|
|||
|
||||
wxLogInfo(APPLICATION_NAME + wxT(" is exiting"));
|
||||
|
||||
//m_thread->kill();
|
||||
wxGetApp().GetTopWindow()->Close();
|
||||
m_thread->kill();
|
||||
wxWindow * topWin = wxGetApp().GetTopWindow();
|
||||
if (topWin != NULL)
|
||||
topWin->Close();
|
||||
|
||||
delete m_config;
|
||||
|
||||
|
|
@ -887,10 +889,9 @@ void CIRCDDBGatewayApp::createThread()
|
|||
wxLogInfo(wxT("DCS enabled: %d, CCS enabled: %d, server: %s"), int(dcsEnabled), int(ccsEnabled), ccsHost.c_str());
|
||||
|
||||
bool xlxEnabled;
|
||||
bool xlxOverrideLocal;
|
||||
wxString xlxHostsFileUrl;
|
||||
m_config->getXLX(xlxEnabled, xlxOverrideLocal, xlxHostsFileUrl);
|
||||
wxLogInfo(wxT("XLX enabled: %d, Override Local %d, Hosts file url: %s"), int(xlxEnabled), int(xlxOverrideLocal), xlxHostsFileUrl.c_str());
|
||||
m_config->getXLX(xlxEnabled, xlxHostsFileUrl);
|
||||
wxLogInfo(wxT("XLX enabled: %d, Hosts file url: %s"), int(xlxEnabled), xlxHostsFileUrl.c_str());
|
||||
|
||||
if (repeaterBand1.Len() > 1U || repeaterBand2.Len() > 1U ||
|
||||
repeaterBand3.Len() > 1U || repeaterBand4.Len() > 1U) {
|
||||
|
|
@ -960,7 +961,7 @@ void CIRCDDBGatewayApp::createThread()
|
|||
thread->setDExtra(dextraEnabled, dextraMaxDongles);
|
||||
thread->setDCS(dcsEnabled);
|
||||
thread->setCCS(ccsEnabled, ccsHost);
|
||||
thread->setXLX(xlxEnabled, xlxOverrideLocal, xlxEnabled ? CXLXHostsFileDownloader::Download(xlxHostsFileUrl) : wxString(wxEmptyString));
|
||||
thread->setXLX(xlxEnabled, xlxEnabled ? CXLXHostsFileDownloader::Download(xlxHostsFileUrl) : wxString(wxEmptyString));
|
||||
thread->setInfoEnabled(infoEnabled);
|
||||
thread->setEchoEnabled(echoEnabled);
|
||||
thread->setDTMFEnabled(dtmfEnabled);
|
||||
|
|
|
|||
|
|
@ -880,10 +880,9 @@ bool CIRCDDBGatewayAppD::createThread()
|
|||
wxLogInfo(wxT("DCS enabled: %d, CCS enabled: %d, server: %s"), int(dcsEnabled), int(ccsEnabled), ccsHost.c_str());
|
||||
|
||||
bool xlxEnabled;
|
||||
bool xlxOverrideLocal;
|
||||
wxString xlxHostsFileUrl;
|
||||
config.getXLX(xlxEnabled, xlxOverrideLocal, xlxHostsFileUrl);
|
||||
wxLogInfo(wxT("XLX enabled: %d, Override Local %d, Hosts file url: %s"), int(xlxEnabled), int(xlxOverrideLocal), xlxHostsFileUrl.c_str());
|
||||
config.getXLX(xlxEnabled, xlxHostsFileUrl);
|
||||
wxLogInfo(wxT("XLX enabled: %d, Override Local %d, Hosts file url: %s"), int(xlxEnabled), xlxHostsFileUrl.c_str());
|
||||
|
||||
if (repeaterBand1.Len() > 1U || repeaterBand2.Len() > 1U ||
|
||||
repeaterBand3.Len() > 1U || repeaterBand4.Len() > 1U) {
|
||||
|
|
@ -952,7 +951,7 @@ bool CIRCDDBGatewayAppD::createThread()
|
|||
m_thread->setDExtra(dextraEnabled, dextraMaxDongles);
|
||||
m_thread->setDCS(dcsEnabled);
|
||||
m_thread->setCCS(ccsEnabled, ccsHost);
|
||||
m_thread->setXLX(xlxEnabled, xlxOverrideLocal, xlxEnabled ? CXLXHostsFileDownloader::Download(xlxHostsFileUrl): wxString(wxEmptyString));
|
||||
m_thread->setXLX(xlxEnabled, xlxEnabled ? CXLXHostsFileDownloader::Download(xlxHostsFileUrl): wxString(wxEmptyString));
|
||||
m_thread->setInfoEnabled(infoEnabled);
|
||||
m_thread->setEchoEnabled(echoEnabled);
|
||||
m_thread->setDTMFEnabled(dtmfEnabled);
|
||||
|
|
|
|||
|
|
@ -72,6 +72,9 @@ m_dextraPool(NULL),
|
|||
m_dplusPool(NULL),
|
||||
m_dcsPool(NULL),
|
||||
m_g2Handler(NULL),
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
m_natTraversal(NULL),
|
||||
#endif
|
||||
m_aprsWriter(NULL),
|
||||
m_irc(NULL),
|
||||
m_cache(),
|
||||
|
|
@ -217,6 +220,13 @@ void CIRCDDBGatewayThread::run()
|
|||
m_g2Handler = NULL;
|
||||
}
|
||||
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
if(m_g2Handler != NULL) {
|
||||
m_natTraversal = new CNatTraversalHandler();
|
||||
m_natTraversal->setG2Handler(m_g2Handler);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Wait here until we have the essentials to run
|
||||
while (!m_killed && (m_dextraPool == NULL || m_dplusPool == NULL || m_dcsPool == NULL || m_g2Handler == NULL || (m_icomRepeaterHandler == NULL && m_hbRepeaterHandler == NULL && m_dummyRepeaterHandler == NULL) || m_gatewayCallsign.IsEmpty()))
|
||||
::wxMilliSleep(500UL); // 1/2 sec
|
||||
|
|
@ -573,11 +583,10 @@ void CIRCDDBGatewayThread::setDCS(bool enabled)
|
|||
m_dcsEnabled = enabled;
|
||||
}
|
||||
|
||||
void CIRCDDBGatewayThread::setXLX(bool enabled, bool overrideLocal, const wxString& xlxHostsFileName)
|
||||
void CIRCDDBGatewayThread::setXLX(bool enabled, const wxString& xlxHostsFileName)
|
||||
{
|
||||
m_xlxEnabled = enabled;
|
||||
m_xlxHostsFileName = xlxHostsFileName;
|
||||
m_xlxOverrideLocal = overrideLocal;
|
||||
}
|
||||
|
||||
void CIRCDDBGatewayThread::setCCS(bool enabled, const wxString& host)
|
||||
|
|
@ -719,7 +728,9 @@ void CIRCDDBGatewayThread::processIrcDDB()
|
|||
if (!address.IsEmpty()) {
|
||||
wxLogInfo(wxT("USER: %s %s %s %s"), user.c_str(), repeater.c_str(), gateway.c_str(), address.c_str());
|
||||
m_cache.updateUser(user, repeater, gateway, address, timestamp, DP_DEXTRA, false, false);
|
||||
m_g2Handler->punchUDPHole(address);
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
m_natTraversal->traverseNatG2(address);
|
||||
#endif
|
||||
} else {
|
||||
wxLogInfo(wxT("USER: %s NOT FOUND"), user.c_str());
|
||||
}
|
||||
|
|
@ -736,7 +747,9 @@ void CIRCDDBGatewayThread::processIrcDDB()
|
|||
if (!address.IsEmpty()) {
|
||||
wxLogInfo(wxT("REPEATER: %s %s %s"), repeater.c_str(), gateway.c_str(), address.c_str());
|
||||
m_cache.updateRepeater(repeater, gateway, address, DP_DEXTRA, false, false);
|
||||
m_g2Handler->punchUDPHole(address);
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
m_natTraversal->traverseNatG2(address);
|
||||
#endif
|
||||
} else {
|
||||
wxLogMessage(wxT("REPEATER: %s NOT FOUND"), repeater.c_str());
|
||||
}
|
||||
|
|
@ -754,7 +767,9 @@ void CIRCDDBGatewayThread::processIrcDDB()
|
|||
if (!address.IsEmpty()) {
|
||||
wxLogInfo(wxT("GATEWAY: %s %s"), gateway.c_str(), address.c_str());
|
||||
m_cache.updateGateway(gateway, address, DP_DEXTRA, false, false);
|
||||
m_g2Handler->punchUDPHole(address);
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
m_natTraversal->traverseNatG2(address);
|
||||
#endif
|
||||
} else {
|
||||
wxLogMessage(wxT("GATEWAY: %s NOT FOUND"), gateway.c_str());
|
||||
}
|
||||
|
|
@ -1102,9 +1117,8 @@ void CIRCDDBGatewayThread::loadGateways()
|
|||
|
||||
void CIRCDDBGatewayThread::loadReflectors()
|
||||
{
|
||||
if(m_xlxEnabled && !m_xlxOverrideLocal) {
|
||||
if (m_xlxEnabled)
|
||||
loadXLXReflectors();
|
||||
}
|
||||
|
||||
if (m_dplusEnabled) {
|
||||
wxFileName fileName(wxFileName::GetHomeDir(), DPLUS_HOSTS_FILE_NAME);
|
||||
|
|
@ -1147,10 +1161,6 @@ void CIRCDDBGatewayThread::loadReflectors()
|
|||
if (fileName.IsFileReadable())
|
||||
loadDCSReflectors(fileName.GetFullPath());
|
||||
}
|
||||
|
||||
if(m_xlxEnabled && m_xlxOverrideLocal) {
|
||||
loadXLXReflectors();
|
||||
}
|
||||
}
|
||||
|
||||
void CIRCDDBGatewayThread::loadDExtraReflectors(const wxString& fileName)
|
||||
|
|
@ -1252,6 +1262,10 @@ void CIRCDDBGatewayThread::loadXLXReflectors()
|
|||
CHostFile hostFile = CHostFile(m_xlxHostsFileName, true);
|
||||
for (unsigned int i = 0U; i < hostFile.getCount(); i++) {
|
||||
wxString reflector = hostFile.getName(i);
|
||||
|
||||
if (!reflector.StartsWith(wxT("XLX")))
|
||||
continue;
|
||||
|
||||
in_addr address = CUDPReaderWriter::lookup(hostFile.getAddress(i));
|
||||
bool lock = hostFile.getLock(i);
|
||||
|
||||
|
|
@ -1268,10 +1282,10 @@ void CIRCDDBGatewayThread::loadXLXReflectors()
|
|||
reflector.Truncate(LONG_CALLSIGN_LENGTH - 1U);
|
||||
reflector.Append(wxT("G"));
|
||||
|
||||
if(m_dcsEnabled && reflector.StartsWith(wxT("DCS")))
|
||||
//if (m_dcsEnabled && reflector.StartsWith(wxT("DCS")))
|
||||
m_cache.updateGateway(reflector, addrText, DP_DCS, lock, true);
|
||||
else if(m_dextraEnabled && reflector.StartsWith(wxT("XRF")))
|
||||
m_cache.updateGateway(reflector, addrText, DP_DEXTRA, lock, true);
|
||||
//else if (m_dextraEnabled && reflector.StartsWith(wxT("XRF")))
|
||||
// m_cache.updateGateway(reflector, addrText, DP_DEXTRA, lock, true);
|
||||
|
||||
count++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@
|
|||
#include "IRCDDB.h"
|
||||
#include "Timer.h"
|
||||
#include "Defs.h"
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
#include "NatTraversalHandler.h"
|
||||
#endif
|
||||
|
||||
#include <wx/wx.h>
|
||||
|
||||
|
|
@ -58,7 +61,7 @@ public:
|
|||
virtual void setDExtra(bool enabled, unsigned int maxDongles);
|
||||
virtual void setDPlus(bool enabled, unsigned int maxDongles, const wxString& login);
|
||||
virtual void setDCS(bool enabled);
|
||||
virtual void setXLX(bool enabled, bool overrideLocal, const wxString& fileName);
|
||||
virtual void setXLX(bool enabled, const wxString& fileName);
|
||||
virtual void setCCS(bool enabled, const wxString& host);
|
||||
virtual void setLog(bool enabled);
|
||||
virtual void setAPRSWriter(CAPRSWriter* writer);
|
||||
|
|
@ -92,6 +95,9 @@ private:
|
|||
CDPlusProtocolHandlerPool* m_dplusPool;
|
||||
CDCSProtocolHandlerPool* m_dcsPool;
|
||||
CG2ProtocolHandler* m_g2Handler;
|
||||
#if defined(ENABLE_NAT_TRAVERSAL)
|
||||
CNatTraversalHandler* m_natTraversal;
|
||||
#endif
|
||||
CAPRSWriter* m_aprsWriter;
|
||||
CIRCDDB* m_irc;
|
||||
CCacheManager m_cache;
|
||||
|
|
@ -103,7 +109,6 @@ private:
|
|||
wxString m_dplusLogin;
|
||||
bool m_dcsEnabled;
|
||||
bool m_xlxEnabled;
|
||||
bool m_xlxOverrideLocal;
|
||||
wxString m_xlxHostsFileName;
|
||||
bool m_ccsEnabled;
|
||||
wxString m_ccsHost;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,29 @@
|
|||
OBJECTS = IRCDDBGatewayAppD.o IRCDDBGatewayStatusData.o IRCDDBGatewayThread.o IRCDDBGatewayThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: ircddbgatewayd
|
||||
|
||||
ircddbgatewayd: $(OBJECTS)
|
||||
ircddbgatewayd: $(OBJECTS) ../ircDDB/IRCDDB.a ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../Common/Common.a ../ircDDB/IRCDDB.a $(LDFLAGS) $(LIBS) -o ircddbgatewayd
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -DwxUSE_GUI=0 $(CFLAGS) -I../Common -I../ircDDB -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common -I../ircDDB $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 ircddbgatewayd $(BINDIR)
|
||||
cp ircddbgateway-emptyconfig $(CONFDIR)/ircddbgateway
|
||||
ifeq ($(TARGET), opendv)
|
||||
cp ../debian/ircddbgatewayd.ircddbgatewayd.service /lib/systemd/system/ircddbgatewayd.service
|
||||
endif
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) ircddbgatewayd *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
../ircDDB/IRCDDB.a:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,26 @@
|
|||
OBJECTS = IRCDDBGatewayApp.o IRCDDBGatewayFrame.o IRCDDBGatewayLogRedirect.o IRCDDBGatewayStatusData.o IRCDDBGatewayThread.o \
|
||||
IRCDDBGatewayThreadHelper.o
|
||||
|
||||
.PHONY: all
|
||||
all: ircddbgateway
|
||||
|
||||
ircddbgateway: $(OBJECTS)
|
||||
ircddbgateway: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a ../ircDDB/IRCDDB.a $(LDFLAGS) $(GUILIBS) -o ircddbgateway
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CFLAGS) -I../Common -I../GUICommon -I../ircDDB -c -o $@ $<
|
||||
$(CXX) -MM $(CFLAGS) -I../Common -I../GUICommon -I../ircDDB $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 ircddbgateway $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) ircddbgateway *.o *.d *.bak *~
|
||||
|
||||
../GUICommon/GUICommon.a:
|
||||
../Common/Common.a:
|
||||
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
183
ircDDBGateway/ircddbgateway-emptyconfig
Normal file
183
ircDDBGateway/ircddbgateway-emptyconfig
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
gatewayType=0
|
||||
gatewayCallsign=
|
||||
gatewayAddress=0.0.0.0
|
||||
icomAddress=172.16.0.20
|
||||
icomPort=20000
|
||||
hbAddress=127.0.0.1
|
||||
hbPort=20010
|
||||
latitude=
|
||||
longitude=
|
||||
description1=
|
||||
description2=
|
||||
url=
|
||||
repeaterCall1=
|
||||
repeaterBand1=B
|
||||
repeaterType1=0
|
||||
repeaterAddress1=127.0.0.1
|
||||
repeaterPort1=20011
|
||||
reflector1=
|
||||
atStartup1=0
|
||||
reconnect1=0
|
||||
frequency1=434.00000
|
||||
offset1=0.0000
|
||||
rangeKms1=0.000
|
||||
latitude1=0.000000
|
||||
longitude1=0.000000
|
||||
agl1=0.000
|
||||
description1_1=
|
||||
description1_2=
|
||||
url1=
|
||||
band1_1=0
|
||||
band1_2=0
|
||||
band1_3=0
|
||||
repeaterCall2=
|
||||
repeaterBand2=
|
||||
repeaterType2=0
|
||||
repeaterAddress2=127.0.0.1
|
||||
repeaterPort2=20012
|
||||
reflector2=
|
||||
atStartup2=0
|
||||
reconnect2=0
|
||||
frequency2=0.00000
|
||||
offset2=0.0000
|
||||
rangeKms2=0.000
|
||||
latitude2=0.000000
|
||||
longitude2=0.000000
|
||||
agl2=0.000
|
||||
description2_1=
|
||||
description2_2=
|
||||
url2=
|
||||
band2_1=0
|
||||
band2_2=0
|
||||
band2_3=0
|
||||
repeaterCall3=
|
||||
repeaterBand3=
|
||||
repeaterType3=0
|
||||
repeaterAddress3=127.0.0.1
|
||||
repeaterPort3=20013
|
||||
reflector3=
|
||||
atStartup3=0
|
||||
reconnect3=0
|
||||
frequency3=0.00000
|
||||
offset3=0.0000
|
||||
rangeKms3=0.000
|
||||
latitude3=0.000000
|
||||
longitude3=0.000000
|
||||
agl3=0.000
|
||||
description3_1=
|
||||
description3_2=
|
||||
url3=
|
||||
band3_1=0
|
||||
band3_2=0
|
||||
band3_3=0
|
||||
repeaterCall4=
|
||||
repeaterBand4=
|
||||
repeaterType4=0
|
||||
repeaterAddress4=127.0.0.1
|
||||
repeaterPort4=20014
|
||||
reflector4=
|
||||
atStartup4=0
|
||||
reconnect4=0
|
||||
frequency4=0.00000
|
||||
offset4=0.0000
|
||||
rangeKms4=0.000
|
||||
latitude4=0.000000
|
||||
longitude4=0.000000
|
||||
agl4=0.000
|
||||
description4_1=
|
||||
description4_2=
|
||||
url4=
|
||||
band4_1=0
|
||||
band4_2=0
|
||||
band4_3=0
|
||||
ircddbEnabled=1
|
||||
ircddbHostname=rr.openquad.net
|
||||
ircddbUsername=
|
||||
ircddbPassword=
|
||||
ircddbEnabled2=0
|
||||
ircddbHostname2=rr.openquad.net
|
||||
ircddbUsername2=
|
||||
ircddbPassword2=
|
||||
ircddbEnabled3=0
|
||||
ircddbHostname3=
|
||||
ircddbUsername3=
|
||||
ircddbPassword3=
|
||||
ircddbEnabled4=0
|
||||
ircddbHostname4=
|
||||
ircddbUsername4=
|
||||
ircddbPassword4=
|
||||
aprsEnabled=1
|
||||
aprsHostname=rotate.aprs2.net
|
||||
aprsPassword=
|
||||
aprsPort=14580
|
||||
dextraEnabled=1
|
||||
dextraMaxDongles=5
|
||||
dplusEnabled=0
|
||||
dplusMaxDongles=5
|
||||
dplusLogin=
|
||||
dcsEnabled=1
|
||||
ccsEnabled=1
|
||||
ccsHost=CCS704
|
||||
xlxEnabled=1
|
||||
xlxHostsFileUrl=http://xlxapi.rlx.lu/api.php?do=GetReflectorHostname
|
||||
starNetBand1=A
|
||||
starNetCallsign1=
|
||||
starNetLogoff1=
|
||||
starNetInfo1=
|
||||
starNetPermanent1=
|
||||
starNetUserTimeout1=300
|
||||
starNetGroupTimeout1=300
|
||||
starNetCallsignSwitch1=0
|
||||
starNetTXMsgSwitch1=1
|
||||
starNetReflector1=
|
||||
starNetBand2=A
|
||||
starNetCallsign2=
|
||||
starNetLogoff2=
|
||||
starNetInfo2=
|
||||
starNetPermanent2=
|
||||
starNetUserTimeout2=300
|
||||
starNetGroupTimeout2=300
|
||||
starNetCallsignSwitch2=0
|
||||
starNetTXMsgSwitch2=1
|
||||
starNetReflector2=
|
||||
starNetBand3=A
|
||||
starNetCallsign3=
|
||||
starNetLogoff3=
|
||||
starNetInfo3=
|
||||
starNetPermanent3=
|
||||
starNetUserTimeout3=300
|
||||
starNetGroupTimeout3=300
|
||||
starNetCallsignSwitch3=0
|
||||
starNetTXMsgSwitch3=1
|
||||
starNetReflector3=
|
||||
starNetBand4=A
|
||||
starNetCallsign4=
|
||||
starNetLogoff4=
|
||||
starNetInfo4=
|
||||
starNetPermanent4=
|
||||
starNetUserTimeout4=300
|
||||
starNetGroupTimeout4=300
|
||||
starNetCallsignSwitch4=0
|
||||
starNetTXMsgSwitch4=1
|
||||
starNetReflector4=
|
||||
starNetBand5=A
|
||||
starNetCallsign5=
|
||||
starNetLogoff5=
|
||||
starNetInfo5=
|
||||
starNetPermanent5=
|
||||
starNetUserTimeout5=300
|
||||
starNetGroupTimeout5=300
|
||||
starNetCallsignSwitch5=0
|
||||
starNetTXMsgSwitch5=1
|
||||
starNetReflector5=
|
||||
remoteEnabled=1
|
||||
remotePassword=
|
||||
remotePort=54321
|
||||
language=0
|
||||
infoEnabled=1
|
||||
echoEnabled=1
|
||||
logEnabled=0
|
||||
dratsEnabled=0
|
||||
dtmfEnabled=1
|
||||
windowX=-1
|
||||
windowY=-1
|
||||
|
|
@ -65,6 +65,7 @@ m_starNet3(NULL),
|
|||
m_starNet4(NULL),
|
||||
m_starNet5(NULL),
|
||||
m_remote(NULL),
|
||||
m_mobileGPS(NULL),
|
||||
m_miscellaneous(NULL)
|
||||
{
|
||||
SetMenuBar(createMenuBar());
|
||||
|
|
@ -103,9 +104,8 @@ m_miscellaneous(NULL)
|
|||
m_config->getDCS(dcsEnabled, ccsEnabled, ccsHost);
|
||||
|
||||
bool xlxEnabled;
|
||||
bool xlxOverrideLocal;
|
||||
wxString xlxHostsFileUrl;
|
||||
m_config->getXLX(xlxEnabled, xlxOverrideLocal, xlxHostsFileUrl);
|
||||
m_config->getXLX(xlxEnabled, xlxHostsFileUrl);
|
||||
|
||||
GATEWAY_TYPE gatewayType;
|
||||
wxString gatewayCallsign, gatewayAddress, icomAddress, hbAddress, description1, description2, url;
|
||||
|
|
@ -211,7 +211,7 @@ m_miscellaneous(NULL)
|
|||
m_dcs = new CDCSSet(noteBook, -1, APPLICATION_NAME, dcsEnabled, ccsEnabled, ccsHost);
|
||||
noteBook->AddPage(m_dcs, _("DCS and CCS"), false);
|
||||
|
||||
m_xlx = new CXLXSet(noteBook, -1, APPLICATION_NAME, xlxEnabled, xlxOverrideLocal, xlxHostsFileUrl);
|
||||
m_xlx = new CXLXSet(noteBook, -1, APPLICATION_NAME, xlxEnabled, xlxHostsFileUrl);
|
||||
noteBook->AddPage(m_xlx, _("XLX Hosts File"), false);
|
||||
|
||||
#if defined(DEXTRA_LINK) || defined(DCS_LINK)
|
||||
|
|
@ -314,6 +314,14 @@ m_miscellaneous(NULL)
|
|||
m_remote = new CRemoteSet(noteBook, -1, APPLICATION_NAME, remoteEnabled, remotePassword, remotePort);
|
||||
noteBook->AddPage(m_remote, wxT("Remote"), false);
|
||||
|
||||
bool mobileGPSEnabled;
|
||||
wxString mobileGPSAddress;
|
||||
unsigned int mobileGPSPort;
|
||||
m_config->getMobileGPS(mobileGPSEnabled, mobileGPSAddress, mobileGPSPort);
|
||||
|
||||
m_mobileGPS = new CMobileGPSSet(noteBook, -1, APPLICATION_NAME, mobileGPSEnabled, mobileGPSAddress, mobileGPSPort);
|
||||
noteBook->AddPage(m_mobileGPS, wxT("Mobile GPS"), false);
|
||||
|
||||
TEXT_LANG language;
|
||||
bool infoEnabled, echoEnabled, logEnabled, dratsEnabled, dtmfEnabled;
|
||||
m_config->getMiscellaneous(language, infoEnabled, echoEnabled, logEnabled, dratsEnabled, dtmfEnabled);
|
||||
|
|
@ -321,15 +329,15 @@ m_miscellaneous(NULL)
|
|||
m_miscellaneous = new CIRCDDBGatewayConfigMiscellaneousSet(noteBook, -1, APPLICATION_NAME, language, infoEnabled, echoEnabled, logEnabled, dratsEnabled, dtmfEnabled);
|
||||
noteBook->AddPage(m_miscellaneous, wxT("Misc"), false);
|
||||
|
||||
sizer->Add(noteBook, 0, wxEXPAND | wxALL, BORDER_SIZE);
|
||||
sizer->Add(noteBook, 0, wxEXPAND | wxALL, BORDER_SIZE);
|
||||
|
||||
panel->SetSizer(sizer);
|
||||
panel->SetSizer(sizer);
|
||||
|
||||
mainSizer->Add(panel, 0, wxEXPAND | wxALL, BORDER_SIZE);
|
||||
mainSizer->Add(panel, 0, wxEXPAND | wxALL, BORDER_SIZE);
|
||||
|
||||
mainSizer->SetSizeHints(this);
|
||||
mainSizer->SetSizeHints(this);
|
||||
|
||||
SetSizer(mainSizer);
|
||||
SetSizer(mainSizer);
|
||||
}
|
||||
|
||||
CIRCDDBGatewayConfigFrame::~CIRCDDBGatewayConfigFrame()
|
||||
|
|
@ -371,7 +379,7 @@ void CIRCDDBGatewayConfigFrame::onSave(wxCommandEvent&)
|
|||
!m_repeaterInfo4->Validate() ||
|
||||
!m_ircDDB->Validate() || !m_ircDDB2->Validate() || !m_ircDDB3->Validate() || !m_ircDDB4->Validate() || !m_dprs->Validate() || !m_dplus->Validate() || !m_dcs->Validate() || !m_xlx->Validate() ||
|
||||
!m_starNet1->Validate() || !m_starNet2->Validate() || !m_starNet3->Validate() || !m_starNet4->Validate() ||
|
||||
!m_starNet5->Validate() || !m_remote->Validate() || !m_miscellaneous->Validate())
|
||||
!m_starNet5->Validate() || !m_remote->Validate() || !m_mobileGPS->Validate() || !m_miscellaneous->Validate())
|
||||
return;
|
||||
|
||||
GATEWAY_TYPE gatewayType = m_gateway->getType();
|
||||
|
|
@ -517,9 +525,8 @@ void CIRCDDBGatewayConfigFrame::onSave(wxCommandEvent&)
|
|||
m_config->setDCS(dcsEnabled, ccsEnabled, ccsHost);
|
||||
|
||||
bool xlxEnabled = m_xlx->getXLXEnabled();
|
||||
bool xlxOverrideLocal = m_xlx->getXLXOverrideLocal();
|
||||
wxString xlxHostsFileUrl = m_xlx->getXLXHostsFileUrl();
|
||||
m_config->setXLX(xlxEnabled, xlxOverrideLocal, xlxHostsFileUrl);
|
||||
m_config->setXLX(xlxEnabled, xlxHostsFileUrl);
|
||||
|
||||
wxString starNetBand1 = m_starNet1->getBand();
|
||||
wxString starNetCallsign1 = m_starNet1->getCallsign();
|
||||
|
|
@ -606,6 +613,11 @@ void CIRCDDBGatewayConfigFrame::onSave(wxCommandEvent&)
|
|||
unsigned int remotePort = m_remote->getPort();
|
||||
m_config->setRemote(remoteEnabled, remotePassword, remotePort);
|
||||
|
||||
bool mobileGPSEnabled = m_mobileGPS->getEnabled();
|
||||
wxString mobileGPSAddress = m_mobileGPS->getAddress();
|
||||
unsigned int mobileGPSPort = m_mobileGPS->getPort();
|
||||
m_config->setMobileGPS(mobileGPSEnabled, mobileGPSAddress, mobileGPSPort);
|
||||
|
||||
TEXT_LANG language = m_miscellaneous->getLanguage();
|
||||
bool infoEnabled = m_miscellaneous->getInfoEnabled();
|
||||
bool echoEnabled = m_miscellaneous->getEchoEnabled();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2010-2014 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2010-2014,2018 by Jonathan Naylor G4KLX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -25,6 +25,7 @@
|
|||
#include "IRCDDBGatewayConfig.h"
|
||||
#include "RepeaterInfoSet.h"
|
||||
#include "RepeaterDataSet.h"
|
||||
#include "MobileGPSSet.h"
|
||||
#include "StarNetSet.h"
|
||||
#include "RemoteSet.h"
|
||||
#include "DExtraSet.h"
|
||||
|
|
@ -65,13 +66,14 @@ private:
|
|||
CDExtraSet* m_dextra;
|
||||
CDPlusSet* m_dplus;
|
||||
CDCSSet* m_dcs;
|
||||
CXLXSet* m_xlx;
|
||||
CXLXSet* m_xlx;
|
||||
CStarNetSet* m_starNet1;
|
||||
CStarNetSet* m_starNet2;
|
||||
CStarNetSet* m_starNet3;
|
||||
CStarNetSet* m_starNet4;
|
||||
CStarNetSet* m_starNet5;
|
||||
CRemoteSet* m_remote;
|
||||
CMobileGPSSet* m_mobileGPS;
|
||||
CIRCDDBGatewayConfigMiscellaneousSet* m_miscellaneous;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
|
|
|||
|
|
@ -1,17 +1,25 @@
|
|||
OBJECTS = IRCDDBGatewayConfigApp.o IRCDDBGatewayConfigFrame.o IRCDDBGatewayConfigGatewaySet.o IRCDDBGatewayConfigIrcDDBSet.o \
|
||||
IRCDDBGatewayConfigMiscellaneousSet.o
|
||||
|
||||
.PHONY: all
|
||||
all: ircddbgatewayconfig
|
||||
|
||||
ircddbgatewayconfig: $(OBJECTS)
|
||||
ircddbgatewayconfig: $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a
|
||||
$(CXX) $(OBJECTS) ../GUICommon/GUICommon.a ../Common/Common.a $(LDFLAGS) $(GUILIBS) -o ircddbgatewayconfig
|
||||
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CFLAGS) -I../Common -I../GUICommon -c -o $@ $<
|
||||
$(CXX) -MM -DwxUSE_GUI=0 $(CFLAGS) -I../Common -I../GUICommon $< > $*.d
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -g bin -o root -m 0775 ircddbgatewayconfig $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) ircddbgatewayconfig *.o *.d *.bak *~
|
||||
|
||||
../Common/Common.a:
|
||||
../GUICommon/GUICommon.a:
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@
|
|||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir>$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(WXWIN)\include;$(WXWIN)\lib\vc_x64_dll\mswu;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
|
|||
Loading…
Reference in a new issue