A wxWidget free port of ircddbGateway with some more (not yet all implemented) features ;)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Geoffrey Merck a1a783b64d
#5 Add Dplus NAT Traversal
4 years ago
.circleci disbale debug 4 years ago
.vscode #5 Add Dplus NAT Traversal 4 years ago
Data Make it install as systemd service 4 years ago
Tests #5 add tests for protocol handler pools 4 years ago
debian fix wrong systemd file 4 years ago
.gitignore Add tests 4 years ago
AMBEData.cpp First commit, basic config 4 years ago
AMBEData.h First commit, basic config 4 years ago
APRSCollector.cpp #9 clean up 4 years ago
APRSCollector.h #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
APRSEntry.cpp #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
APRSEntry.h #8 Simplify and add language suport to APRS status 4 years ago
APRSEntryStatus.cpp #8 Simplify and add language suport to APRS status 4 years ago
APRSEntryStatus.h #8 Simplify and add language suport to APRS status 4 years ago
APRSFixedIdFrameProvider.cpp #13 use APRSFrame everywhere 4 years ago
APRSFixedIdFrameProvider.h #13 use APRSFrame everywhere 4 years ago
APRSFormater.cpp #9 clean up 4 years ago
APRSFormater.h #12 Add formater and start using it 4 years ago
APRSFrame.cpp #12 add destructor 4 years ago
APRSFrame.h #9 add telemetry parsing 4 years ago
APRSGPSDIdFrameProvider.cpp #13 use APRSFrame everywhere 4 years ago
APRSGPSDIdFrameProvider.h #13 use APRSFrame everywhere 4 years ago
APRSHandler.cpp remove test filter 4 years ago
APRSHandler.h #12 add APRSUnit and callbacks 4 years ago
APRSHandlerThread.cpp #5 better error handling, do not leave the program in a dangling state 4 years ago
APRSHandlerThread.h #9 Handle keeap alives from server 4 years ago
APRSIdFrameProvider.cpp #13 use APRSFrame everywhere 4 years ago
APRSIdFrameProvider.h #13 use APRSFrame everywhere 4 years ago
APRSParser.cpp #9 add telemetry parsing 4 years ago
APRSParser.h #12 add some more frame types 4 years ago
APRSUnit.cpp #9 fix unsupported frames trigerring tx 4 years ago
APRSUnit.h #9 set text for message, improve tests 4 years ago
APRSUtils.cpp #12 add APRSUnit and callbacks 4 years ago
APRSUtils.h #12 add APRSUnit and callbacks 4 years ago
APRStoDPRS.cpp #9 set text for message, improve tests 4 years ago
APRStoDPRS.h #9 set text for message, improve tests 4 years ago
AnnouncementUnit.cpp Add primitive logging 4 years ago
AnnouncementUnit.h First commit, basic config 4 years ago
AudioUnit.cpp Fix Dplus not saying "Linked to" 4 years ago
AudioUnit.h Fix audio unit not compiling 4 years ago
CCITTChecksum.cpp First commit, basic config 4 years ago
CCITTChecksum.h First commit, basic config 4 years ago
CCSCallback.h First commit, basic config 4 years ago
CCSData.cpp get rid of wxT macro 4 years ago
CCSData.h First commit, basic config 4 years ago
CCSProtocolHandler.cpp First commit, basic config 4 years ago
CCSProtocolHandler.h First commit, basic config 4 years ago
CacheManager.cpp First commit, basic config 4 years ago
CacheManager.h First commit, basic config 4 years ago
CallsignList.cpp First commit, basic config 4 years ago
CallsignList.h First commit, basic config 4 years ago
Config.cpp Do not rely on strtok for key/value parsing fixes #14 4 years ago
Config.h Do not rely on strtok for key/value parsing fixes #14 4 years ago
ConnectData.cpp Add primitive logging 4 years ago
ConnectData.h First commit, basic config 4 years ago
DCSHandler.cpp get rid of wxT macro 4 years ago
DCSHandler.h Redo DCs/Dextra from scratch 4 years ago
DCSProtocolHandler.cpp First commit, basic config 4 years ago
DCSProtocolHandler.h First commit, basic config 4 years ago
DCSProtocolHandlerPool.cpp #5 make sure we always return incoming handler 4 years ago
DCSProtocolHandlerPool.h fix crash on DCS unlink 4 years ago
DDData.cpp First commit, basic config 4 years ago
DDData.h First commit, basic config 4 years ago
DDHandler.cpp Add primitive logging 4 years ago
DDHandler.h Add wx Free DDHandler 4 years ago
DExtraHandler.cpp #5 send notify messages 4 years ago
DExtraHandler.h #5 send notify messages 4 years ago
DExtraProtocolHandler.cpp #5 first implementaion of Dextra NatTraversal 4 years ago
DExtraProtocolHandler.h #5 first implementaion of Dextra NatTraversal 4 years ago
DExtraProtocolHandlerPool.cpp #5 ensure we always return the incoming handler 4 years ago
DExtraProtocolHandlerPool.h Unify names 4 years ago
DPlusAuthenticator.cpp #5 better error handling, do not leave the program in a dangling state 4 years ago
DPlusAuthenticator.h Strip wxWidgets out of DPlusAuthenticator 4 years ago
DPlusHandler.cpp #5 Add Dplus NAT Traversal 4 years ago
DPlusHandler.h #5 Add Dplus NAT Traversal 4 years ago
DPlusProtocolHandler.cpp #5 Add Dplus NAT Traversal 4 years ago
DPlusProtocolHandler.h #5 Add Dplus NAT Traversal 4 years ago
DPlusProtocolHandlerPool.cpp #5 make sure we always return incoming handler 4 years ago
DPlusProtocolHandlerPool.h Handle DPlsu the same way has DCS and Dextra 4 years ago
DStarDefines.h #9 there is no message type, msg uses gps type 4 years ago
DStarGatewayApp.cpp #5 make ircddb version sam structure as ircddbgateway ircddb version 4 years ago
DStarGatewayApp.h #5 better error handling, do not leave the program in a dangling state 4 years ago
DStarGatewayConfig.cpp #6 first try with GPSD 4 years ago
DStarGatewayConfig.h #6 first try with GPSD 4 years ago
DStarGatewayDefs.h rename config file 4 years ago
DStarGatewayStatusData.cpp Rename IRCDDBGatewaysStatusData -> DStarGetwayStatusData 4 years ago
DStarGatewayStatusData.h Rename IRCDDBGatewaysStatusData -> DStarGetwayStatusData 4 years ago
DStarGatewayThread.cpp #5 Add Dplus NAT Traversal 4 years ago
DStarGatewayThread.h #5 Remove nat traversal handler 4 years ago
DTMF.cpp First commit, basic config 4 years ago
DTMF.h First commit, basic config 4 years ago
DVTOOLFileReader.cpp First commit, basic config 4 years ago
DVTOOLFileReader.h First commit, basic config 4 years ago
Defs.h #6 first try with GPSD 4 years ago
DummyRepeaterProtocolHandler.cpp Add primitive logging 4 years ago
DummyRepeaterProtocolHandler.h Add DummyRepeater protocol handler (wx free) 4 years ago
EchoUnit.cpp Add primitive logging 4 years ago
EchoUnit.h First commit, basic config 4 years ago
G2Handler.cpp #5 Reeanbale NatTraversal 4 years ago
G2Handler.h Use original G4KLX G2 Handler 4 years ago
G2ProtocolHandler.cpp #5 traverseNat cleanup 4 years ago
G2ProtocolHandler.h Revert "#5 remove portmap" 4 years ago
GPSACollector.cpp #9 clean up log debug 4 years ago
GPSACollector.h #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
GatewayCache.cpp First commit, basic config 4 years ago
GatewayCache.h First commit, basic config 4 years ago
HBRepeaterProtocolHandler.cpp get rid of wxT macro 4 years ago
HBRepeaterProtocolHandler.h Add HBRepeaterController (wx free) 4 years ago
HeaderData.cpp First commit, basic config 4 years ago
HeaderData.h First commit, basic config 4 years ago
HeaderLogger.cpp Fix garbage in Headers.log 4 years ago
HeaderLogger.h Add wx Free Headers Logger 4 years ago
HeardData.cpp First commit, basic config 4 years ago
HeardData.h First commit, basic config 4 years ago
HostFile.cpp Fix crash on empty string 4 years ago
HostFile.h Add HostFile (wx Free) 4 years ago
IRCApplication.h First commit, basic config 4 years ago
IRCClient.cpp Add primitive logging 4 years ago
IRCClient.h First commit, basic config 4 years ago
IRCDDB.cpp First commit, basic config 4 years ago
IRCDDB.h #5 Add Dplus NAT Traversal 4 years ago
IRCDDBApp.cpp #5 Add Dplus NAT Traversal 4 years ago
IRCDDBApp.h #5 Add Dplus NAT Traversal 4 years ago
IRCDDBClient.cpp #5 Add Dplus NAT Traversal 4 years ago
IRCDDBClient.h #5 Add Dplus NAT Traversal 4 years ago
IRCDDBMultiClient.cpp #5 Add Dplus NAT Traversal 4 years ago
IRCDDBMultiClient.h #5 Add Dplus NAT Traversal 4 years ago
IRCMessage.cpp #5 rename member variable 4 years ago
IRCMessage.h #5 rename member variable 4 years ago
IRCMessageQueue.cpp #5 properly name IRC member variables 4 years ago
IRCMessageQueue.h #5 properly name IRC member variables 4 years ago
IRCProtocol.cpp #5 rename member variable 4 years ago
IRCProtocol.h Update copyright 4 years ago
IRCReceiver.cpp #5 rename member variable 4 years ago
IRCReceiver.h Update copyright 4 years ago
IcomRepeaterProtocolHandler.cpp #5 better error handling, do not leave the program in a dangling state 4 years ago
IcomRepeaterProtocolHandler.h Removed remaining wxUint16 4 years ago
LICENSE First commit, basic config 4 years ago
Log.cpp Add more log configuration #4 4 years ago
Log.h Merge branch 'develop' into feature/RS-MS1AMsgtoAPRS_#9 4 years ago
LogConsoleTarget.cpp Add mutltiple Log Targets #4 4 years ago
LogConsoleTarget.h Add mutltiple Log Targets #4 4 years ago
LogFileTarget.cpp #10 Keep log file open 4 years ago
LogFileTarget.h #10 Keep log file open 4 years ago
LogSeverity.h Add more log configuration #4 4 years ago
LogTarget.cpp Add mutltiple Log Targets #4 4 years ago
LogTarget.h Add more log configuration #4 4 years ago
Makefile #5 use terminate handler in debug mode 4 years ago
NMEASentenceCollector.cpp #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
NMEASentenceCollector.h #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
PollData.cpp First commit, basic config 4 years ago
PollData.h First commit, basic config 4 years ago
README.md #5 Update Readme 4 years ago
RSMS1AMessageBuilder.cpp #9 make every sign explicit 4 years ago
RSMS1AMessageBuilder.h #9 make every sign explicit 4 years ago
RSMS1AMessageCollector.cpp #9 remove debug log 4 years ago
RSMS1AMessageCollector.h #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
ReadAPRSFrameCallback.h #12 add APRSUnit and callbacks 4 years ago
ReflectorCallback.h First commit, basic config 4 years ago
RemoteHandler.cpp #13 add replacement for wxINT32_SWAP_ON_BE macro 4 years ago
RemoteHandler.h Add Remote handler 4 years ago
RemoteLinkData.cpp First commit, basic config 4 years ago
RemoteLinkData.h First commit, basic config 4 years ago
RemoteProtocolHandler.cpp #13 add replacement for wxINT32_SWAP_ON_BE macro 4 years ago
RemoteProtocolHandler.h Add Remote handler 4 years ago
RemoteRepeaterData.cpp First commit, basic config 4 years ago
RemoteRepeaterData.h First commit, basic config 4 years ago
RemoteUser.cpp First commit, basic config 4 years ago
RemoteUser.h First commit, basic config 4 years ago
RepeaterCache.cpp First commit, basic config 4 years ago
RepeaterCache.h First commit, basic config 4 years ago
RepeaterCallback.h First commit, basic config 4 years ago
RepeaterHandler.cpp #5 Add Dplus NAT Traversal 4 years ago
RepeaterHandler.h #12 add APRSUnit and callbacks 4 years ago
RepeaterProtocolHandler.h First commit, basic config 4 years ago
RepeaterProtocolHandlerFactory.cpp Add some verbosity 4 years ago
RepeaterProtocolHandlerFactory.h Complete loading of config and starting of thread 4 years ago
RingBuffer.h #13 use APRSFrame everywhere 4 years ago
SHA256.cpp First commit, basic config 4 years ago
SHA256.h First commit, basic config 4 years ago
SentenceCollector.cpp #9 Refactor APRS Collection logic 4 years ago
SentenceCollector.h #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
SlowDataCollector.cpp #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
SlowDataCollector.h #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
SlowDataCollectorThrottle.cpp #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
SlowDataCollectorThrottle.h #9 APRS stuff always uses strings, fix messages not being sent along with GPS 4 years ago
SlowDataEncoder.cpp #9 fix interleved data length and add more tests 4 years ago
SlowDataEncoder.h First commit, basic config 4 years ago
StatusData.cpp First commit, basic config 4 years ago
StatusData.h First commit, basic config 4 years ago
StringUtils.cpp Removed unused param 4 years ago
StringUtils.h #12 Add formater and start using it 4 years ago
TCPReaderWriterClient.cpp #12 Improve Writeline 4 years ago
TCPReaderWriterClient.h First commit, basic config 4 years ago
TextCollector.cpp First commit, basic config 4 years ago
TextCollector.h First commit, basic config 4 years ago
TextData.cpp First commit, basic config 4 years ago
TextData.h First commit, basic config 4 years ago
Thread.cpp Clean up 4 years ago
Thread.h Clean up 4 years ago
Timer.cpp First commit, basic config 4 years ago
Timer.h First commit, basic config 4 years ago
UDPReaderWriter.cpp Adjust error reporting 4 years ago
UDPReaderWriter.h Update UDPWriter to work with mobilegps 4 years ago
UserCache.cpp First commit, basic config 4 years ago
UserCache.h First commit, basic config 4 years ago
Utils.cpp Add primitive logging 4 years ago
Utils.h #13 add replacement for wxINT32_SWAP_ON_BE macro 4 years ago
Version.h Bump version number and update readme 4 years ago
VersionUnit.cpp Fix garbage in log 4 years ago
VersionUnit.h First commit, basic config 4 years ago
XLXHostsFileDownloader.cpp Add XLX Downloader 4 years ago
XLXHostsFileDownloader.h Add XLX Downloader 4 years ago
example.cfg remove my call from example.cfg 4 years ago

README.md

1. Introduction

This is a port of G4KLX Jonathan Naylor's ircddbGateway. It is wxWidgets free and has minimal dependencies to boost (header libs only) and libcurl. I plan to ad some features in the future

2. Current State

2.1. Code sanity

The current code is working, yet ugly IMHO as it is a mix of C and C++ of various ages. I realised that G4KLx started programming this over a decade ago, when C++11 was not yet a thing !

The code has also been amended to no longer rely on compiler defines for paths like log or data. These can be set in configuration file.

Quite a few classes are more or less copy/paste from each other some sanitization by using base classes or template classes would greatly improve code maintainibility. Maybe one day ;)

2.2. Code Credits

2.3. Thanks

  • Cyrille F1MHV / DF1CHB for the testing
  • Jonathan Naylor G4KLX for all the work ahead

2.4. Features

All the features found in ircddbGateway are supposed to be working. I have mixed feelings about putting these back in or not.

Features that where left out :

  • CCS: is still being used? I always considered this as trojan horse to push some DMR Agenda into DStar an more or les a burdain to use. Call sign routing is by far more flexible and superior.
  • Starnet: You might consider running Smart Group Server XL from a dedicated computer instead.
  • Announcement: same can be achieved using VoiceTransmit.
  • APRSGateway capability: I would prefer to have some sort of TCP "APRS-IS proxy" program sitting between the program and the APRS server, thus keeping the ability to directly connect to APRS-IS or not, depending on the system owner wish. I run mostly DStar Only repeaters, having an additional program to maintain is unnecessary burden.
  • DRats : Is on the to-do list see #6
  • CallSign Server : this is a legacy from the dead project xreflector.net, I will most probably drop it for good.

3. Building and installing

3.1. Initial setup

Clone the repository (only required initally)

git clone https://github.com/F4FXL/DStarGateway.git
cd DStarGateway

From inside the cloned repository run following commands to get the latest stable version

git pull -p
git fetch --tags
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
git checkout $latestTag

3.3. Get latest development version version

git checkout develop

3.4. Prerequisites and dependencies

Before first time building you need to install dependencies and prerequisites

sudo apt install build-essential libcurl4-openssl-dev libboost-dev

If you are going to build with gpsd support, also install libgps-dev

sudo apt install libgps-dev

3.5. Building

Regular building

make

3.5.0.1. Build With GPSD Support

make USE_GPS=1

3.5.0.2. Debug Build

make ENABLE_DEBUG=1

Note that this will link with libl

3.6. Installing

The program is meant to run as a systemd service. All bits an pieces are provided.

sudo make install newhostfiles

3.7. Configuring

After installing you have to edit the configuration file. If you went with default paths, the config file is located in /usr/local/etc/dstargateway.cfg

The configuration format is quite straight forward. It is organised in sections and key/value pairs. The order of the sections or key/values pairs inside the sections does not matter nor does casing. Boolean values can be set using true, false, 1 or 0 Floating point values must use . (point) as decimal separatorsensitive.

When done with configuration, the daemon will be started automatically on boot. To manual start and stop it use the usual systemd commands

sudo systemctl start dstargateway.service
sudo systemctl stop dstargateway.service

4. Contributing

4.1. Work Flow

I Use Git flow as my workflow. PR are welcome but pleasee observe following rules :

  • You have tested your code thoroughly
  • Compilation produces no warnings
  • Code formating rules are observed (these are very lousy though)

4.2. Continuous Integration

I have added some basic CI using CircleCI F4FXL I am trying to rewrite the code so that it can be put into some Behavior Driven Development scheme. This is a long haul task and I'll try do do it on the go while changing/adding stuff. the testing framwework used is Google Test.

5. Version History

5.1. Version 0.5

  • [Improvement] Add NAT Traversal for G2 and DExtra, using IRCDDB as a Rendez Vous server
  • [Improvement] Add forwarding of RS-MS1A messages to APRS-IS (#9)
  • [Bugfix] Failed to download XLX Hosts when URL contains a = sign (#14)
  • [Bugfix] Remote control connection failed (#13)
  • [Bugfix] Trying to connect to ghost ircDDB when no ircDDB is configured

5.2. Version 0.4

  • [Improvement] Add APRS status link feature (#8)
  • [Bugfix] Posotions received over radio were not sent to APRS-IS when GPDS connection failed. (#7)
  • [Improvement] Bring back GPSD support (#6)
  • [Improvement] Log enhancements (#4)

5.3. Version 0.3

  • [Improvement] Get ride of libcongif++ dependency. When upgrading from earlier version you need to manualy delete the config file before reinstalling.

5.4. Version 0.2

  • [Bugfix] ircDDBFreeze when repeater not found (#1)
  • Code sanitization

5.5. Version 0.1

First working version

6. Future

I started this during my 2021 seasons holiday. It took me almost 8 days to get to a workable version. Here are a couple of stuff I'd like to do :

  • ☑ Better NatTraversal
    • No banging on every gateway: use ircDDB (or something else) as mitigation server to notify peer
    • Support for all protocols (G2, DExtra, DCS (?), DPlus)
    • A branch already exists for this
  • ☑ Send the connection status to APRS-IS as a status frame
  • ☒ Reinstantiate DRATS
  • ☒ Migrate all the "accessories" (VoiceTransmit, RemoteControl ...)
  • ☒ Automatic refresh of host files
  • ☒ Reduce ircDDB dependency, build something more P2P, maybe based on Distributed Hashtable ?
  • ☒ Forward messages from RS-MS1A to APRS and vice versa
  • Everything that might come handy to make dstar the most powerful system ever :)

Powered by TurnKey Linux.