mirror of https://github.com/ShaYmez/xlxd.git
xlxd 1.2.6 / db 2.1.1
This commit is contained in:
parent
34d01b41c8
commit
16d0961e6c
|
@ -1,13 +1,20 @@
|
||||||
|
xlx db v2.1.1
|
||||||
|
|
||||||
|
- "peers.php" added hyperlink to the peers ip address
|
||||||
|
|
||||||
xlx db v2.1.0
|
xlx db v2.1.0
|
||||||
|
|
||||||
- "index.php"
|
- "index.php"
|
||||||
button "Peers" added
|
button "Peers" added
|
||||||
button "Repeaters/Nodes" shows now the number of connected devices
|
button "Repeaters/Nodes" shows now the number of connected devices
|
||||||
moved XLX name, version and service uptime to improve view on mobile devices
|
moved XLX name, version and service uptime to improve view on mobile devices
|
||||||
- "class.peer.php" added
|
|
||||||
- "peers.php" added
|
|
||||||
- "repeaters.php" limits nodes show up to 100 nodes
|
|
||||||
|
|
||||||
|
- "class.peer.php" added
|
||||||
|
|
||||||
|
- "peers.php" added
|
||||||
|
|
||||||
|
- "repeaters.php" limits nodes show up to 100 nodes
|
||||||
|
|
||||||
xlx db v2.0.6
|
xlx db v2.0.6
|
||||||
|
|
||||||
- "index.php" now reads out the XLX service uptime and not the server uptime
|
- "index.php" now reads out the XLX service uptime and not the server uptime
|
||||||
|
@ -18,4 +25,4 @@ xlx db v2.0.6
|
||||||
|
|
||||||
xlx db v2.0.5
|
xlx db v2.0.5
|
||||||
|
|
||||||
- "class.reflector.php" extra callsign checking
|
- "class.reflector.php" extra callsign checking
|
||||||
|
|
|
@ -80,7 +80,7 @@ for ($i=0;$i<count($tmpPeers);$i++) {
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="top"><img src="./img/header.jpg" alt="XLX Multiprotocol Gateway Reflector" style="margin-top:15px;" />
|
<div id="top"><img src="./img/header.jpg" alt="XLX Multiprotocol Gateway Reflector" style="margin-top:15px;" />
|
||||||
<br /> XLX<?php echo $ServiceName; ?> v<?php echo $XML->GetElement($FILECONTENT, "Version"); ?> - Dashboard v2.1.0 / Service uptime: <?php
|
<br /> XLX<?php echo $ServiceName; ?> v<?php echo $XML->GetElement($FILECONTENT, "Version"); ?> - Dashboard v2.1.1 / Service uptime: <?php
|
||||||
if (file_exists($PID) && is_readable($PID)) {
|
if (file_exists($PID) && is_readable($PID)) {
|
||||||
echo FormatSeconds(time()-filectime($PID));
|
echo FormatSeconds(time()-filectime($PID));
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ for ($i=0;$i<$Reflector->PeerCount();$i++) {
|
||||||
<td>'.FormatSeconds(time()-$Reflector->Peers[$i]->GetConnectTime()).' s</td>
|
<td>'.FormatSeconds(time()-$Reflector->Peers[$i]->GetConnectTime()).' s</td>
|
||||||
<td align="center">'.$Reflector->Peers[$i]->GetProtocol().'</td>
|
<td align="center">'.$Reflector->Peers[$i]->GetProtocol().'</td>
|
||||||
<td align="center">'.$Reflector->Peers[$i]->GetLinkedModule().'</td>
|
<td align="center">'.$Reflector->Peers[$i]->GetLinkedModule().'</td>
|
||||||
<td>'.$Reflector->Peers[$i]->GetIP().'</td>
|
<td><a href="http://'.$Reflector->Peers[$i]->GetIP().'" target="_blank" style="text-decoration:none;color:#000000;">'.$Reflector->Peers[$i]->GetIP().'</a></td>
|
||||||
</tr>';
|
</tr>';
|
||||||
if ($i == 99) { $i = $Reflector->PeerCount()+1; }
|
if ($i == 99) { $i = $Reflector->PeerCount()+1; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,7 @@ public:
|
||||||
|
|
||||||
// identity
|
// identity
|
||||||
virtual int GetProtocol(void) const { return PROTOCOL_NONE; }
|
virtual int GetProtocol(void) const { return PROTOCOL_NONE; }
|
||||||
|
virtual int GetProtocolRevision(void) const { return 0; }
|
||||||
virtual const char *GetProtocolName(void) const { return "none"; }
|
virtual const char *GetProtocolName(void) const { return "none"; }
|
||||||
virtual bool IsNode(void) const { return false; }
|
virtual bool IsNode(void) const { return false; }
|
||||||
virtual bool IsPeer(void) const { return false; }
|
virtual bool IsPeer(void) const { return false; }
|
||||||
|
|
|
@ -201,6 +201,7 @@ void CDcsProtocol::Task(void)
|
||||||
bool CDcsProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
bool CDcsProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
{
|
{
|
||||||
bool newstream = false;
|
bool newstream = false;
|
||||||
|
CCallsign via(Header->GetRpt1Callsign());
|
||||||
|
|
||||||
// find the stream
|
// find the stream
|
||||||
CPacketStream *stream = GetStream(Header->GetStreamId());
|
CPacketStream *stream = GetStream(Header->GetStreamId());
|
||||||
|
@ -211,6 +212,8 @@ bool CDcsProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
CClient *client = g_Reflector.GetClients()->FindClient(Ip, PROTOCOL_DCS);
|
CClient *client = g_Reflector.GetClients()->FindClient(Ip, PROTOCOL_DCS);
|
||||||
if ( client != NULL )
|
if ( client != NULL )
|
||||||
{
|
{
|
||||||
|
// get client callsign
|
||||||
|
via = client->GetCallsign();
|
||||||
// and try to open the stream
|
// and try to open the stream
|
||||||
if ( (stream = g_Reflector.OpenStream(Header, client)) != NULL )
|
if ( (stream = g_Reflector.OpenStream(Header, client)) != NULL )
|
||||||
{
|
{
|
||||||
|
@ -232,7 +235,7 @@ bool CDcsProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update last heard
|
// update last heard
|
||||||
g_Reflector.GetUsers()->Hearing(Header->GetMyCallsign(), Header->GetRpt1Callsign());
|
g_Reflector.GetUsers()->Hearing(Header->GetMyCallsign(), via);
|
||||||
g_Reflector.ReleaseUsers();
|
g_Reflector.ReleaseUsers();
|
||||||
|
|
||||||
// done
|
// done
|
||||||
|
|
|
@ -31,16 +31,19 @@
|
||||||
|
|
||||||
CDextraClient::CDextraClient()
|
CDextraClient::CDextraClient()
|
||||||
{
|
{
|
||||||
|
m_ProtRev = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDextraClient::CDextraClient(const CCallsign &callsign, const CIp &ip, char reflectorModule)
|
CDextraClient::CDextraClient(const CCallsign &callsign, const CIp &ip, char reflectorModule, int protRev)
|
||||||
: CClient(callsign, ip, reflectorModule)
|
: CClient(callsign, ip, reflectorModule)
|
||||||
{
|
{
|
||||||
|
m_ProtRev = protRev;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDextraClient::CDextraClient(const CDextraClient &client)
|
CDextraClient::CDextraClient(const CDextraClient &client)
|
||||||
: CClient(client)
|
: CClient(client)
|
||||||
{
|
{
|
||||||
|
m_ProtRev = client.m_ProtRev;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -39,7 +39,7 @@ class CDextraClient : public CClient
|
||||||
public:
|
public:
|
||||||
// constructors
|
// constructors
|
||||||
CDextraClient();
|
CDextraClient();
|
||||||
CDextraClient(const CCallsign &, const CIp &, char = ' ');
|
CDextraClient(const CCallsign &, const CIp &, char = ' ', int = 0);
|
||||||
CDextraClient(const CDextraClient &);
|
CDextraClient(const CDextraClient &);
|
||||||
|
|
||||||
// destructor
|
// destructor
|
||||||
|
@ -47,11 +47,16 @@ public:
|
||||||
|
|
||||||
// identity
|
// identity
|
||||||
int GetProtocol(void) const { return PROTOCOL_DEXTRA; }
|
int GetProtocol(void) const { return PROTOCOL_DEXTRA; }
|
||||||
|
int GetProtocolRevision(void) const { return m_ProtRev; }
|
||||||
const char *GetProtocolName(void) const { return "Dextra"; }
|
const char *GetProtocolName(void) const { return "Dextra"; }
|
||||||
bool IsNode(void) const { return true; }
|
bool IsNode(void) const { return true; }
|
||||||
|
|
||||||
// status
|
// status
|
||||||
bool IsAlive(void) const;
|
bool IsAlive(void) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// data
|
||||||
|
int m_ProtRev;
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -66,6 +66,7 @@ void CDextraProtocol::Task(void)
|
||||||
CIp Ip;
|
CIp Ip;
|
||||||
CCallsign Callsign;
|
CCallsign Callsign;
|
||||||
char ToLinkModule;
|
char ToLinkModule;
|
||||||
|
int ProtRev;
|
||||||
CDvHeaderPacket *Header;
|
CDvHeaderPacket *Header;
|
||||||
CDvFramePacket *Frame;
|
CDvFramePacket *Frame;
|
||||||
CDvLastFramePacket *LastFrame;
|
CDvLastFramePacket *LastFrame;
|
||||||
|
@ -103,7 +104,7 @@ void CDextraProtocol::Task(void)
|
||||||
// handle it
|
// handle it
|
||||||
OnDvLastFramePacketIn(LastFrame);
|
OnDvLastFramePacketIn(LastFrame);
|
||||||
}
|
}
|
||||||
else if ( IsValidConnectPacket(Buffer, &Callsign, &ToLinkModule) )
|
else if ( IsValidConnectPacket(Buffer, &Callsign, &ToLinkModule, &ProtRev) )
|
||||||
{
|
{
|
||||||
std::cout << "DExtra connect packet for module " << ToLinkModule << " from " << Callsign << " at " << Ip << std::endl;
|
std::cout << "DExtra connect packet for module " << ToLinkModule << " from " << Callsign << " at " << Ip << std::endl;
|
||||||
|
|
||||||
|
@ -115,7 +116,7 @@ void CDextraProtocol::Task(void)
|
||||||
m_Socket.Send(Buffer, Ip);
|
m_Socket.Send(Buffer, Ip);
|
||||||
|
|
||||||
// create the client
|
// create the client
|
||||||
CDextraClient *client = new CDextraClient(Callsign, Ip, ToLinkModule);
|
CDextraClient *client = new CDextraClient(Callsign, Ip, ToLinkModule, ProtRev);
|
||||||
|
|
||||||
// and append
|
// and append
|
||||||
g_Reflector.GetClients()->AddClient(client);
|
g_Reflector.GetClients()->AddClient(client);
|
||||||
|
@ -137,6 +138,13 @@ void CDextraProtocol::Task(void)
|
||||||
CClient *client = clients->FindClient(Callsign, Ip, PROTOCOL_DEXTRA);
|
CClient *client = clients->FindClient(Callsign, Ip, PROTOCOL_DEXTRA);
|
||||||
if ( client != NULL )
|
if ( client != NULL )
|
||||||
{
|
{
|
||||||
|
// ack disconnect packet
|
||||||
|
if ( client->GetProtocolRevision() == 1 )
|
||||||
|
{
|
||||||
|
EncodeDisconnectedPacket(&Buffer);
|
||||||
|
m_Socket.Send(Buffer, Ip);
|
||||||
|
}
|
||||||
|
// and remove it
|
||||||
clients->RemoveClient(client);
|
clients->RemoveClient(client);
|
||||||
}
|
}
|
||||||
g_Reflector.ReleaseClients();
|
g_Reflector.ReleaseClients();
|
||||||
|
@ -267,6 +275,7 @@ void CDextraProtocol::HandleKeepalives(void)
|
||||||
bool CDextraProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
bool CDextraProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
{
|
{
|
||||||
bool newstream = false;
|
bool newstream = false;
|
||||||
|
CCallsign via(Header->GetRpt1Callsign());
|
||||||
|
|
||||||
// find the stream
|
// find the stream
|
||||||
CPacketStream *stream = GetStream(Header->GetStreamId());
|
CPacketStream *stream = GetStream(Header->GetStreamId());
|
||||||
|
@ -277,6 +286,8 @@ bool CDextraProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
CClient *client = g_Reflector.GetClients()->FindClient(Ip, PROTOCOL_DEXTRA);
|
CClient *client = g_Reflector.GetClients()->FindClient(Ip, PROTOCOL_DEXTRA);
|
||||||
if ( client != NULL )
|
if ( client != NULL )
|
||||||
{
|
{
|
||||||
|
// get client callsign
|
||||||
|
via = client->GetCallsign();
|
||||||
// and try to open the stream
|
// and try to open the stream
|
||||||
if ( (stream = g_Reflector.OpenStream(Header, client)) != NULL )
|
if ( (stream = g_Reflector.OpenStream(Header, client)) != NULL )
|
||||||
{
|
{
|
||||||
|
@ -296,7 +307,7 @@ bool CDextraProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update last heard
|
// update last heard
|
||||||
g_Reflector.GetUsers()->Hearing(Header->GetMyCallsign(), Header->GetRpt1Callsign());
|
g_Reflector.GetUsers()->Hearing(Header->GetMyCallsign(), via);
|
||||||
g_Reflector.ReleaseUsers();
|
g_Reflector.ReleaseUsers();
|
||||||
|
|
||||||
// done
|
// done
|
||||||
|
@ -306,7 +317,7 @@ bool CDextraProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// packet decoding helpers
|
// packet decoding helpers
|
||||||
|
|
||||||
bool CDextraProtocol::IsValidConnectPacket(const CBuffer &Buffer, CCallsign *callsign, char *reflectormodule)
|
bool CDextraProtocol::IsValidConnectPacket(const CBuffer &Buffer, CCallsign *callsign, char *reflectormodule, int *revision)
|
||||||
{
|
{
|
||||||
bool valid = false;
|
bool valid = false;
|
||||||
if ((Buffer.size() == 11) && (Buffer.data()[9] != ' '))
|
if ((Buffer.size() == 11) && (Buffer.data()[9] != ' '))
|
||||||
|
@ -314,6 +325,7 @@ bool CDextraProtocol::IsValidConnectPacket(const CBuffer &Buffer, CCallsign *cal
|
||||||
callsign->SetCallsign(Buffer.data(), 8);
|
callsign->SetCallsign(Buffer.data(), 8);
|
||||||
callsign->SetModule(Buffer.data()[8]);
|
callsign->SetModule(Buffer.data()[8]);
|
||||||
*reflectormodule = Buffer.data()[9];
|
*reflectormodule = Buffer.data()[9];
|
||||||
|
*revision = (Buffer.data()[10] == 11) ? 1 : 0;
|
||||||
valid = (callsign->IsValid() && IsLetter(*reflectormodule));
|
valid = (callsign->IsValid() && IsLetter(*reflectormodule));
|
||||||
}
|
}
|
||||||
return valid;
|
return valid;
|
||||||
|
@ -450,6 +462,12 @@ void CDextraProtocol::EncodeDisconnectPacket(CBuffer *Buffer)
|
||||||
Buffer->Set(tag, sizeof(tag));
|
Buffer->Set(tag, sizeof(tag));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CDextraProtocol::EncodeDisconnectedPacket(CBuffer *Buffer)
|
||||||
|
{
|
||||||
|
uint8 tag[] = { 'D','I','S','C','O','N','N','E','C','T','E','D' };
|
||||||
|
Buffer->Set(tag, sizeof(tag));
|
||||||
|
}
|
||||||
|
|
||||||
bool CDextraProtocol::EncodeDvHeaderPacket(const CDvHeaderPacket &Packet, CBuffer *Buffer) const
|
bool CDextraProtocol::EncodeDvHeaderPacket(const CDvHeaderPacket &Packet, CBuffer *Buffer) const
|
||||||
{
|
{
|
||||||
uint8 tag[] = { 'D','S','V','T',0x10,0x00,0x00,0x00,0x20,0x00,0x01,0x02 };
|
uint8 tag[] = { 'D','S','V','T',0x10,0x00,0x00,0x00,0x20,0x00,0x01,0x02 };
|
||||||
|
|
|
@ -63,7 +63,7 @@ protected:
|
||||||
bool OnDvHeaderPacketIn(CDvHeaderPacket *, const CIp &);
|
bool OnDvHeaderPacketIn(CDvHeaderPacket *, const CIp &);
|
||||||
|
|
||||||
// packet decoding helpers
|
// packet decoding helpers
|
||||||
bool IsValidConnectPacket(const CBuffer &, CCallsign *, char *);
|
bool IsValidConnectPacket(const CBuffer &, CCallsign *, char *, int *);
|
||||||
bool IsValidDisconnectPacket(const CBuffer &, CCallsign *);
|
bool IsValidDisconnectPacket(const CBuffer &, CCallsign *);
|
||||||
bool IsValidKeepAlivePacket(const CBuffer &, CCallsign *);
|
bool IsValidKeepAlivePacket(const CBuffer &, CCallsign *);
|
||||||
CDvHeaderPacket *IsValidDvHeaderPacket(const CBuffer &);
|
CDvHeaderPacket *IsValidDvHeaderPacket(const CBuffer &);
|
||||||
|
@ -75,6 +75,7 @@ protected:
|
||||||
void EncodeConnectAckPacket(CBuffer *);
|
void EncodeConnectAckPacket(CBuffer *);
|
||||||
void EncodeConnectNackPacket(CBuffer *);
|
void EncodeConnectNackPacket(CBuffer *);
|
||||||
void EncodeDisconnectPacket(CBuffer *);
|
void EncodeDisconnectPacket(CBuffer *);
|
||||||
|
void EncodeDisconnectedPacket(CBuffer *);
|
||||||
bool EncodeDvHeaderPacket(const CDvHeaderPacket &, CBuffer *) const;
|
bool EncodeDvHeaderPacket(const CDvHeaderPacket &, CBuffer *) const;
|
||||||
bool EncodeDvFramePacket(const CDvFramePacket &, CBuffer *) const;
|
bool EncodeDvFramePacket(const CDvFramePacket &, CBuffer *) const;
|
||||||
bool EncodeDvLastFramePacket(const CDvLastFramePacket &, CBuffer *) const;
|
bool EncodeDvLastFramePacket(const CDvLastFramePacket &, CBuffer *) const;
|
||||||
|
|
|
@ -194,6 +194,7 @@ void CDplusProtocol::Task(void)
|
||||||
bool CDplusProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
bool CDplusProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
{
|
{
|
||||||
bool newstream = false;
|
bool newstream = false;
|
||||||
|
CCallsign via(Header->GetRpt1Callsign());
|
||||||
|
|
||||||
// find the stream
|
// find the stream
|
||||||
CPacketStream *stream = GetStream(Header->GetStreamId());
|
CPacketStream *stream = GetStream(Header->GetStreamId());
|
||||||
|
@ -209,6 +210,8 @@ bool CDplusProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
{
|
{
|
||||||
client->SetModule(Header->GetRpt1Module());
|
client->SetModule(Header->GetRpt1Module());
|
||||||
}
|
}
|
||||||
|
// get client callsign
|
||||||
|
via = client->GetCallsign();
|
||||||
// and try to open the stream
|
// and try to open the stream
|
||||||
if ( (stream = g_Reflector.OpenStream(Header, client)) != NULL )
|
if ( (stream = g_Reflector.OpenStream(Header, client)) != NULL )
|
||||||
{
|
{
|
||||||
|
@ -230,7 +233,7 @@ bool CDplusProtocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update last heard
|
// update last heard
|
||||||
g_Reflector.GetUsers()->Hearing(Header->GetMyCallsign(), Header->GetRpt1Callsign());
|
g_Reflector.GetUsers()->Hearing(Header->GetMyCallsign(), via);
|
||||||
g_Reflector.ReleaseUsers();
|
g_Reflector.ReleaseUsers();
|
||||||
|
|
||||||
// done
|
// done
|
||||||
|
|
|
@ -112,7 +112,7 @@ protected:
|
||||||
uint16 m_uiCrc;
|
uint16 m_uiCrc;
|
||||||
#ifdef IMPLEMENT_CDVHEADERPACKET_CONST_CHAR_OPERATOR
|
#ifdef IMPLEMENT_CDVHEADERPACKET_CONST_CHAR_OPERATOR
|
||||||
// buffer
|
// buffer
|
||||||
char m_sz[32];
|
char m_sz[256];
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
|
|
||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_REVISION 4
|
#define VERSION_REVISION 6
|
||||||
|
|
||||||
// global ------------------------------------------------------
|
// global ------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,10 @@ clean:
|
||||||
|
|
||||||
install:
|
install:
|
||||||
mkdir -p /xlxd
|
mkdir -p /xlxd
|
||||||
|
mv /xlxd/xlxd.blacklist /xlxd/xlxd.blacklist.bak
|
||||||
|
mv /xlxd/xlxd.whitelist /xlxd/xlxd.whitelist.bak
|
||||||
|
mv /xlxd/xlxd.interlink /xlxd/xlxd.interlink.bak
|
||||||
cp ./xlxd /xlxd/
|
cp ./xlxd /xlxd/
|
||||||
cp -i ../config/xlxd.blacklist /xlxd/
|
cp ../config/xlxd.blacklist /xlxd/
|
||||||
cp -i ../config/xlxd.whitelist /xlxd/
|
cp ../config/xlxd.whitelist /xlxd/
|
||||||
cp -i ../config/xlxd.interlink /xlxd/
|
cp ../config/xlxd.interlink /xlxd/
|
||||||
|
|
Loading…
Reference in New Issue