New upstream version 6.0.24.27
This commit is contained in:
parent
7a61c594e1
commit
2634d16f41
|
@ -15,7 +15,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
8
Bpq32.c
8
Bpq32.c
|
@ -1086,7 +1086,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
||||||
// Add ? and * wildcards to NODES command (74)
|
// Add ? and * wildcards to NODES command (74)
|
||||||
// Add Port RADIO config parameter (74)
|
// Add Port RADIO config parameter (74)
|
||||||
|
|
||||||
// Version 6.0.24.1 August 2023
|
// Version 6.0.24.1 August 2024
|
||||||
|
|
||||||
// Apply NODES command wildcard to alias as well a call (2)
|
// Apply NODES command wildcard to alias as well a call (2)
|
||||||
// Add STOPPORT/STARTPORT to VARA Driver (2)
|
// Add STOPPORT/STARTPORT to VARA Driver (2)
|
||||||
|
@ -1204,8 +1204,10 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
||||||
// Fix some Rigcontrol issues with empty timebands (22)
|
// Fix some Rigcontrol issues with empty timebands (22)
|
||||||
// Fix 64 bit bug in processing INP3 Messages (22)
|
// Fix 64 bit bug in processing INP3 Messages (22)
|
||||||
// First pass at api (24)
|
// First pass at api (24)
|
||||||
// Send OK in response to Rigcontrol CMD (24);
|
// Send OK in response to Rigcontrol CMD (24)
|
||||||
|
// Disable CTS check in WriteComBlock (26)
|
||||||
|
// Improvments to reporting to M0LTE Map (26)
|
||||||
|
// IPGateway fix from github user isavitsky (27)
|
||||||
|
|
||||||
#define CKernel
|
#define CKernel
|
||||||
|
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="C:\Devprogs\BPQ32\bpq32.exe"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command=""
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="C:\Devprogs\BPQ32\bpq32.exe"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command=""
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="C:\Devprogs\BPQ32\bpq32.exe"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command=""
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
|
@ -15,7 +15,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
150
CommonCode.c
150
CommonCode.c
|
@ -917,9 +917,8 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
|
||||||
PMSGWITHLEN buffptr;
|
PMSGWITHLEN buffptr;
|
||||||
int Totallen = 0;
|
int Totallen = 0;
|
||||||
UCHAR * ptr;
|
UCHAR * ptr;
|
||||||
struct PORTCONTROL * PORT = TNC->PortRecord;
|
struct PORTCONTROL * PORT = (struct PORTCONTROL *)TNC->PortRecord;
|
||||||
|
|
||||||
|
|
||||||
// Stop Scanner
|
// Stop Scanner
|
||||||
|
|
||||||
if (Stream == 0 || TNC->Hardware == H_UZ7HO)
|
if (Stream == 0 || TNC->Hardware == H_UZ7HO)
|
||||||
|
@ -2365,8 +2364,8 @@ BOOL WriteCOMBlock(HANDLE fd, char * Block, int BytesToWrite)
|
||||||
|
|
||||||
Err = GetCommModemStatus(fd, &Mask);
|
Err = GetCommModemStatus(fd, &Mask);
|
||||||
|
|
||||||
if ((Mask & MS_CTS_ON) == 0) // trap com0com other end not open
|
// if ((Mask & MS_CTS_ON) == 0) // trap com0com other end not open
|
||||||
return TRUE;
|
// return TRUE;
|
||||||
|
|
||||||
fWriteStat = WriteFile(fd, Block, BytesToWrite,
|
fWriteStat = WriteFile(fd, Block, BytesToWrite,
|
||||||
&BytesWritten, NULL );
|
&BytesWritten, NULL );
|
||||||
|
@ -3516,6 +3515,8 @@ int __sync_lock_test_and_set(int * ptr, int val)
|
||||||
#endif // __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
|
#endif // __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
|
||||||
#endif // MACBPQ
|
#endif // MACBPQ
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void GetSemaphore(struct SEM * Semaphore, int ID)
|
void GetSemaphore(struct SEM * Semaphore, int ID)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -3680,7 +3681,7 @@ VOID OpenReportingSockets()
|
||||||
{
|
{
|
||||||
// Enable Node Map Reports
|
// Enable Node Map Reports
|
||||||
|
|
||||||
ReportTimer = 600;
|
ReportTimer = 60;
|
||||||
|
|
||||||
ReportSocket = socket(AF_INET,SOCK_DGRAM,0);
|
ReportSocket = socket(AF_INET,SOCK_DGRAM,0);
|
||||||
|
|
||||||
|
@ -4875,7 +4876,7 @@ static char HeaderTemplate[] = "POST %s HTTP/1.1\r\n"
|
||||||
"Content-Type: application/json\r\n"
|
"Content-Type: application/json\r\n"
|
||||||
"Host: %s:%d\r\n"
|
"Host: %s:%d\r\n"
|
||||||
"Content-Length: %d\r\n"
|
"Content-Length: %d\r\n"
|
||||||
//r\nUser-Agent: BPQ32(G8BPQ)\r\n"
|
"User-Agent: %s%s\r\n"
|
||||||
// "Expect: 100-continue\r\n"
|
// "Expect: 100-continue\r\n"
|
||||||
"\r\n";
|
"\r\n";
|
||||||
|
|
||||||
|
@ -4889,7 +4890,11 @@ VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int
|
||||||
char * ptr, * ptr1;
|
char * ptr, * ptr1;
|
||||||
int Sent;
|
int Sent;
|
||||||
|
|
||||||
sprintf(Header, HeaderTemplate, Request, Host, 80, Len, Params);
|
#ifdef LINBPQ
|
||||||
|
sprintf(Header, HeaderTemplate, Request, Host, 80, Len, "linbpq/", VersionString, Params);
|
||||||
|
#else
|
||||||
|
sprintf(Header, HeaderTemplate, Request, Host, 80, Len, "bpq32/", VersionString, Params);
|
||||||
|
#endif
|
||||||
Sent = send(sock, Header, (int)strlen(Header), 0);
|
Sent = send(sock, Header, (int)strlen(Header), 0);
|
||||||
Sent = send(sock, Params, (int)strlen(Params), 0);
|
Sent = send(sock, Params, (int)strlen(Params), 0);
|
||||||
|
|
||||||
|
@ -4984,17 +4989,81 @@ VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int
|
||||||
extern char MYALIASLOPPED[10];
|
extern char MYALIASLOPPED[10];
|
||||||
extern int MasterPort[MAXBPQPORTS+1];
|
extern int MasterPort[MAXBPQPORTS+1];
|
||||||
|
|
||||||
|
|
||||||
|
// G7TAJ //
|
||||||
|
/*
|
||||||
|
{"mheard": [
|
||||||
|
{
|
||||||
|
"Callsign": "GB7CIP-7",
|
||||||
|
"Port": "VHF",
|
||||||
|
"Packets": 70369,
|
||||||
|
"LastHeard": "2024-12-29 20:26:32"
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
|
void BuildPortMH(char * MHJSON, struct PORTCONTROL * PORT)
|
||||||
|
{
|
||||||
|
struct tm * TM;
|
||||||
|
static char MHTIME[50];
|
||||||
|
time_t szClock;
|
||||||
|
MHSTRUC * MH = PORT->PORTMHEARD;
|
||||||
|
int count = MHENTRIES;
|
||||||
|
char Normcall[20];
|
||||||
|
int len;
|
||||||
|
char * ptr;
|
||||||
|
char mhstr[400];
|
||||||
|
|
||||||
|
if (MH == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
while (count--)
|
||||||
|
{
|
||||||
|
if (MH->MHCALL[0] == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
len = ConvFromAX25(MH->MHCALL, Normcall);
|
||||||
|
Normcall[len] = 0;
|
||||||
|
|
||||||
|
ptr = &MH->MHCALL[6]; // End of Address bit
|
||||||
|
|
||||||
|
if ((*ptr & 1) == 0)
|
||||||
|
{
|
||||||
|
// at least one digi - which we are not going to include
|
||||||
|
MH++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Normcall[len++] = 0;
|
||||||
|
|
||||||
|
//format TIME
|
||||||
|
|
||||||
|
szClock = MH->MHTIME;
|
||||||
|
TM = gmtime(&szClock);
|
||||||
|
sprintf(MHTIME, "%d-%d-%d %02d:%02d:%02d",
|
||||||
|
TM->tm_year+1900, TM->tm_mon + 1, TM->tm_mday, TM->tm_hour, TM->tm_min, TM->tm_sec);
|
||||||
|
|
||||||
|
sprintf(mhstr, "{\"callSign\": \"%s\", \"port\": \"%d\", \"packets\": %d, \"lastHeard\": \"%s\" },\r\n" ,
|
||||||
|
Normcall, PORT->PORTNUMBER, MH->MHCOUNT, MHTIME);
|
||||||
|
|
||||||
|
strcat( MHJSON, mhstr );
|
||||||
|
|
||||||
|
MH++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SendDataToPktMap(char *Msg)
|
void SendDataToPktMap(char *Msg)
|
||||||
{
|
{
|
||||||
SOCKET sock;
|
SOCKET sock;
|
||||||
char Return[256];
|
char Return[256];
|
||||||
char Request[64];
|
char Request[64];
|
||||||
char Params[50000];
|
char Params[50000];
|
||||||
|
|
||||||
struct PORTCONTROL * PORT = PORTTABLE;
|
struct PORTCONTROL * PORT = PORTTABLE;
|
||||||
struct PORTCONTROL * SAVEPORT;
|
struct PORTCONTROL * SAVEPORT;
|
||||||
struct ROUTE * Routes = NEIGHBOURS;
|
struct ROUTE * Routes = NEIGHBOURS;
|
||||||
int MaxRoutes = MAXNEIGHBOURS;
|
int MaxRoutes = MAXNEIGHBOURS;
|
||||||
|
|
||||||
int PortNo;
|
int PortNo;
|
||||||
int Active;
|
int Active;
|
||||||
uint64_t Freq;
|
uint64_t Freq;
|
||||||
|
@ -5010,10 +5079,19 @@ void SendDataToPktMap(char *Msg)
|
||||||
int Port = 0;
|
int Port = 0;
|
||||||
char Normcall[10];
|
char Normcall[10];
|
||||||
char Copy[20];
|
char Copy[20];
|
||||||
|
char ID[33];
|
||||||
|
|
||||||
char * ptr = Params;
|
char * ptr = Params;
|
||||||
|
|
||||||
printf("Sending to new map\n");
|
// G7TAJ //
|
||||||
|
char MHJSON[50000];
|
||||||
|
char * mhptr;
|
||||||
|
char * b4Routesptr;
|
||||||
|
|
||||||
|
MHJSON[0]=0;
|
||||||
|
// G7TAJ //
|
||||||
|
|
||||||
|
// printf("Sending to new map\n");
|
||||||
|
|
||||||
sprintf(Request, "/api/NodeData/%s", MYNODECALL);
|
sprintf(Request, "/api/NodeData/%s", MYNODECALL);
|
||||||
|
|
||||||
|
@ -5056,6 +5134,11 @@ void SendDataToPktMap(char *Msg)
|
||||||
#endif
|
#endif
|
||||||
ptr += sprintf(ptr, "\"source\": \"ReportedByNode\",\r\n");
|
ptr += sprintf(ptr, "\"source\": \"ReportedByNode\",\r\n");
|
||||||
|
|
||||||
|
// G7TAJ //
|
||||||
|
sprintf(MHJSON, ",\"mheard\": [");
|
||||||
|
// G7TAJ //
|
||||||
|
|
||||||
|
|
||||||
//Ports
|
//Ports
|
||||||
|
|
||||||
ptr += sprintf(ptr, "\"ports\": [");
|
ptr += sprintf(ptr, "\"ports\": [");
|
||||||
|
@ -5256,14 +5339,27 @@ void SendDataToPktMap(char *Msg)
|
||||||
|
|
||||||
if (Active)
|
if (Active)
|
||||||
{
|
{
|
||||||
|
char * ptr2 = &ID[29];
|
||||||
|
strcpy(ID, PORT->PORTDESCRIPTION);
|
||||||
|
while (*(ptr2) == ' ' && ptr2 != ID)
|
||||||
|
*(ptr2--) = 0;
|
||||||
|
|
||||||
ptr += sprintf(ptr, "{\"id\": \"%d\",\"linkType\": \"%s\","
|
ptr += sprintf(ptr, "{\"id\": \"%d\",\"linkType\": \"%s\","
|
||||||
"\"freq\": \"%lld\",\"mode\": \"%s\",\"modulation\": \"%s\","
|
"\"freq\": \"%lld\",\"mode\": \"%s\",\"modulation\": \"%s\","
|
||||||
"\"baud\": \"%d\",\"bitrate\": \"%d\",\"usage\": \"%s\",\"comment\": \"%s\"},\r\n",
|
"\"baud\": \"%d\",\"bitrate\": \"%d\",\"usage\": \"%s\",\"comment\": \"%s\"},\r\n",
|
||||||
PortNo, Type,
|
PortNo, Type,
|
||||||
Freq, Mode, Modulation,
|
Freq, Mode, Modulation,
|
||||||
Baud, Bitrate, "Access", PORT->PORTDESCRIPTION);
|
Baud, Bitrate, "Access", ID);
|
||||||
|
|
||||||
|
// G7TAJ //
|
||||||
|
// make MH list to be added later
|
||||||
|
BuildPortMH(MHJSON, PORT);
|
||||||
|
|
||||||
|
// G7TAJ //
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PORT = PORT->PORTPOINTER;
|
PORT = PORT->PORTPOINTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5272,6 +5368,10 @@ void SendDataToPktMap(char *Msg)
|
||||||
|
|
||||||
// Neighbours
|
// Neighbours
|
||||||
|
|
||||||
|
// G7TAJ //
|
||||||
|
b4Routesptr = ptr-3;
|
||||||
|
// G7TAJ //
|
||||||
|
|
||||||
ptr += sprintf(ptr, "\"neighbours\": [\r\n");
|
ptr += sprintf(ptr, "\"neighbours\": [\r\n");
|
||||||
|
|
||||||
while (MaxRoutes--)
|
while (MaxRoutes--)
|
||||||
|
@ -5282,7 +5382,7 @@ void SendDataToPktMap(char *Msg)
|
||||||
ConvFromAX25(Routes->NEIGHBOUR_CALL, Normcall);
|
ConvFromAX25(Routes->NEIGHBOUR_CALL, Normcall);
|
||||||
strlop(Normcall, ' ');
|
strlop(Normcall, ' ');
|
||||||
|
|
||||||
ptr += sprintf(ptr,
|
ptr += sprintf(ptr,
|
||||||
"{\"node\": \"%s\", \"port\": \"%d\", \"quality\": \"%d\"},\r\n",
|
"{\"node\": \"%s\", \"port\": \"%d\", \"quality\": \"%d\"},\r\n",
|
||||||
Normcall, Routes->NEIGHBOUR_PORT, Routes->NEIGHBOUR_QUAL);
|
Normcall, Routes->NEIGHBOUR_PORT, Routes->NEIGHBOUR_QUAL);
|
||||||
}
|
}
|
||||||
|
@ -5290,8 +5390,30 @@ void SendDataToPktMap(char *Msg)
|
||||||
Routes++;
|
Routes++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr -= 3;
|
// G7TAJ //
|
||||||
ptr += sprintf(ptr, "]}");
|
|
||||||
|
// if !strstr quality, then there are none, so remove neighbours portion
|
||||||
|
if ( strstr(Params, "quality") == NULL ) {
|
||||||
|
ptr = b4Routesptr;
|
||||||
|
} else {
|
||||||
|
ptr -= 3;
|
||||||
|
ptr += sprintf(ptr, "]");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( strlen(MHJSON) > 15 ) {
|
||||||
|
mhptr = MHJSON + strlen(MHJSON);
|
||||||
|
mhptr -= 3;
|
||||||
|
sprintf(mhptr, "]\r\n");
|
||||||
|
ptr += sprintf(ptr, "\r\n%s", MHJSON);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ptr += sprintf(ptr, "}");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// G7TAJ //
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,13 +11,14 @@ void GetVersionInfo(char * File)
|
||||||
char isDebug[40]="";
|
char isDebug[40]="";
|
||||||
|
|
||||||
#ifdef SPECIALVERSION
|
#ifdef SPECIALVERSION
|
||||||
|
strcat(isDebug, " ");
|
||||||
strcat(isDebug, SPECIALVERSION);
|
strcat(isDebug, SPECIALVERSION);
|
||||||
#endif
|
#endif
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
strcat(isDebug, "Debug Build ");
|
strcat(isDebug, " Debug Build");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sprintf(VersionString,"%d.%d.%d.%d %s", Ver[0], Ver[1], Ver[2], Ver[3], isDebug);
|
sprintf(VersionString,"%d.%d.%d.%d%s", Ver[0], Ver[1], Ver[2], Ver[3], isDebug);
|
||||||
|
|
||||||
sprintf(TextVerstring,"V%d.%d.%d.%d", Ver[0], Ver[1], Ver[2], Ver[3]);
|
sprintf(TextVerstring,"V%d.%d.%d.%d", Ver[0], Ver[1], Ver[2], Ver[3]);
|
||||||
|
|
||||||
|
|
44
IPCode.c
44
IPCode.c
|
@ -4539,6 +4539,50 @@ void OpenTAP()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fix from github user isavitsky
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After some research I found that on most of my
|
||||||
|
* systems, including Raspberry Pi IV, a slight delay
|
||||||
|
* is needed before considering the TAP device
|
||||||
|
* up and running. Otherwise the interface structures
|
||||||
|
* do not initialise properly and later in the code
|
||||||
|
* around the line 4700 when we initialise our ARP
|
||||||
|
* structure:
|
||||||
|
*
|
||||||
|
* memcpy(Arp->HWADDR, xbuffer.ifr_hwaddr.sa_data, 6);
|
||||||
|
*
|
||||||
|
* the MAC address is getting filled in with random
|
||||||
|
* value which makes the communication via our TAP
|
||||||
|
* device using the configured IPADDR virtually
|
||||||
|
* impossible.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
Debugprintf("Waiting for the TAP to become UP and RUNNING");
|
||||||
|
|
||||||
|
for (int i=10; i>0; i--)
|
||||||
|
{
|
||||||
|
Sleep(10);
|
||||||
|
|
||||||
|
if ((err = ioctl(sockfd, SIOCGIFFLAGS, &ifr)) < 0)
|
||||||
|
{
|
||||||
|
perror("SIOCGIFFLAGS");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((ifr.ifr_flags & IFF_UP) && (ifr.ifr_flags & IFF_RUNNING))
|
||||||
|
{
|
||||||
|
Debugprintf("TAP is UP and RUNNING");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (i == 1)
|
||||||
|
{
|
||||||
|
Debugprintf("TAP is still not UP and RUNNING");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
printf("TAP brought up\n");
|
printf("TAP brought up\n");
|
||||||
|
|
||||||
// Set MTU to 256
|
// Set MTU to 256
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
240
NNTPRoutines.c
240
NNTPRoutines.c
|
@ -41,6 +41,87 @@ char *day[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
|
||||||
|
|
||||||
VOID ReleaseNNTPSock(SOCKET sock);
|
VOID ReleaseNNTPSock(SOCKET sock);
|
||||||
|
|
||||||
|
int NNTPSendSock(SocketConn * sockptr, char * msg)
|
||||||
|
{
|
||||||
|
int len = (int)strlen(msg);
|
||||||
|
char * newmsg = malloc(len+10);
|
||||||
|
|
||||||
|
WriteLogLine(NULL, '>',msg, len, LOG_TCP);
|
||||||
|
|
||||||
|
strcpy(newmsg, msg);
|
||||||
|
|
||||||
|
strcat(newmsg, "\r\n");
|
||||||
|
|
||||||
|
len+=2;
|
||||||
|
|
||||||
|
// Attempt to fix Thunderbird - Queue all and send at end
|
||||||
|
|
||||||
|
if ((sockptr->SendSize + len) > sockptr->SendBufferSize)
|
||||||
|
{
|
||||||
|
sockptr->SendBufferSize += (10000 + len);
|
||||||
|
sockptr->SendBuffer = realloc(sockptr->SendBuffer, sockptr->SendBufferSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(&sockptr->SendBuffer[sockptr->SendSize], newmsg, len);
|
||||||
|
sockptr->SendSize += len;
|
||||||
|
free (newmsg);
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NNTPFlush(SocketConn * sockptr)
|
||||||
|
{
|
||||||
|
int sent;
|
||||||
|
|
||||||
|
sent = send(sockptr->socket, sockptr->SendBuffer, sockptr->SendSize, 0);
|
||||||
|
|
||||||
|
if (sent < sockptr->SendSize)
|
||||||
|
{
|
||||||
|
int error, remains;
|
||||||
|
|
||||||
|
// Not all could be sent - queue rest
|
||||||
|
|
||||||
|
if (sent == SOCKET_ERROR)
|
||||||
|
{
|
||||||
|
error = WSAGetLastError();
|
||||||
|
if (error == WSAEWOULDBLOCK)
|
||||||
|
sent=0;
|
||||||
|
|
||||||
|
// What else??
|
||||||
|
}
|
||||||
|
|
||||||
|
remains = sockptr->SendSize - sent;
|
||||||
|
|
||||||
|
sockptr->SendBufferSize += (10000 + remains);
|
||||||
|
sockptr->SendBuffer = malloc(sockptr->SendBufferSize);
|
||||||
|
|
||||||
|
memmove(sockptr->SendBuffer, &sockptr->SendBuffer[sent], remains);
|
||||||
|
|
||||||
|
sockptr->SendSize = remains;
|
||||||
|
sockptr->SendPtr = 0;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(sockptr->SendBuffer);
|
||||||
|
sockptr->SendBuffer = NULL;
|
||||||
|
sockptr->SendSize = 0;
|
||||||
|
sockptr->SendBufferSize = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID __cdecl NNTPsockprintf(SocketConn * sockptr, const char * format, ...)
|
||||||
|
{
|
||||||
|
// printf to a socket
|
||||||
|
|
||||||
|
char buff[1000];
|
||||||
|
va_list(arglist);
|
||||||
|
|
||||||
|
va_start(arglist, format);
|
||||||
|
vsprintf(buff, format, arglist);
|
||||||
|
|
||||||
|
NNTPSendSock(sockptr, buff);
|
||||||
|
}
|
||||||
|
|
||||||
struct NNTPRec * LookupNNTP(char * Group)
|
struct NNTPRec * LookupNNTP(char * Group)
|
||||||
{
|
{
|
||||||
struct NNTPRec * ptr = FirstNNTPRec;
|
struct NNTPRec * ptr = FirstNNTPRec;
|
||||||
|
@ -304,7 +385,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (ptr2 == NULL)
|
if (ptr2 == NULL)
|
||||||
{
|
{
|
||||||
SendSock(sockptr, "500 Eh");
|
NNTPSendSock(sockptr, "500 Eh");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,7 +509,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
sockptr->Flags &= ~GETTINGMESSAGE;
|
sockptr->Flags &= ~GETTINGMESSAGE;
|
||||||
|
|
||||||
SendSock(sockptr, "240 OK");
|
NNTPSendSock(sockptr, "240 OK");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -459,13 +540,13 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
if (Len > 22) Buffer[22]=0;
|
if (Len > 22) Buffer[22]=0;
|
||||||
strcpy(sockptr->CallSign, &Buffer[14]);
|
strcpy(sockptr->CallSign, &Buffer[14]);
|
||||||
sockptr->State = GettingPass;
|
sockptr->State = GettingPass;
|
||||||
sockprintf(sockptr, "381 More authentication information required");
|
NNTPsockprintf(sockptr, "381 More authentication information required");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sockptr->State == GettingUser)
|
if (sockptr->State == GettingUser)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "480 Authentication required");
|
NNTPsockprintf(sockptr, "480 Authentication required");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,19 +562,19 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
{
|
{
|
||||||
if (strcmp(user->pass, &Buffer[14]) == 0)
|
if (strcmp(user->pass, &Buffer[14]) == 0)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "281 Authentication accepted");
|
NNTPsockprintf(sockptr, "281 Authentication accepted");
|
||||||
|
|
||||||
sockptr->State = Authenticated;
|
sockptr->State = Authenticated;
|
||||||
sockptr->POP3User = user;
|
sockptr->POP3User = user;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SendSock(sockptr, "482 Authentication rejected");
|
NNTPSendSock(sockptr, "482 Authentication rejected");
|
||||||
sockptr->State = GettingUser;
|
sockptr->State = GettingUser;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sockprintf(sockptr, "480 Authentication required");
|
NNTPsockprintf(sockptr, "480 Authentication required");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -506,7 +587,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
{
|
{
|
||||||
if (_stricmp(REC->NewsGroup, &Buffer[6]) == 0)
|
if (_stricmp(REC->NewsGroup, &Buffer[6]) == 0)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "211 %d %d %d %s", REC->Count, REC->FirstMsg, REC->LastMsg, REC->NewsGroup);
|
NNTPsockprintf(sockptr, "211 %d %d %d %s", REC->Count, REC->FirstMsg, REC->LastMsg, REC->NewsGroup);
|
||||||
sockptr->NNTPNum = 0;
|
sockptr->NNTPNum = 0;
|
||||||
sockptr->NNTPGroup = REC;
|
sockptr->NNTPGroup = REC;
|
||||||
return;
|
return;
|
||||||
|
@ -514,7 +595,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
REC =REC->Next;
|
REC =REC->Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
sockprintf(sockptr, "411 no such news group");
|
NNTPsockprintf(sockptr, "411 no such news group");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -528,7 +609,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (REC == NULL && Buffer[10] == 0)
|
if (REC == NULL && Buffer[10] == 0)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "412 No Group Selected");
|
NNTPsockprintf(sockptr, "412 No Group Selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -543,7 +624,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
{
|
{
|
||||||
GotGroup:
|
GotGroup:
|
||||||
|
|
||||||
sockprintf(sockptr, "211 Article Numbers Follows");
|
NNTPsockprintf(sockptr, "211 Article Numbers Follows");
|
||||||
sockptr->NNTPNum = 0;
|
sockptr->NNTPNum = 0;
|
||||||
sockptr->NNTPGroup = REC;
|
sockptr->NNTPGroup = REC;
|
||||||
|
|
||||||
|
@ -557,22 +638,22 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
sprintf(FullGroup, "%s.%s", Msg->to, Msg->via );
|
sprintf(FullGroup, "%s.%s", Msg->to, Msg->via );
|
||||||
if (_stricmp(FullGroup, REC->NewsGroup) == 0)
|
if (_stricmp(FullGroup, REC->NewsGroup) == 0)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "%d", MsgNo);
|
NNTPsockprintf(sockptr, "%d", MsgNo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
REC = REC->Next;
|
REC = REC->Next;
|
||||||
}
|
}
|
||||||
sockprintf(sockptr, "411 no such news group");
|
NNTPsockprintf(sockptr, "411 no such news group");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_memicmp(Buffer, "MODE READER", 11) == 0)
|
if(_memicmp(Buffer, "MODE READER", 11) == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr, "200 Hello");
|
NNTPSendSock(sockptr, "200 Hello");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -580,15 +661,15 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
{
|
{
|
||||||
struct NNTPRec * REC = FirstNNTPRec;
|
struct NNTPRec * REC = FirstNNTPRec;
|
||||||
|
|
||||||
SendSock(sockptr, "215 list of newsgroups follows");
|
NNTPSendSock(sockptr, "215 list of newsgroups follows");
|
||||||
|
|
||||||
while (REC)
|
while (REC)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "%s %d %d y", REC->NewsGroup, REC->LastMsg, REC->FirstMsg);
|
NNTPsockprintf(sockptr, "%s %d %d y", REC->NewsGroup, REC->LastMsg, REC->FirstMsg);
|
||||||
REC = REC->Next;
|
REC = REC->Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -615,16 +696,16 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
else
|
else
|
||||||
Time = mktime(&rtime);
|
Time = mktime(&rtime);
|
||||||
|
|
||||||
SendSock(sockptr, "231 list of new newsgroups follows");
|
NNTPSendSock(sockptr, "231 list of new newsgroups follows");
|
||||||
|
|
||||||
while(REC)
|
while(REC)
|
||||||
{
|
{
|
||||||
if (REC->DateCreated > Time)
|
if (REC->DateCreated > Time)
|
||||||
sockprintf(sockptr, "%s %d %d y", REC->NewsGroup, REC->LastMsg, REC->FirstMsg);
|
NNTPsockprintf(sockptr, "%s %d %d y", REC->NewsGroup, REC->LastMsg, REC->FirstMsg);
|
||||||
REC = REC->Next;
|
REC = REC->Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -636,7 +717,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (REC == NULL)
|
if (REC == NULL)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"412 no newsgroup has been selected");
|
NNTPSendSock(sockptr,"412 no newsgroup has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -646,7 +727,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (MsgNo == 0)
|
if (MsgNo == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"420 no current article has been selected");
|
NNTPSendSock(sockptr,"420 no current article has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -659,20 +740,20 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (Msg)
|
if (Msg)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "221 %d <%s>", MsgNo, Msg->bid);
|
NNTPsockprintf(sockptr, "221 %d <%s>", MsgNo, Msg->bid);
|
||||||
|
|
||||||
sockprintf(sockptr, "From: %s", Msg->from);
|
NNTPsockprintf(sockptr, "From: %s", Msg->from);
|
||||||
sockprintf(sockptr, "Date: %s", FormatNNTPDateAndTime((time_t)Msg->datecreated));
|
NNTPsockprintf(sockptr, "Date: %s", FormatNNTPDateAndTime((time_t)Msg->datecreated));
|
||||||
sockprintf(sockptr, "Newsgroups: %s.s", Msg->to, Msg->via);
|
NNTPsockprintf(sockptr, "Newsgroups: %s.s", Msg->to, Msg->via);
|
||||||
sockprintf(sockptr, "Subject: %s", Msg->title);
|
NNTPsockprintf(sockptr, "Subject: %s", Msg->title);
|
||||||
sockprintf(sockptr, "Message-ID: <%s>", Msg->bid);
|
NNTPsockprintf(sockptr, "Message-ID: <%s>", Msg->bid);
|
||||||
sockprintf(sockptr, "Path: %s", BBSName);
|
NNTPsockprintf(sockptr, "Path: %s", BBSName);
|
||||||
|
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SendSock(sockptr,"423 No such article in this newsgroup");
|
NNTPSendSock(sockptr,"423 No such article in this newsgroup");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -686,7 +767,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (REC == NULL)
|
if (REC == NULL)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"412 no newsgroup has been selected");
|
NNTPSendSock(sockptr,"412 no newsgroup has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,7 +777,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (MsgNo == 0)
|
if (MsgNo == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"420 no current article has been selected");
|
NNTPSendSock(sockptr,"420 no current article has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -709,25 +790,25 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (Msg)
|
if (Msg)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "220 %d <%s>", MsgNo, Msg->bid);
|
NNTPsockprintf(sockptr, "220 %d <%s>", MsgNo, Msg->bid);
|
||||||
msgbytes = ReadMessageFile(Msg->number);
|
msgbytes = ReadMessageFile(Msg->number);
|
||||||
|
|
||||||
Path = GetPathFromHeaders(msgbytes);
|
Path = GetPathFromHeaders(msgbytes);
|
||||||
|
|
||||||
sockprintf(sockptr, "From: %s", Msg->from);
|
NNTPsockprintf(sockptr, "From: %s", Msg->from);
|
||||||
sockprintf(sockptr, "Date: %s", FormatNNTPDateAndTime((time_t)Msg->datecreated));
|
NNTPsockprintf(sockptr, "Date: %s", FormatNNTPDateAndTime((time_t)Msg->datecreated));
|
||||||
sockprintf(sockptr, "Newsgroups: %s.%s", Msg->to, Msg->via);
|
NNTPsockprintf(sockptr, "Newsgroups: %s.%s", Msg->to, Msg->via);
|
||||||
sockprintf(sockptr, "Subject: %s", Msg->title);
|
NNTPsockprintf(sockptr, "Subject: %s", Msg->title);
|
||||||
sockprintf(sockptr, "Message-ID: <%s>", Msg->bid);
|
NNTPsockprintf(sockptr, "Message-ID: <%s>", Msg->bid);
|
||||||
sockprintf(sockptr, "Path: %s", &Path[1]);
|
NNTPsockprintf(sockptr, "Path: %s", &Path[1]);
|
||||||
|
|
||||||
SendSock(sockptr,"");
|
NNTPSendSock(sockptr,"");
|
||||||
|
|
||||||
|
|
||||||
SendSock(sockptr,msgbytes);
|
NNTPSendSock(sockptr,msgbytes);
|
||||||
SendSock(sockptr,"");
|
NNTPSendSock(sockptr,"");
|
||||||
|
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
|
|
||||||
free(msgbytes);
|
free(msgbytes);
|
||||||
free(Path);
|
free(Path);
|
||||||
|
@ -735,7 +816,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
SendSock(sockptr,"423 No such article in this newsgroup");
|
NNTPSendSock(sockptr,"423 No such article in this newsgroup");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -749,7 +830,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (REC == NULL)
|
if (REC == NULL)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"412 no newsgroup has been selected");
|
NNTPSendSock(sockptr,"412 no newsgroup has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -759,7 +840,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (MsgNo == 0)
|
if (MsgNo == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"420 no current article has been selected");
|
NNTPSendSock(sockptr,"420 no current article has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -772,15 +853,15 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (Msg)
|
if (Msg)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "222 %d <%s>", MsgNo, Msg->bid);
|
NNTPsockprintf(sockptr, "222 %d <%s>", MsgNo, Msg->bid);
|
||||||
msgbytes = ReadMessageFile(Msg->number);
|
msgbytes = ReadMessageFile(Msg->number);
|
||||||
|
|
||||||
Path = GetPathFromHeaders(msgbytes);
|
Path = GetPathFromHeaders(msgbytes);
|
||||||
|
|
||||||
SendSock(sockptr,msgbytes);
|
NNTPSendSock(sockptr,msgbytes);
|
||||||
SendSock(sockptr,"");
|
NNTPSendSock(sockptr,"");
|
||||||
|
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
|
|
||||||
free(msgbytes);
|
free(msgbytes);
|
||||||
free(Path);
|
free(Path);
|
||||||
|
@ -788,7 +869,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
SendSock(sockptr,"423 No such article in this newsgroup");
|
NNTPSendSock(sockptr,"423 No such article in this newsgroup");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -801,7 +882,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (REC == NULL)
|
if (REC == NULL)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"412 no newsgroup has been selected");
|
NNTPSendSock(sockptr,"412 no newsgroup has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -821,7 +902,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (MsgStart == 0)
|
if (MsgStart == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"420 no current article has been selected");
|
NNTPSendSock(sockptr,"420 no current article has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -830,7 +911,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
sockptr->NNTPNum = MsgEnd;
|
sockptr->NNTPNum = MsgEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
sockprintf(sockptr, "221 ");
|
NNTPsockprintf(sockptr, "221 ");
|
||||||
|
|
||||||
for (MsgNo = MsgStart; MsgNo <= MsgEnd; MsgNo++)
|
for (MsgNo = MsgStart; MsgNo <= MsgEnd; MsgNo++)
|
||||||
{
|
{
|
||||||
|
@ -843,20 +924,20 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
if (_stricmp(FullGroup, REC->NewsGroup) == 0)
|
if (_stricmp(FullGroup, REC->NewsGroup) == 0)
|
||||||
{
|
{
|
||||||
if (_stricmp(Header, "subject") == 0)
|
if (_stricmp(Header, "subject") == 0)
|
||||||
sockprintf(sockptr, "%d Subject: %s", MsgNo, Msg->title);
|
NNTPsockprintf(sockptr, "%d Subject: %s", MsgNo, Msg->title);
|
||||||
else if (_stricmp(Header, "from") == 0)
|
else if (_stricmp(Header, "from") == 0)
|
||||||
sockprintf(sockptr, "%d From: %s", MsgNo, Msg->from);
|
NNTPsockprintf(sockptr, "%d From: %s", MsgNo, Msg->from);
|
||||||
else if (_stricmp(Header, "date") == 0)
|
else if (_stricmp(Header, "date") == 0)
|
||||||
sockprintf(sockptr, "%d Date: %s", MsgNo, FormatNNTPDateAndTime((time_t)Msg->datecreated));
|
NNTPsockprintf(sockptr, "%d Date: %s", MsgNo, FormatNNTPDateAndTime((time_t)Msg->datecreated));
|
||||||
else if (_stricmp(Header, "message-id") == 0)
|
else if (_stricmp(Header, "message-id") == 0)
|
||||||
sockprintf(sockptr, "%d Message-ID: <%s>", MsgNo, Msg->bid);
|
NNTPsockprintf(sockptr, "%d Message-ID: <%s>", MsgNo, Msg->bid);
|
||||||
else if (_stricmp(Header, "lines") == 0)
|
else if (_stricmp(Header, "lines") == 0)
|
||||||
sockprintf(sockptr, "%d Lines: %d", MsgNo, Msg->length);
|
NNTPsockprintf(sockptr, "%d Lines: %d", MsgNo, Msg->length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -869,7 +950,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (REC == NULL)
|
if (REC == NULL)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"412 no newsgroup has been selected");
|
NNTPSendSock(sockptr,"412 no newsgroup has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -887,7 +968,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if (MsgStart == 0)
|
if (MsgStart == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr,"420 no current article has been selected");
|
NNTPSendSock(sockptr,"420 no current article has been selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -896,7 +977,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
sockptr->NNTPNum = MsgEnd;
|
sockptr->NNTPNum = MsgEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
sockprintf(sockptr, "224 ");
|
NNTPsockprintf(sockptr, "224 ");
|
||||||
|
|
||||||
for (MsgNo = MsgStart; MsgNo <= MsgEnd; MsgNo++)
|
for (MsgNo = MsgStart; MsgNo <= MsgEnd; MsgNo++)
|
||||||
{
|
{
|
||||||
|
@ -909,14 +990,14 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
if (_stricmp(FullGroup, REC->NewsGroup) == 0)
|
if (_stricmp(FullGroup, REC->NewsGroup) == 0)
|
||||||
{
|
{
|
||||||
// subject, author, date, message-id, references, byte count, and line count.
|
// subject, author, date, message-id, references, byte count, and line count.
|
||||||
sockprintf(sockptr, "%d\t%s\t%s\t%s\t%s\t%s\t%d\t%d",
|
NNTPsockprintf(sockptr, "%d\t%s\t%s\t%s\t%s\t%s\t%d\t%d",
|
||||||
MsgNo, Msg->title, Msg->from, FormatNNTPDateAndTime((time_t)Msg->datecreated), Msg->bid,
|
MsgNo, Msg->title, Msg->from, FormatNNTPDateAndTime((time_t)Msg->datecreated), Msg->bid,
|
||||||
"", Msg->length, Msg->length);
|
"", Msg->length, Msg->length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SendSock(sockptr,".");
|
NNTPSendSock(sockptr,".");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -932,7 +1013,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
{
|
{
|
||||||
if (sockptr->State != Authenticated)
|
if (sockptr->State != Authenticated)
|
||||||
{
|
{
|
||||||
sockprintf(sockptr, "480 Authentication required");
|
NNTPsockprintf(sockptr, "480 Authentication required");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -942,7 +1023,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
if (sockptr->MailBuffer == NULL)
|
if (sockptr->MailBuffer == NULL)
|
||||||
{
|
{
|
||||||
CriticalErrorHandler("Failed to create POP3 Message Buffer");
|
CriticalErrorHandler("Failed to create POP3 Message Buffer");
|
||||||
SendSock(sockptr, "QUIT");
|
NNTPSendSock(sockptr, "QUIT");
|
||||||
sockptr->State = WaitingForQUITResponse;
|
sockptr->State = WaitingForQUITResponse;
|
||||||
shutdown(sock, 0);
|
shutdown(sock, 0);
|
||||||
|
|
||||||
|
@ -951,7 +1032,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
sockptr->Flags |= GETTINGMESSAGE;
|
sockptr->Flags |= GETTINGMESSAGE;
|
||||||
|
|
||||||
SendSock(sockptr, "340 OK");
|
NNTPSendSock(sockptr, "340 OK");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -959,7 +1040,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
if(_memicmp(Buffer, "QUIT", 4) == 0)
|
if(_memicmp(Buffer, "QUIT", 4) == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr, "205 OK");
|
NNTPSendSock(sockptr, "205 OK");
|
||||||
Sleep(500);
|
Sleep(500);
|
||||||
shutdown(sock, 0);
|
shutdown(sock, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -967,7 +1048,7 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
|
|
||||||
/* if(memcmp(Buffer, "RSET\r\n", 6) == 0)
|
/* if(memcmp(Buffer, "RSET\r\n", 6) == 0)
|
||||||
{
|
{
|
||||||
SendSock(sockptr, "250 Ok");
|
NNTPSendSock(sockptr, "250 Ok");
|
||||||
sockptr->State = 0;
|
sockptr->State = 0;
|
||||||
sockptr->Recipients;
|
sockptr->Recipients;
|
||||||
return;
|
return;
|
||||||
|
@ -991,15 +1072,15 @@ VOID ProcessNNTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
||||||
sprintf_s(Date, sizeof(Date), "111 %04d%02d%02d%02d%02d%02d",
|
sprintf_s(Date, sizeof(Date), "111 %04d%02d%02d%02d%02d%02d",
|
||||||
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
|
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
|
||||||
|
|
||||||
SendSock(sockptr, Date);
|
NNTPSendSock(sockptr, Date);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
SendSock(sockptr, "500 command not recognized");
|
NNTPSendSock(sockptr, "500 command not recognized");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SendSock(sockptr, "500 command not recognized");
|
NNTPSendSock(sockptr, "500 command not recognized");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1068,6 +1149,9 @@ loop:
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NNTPFlush(sockptr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1110,9 +1194,11 @@ int NNTP_Accept(SOCKET SocketId)
|
||||||
sockptr->socket = sock;
|
sockptr->socket = sock;
|
||||||
sockptr->State = 0;
|
sockptr->State = 0;
|
||||||
|
|
||||||
SendSock(sockptr, "200 BPQMail NNTP Server ready");
|
NNTPSendSock(sockptr, "200 BPQMail NNTP Server ready");
|
||||||
Logprintf(LOG_TCP, NULL, '|', "Incoming NNTP Connect Socket = %d", sock);
|
Logprintf(LOG_TCP, NULL, '|', "Incoming NNTP Connect Socket = %d", sock);
|
||||||
|
|
||||||
|
NNTPFlush(sockptr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -1144,7 +1230,7 @@ int NNTP_Data(int sock, int error, int eventcode)
|
||||||
SendFromQueue(sockptr);
|
SendFromQueue(sockptr);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendSock(sockptr, "200 BPQMail NNTP Server ready");
|
NNTPSendSock(sockptr, "200 BPQMail NNTP Server ready");
|
||||||
// sockptr->State = GettingUser;
|
// sockptr->State = GettingUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
22
Versions.h
22
Versions.h
|
@ -10,16 +10,16 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define KVers 6,0,24,25
|
#define KVers 6,0,24,27
|
||||||
#define KVerstring "6.0.24.25\0"
|
#define KVerstring "6.0.24.27\0"
|
||||||
|
|
||||||
#ifdef CKernel
|
#ifdef CKernel
|
||||||
|
|
||||||
#define Vers KVers
|
#define Vers KVers
|
||||||
#define Verstring KVerstring
|
#define Verstring KVerstring
|
||||||
#define Datestring "December 2023"
|
#define Datestring "January 2024"
|
||||||
#define VerComments "G8BPQ Packet Switch (C Version)" KVerstring
|
#define VerComments "G8BPQ Packet Switch (C Version)" KVerstring
|
||||||
#define VerCopyright "Copyright © 2001-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 2001-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "BPQ32 Switch\0"
|
#define VerDesc "BPQ32 Switch\0"
|
||||||
#define VerProduct "BPQ32"
|
#define VerProduct "BPQ32"
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
#define Vers 1,0,16,2
|
#define Vers 1,0,16,2
|
||||||
#define Verstring "1.0.16.2\0"
|
#define Verstring "1.0.16.2\0"
|
||||||
#define VerComments "Internet Terminal for G8BPQ Packet Switch\0"
|
#define VerComments "Internet Terminal for G8BPQ Packet Switch\0"
|
||||||
#define VerCopyright "Copyright © 2011-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 2011-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "Simple TCP Terminal Program for G8BPQ Switch\0"
|
#define VerDesc "Simple TCP Terminal Program for G8BPQ Switch\0"
|
||||||
#define VerProduct "BPQTermTCP"
|
#define VerProduct "BPQTermTCP"
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
#define Vers 2,2,5,2
|
#define Vers 2,2,5,2
|
||||||
#define Verstring "2.2.5.2\0"
|
#define Verstring "2.2.5.2\0"
|
||||||
#define VerComments "Simple Terminal for G8BPQ Packet Switch\0"
|
#define VerComments "Simple Terminal for G8BPQ Packet Switch\0"
|
||||||
#define VerCopyright "Copyright © 1999-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 1999-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "Simple Terminal Program for G8BPQ Switch\0"
|
#define VerDesc "Simple Terminal Program for G8BPQ Switch\0"
|
||||||
#define VerProduct "BPQTerminal"
|
#define VerProduct "BPQTerminal"
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
#define Vers 2,2,0,3
|
#define Vers 2,2,0,3
|
||||||
#define Verstring "2.2.0.3\0"
|
#define Verstring "2.2.0.3\0"
|
||||||
#define VerComments "MDI Terminal for G8BPQ Packet Switch\0"
|
#define VerComments "MDI Terminal for G8BPQ Packet Switch\0"
|
||||||
#define VerCopyright "Copyright © 1999-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 1999-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "MDI Terminal Program for G8BPQ Switch\0"
|
#define VerDesc "MDI Terminal Program for G8BPQ Switch\0"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
#define Vers KVers
|
#define Vers KVers
|
||||||
#define Verstring KVerstring
|
#define Verstring KVerstring
|
||||||
#define VerComments "Mail server for G8BPQ Packet Switch\0"
|
#define VerComments "Mail server for G8BPQ Packet Switch\0"
|
||||||
#define VerCopyright "Copyright © 2009-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 2009-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "Mail server for G8BPQ's 32 Bit Switch\0"
|
#define VerDesc "Mail server for G8BPQ's 32 Bit Switch\0"
|
||||||
#define VerProduct "BPQMail"
|
#define VerProduct "BPQMail"
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@
|
||||||
#define Vers 0,1,0,0
|
#define Vers 0,1,0,0
|
||||||
#define Verstring "0.1.0.0\0"
|
#define Verstring "0.1.0.0\0"
|
||||||
#define VerComments "Password Generation Utility for G8BPQ Packet Switch\0"
|
#define VerComments "Password Generation Utility for G8BPQ Packet Switch\0"
|
||||||
#define VerCopyright "Copyright © 2011-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 2011-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "Password Generation Utility for G8BPQ Switch\0"
|
#define VerDesc "Password Generation Utility for G8BPQ Switch\0"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
#define Vers KVers
|
#define Vers KVers
|
||||||
#define Verstring KVerstring
|
#define Verstring KVerstring
|
||||||
#define VerComments "APRS Client for G8BPQ Switch\0"
|
#define VerComments "APRS Client for G8BPQ Switch\0"
|
||||||
#define VerCopyright "Copyright © 2012-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 2012-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "APRS Client for G8BPQ Switch\0"
|
#define VerDesc "APRS Client for G8BPQ Switch\0"
|
||||||
#define VerProduct "BPQAPRS"
|
#define VerProduct "BPQAPRS"
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@
|
||||||
#define Vers KVers
|
#define Vers KVers
|
||||||
#define Verstring KVerstring
|
#define Verstring KVerstring
|
||||||
#define VerComments "Chat server for G8BPQ Packet Switch\0"
|
#define VerComments "Chat server for G8BPQ Packet Switch\0"
|
||||||
#define VerCopyright "Copyright © 2009-2023 John Wiseman G8BPQ\0"
|
#define VerCopyright "Copyright © 2009-2024 John Wiseman G8BPQ\0"
|
||||||
#define VerDesc "Chat server for G8BPQ's 32 Bit Switch\0"
|
#define VerDesc "Chat server for G8BPQ's 32 Bit Switch\0"
|
||||||
#define VerProduct "BPQChat"
|
#define VerProduct "BPQChat"
|
||||||
|
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
|
@ -15,7 +15,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="DESKTOP-TGEL8RC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
|
@ -15,7 +15,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
Attach="false"
|
Attach="false"
|
||||||
DebuggerType="3"
|
DebuggerType="3"
|
||||||
Remote="1"
|
Remote="1"
|
||||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
RemoteMachine="NOTTSDESKTOP"
|
||||||
RemoteCommand=""
|
RemoteCommand=""
|
||||||
HttpUrl=""
|
HttpUrl=""
|
||||||
PDBPath=""
|
PDBPath=""
|
3161
bbshtmlconfig.c~
3161
bbshtmlconfig.c~
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue