To provide continuous smart group experience to users regardless of the network they are using
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 7169cdb713
do not empty logoff when it not blank
5 years ago
.vscode switch to internal console 5 years ago
data Better audio 6 years ago
.gitignore Add Remote (credits N7TAE) 5 years ago
AMBEData.cpp Initial Commit 6 years ago
AMBEData.h Initial Commit 6 years ago
AnnouncementUnit.cpp Initial Commit 6 years ago
AnnouncementUnit.h Initial Commit 6 years ago
AudioUnit.cpp Ignore white space when spelling groupe name 6 years ago
AudioUnit.h Clean up 6 years ago
CCITTChecksum.cpp Initial Commit 6 years ago
CCITTChecksum.h Initial Commit 6 years ago
CCSCallback.h Initial Commit 6 years ago
CCSData.cpp Initial Commit 6 years ago
CCSData.h Initial Commit 6 years ago
CCSProtocolHandler.cpp Initial Commit 6 years ago
CCSProtocolHandler.h Initial Commit 6 years ago
CacheManager.cpp Initial Commit 6 years ago
CacheManager.h Initial Commit 6 years ago
CallsignList.cpp Initial Commit 6 years ago
CallsignList.h Initial Commit 6 years ago
ConnectData.cpp Initial Commit 6 years ago
ConnectData.h Initial Commit 6 years ago
DCSHandler.cpp Initial Commit 6 years ago
DCSHandler.h Initial Commit 6 years ago
DCSProtocolHandler.cpp Initial Commit 6 years ago
DCSProtocolHandler.h Initial Commit 6 years ago
DCSProtocolHandlerPool.cpp Initial Commit 6 years ago
DCSProtocolHandlerPool.h Initial Commit 6 years ago
DDData.cpp Initial Commit 6 years ago
DDData.h Initial Commit 6 years ago
DExtraHandler.cpp Initial Commit 6 years ago
DExtraHandler.h Initial Commit 6 years ago
DExtraProtocolHandler.cpp Initial Commit 6 years ago
DExtraProtocolHandler.h Initial Commit 6 years ago
DExtraProtocolHandlerPool.cpp Initial Commit 6 years ago
DExtraProtocolHandlerPool.h Initial Commit 6 years ago
DStarDefines.h Initial Commit 6 years ago
DTMF.cpp Initial Commit 6 years ago
DTMF.h Initial Commit 6 years ago
DVTOOLFileReader.cpp Initial Commit 6 years ago
DVTOOLFileReader.h Initial Commit 6 years ago
Defs.h Add undefined language 6 years ago
EchoUnit.cpp Initial Commit 6 years ago
EchoUnit.h Initial Commit 6 years ago
G2Handler.cpp Allow to have multiple groups with same logoff 6 years ago
G2Handler.h Initial Commit 6 years ago
G2ProtocolHandler.cpp Initial Commit 6 years ago
G2ProtocolHandler.h Initial Commit 6 years ago
GatewayCache.cpp Initial Commit 6 years ago
GatewayCache.h Initial Commit 6 years ago
GroupHandler.cpp Remove Quadnet specific messages 5 years ago
GroupHandler.h First audio prototype, still need large cleanup 6 years ago
HeaderData.cpp Initial Commit 6 years ago
HeaderData.h Initial Commit 6 years ago
HeardData.cpp Initial Commit 6 years ago
HeardData.h Initial Commit 6 years ago
IRCApplication.h Initial Commit 6 years ago
IRCClient.cpp Initial Commit 6 years ago
IRCClient.h Initial Commit 6 years ago
IRCDDB.cpp Initial Commit 6 years ago
IRCDDB.h Remove Quadnet specific messages 5 years ago
IRCDDBApp.cpp Remove Quadnet specific messages 5 years ago
IRCDDBApp.h Remove Quadnet specific messages 5 years ago
IRCDDBClient.cpp Remove Quadnet specific messages 5 years ago
IRCDDBClient.h Remove Quadnet specific messages 5 years ago
IRCDDBMultiClient.cpp Remove Quadnet specific messages 5 years ago
IRCDDBMultiClient.h Remove Quadnet specific messages 5 years ago
IRCMessage.cpp Initial Commit 6 years ago
IRCMessage.h Initial Commit 6 years ago
IRCMessageQueue.cpp Initial Commit 6 years ago
IRCMessageQueue.h Initial Commit 6 years ago
IRCProtocol.cpp Initial Commit 6 years ago
IRCProtocol.h Initial Commit 6 years ago
IRCReceiver.cpp Initial Commit 6 years ago
IRCReceiver.h Initial Commit 6 years ago
LICENSE Initial commit 6 years ago
Makefile GitVersion.h no longer a .PHONY 5 years ago
PollData.cpp Initial Commit 6 years ago
PollData.h Initial Commit 6 years ago
README.md update readme 5 years ago
ReflectorCallback.h Initial Commit 6 years ago
RemoteGroup.cpp do not empty logoff when it not blank 5 years ago
RemoteGroup.h Add Remote (credits N7TAE) 5 years ago
RemoteHandler.cpp Add Remote (credits N7TAE) 5 years ago
RemoteHandler.h Add Remote (credits N7TAE) 5 years ago
RemoteLinkData.cpp Initial Commit 6 years ago
RemoteLinkData.h Initial Commit 6 years ago
RemoteProtocolHandler.cpp Initial Commit 6 years ago
RemoteProtocolHandler.h Initial Commit 6 years ago
RemoteRepeaterData.cpp Initial Commit 6 years ago
RemoteRepeaterData.h Initial Commit 6 years ago
RemoteUser.cpp Initial Commit 6 years ago
RemoteUser.h Initial Commit 6 years ago
RepeaterCache.cpp Initial Commit 6 years ago
RepeaterCache.h Initial Commit 6 years ago
RepeaterCallback.h Initial Commit 6 years ago
RepeaterProtocolHandler.h Initial Commit 6 years ago
SGSXLApp.cpp Remove Quadnet specific messages 5 years ago
SGSXLApp.h Renaame classes SGS -> SGSXL 6 years ago
SGSXLConfig.cpp Remove Quadnet specific messages 5 years ago
SGSXLConfig.h Remove Quadnet specific messages 5 years ago
SGSXLThread.cpp Add Remote (credits N7TAE) 5 years ago
SGSXLThread.h Set language in thread 6 years ago
SHA256.cpp Initial Commit 6 years ago
SHA256.h Initial Commit 6 years ago
SlowDataEncoder.cpp Initial Commit 6 years ago
SlowDataEncoder.h Initial Commit 6 years ago
StatusData.cpp Initial Commit 6 years ago
StatusData.h Initial Commit 6 years ago
TCPReaderWriterClient.cpp Initial Commit 6 years ago
TCPReaderWriterClient.h Initial Commit 6 years ago
TLSServer.cpp Add Remote (credits N7TAE) 5 years ago
TLSServer.h Add Remote (credits N7TAE) 5 years ago
TextCollector.cpp Initial Commit 6 years ago
TextCollector.h Initial Commit 6 years ago
TextData.cpp Initial Commit 6 years ago
TextData.h Initial Commit 6 years ago
Timer.cpp Initial Commit 6 years ago
Timer.h Initial Commit 6 years ago
UDPReaderWriter.cpp Initial Commit 6 years ago
UDPReaderWriter.h Initial Commit 6 years ago
UserCache.cpp Initial Commit 6 years ago
UserCache.h Initial Commit 6 years ago
Utils.cpp Fix string to time conversion 5 years ago
Utils.h Initial Commit 6 years ago
Version.h Update version 6 years ago
VersionUnit.cpp Initial Commit 6 years ago
VersionUnit.h Initial Commit 6 years ago
example.cfg change audio directory setting to language 6 years ago
sgs-xl.service No manual editing of service file requred. Start service after network. 6 years ago

README.md

smart-group-server-xl

Our Vision

To provide Smart Groups on every ircddb based network in order to offer a continuous experience to radio users.

Introduction

The original smart-group-server is based from N7TAE original Starnet software by G4KLX. While it was written expressly for the Quadnet ircddb network this fork aims to provide an ircddb network agnostic smart group server. Since there are still dozens of repeaters out there not running on Quadnet but only on ircddb.net our vision is to offer a software allowing groups to be avaialble from every network. Users should not be impaired by a balkanized system.

** Original text from N7TAE **

“This smart-group-server is based on an original idea by John Hays K7VE for a routing group server he called STARnet Digital. This idea was first coded by Jonathan G4KLX and he called the resulting program StarNetServer. The smart-group-server is derrived from Jonathan's code and still contains his original copyrights and GPLV#2 license. This new implementation of a group routing server has many improvements and new features compared to its predecessor. The main features for the end-user is that Smart Groups allow a user to "listen first" before transmitting and also be able to see the status of the Smart Groups and users. The smart-group-server can now also handle connections from mobile clients (hotspots that get their internet connection from a cellphone). The most useful feature for provider is that a single smart-group-server can serve both DCS- and DExtra-linked groups and only the required UDP ports are created. In addtion, by using the remote control application, Smart Groups can be unlinked and linked dynamically, freeing and reallocating resources as required."

Main Features

  • Connect to 1 to many ircddb networks. If the same route exists on more than network, the most recent one is used.
  • Several groups can share same logoff callsign. Loging off will log the user from all groups inone shot.
  • Mobile hotspots can be reached.
  • Quadnet Smart Group reporting is supported
  • Sends audio login logoff messages

Server OS Requirements

systemd is used to run he smart group server as background service libconfig++-dev g++ version greater than 4.9

Adminstrative Requirements

This Smart Group Server should have a unique IP address when it logs into ircddb networks. That means you probably won't be able to run it from your home if you also have an ircddb gateway running from home. You probably shouldn't run it from your home anyway. The computer your Smart Group Server is running on should have reliable, 24/7 internet access and reliable, 24/7 power. It should also be properly protected from hackers. There are plenty of companies that provide virtual severs that easily fulfill these requirements for verly little money. (You don't need much horse-power for a typical Smart Group Server. For example, a $5/month server on Amazon Lightsail works fine.)

Also the Smart Group Server needs to have a unique callsign on every ircddb network it connects to, one that will not be used by another client on none of the networks. Ideally, you should use a Club callsign, see the Configuring section below. To use it on the ircddb.net you need a callsign with an official license. I am using a callsign I once registered with the administration but the associated repeater project never came to life

Building

These instructions are for a Debian-based OS. Begin by downloading this git repository:

git clone git://github.com/F4FXL/smart-group-server-xl.git

Install the only needed development library:

sudo apt-get install build-essential libconfig++-dev openssl libssl-dev

Change to the smart-group-server directory and type make. This should make the executable, sgs-xl without errors or warnings. By default, you will have a group server that can link groups to X-Reflectors or DCS-Reflectors. Of course you can declare an unlinked channel by simply not defining a reflector parameter for that channel.

Configuring

Before you install the group server, you need to create a configuration file called sgs.cfg. There is an example configuration file: example.cfg. The smart-group-server supports an unlimited number of channels. However there will be a practical limit based on you hardware capability. Also remember that a unique port is created for each DExtra or DCS link on a running smart-group-server. At some point you system will simply run out of connections. Be sure you look and the "StarNet Groups" tab on the openquad.net web page to be sure your new channel callsigns and logoff callsigns are not already in use! Each channel you define requires a band letter. Bands can be shared between channels. Choose any uppercase letter from 'A' to 'Z'. Each channel will have a group logon callsign and a group logoff callsign. The logon and logoff will differ only in the last letter of the callsign. PLEASE DON'T CHOOSE a channel callsign beginning in "REF", "XRF", "XLX", "DCS" or "CCS".

Your callsign parameter in the ircddb section of your configuration file is the callsign that will be used for logging into the ircddb based networks. THIS NEEDS TO BE A UNIQUE CALLSIGN on each network. Don't use your callsign if you are already using it for a repeater or a hot-spot. Ideally, you should use a Club callsign. Check with your club to see if you can use your club's callsign. Of course, don't do this if your club hosts a D-Star repeater with this callsign.

Installing and Uninstalling

To install and start the smart-group-server, first type sudo make install. This will download the latest DCS and DExtra host files and install them. This will put all the executable and the sgs-xl.cfg configuration file the in the appropriate directories (see Makefile for changing the directories) and then start the server. See the Makefile for more information. A very useful way to start it is:

sudo make install && sudo journalctl -u sgs-xl.service -f

This will allow you to view the smart-group-server log file while it's booting up. When you are satisfied it's running okay you can Control-C to end the journalctl session. To uninstall it, type sudo make uninstall and sudo make removehostfiles. This will stop the server and remove all files. You can then delete the build directory to remove every trace of the smart-group-server.

Whatsnew

v1.1

2021-03-03

Removed specific SGS IRC messages Is now compatible with N7TAE's remote https://github.com/n7tae/sgs-remote

v1.0

2020-03-10

Groups can share same logoff. Thus users will be logged off at once from every group sharing the same logoff Loging in and off now sends an audio message

Powered by TurnKey Linux.