New upstream version 6.0.24.54+repack

This commit is contained in:
Hibby 2024-12-16 17:54:16 +00:00
parent 93a10a982d
commit a7d635fe2f
78 changed files with 10677 additions and 555 deletions

139
.rej Normal file
View File

@ -0,0 +1,139 @@
--- APRSCode.c
+++ APRSCode.c
@@ -3674,7 +3674,7 @@
if (ptr1)
*ptr1 = 0;
-// Debugprintf("Duplicate Message supressed %s", Msg);
+// Debugprintf("Duplicate Message suppressed %s", Msg);
return TRUE; // Duplicate
}
}
--- BPQChat.rc
+++ BPQChat.rc
@@ -162,7 +162,7 @@
WS_VSCROLL
DEFPUSHBUTTON "Save Welcome Message",SAVEWELCOME,140,296,91,14,
BS_CENTER | BS_VCENTER
- LTEXT " If the node is not directly connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands seperared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT",
+ LTEXT " If the node is not directly connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands separated by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT",
IDC_STATIC,9,52,355,24
END
--- BPQMail.rc
+++ BPQMail.rc
@@ -1045,7 +1045,7 @@
CONTROL "Delete Log and Message Files to Recycle Bin",
IDC_DELETETORECYCLE,"Button",BS_AUTOCHECKBOX |
BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,142,115,20
- CONTROL "Supress Mailing of Housekeeping Results",
+ CONTROL "Suppress Mailing of Housekeeping Results",
IDC_MAINTNOMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
BS_MULTILINE | WS_TABSTOP,5,182,115,20
CONTROL "Generate Traffic Report",IDC_MAINTTRAFFIC,"Button",
--- HanksRT.c
+++ HanksRT.c
@@ -1186,7 +1186,7 @@
// Duplicate, so discard, but save time
DupInfo[i].DupTime = Now;
- Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s supressed", Call, Msg);
+ Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s suppressed", Call, Msg);
return TRUE; // Duplicate
}
--- RigControl.c
+++ RigControl.c
@@ -8385,7 +8385,7 @@
switch (Msg[0])
{
- case 'f': // Get Freqency
+ case 'f': // Get Frequency
HLGetFreq(Sock, RIG, sep);
return 0;
--- UZ7HODrv.c
+++ UZ7HODrv.c
@@ -374,7 +374,7 @@
{
// Read Freq
- buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Freqency %d\r", AGW->CenterFreq);
+ buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Frequency %d\r", AGW->CenterFreq);
return 1;
}
@@ -382,7 +382,7 @@
if (AGW->CenterFreq == 0)
{
- buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Invalid Modem Freqency\r");
+ buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Invalid Modem Frequency\r");
return 1;
}
--- WinRPRHelper.c
+++ WinRPRHelper.c
@@ -111,7 +111,7 @@
if (argc < 3)
{
- printf ("Missing paramters - you need COM port and IP Address and rigctl port of BPQ, eg \r\n"
+ printf ("Missing parameters - you need COM port and IP Address and rigctl port of BPQ, eg \r\n"
" WinRPRHelper com10 192.168.1.64:4532\r\n\r\n"
"Press any key to exit\r\n");
--- config.c
+++ config.c
@@ -649,7 +649,7 @@
if (LOCATOR[0] == 0 && LocSpecified == 0 && RFOnly == 0)
{
Consoleprintf("");
- Consoleprintf("Please enter a LOCATOR statment in your BPQ32.cfg");
+ Consoleprintf("Please enter a LOCATOR statement in your BPQ32.cfg");
Consoleprintf("If you really don't want to be on the Node Map you can enter LOCATOR=NONE");
Consoleprintf("");
--- kiss.c
+++ kiss.c
@@ -1485,7 +1485,7 @@
}
}
else
- Debugprintf("Polled KISS - response from wrong address - Polled %d Reponse %d",
+ Debugprintf("Polled KISS - response from wrong address - Polled %d Response %d",
KISS->POLLPOINTER->OURCTRL, (Port->RXMSG[0] & 0xf0));
goto SeeifMore; // SEE IF ANYTHING ELSE
--- templatedefs.c
+++ templatedefs.c
@@ -1165,7 +1165,7 @@
"Send Non-delivery Notifications<br>\r\n"
"for P and T messages <input %sname=\"SendND\" value=\"SendND\" type=\"checkbox\" /><br>\r\n"
" <br />\r\n"
- "Supress Mailing of<br>\r\n"
+ "Suppress Mailing of<br>\r\n"
"Housekeeping Result <input %sname=\"NoMail\" value=\"Yes\" type=\"checkbox\"><br><br>\r\n"
"Generate Traffic Report<input %sname=\"GenTraffic\" value=\"Yes\" type=\"checkbox\"><br><br>\r\n"
"<div style=\"text-align: center;\"><input class='btn' name=RunNow value=\"Run Housekeeping\" type=submit class='btn'></div>\r\n"
@@ -1454,7 +1454,7 @@
"<div style=\"text-align: left; width: 680px; margin: auto;\">The Nodes to link to box defines which other Chat Nodes should be connected to, or from which "
"connections may be accepted. The format is ALIAS:CALL, eg BPQCHT:G8BPQ-4. If the node is not directly "
"connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands "
- "seperared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT"
+ "separated by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT"
"<br><br>The Callsign of the Chat Node is not defined here - it is obtained from the bpq32.cfg APPLICATION line corresponding to the Chat Appl Number.<br>\r\n"
"<br></div>\n"
--- WebMail.c
+++ WebMail.c
@@ -2020,7 +2020,7 @@
"document.getElementById('myform').action = '/WebMail/QuoteOriginal' + '?%s';"
" document.getElementById('myform').submit();}</script>"
"<input type=button class='btn' onclick='myfunc()' "
- "value='Include Orignal Msg'>";
+ "value='Include Original Msg'>";
char Temp[1024];
char ReplyAddr[128];

View File

@ -292,8 +292,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
{
// Send Error Response
buffptr->Len = 36;
memcpy(buffptr->Data, "No Connection to PACTOR TNC\r", 36);
buffptr->Len = sprintf(buffptr->Data, "No Connection to PACTOR TNC\r");
C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr);

125
AGWAPI.c
View File

@ -128,7 +128,7 @@ int DataSocket_Write(struct AGWSocketConnectionInfo * sockptr, SOCKET sock);
int AGWGetSessionKey(char * key, struct AGWSocketConnectionInfo * sockptr);
int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr);
int SendDataToAppl(int Stream, byte * Buffer, int Length);
int InternalAGWDecodeFrame(char * msg, char * buffer, int Stamp, int * FrameType, int useLocalTime, int doNodes);
int InternalAGWDecodeFrame(char * msg, char * buffer, time_t Stamp, int * FrameType, int useLocalTime, int doNodes);
int AGWDataSocket_Disconnect( struct AGWSocketConnectionInfo * sockptr);
int SendRawPacket(struct AGWSocketConnectionInfo * sockptr, char *txmsg, int Length);
int ShowApps();
@ -402,7 +402,7 @@ int SetUpHostSessions()
extern struct DATAMESSAGE * REPLYBUFFER;
extern BOOL AGWActive;
VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY AGW Session Status
@ -1017,6 +1017,7 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
{
int i;
int DataLength;
struct AGWHeader * AGW = &sockptr->AGWRXHeader;
ioctlsocket(sock,FIONREAD,&DataLength);
@ -1028,6 +1029,56 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
return 0;
}
if (DataLength < 36) // A header
{
// If we don't get a header within a few ms assume a rogue connection and close it
int n = 50;
while (n--)
{
Sleep(10);
ioctlsocket(sock,FIONREAD,&DataLength);
if (DataLength >= 36)
break;
}
if (n < 1)
{
Debugprintf("Corrupt AGW Packet Received");
AGWDataSocket_Disconnect(sockptr);
return 0;
}
}
// Have a header
i=recv(sock,(char *)&sockptr->AGWRXHeader, 36, 0);
if (i == SOCKET_ERROR)
{
i=WSAGetLastError();
AGWDataSocket_Disconnect(sockptr);
}
sockptr->MsgDataLength = sockptr->AGWRXHeader.DataLength;
// Validate packet to protect against accidental (or malicious!) connects from a non-agw application
if (AGW->Port > 64 || AGW->filler2 != 0 || AGW->filler3 != 0 || AGW->DataLength > 400)
{
Debugprintf("Corrupt AGW Packet Received");
AGWDataSocket_Disconnect(sockptr);
return 0;
}
if (sockptr->MsgDataLength == 0)
ProcessAGWCommand (sockptr);
else
sockptr->GotHeader = TRUE; // Wait for data
ioctlsocket(sock,FIONREAD,&DataLength); // See if more data
if (sockptr->GotHeader)
{
@ -1035,11 +1086,26 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
if (DataLength < sockptr->MsgDataLength)
{
// Fiddle - seem to be problems somtimes with un-Neagled hosts
// Fiddle - seem to be problems somtimes with un-Neagled hosts so wait a few ms
// if we don't get a full packet assume a rogue connection and close it
Sleep(500);
int n = 50;
while (n--)
{
Sleep(10);
ioctlsocket(sock,FIONREAD,&DataLength);
if (DataLength >= sockptr->MsgDataLength)
break;
}
if (n < 1)
{
Debugprintf("Corrupt AGW Packet Received");
AGWDataSocket_Disconnect(sockptr);
return 0;
}
}
if (DataLength >= sockptr->MsgDataLength)
@ -1052,60 +1118,9 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
ProcessAGWCommand (sockptr);
free(sockptr->MsgData);
sockptr->GotHeader = FALSE;
}
// Not Enough Data - wait
}
else // Not got header
{
if (DataLength > 35)// A header
{
struct AGWHeader * AGW = &sockptr->AGWRXHeader;
i=recv(sock,(char *)&sockptr->AGWRXHeader, 36, 0);
if (i == SOCKET_ERROR)
{
i=WSAGetLastError();
AGWDataSocket_Disconnect(sockptr);
}
sockptr->MsgDataLength = sockptr->AGWRXHeader.DataLength;
// Validate packet to protect against accidental (or malicious!) connects from a non-agw application
if (AGW->Port > 64 || AGW->filler2 != 0 || AGW->filler3 != 0 || AGW->DataLength > 400)
{
Debugprintf("Corrupt AGW Packet Received");
AGWDataSocket_Disconnect(sockptr);
return 0;
}
if (sockptr->MsgDataLength > 500)
OutputDebugString("Corrupt AGW message");
if (sockptr->MsgDataLength == 0)
{
ProcessAGWCommand (sockptr);
}
else
{
sockptr->GotHeader = TRUE; // Wait for data
}
}
// not got 36 bytes
}
return 0;
}

View File

@ -61,7 +61,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define NODES_SIG 0xFF
char * strlop(char * buf, char delim);
UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, int msglen);
static UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen, int DoNodes);

View File

@ -832,6 +832,7 @@ void SaveNavAidDataBase()
char FN[256];
struct NAVAIDRECORD * navptr;
if (BPQDirectory[0] == 0)
{
strcpy(FN, "AIS_NavAids.txt");
@ -2372,6 +2373,8 @@ void ProcessAISNavAidMessage()
NavAidCount++;
ProcessAISNavAidMessage();
NavAidDBChanged = 1;
return;

View File

@ -22,7 +22,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// First Version, November 2011
#pragma data_seg("_BPQDATA")
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
@ -63,7 +62,6 @@ VOID __cdecl Debugprintf(const char * format, ...);
VOID __cdecl Consoleprintf(const char * format, ...);
BOOL APIENTRY Send_AX(PMESSAGE Block, DWORD Len, UCHAR Port);
VOID Send_AX_Datagram(PDIGIMESSAGE Block, DWORD Len, UCHAR Port);
char * strlop(char * buf, char delim);
int APRSDecodeFrame(char * msg, char * buffer, time_t Stamp, uint64_t Mask); // Unsemaphored DecodeFrame
APRSHEARDRECORD * UpdateHeard(UCHAR * Call, int Port);
BOOL CheckforDups(char * Call, char * Msg, int Len);
@ -88,7 +86,7 @@ double myDistance(double laa, double loa, BOOL KM);
struct STATIONRECORD * FindStation(char * Call, BOOL AddIfNotFound);
int DecodeAPRSPayload(char * Payload, struct STATIONRECORD * Station);
BOOL KillOldTNC(char * Path);
int FromLOC(char * Locator, double * pLat, double * pLon);
BOOL ToLOC(double Lat, double Lon , char * Locator);
BOOL InternalSendAPRSMessage(char * Text, char * Call);
void UndoTransparency(char * input);
@ -104,6 +102,7 @@ void ClearSavedMessages();
void GetSavedAPRSMessages();
static VOID GPSDConnect(void * unused);
int CanPortDigi(int Port);
int FromLOC(char * Locator, double * pLat, double * pLon);
extern int SemHeldByAPI;
extern int APRSMONDECODE();
@ -348,7 +347,7 @@ APRSHEARDRECORD MHTABLE[MAXHEARD] = {0};
APRSHEARDRECORD * MHDATA = &MHTABLE[0];
static SOCKET sock = (SOCKET)0;
static SOCKET sock = 0;
//Duplicate suppression Code
@ -3113,7 +3112,7 @@ VOID APRSISThread(void * Report)
BOOL bcopt=TRUE;
char Buffer[1000];
int InputLen = 1; // Non-zero
char errmsg[100];
char errmsg[300];
char * ptr;
size_t inptr = 0;
char APRSinMsg[1000];
@ -3674,7 +3673,7 @@ BOOL CheckforDups(char * Call, char * Msg, int Len)
if (ptr1)
*ptr1 = 0;
// Debugprintf("Duplicate Message supressed %s", Msg);
// Debugprintf("Duplicate Message suppressed %s", Msg);
return TRUE; // Duplicate
}
}
@ -7666,7 +7665,7 @@ VOID APRSProcessHTTPMessage(SOCKET sock, char * MsgPtr, BOOL LOCAL, BOOL COOKIE)
}
OutputLen += sprintf(&OutBuffer[OutputLen], WebTrailer);
OutputLen += sprintf(&OutBuffer[OutputLen], "%s", WebTrailer);
HeaderLen = sprintf(Header, "HTTP/1.0 200 OK\r\nContent-Length: %d\r\nContent-Type: text/html\r\n\r\n", OutputLen);
sendandcheck(sock, Header, HeaderLen);
@ -7711,7 +7710,7 @@ VOID APRSProcessHTTPMessage(SOCKET sock, char * MsgPtr, BOOL LOCAL, BOOL COOKIE)
}
OutputLen += sprintf(&OutBuffer[OutputLen], WebTrailer);
OutputLen += sprintf(&OutBuffer[OutputLen], "%s", WebTrailer);
HeaderLen = sprintf(Header, "HTTP/1.0 200 OK\r\nContent-Length: %d\r\nContent-Type: text/html\r\n\r\n", OutputLen);
sendandcheck(sock, Header, HeaderLen);
@ -8113,7 +8112,7 @@ extern char OrigCmdBuffer[81];
BOOL isSYSOP(TRANSPORTENTRY * Session, char * Bufferptr);
VOID APRSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID APRSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// APRS Subcommands. Default for compatibility is APRSMH
@ -9178,7 +9177,7 @@ void GetSavedAPRSMessages()
if ((file = fopen(FN, "r")) == NULL)
return ;
while (fgets(Line, 512, file))
while (fgets(Line, sizeof(Line), file))
{
Stamp = Line;
From = strlop(Stamp, ' ');

9223
APRSCode.c.orig Normal file

File diff suppressed because it is too large Load Diff

139
APRSCode.c.rej Normal file
View File

@ -0,0 +1,139 @@
--- APRSCode.c
+++ APRSCode.c
@@ -3674,7 +3674,7 @@
if (ptr1)
*ptr1 = 0;
-// Debugprintf("Duplicate Message supressed %s", Msg);
+// Debugprintf("Duplicate Message suppressed %s", Msg);
return TRUE; // Duplicate
}
}
--- BPQChat.rc
+++ BPQChat.rc
@@ -162,7 +162,7 @@
WS_VSCROLL
DEFPUSHBUTTON "Save Welcome Message",SAVEWELCOME,140,296,91,14,
BS_CENTER | BS_VCENTER
- LTEXT " If the node is not directly connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands seperared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT",
+ LTEXT " If the node is not directly connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands separated by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT",
IDC_STATIC,9,52,355,24
END
--- BPQMail.rc
+++ BPQMail.rc
@@ -1045,7 +1045,7 @@
CONTROL "Delete Log and Message Files to Recycle Bin",
IDC_DELETETORECYCLE,"Button",BS_AUTOCHECKBOX |
BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,142,115,20
- CONTROL "Supress Mailing of Housekeeping Results",
+ CONTROL "Suppress Mailing of Housekeeping Results",
IDC_MAINTNOMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
BS_MULTILINE | WS_TABSTOP,5,182,115,20
CONTROL "Generate Traffic Report",IDC_MAINTTRAFFIC,"Button",
--- HanksRT.c
+++ HanksRT.c
@@ -1186,7 +1186,7 @@
// Duplicate, so discard, but save time
DupInfo[i].DupTime = Now;
- Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s supressed", Call, Msg);
+ Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s suppressed", Call, Msg);
return TRUE; // Duplicate
}
--- RigControl.c
+++ RigControl.c
@@ -8385,7 +8385,7 @@
switch (Msg[0])
{
- case 'f': // Get Freqency
+ case 'f': // Get Frequency
HLGetFreq(Sock, RIG, sep);
return 0;
--- UZ7HODrv.c
+++ UZ7HODrv.c
@@ -374,7 +374,7 @@
{
// Read Freq
- buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Freqency %d\r", AGW->CenterFreq);
+ buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Frequency %d\r", AGW->CenterFreq);
return 1;
}
@@ -382,7 +382,7 @@
if (AGW->CenterFreq == 0)
{
- buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Invalid Modem Freqency\r");
+ buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Invalid Modem Frequency\r");
return 1;
}
--- WinRPRHelper.c
+++ WinRPRHelper.c
@@ -111,7 +111,7 @@
if (argc < 3)
{
- printf ("Missing paramters - you need COM port and IP Address and rigctl port of BPQ, eg \r\n"
+ printf ("Missing parameters - you need COM port and IP Address and rigctl port of BPQ, eg \r\n"
" WinRPRHelper com10 192.168.1.64:4532\r\n\r\n"
"Press any key to exit\r\n");
--- config.c
+++ config.c
@@ -649,7 +649,7 @@
if (LOCATOR[0] == 0 && LocSpecified == 0 && RFOnly == 0)
{
Consoleprintf("");
- Consoleprintf("Please enter a LOCATOR statment in your BPQ32.cfg");
+ Consoleprintf("Please enter a LOCATOR statement in your BPQ32.cfg");
Consoleprintf("If you really don't want to be on the Node Map you can enter LOCATOR=NONE");
Consoleprintf("");
--- kiss.c
+++ kiss.c
@@ -1485,7 +1485,7 @@
}
}
else
- Debugprintf("Polled KISS - response from wrong address - Polled %d Reponse %d",
+ Debugprintf("Polled KISS - response from wrong address - Polled %d Response %d",
KISS->POLLPOINTER->OURCTRL, (Port->RXMSG[0] & 0xf0));
goto SeeifMore; // SEE IF ANYTHING ELSE
--- templatedefs.c
+++ templatedefs.c
@@ -1165,7 +1165,7 @@
"Send Non-delivery Notifications<br>\r\n"
"for P and T messages <input %sname=\"SendND\" value=\"SendND\" type=\"checkbox\" /><br>\r\n"
" <br />\r\n"
- "Supress Mailing of<br>\r\n"
+ "Suppress Mailing of<br>\r\n"
"Housekeeping Result <input %sname=\"NoMail\" value=\"Yes\" type=\"checkbox\"><br><br>\r\n"
"Generate Traffic Report<input %sname=\"GenTraffic\" value=\"Yes\" type=\"checkbox\"><br><br>\r\n"
"<div style=\"text-align: center;\"><input class='btn' name=RunNow value=\"Run Housekeeping\" type=submit class='btn'></div>\r\n"
@@ -1454,7 +1454,7 @@
"<div style=\"text-align: left; width: 680px; margin: auto;\">The Nodes to link to box defines which other Chat Nodes should be connected to, or from which "
"connections may be accepted. The format is ALIAS:CALL, eg BPQCHT:G8BPQ-4. If the node is not directly "
"connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands "
- "seperared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT"
+ "separated by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT"
"<br><br>The Callsign of the Chat Node is not defined here - it is obtained from the bpq32.cfg APPLICATION line corresponding to the Chat Appl Number.<br>\r\n"
"<br></div>\n"
--- WebMail.c
+++ WebMail.c
@@ -2020,7 +2020,7 @@
"document.getElementById('myform').action = '/WebMail/QuoteOriginal' + '?%s';"
" document.getElementById('myform').submit();}</script>"
"<input type=button class='btn' onclick='myfunc()' "
- "value='Include Orignal Msg'>";
+ "value='Include Original Msg'>";
char Temp[1024];
char ReplyAddr[128];

View File

@ -562,7 +562,7 @@ static int ProcessLine(char * buf, int Port)
void ARDOPThread(struct TNCINFO * TNC);
VOID ARDOPProcessDataSocketData(int port);
int ConnecttoARDOP();
int ConnecttoARDOP(struct TNCINFO * TNC);
static VOID ARDOPProcessReceivedData(struct TNCINFO * TNC);
static VOID ARDOPProcessReceivedControl(struct TNCINFO * TNC);
int V4ProcessReceivedData(struct TNCINFO * TNC);
@ -3212,7 +3212,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
if (TNC->SendTandRtoRelay && memcmp(AppName, "RMS ", 4) == 0
@ -5063,7 +5063,7 @@ tcpHostFrame:
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available

View File

@ -51,6 +51,8 @@ extern struct ConsoleInfo BBSConsole;
extern char LOC[7];
extern BOOL MQTT;
//#define BBSIDLETIME 120
//#define USERIDLETIME 300
@ -126,6 +128,7 @@ int32_t Encode(char * in, char * out, int32_t inlen, BOOL B1Protocol, int Compre
int APIENTRY ChangeSessionCallsign(int Stream, unsigned char * AXCall);
void SendMessageReadEvent(char * call, struct MsgInfo * Msg);
void SendNewMessageEvent(char * call, struct MsgInfo * Msg);
void MQTTMessageEvent(struct MsgInfo * message);
config_t cfg;
config_setting_t * group;
@ -3452,6 +3455,11 @@ VOID FlagAsKilled(struct MsgInfo * Msg, BOOL SaveDB)
if (SaveDB)
SaveMessageDatabase();
RebuildNNTPList();
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
}
void DoDeliveredCommand(CIRCUIT * conn, struct UserInfo * user, char * Cmd, char * Arg1, char * Context)
@ -4896,6 +4904,10 @@ sendEOM:
Msg->datechanged=time(NULL);
SaveMessageDatabase();
SendMessageReadEvent(user->Call, Msg);
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
}
}
}
@ -5565,15 +5577,20 @@ BOOL CreateMessage(CIRCUIT * conn, char * From, char * ToCall, char * ATBBS, cha
else
{
if (_memicmp(ToCall, "rms:", 4) == 0)
{
// Could be ampr.org message
if (!isAMPRMsg(ToCall))
{
if (!FindRMS())
{
nodeprintf(conn, "*** Error - Forwarding via RMS is not configured on this BBS\r");
return FALSE;
}
}
via=strlop(ToCall, ':');
_strupr(ToCall);
}
else if (_memicmp(ToCall, "rms/", 4) == 0)
{
@ -6452,6 +6469,10 @@ nextline:
user = LookupCall(Msg->to);
SendNewMessageEvent(user->Call, Msg);
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
if (EnableUI)
#ifdef LINBPQ
@ -6877,7 +6898,7 @@ int CountMessagestoForward (struct UserInfo * user)
if ((Msg->status != 'H') && (Msg->status != 'D') && Msg->type && check_fwd_bit(Msg->fbbs, BBSNumber))
{
n++;
continue; // So we dont count twice in Flag set and NTS MPS
continue; // So we dont count twice if Flag set and NTS MPS
}
// if an NTS MPS, also check for any matches
@ -6918,6 +6939,66 @@ int CountMessagestoForward (struct UserInfo * user)
return n;
}
int CountBytestoForward (struct UserInfo * user)
{
// See if any messages are queued for this BBS. If so return total bytes queued
int m, n=0;
struct MsgInfo * Msg;
int BBSNumber = user->BBSNumber;
int FirstMessage = FirstMessageIndextoForward;
if ((user->flags & F_NTSMPS))
FirstMessage = 1;
for (m = FirstMessage; m <= NumberofMessages; m++)
{
Msg=MsgHddrPtr[m];
if ((Msg->status != 'H') && (Msg->status != 'D') && Msg->type && check_fwd_bit(Msg->fbbs, BBSNumber))
{
n += Msg->length;
continue; // So we dont count twice if Flag set and NTS MPS
}
// if an NTS MPS, also check for any matches
if (Msg->type == 'T' && (user->flags & F_NTSMPS))
{
struct BBSForwardingInfo * ForwardingInfo = user->ForwardingInfo;
int depth;
if (Msg->status == 'N' && ForwardingInfo)
{
depth = CheckBBSToForNTS(Msg, ForwardingInfo);
if (depth > -1 && Msg->Locked == 0)
{
n += Msg->length;
continue;
}
depth = CheckBBSAtList(Msg, ForwardingInfo, Msg->via);
if (depth && Msg->Locked == 0)
{
n += Msg->length;
continue;
}
depth = CheckBBSATListWildCarded(Msg, ForwardingInfo, Msg->via);
if (depth > -1 && Msg->Locked == 0)
{
n += Msg->length;
continue;
}
}
}
}
return n;
}
int ListMessagestoForward(CIRCUIT * conn, struct UserInfo * user)
{
// See if any messages are queued for this BBS
@ -10076,7 +10157,6 @@ BOOL GetConfig(char * ConfigName)
int i;
char Size[80];
config_setting_t *setting;
const char * ptr;
char * ptr1;
char FBBString[8192]= "";
FBBFilter f;
@ -10199,8 +10279,7 @@ BOOL GetConfig(char * ConfigName)
if (setting && setting->value.sval[0])
{
ptr = config_setting_get_string (setting);
WelcomeMsg = _strdup(ptr);
WelcomeMsg = _strdup(config_setting_get_string (setting));
}
else
WelcomeMsg = _strdup("Hello $I. Latest Message is $L, Last listed is $Z\r\n");
@ -10209,10 +10288,7 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "NewUserWelcomeMsg");
if (setting && setting->value.sval[0])
{
ptr = config_setting_get_string (setting);
NewWelcomeMsg = _strdup(ptr);
}
NewWelcomeMsg = _strdup(config_setting_get_string (setting));
else
NewWelcomeMsg = _strdup("Hello $I. Latest Message is $L, Last listed is $Z\r\n");
@ -10220,10 +10296,7 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "ExpertWelcomeMsg");
if (setting && setting->value.sval[0])
{
ptr = config_setting_get_string (setting);
ExpertWelcomeMsg = _strdup(ptr);
}
ExpertWelcomeMsg = _strdup(config_setting_get_string (setting));
else
ExpertWelcomeMsg = _strdup("");
@ -10232,10 +10305,7 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "Prompt");
if (setting && setting->value.sval[0])
{
ptr = config_setting_get_string (setting);
Prompt = _strdup(ptr);
}
Prompt = _strdup(config_setting_get_string (setting));
else
{
Prompt = malloc(20);
@ -10245,10 +10315,7 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "NewUserPrompt");
if (setting && setting->value.sval[0])
{
ptr = config_setting_get_string (setting);
NewPrompt = _strdup(ptr);
}
NewPrompt = _strdup(config_setting_get_string (setting));
else
{
NewPrompt = malloc(20);
@ -10258,10 +10325,7 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "ExpertPrompt");
if (setting && setting->value.sval[0])
{
ptr = config_setting_get_string (setting);
ExpertPrompt = _strdup(ptr);
}
ExpertPrompt = _strdup(config_setting_get_string (setting));
else
{
ExpertPrompt = malloc(20);
@ -10482,7 +10546,7 @@ int Connected(int Stream)
char ConnectedMsg[] = "*** CONNECTED ";
char Msg[100];
char Title[100];
int Freq = 0;
int64_t Freq = 0;
int Mode = 0;
BPQVECSTRUC * SESS;
TRANSPORTENTRY * Sess1 = NULL, * Sess2;
@ -11716,6 +11780,11 @@ VOID ProcessTextFwdLine(ConnectionInfo * conn, struct UserInfo * user, char * Bu
SaveMessageDatabase();
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(conn->FwdMsg);
#endif
conn->UserPointer->ForwardingInfo->MsgCount--;
// See if any more to forward
@ -15823,6 +15892,11 @@ void SendMessageReadEvent(char * call, struct MsgInfo * Msg)
}
}
void SendMessageForwardedToM0LTE(char * call, struct MsgInfo * Msg)
{
}
void SendNewMessageEvent(char * call, struct MsgInfo * Msg)
{
if (reportMailEvents)

View File

@ -162,7 +162,7 @@ BEGIN
WS_VSCROLL
DEFPUSHBUTTON "Save Welcome Message",SAVEWELCOME,140,296,91,14,
BS_CENTER | BS_VCENTER
LTEXT " If the node is not directly connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands seperared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT",
LTEXT " If the node is not directly connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands separared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT",
IDC_STATIC,9,52,355,24
END

View File

@ -64,7 +64,7 @@ typedef struct _RTTMSG
} RTTMSG;
extern int COUNTNODES();
int COUNTNODES(struct ROUTE * ROUTE);
VOID __cdecl Debugprintf(const char * format, ...);

View File

@ -1143,6 +1143,8 @@
// Semaphore calls to SaveConfig
// Include SERVIC as valid from call (for Winlink Service messages) (49)
// Attempt to detect line draw characters in Webmail (50)
// Fix sending ampr.org mail when RMS is not enabled (51)
// Send forwarding info to packetnodes.spots.radio database (51)
#include "bpqmail.h"
#include "winstdint.h"
@ -1161,6 +1163,8 @@ FARPROCZ pGetLOC;
FARPROCX pRefreshWebMailIndex;
FARPROCX pRunEventProgram;
FARPROCX pGetPortFrequency;
FARPROCX pSendWebRequest;
FARPROCX pGetLatLon;
BOOL WINE = FALSE;
@ -1385,6 +1389,7 @@ char * CheckToAddress(CIRCUIT * conn, char * Addr);
BOOL CheckifPacket(char * Via);
int GetHTMLForms();
VOID GetPGConfig();
void SendBBSDataToPktMap();
struct _EXCEPTION_POINTERS exinfox;
@ -1936,6 +1941,8 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
pRefreshWebMailIndex = GetProcAddress(ExtDriver,"_RefreshWebMailIndex@0");
pRunEventProgram = GetProcAddress(ExtDriver,"_RunEventProgram@8");
pGetPortFrequency = GetProcAddress(ExtDriver,"_GetPortFrequency@8");
pSendWebRequest = GetProcAddress(ExtDriver,"_SendWebRequest@16");
pGetLatLon = GetProcAddress(ExtDriver,"_GetLatLon@8");
if (pGetLOC)
@ -2183,6 +2190,13 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Debugprintf("|Enter HouseKeeping");
DoHouseKeeping(FALSE);
}
if (APIClock < NOW)
{
SendBBSDataToPktMap();
APIClock = NOW + 7200; // Every 2 hours
}
tm = gmtime(&NOW);
if (tm->tm_wday == 0) // Sunday
@ -2816,6 +2830,12 @@ gotAddr:
EndDialog(hDlg, LOWORD(wParam));
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
return TRUE;
}
@ -3057,7 +3077,6 @@ static PSOCKADDR_IN psin;
SOCKET sock;
BOOL Initialise()
{
int i, len;
@ -3072,6 +3091,8 @@ BOOL Initialise()
GetTimeZoneInformation(&TimeZoneInformation);
Debugprintf("%d", sizeof(struct MsgInfo));
_tzset();
_MYTIMEZONE = timezone;
_MYTIMEZONE = TimeZoneInformation.Bias * 60;
@ -3383,6 +3404,8 @@ BOOL Initialise()
CreatePipeThread();
GetPGConfig();
APIClock = 0;
return TRUE;
}

View File

@ -1045,7 +1045,7 @@ BEGIN
CONTROL "Delete Log and Message Files to Recycle Bin",
IDC_DELETETORECYCLE,"Button",BS_AUTOCHECKBOX |
BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,142,115,20
CONTROL "Supress Mailing of Housekeeping Results",
CONTROL "Suppress Mailing of Housekeeping Results",
IDC_MAINTNOMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
BS_MULTILINE | WS_TABSTOP,5,182,115,20
CONTROL "Generate Traffic Report",IDC_MAINTTRAFFIC,"Button",

View File

@ -214,7 +214,7 @@ LRESULT APIENTRY InputProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ;
LRESULT APIENTRY MonProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ;
extern CMDX COMMANDS[];
extern struct CMDX COMMANDS[];
extern int APPL1;
static HMENU trayMenu;

View File

@ -87,7 +87,7 @@ void CreateMHWindow();
int Update_MH_List(struct in_addr ipad, char * call, char proto);
static BOOL ReadConfigFile(int Port);
int ConnecttoAGW();
int ConnecttoAGW(int port);
int ProcessReceivedData(int bpqport);
static int ProcessLine(char * buf, int Port, BOOL CheckPort);

20
Bpq32.c
View File

@ -1086,7 +1086,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// Add ? and * wildcards to NODES command (74)
// Add Port RADIO config parameter (74)
// Version 6.0.24.1 August 2024
// Version 6.0.24.1 August 2023
// Apply NODES command wildcard to alias as well a call (2)
// Add STOPPORT/STARTPORT to VARA Driver (2)
@ -1234,6 +1234,11 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// Add optional ATTACH time limit for VARA (48)
// API format fixes (48)
// AGWAPI Add protection against accidental connects from a non-agw application (50)
// Save MH and NODES every hour (51)
// Fix handling long unix device names (now max 250 bytes) (52)
// Fix error reporting in api update (53)
// Coding changes to remove some compiler warnings (53, 54)
// Add MQTT reporting o
#define CKernel
@ -1374,6 +1379,9 @@ extern struct _LINKTABLE * LINKS;
extern int LINK_TABLE_LEN;
extern int MAXLINKS;
extern double LatFromLOC;
extern double LonFromLOC;
extern int BPQHOSTAPI();
extern int INITIALISEPORTS();
@ -3068,7 +3076,7 @@ SkipInit:
if (AttachedProcesses < 2)
{
if (AUTOSAVE == 1)
if (AUTOSAVE)
SaveNodes();
if (AUTOSAVEMH)
SaveMH();
@ -6626,6 +6634,14 @@ DllExport char * APIENTRY GetLOC()
return LOC;
}
DllExport void APIENTRY GetLatLon(double * lat, double * lon)
{
*lat = LatFromLOC;
*lon = LonFromLOC;
return;
}
// UZ7HO Dll PTT interface
// 1 ext_PTT_info

View File

@ -93,7 +93,7 @@ VOID DoTheCommand(TRANSPORTENTRY * Session);
char * MOVEANDCHECK(TRANSPORTENTRY * Session, char * Bufferptr, char * Source, int Len);
VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer);
char * FormatUptime(int Uptime);
char * strlop(char * buf, char delim);
char * strlop(const char * buf, char delim);
BOOL CompareCalls(UCHAR * c1, UCHAR * c2);
VOID PostDataAvailable(TRANSPORTENTRY * Session);
@ -109,7 +109,7 @@ int cCOUNT_AT_L2(struct _LINKTABLE * LINK);
VOID SENDL4CONNECT(TRANSPORTENTRY * Session);
VOID CloseSessionPartner(TRANSPORTENTRY * Session);
int COUNTNODES();
int COUNTNODES(struct ROUTE * ROUTE);
int DecodeNodeName(char * NodeName, char * ptr);;
VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer);
int cCOUNT_AT_L2(struct _LINKTABLE * LINK);
@ -359,7 +359,7 @@ extern char * ConfigBuffer;
extern char * WL2KReportLine[];
extern CMDX COMMANDS[];
extern struct CMDX COMMANDS[];
extern int QCOUNT, MAXBUFFS, MAXCIRCUITS, L4DEFAULTWINDOW, L4T1, CMDXLEN;
extern char CMDALIAS[ALIASLEN][NumberofAppls];
@ -398,6 +398,7 @@ extern int REALTIMETICKS;
extern time_t CurrentSecs;
extern time_t lastSlowSecs;
extern time_t lastSaveSecs;
// SNMP Variables

View File

@ -23,6 +23,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#ifdef LINBPQ
#include "compatbits.h"
char * strlop(const char * buf, char delim);
#define APIENTRY
#define VOID void
@ -31,7 +32,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include <windows.h>
#endif
char * strlop(char * buf, char delim);
VOID APIENTRY md5 (char *arg, unsigned char * checksum);

199
Cmd.c
View File

@ -44,6 +44,8 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include "tncinfo.h"
#include "telnetserver.h"
//#include "GetVersion.h"
//#define DllImport __declspec( dllimport )
@ -64,12 +66,12 @@ VOID L2SENDXID(struct _LINKTABLE * LINK);
int CountBits(unsigned long in);
VOID SaveMH();
BOOL RestartTNC(struct TNCINFO * TNC);
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID WriteMiniDump();
int CheckKissInterlock(struct PORTCONTROL * PORT, int Exclusive);
int seeifInterlockneeded(struct PORTCONTROL * PORT);
extern VOID KISSTX();
extern VOID KISSTX(struct KISSINFO * KISS, PMESSAGE Buffer);
char COMMANDBUFFER[81] = ""; // Command Hander input buffer
char OrigCmdBuffer[81] = ""; // Command Hander input buffer before toupper
@ -134,8 +136,8 @@ int L4FRAMESRETRIED = 0;
int OLDFRAMES = 0;
int L3FRAMES = 0;
VOID SENDSABM();
VOID RESET2();
VOID SENDSABM(struct _LINKTABLE * LINK);
VOID RESET2(struct _LINKTABLE * LINK);
int APPL1 = 0;
int PASSCMD = 0;
@ -149,33 +151,35 @@ char * ALIASPTR = &CMDALIAS[0][0];
extern int RigReconfigFlag;
CMDX COMMANDS[];
int CMDXLEN = sizeof (CMDX);
struct CMDX COMMANDS[];
int CMDXLEN = sizeof (struct CMDX);
VOID SENDNODESMSG();
VOID KISSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID STOPCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID STARTCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID STOPPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID STARTPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID FINDBUFFS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID WL2KSYSOP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID AXRESOLVER(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID AXMHEARD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID SHOWTELNET(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID SHOWARP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID SHOWNAT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID SHOWIPROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID FLMSG(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD);
void ListExcludedCalls(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID APRSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID HELPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD);
VOID QTSMCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD);
VOID KISSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID STOPCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID STARTCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID STOPPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID STARTPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID FINDBUFFS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID WL2KSYSOP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID AXRESOLVER(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID AXMHEARD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID SHOWTELNET(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID SHOWARP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID SHOWNAT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID SHOWIPROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID FLMSG(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD);
void ListExcludedCalls(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID APRSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID HELPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD);
VOID QTSMCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD);
void hookL2SessionAttempt(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK);
@ -242,7 +246,7 @@ char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char
}
VOID SENDNODES(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SENDNODES(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
SENDNODESMSG();
@ -252,7 +256,7 @@ VOID SENDNODES(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID SAVEMHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SAVEMHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
SaveMH();
@ -262,7 +266,7 @@ VOID SAVEMHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID SAVENODES(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SAVENODES(struct _TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
SaveNodes();
@ -272,7 +276,7 @@ VOID SAVENODES(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID DUMPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID DUMPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
WriteMiniDump();
@ -282,7 +286,7 @@ VOID DUMPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID RIGRECONFIG(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID RIGRECONFIG(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
if (!ProcessConfig())
{
@ -297,7 +301,7 @@ VOID RIGRECONFIG(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMD
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID REBOOT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID REBOOT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
if (Reboot())
{
@ -313,7 +317,7 @@ VOID REBOOT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID RESTART(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID RESTART(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
if (Restart())
{
@ -329,7 +333,7 @@ VOID RESTART(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID RESTARTTNC(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID RESTARTTNC(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char * ptr, *Context;
int portno;
@ -373,20 +377,20 @@ VOID RESTARTTNC(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
UCHAR VALNODESFLAG = 0, EXTONLY = 0;
VOID PORTVAL (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
VOID PORTVAL (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
VOID VALNODES(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID VALNODES(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
VALNODESFLAG = 1;
PORTVAL(Session, Bufferptr, CmdTail, CMD);
}
VOID EXTPORTVAL(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID EXTPORTVAL(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
EXTONLY = 1;
PORTVAL(Session, Bufferptr, CmdTail, CMD);
}
VOID PORTVAL(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID PORTVAL(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS PORT VALUE COMMANDS
@ -501,7 +505,7 @@ VOID PORTVAL(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
}
VOID SWITCHVAL (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SWITCHVAL (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// Update switch 8 bit value
@ -546,7 +550,7 @@ VOID SWITCHVAL (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
}
VOID SWITCHVALW (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SWITCHVALW (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// Update switch 16 bit value
@ -709,7 +713,7 @@ BOOL cATTACHTOBBS(TRANSPORTENTRY * Session, UINT Mask, int Paclen, int * AnySess
return FALSE;
}
VOID APPLCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID APPLCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
BOOL CONFAILED = 0;
UINT CONERROR ;
@ -820,13 +824,13 @@ VOID APPLCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
}
VOID CMDI00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDI00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
Bufferptr = Cmdprintf(Session, Bufferptr, "%s", INFOMSG);
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID CMDV00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDV00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
if (sizeof(void *) == 4)
Bufferptr = Cmdprintf(Session, Bufferptr, "Version %s\r", VersionString);
@ -836,14 +840,14 @@ VOID CMDV00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID BYECMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID BYECMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
CLOSECURRENTSESSION(Session); // Kills any crosslink, plus local link
ReleaseBuffer((UINT *)REPLYBUFFER);
return;
}
VOID CMDPAC(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDPAC(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// SET PACLEN FOR THIS SESSION
@ -865,7 +869,7 @@ VOID CMDPAC(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID CMDIDLE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDIDLE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// SET IDLETIME FOR THIS SESSION
@ -887,7 +891,7 @@ VOID CMDIDLE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID CMDT00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDT00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// SET L4 TIMEOUT FOR CONNECTS ON THIS SESSION
@ -912,7 +916,7 @@ VOID CMDT00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
UCHAR PWLen;
char PWTEXT[80];
VOID PWDCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID PWDCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char * ptr, *Context;
USHORT pwsum = 0;
@ -980,7 +984,7 @@ VOID PWDCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
return;
}
VOID CMDSTATS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDSTATS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char * ptr, *Context;
int Port = 0, cols = NUMBEROFPORTS, i;
@ -1214,7 +1218,7 @@ VOID CMDSTATS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID CMDL00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDL00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS 'LINKS' MESSAGE
@ -1250,7 +1254,7 @@ VOID CMDL00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
}
VOID CMDS00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDS00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS 'USERS'
@ -1322,7 +1326,7 @@ CMDS60:
extern int MasterPort[MAXBPQPORTS+1]; // Pointer to first BPQ port for a specific MPSK or UZ7HO host
VOID CMDP00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDP00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// Process PORTS Message
@ -1577,7 +1581,7 @@ char * DisplayRoute(TRANSPORTENTRY * Session, char * Bufferptr, struct ROUTE *
}
VOID CMDR00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDR00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
struct ROUTE * Routes = NEIGHBOURS;
int MaxRoutes = MAXNEIGHBOURS;
@ -1867,7 +1871,7 @@ SendReply:
}
VOID LISTENCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID LISTENCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS LISTEN COMMAND
@ -1950,7 +1954,7 @@ VOID LISTENCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
}
VOID UNPROTOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID UNPROTOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS UNPROTO COMMAND
@ -2019,7 +2023,7 @@ VOID UNPROTOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
return;
}
VOID CALCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CALCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS CAL COMMAND
@ -2072,7 +2076,7 @@ VOID CALCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
VOID CQCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CQCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// Send a CQ Beacon on a radio port. Must be in LISTEN state
@ -2278,9 +2282,9 @@ BOOL FindLink(UCHAR * LinkCall, UCHAR * OurCall, int Port, struct _LINKTABLE **
return FALSE;
}
VOID ATTACHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD);
VOID ATTACHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD);
VOID CMDC00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDC00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS CONNECT COMMAND
@ -2302,7 +2306,7 @@ VOID CMDC00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * C
char PortString[10];
char cmdCopy[256];
struct _EXTPORTDATA * EXTPORT = (struct _EXTPORTDATA *)PORT;
char toCall[12], fromCall[12];
#ifdef EXCLUDEBITS
@ -2920,7 +2924,7 @@ BOOL DecodeCallString(char * Calls, BOOL * Stay, BOOL * Spy, UCHAR * AXCalls)
}
VOID LINKCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID LINKCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// PROCESS *** LINKED to CALLSIGN
@ -3112,7 +3116,7 @@ int WildCmp(char * pattern, char * string)
return 0;
}
VOID CMDN00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID CMDN00(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
struct DEST_LIST * Dest = DESTS;
int count = MAXDESTS, i;
@ -3633,7 +3637,7 @@ SendReply:
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID CMDQUERY(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD)
VOID CMDQUERY(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD)
{
// DISPLAY AVAILABLE COMMANDS
@ -3642,7 +3646,7 @@ VOID CMDQUERY(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
char ApplList[2048];
char * out = ApplList;
CMDX * CMD = &COMMANDS[APPL1];
struct CMDX * CMD = &COMMANDS[APPL1];
for (n = 0; n < NumberofAppls; n++)
{
@ -3672,7 +3676,7 @@ VOID CMDQUERY(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
char * FormatMH(MHSTRUC * MH, char Format);
VOID MHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID MHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY HEARD LIST
@ -3854,7 +3858,7 @@ VOID MHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CM
int Rig_Command(TRANSPORTENTRY * Session, char * Command);
VOID RADIOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD)
VOID RADIOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD)
{
char * ptr;
@ -3883,7 +3887,7 @@ VOID RADIOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
VOID SendNRRecordRoute(struct DEST_LIST * DEST, TRANSPORTENTRY * Session);
VOID NRRCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD)
VOID NRRCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD)
{
// PROCESS 'NRR - Netrom Record Route' COMMAND
@ -3953,7 +3957,7 @@ int CHECKINTERLOCK(struct PORTCONTROL * OURPORT)
return 0;
}
VOID ATTACHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD)
VOID ATTACHCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD)
{
// ATTACH to a PACTOR or similar port
@ -4318,16 +4322,17 @@ checkattachandcall:
// SYSOP COMMANDS
CMDX COMMANDS[] =
struct CMDX COMMANDS[] =
{
"SAVENODES ",8, SAVENODES, 0,
"TELRECONFIG ",4, RECONFIGTELNET, 0,
"SAVEMH ",6, SAVEMHCMD, 0,
"REBOOT ",6, REBOOT, 0,
"RIGRECONFIG ",8 , RIGRECONFIG, 0,
"RESTART ",7,RESTART,0,
"RESTARTTNC ",10,RESTARTTNC,0,
"SENDNODES ",8,SENDNODES,0,
// "SAVENODES ",8, SAVENODES(struct _TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD), 0,
"SAVENODES ",8, &SAVENODES, 0,
"TELRECONFIG ",4, &RECONFIGTELNET, 0,
"SAVEMH ",6, &SAVEMHCMD, 0,
"REBOOT ",6, &REBOOT, 0,
"RIGRECONFIG ",8, &RIGRECONFIG, 0,
"RESTART ",7, &RESTART,0,
"RESTARTTNC ",10,&RESTARTTNC,0,
"SENDNODES ",8, &SENDNODES,0,
"EXTRESTART ",10, EXTPORTVAL, offsetof(EXTPORTDATA, EXTRESTART),
"TXDELAY ",3, PORTVAL, offsetof(PORTCONTROLX, PORTTXDELAY),
"MAXFRAME ",3, PORTVAL, offsetof(PORTCONTROLX, PORTWINDOW),
@ -4457,9 +4462,9 @@ CMDX COMMANDS[] =
"..FLMSG ",7,FLMSG,0
};
CMDX * CMD = NULL;
struct CMDX * CMD = NULL;
int NUMBEROFCOMMANDS = sizeof(COMMANDS)/sizeof(CMDX);
int NUMBEROFCOMMANDS = sizeof(COMMANDS)/sizeof(struct CMDX);
char * ReplyPointer; // Pointer into reply buffer
@ -4952,7 +4957,7 @@ VOID StatsTimer()
int x = 17;
}
if (PORT->PORTTXROUTINE == KISSTX && (KISS->QtSMStats || KISS->FIRSTPORT->PORT.QtSMPort)) // KISS Port QtSM Stats
if ((void *)PORT->PORTTXROUTINE == (void *)KISSTX && (KISS->QtSMStats || KISS->FIRSTPORT->PORT.QtSMPort)) // KISS Port QtSM Stats
{
}
else
@ -4990,7 +4995,7 @@ extern struct AXIPPORTINFO * Portlist[];
#define TCPConnected 4
VOID AXRESOLVER(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID AXRESOLVER(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY AXIP Resolver info
@ -5080,7 +5085,7 @@ VOID AXRESOLVER(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID AXMHEARD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID AXMHEARD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY AXIP Mheard info
@ -5150,7 +5155,7 @@ extern char WL2KLoc[7];
BOOL GetWL2KSYSOPInfo(char * Call, char * _REPLYBUFFER);
BOOL UpdateWL2KSYSOPInfo(char * Call, char * SQL);
VOID WL2KSYSOP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID WL2KSYSOP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char _REPLYBUFFER[1000] = "";
@ -5302,7 +5307,7 @@ VOID WL2KSYSOP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
VOID CloseKISSPort(struct PORTCONTROL * PortVector);
VOID STOPCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID STOPCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char _REPLYBUFFER[1000] = "";
char * ptr, * Context;
@ -5363,7 +5368,7 @@ VOID STOPCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
}
VOID STARTCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID STARTCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char _REPLYBUFFER[1000] = "";
char * ptr, * Context;
@ -5423,7 +5428,7 @@ VOID STARTCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
}
VOID STOPPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID STOPPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char _REPLYBUFFER[1000] = "";
char * ptr, * Context;
@ -5507,7 +5512,7 @@ VOID STOPPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
}
VOID STARTPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID STARTPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char _REPLYBUFFER[1000] = "";
char * ptr, * Context;
@ -5599,7 +5604,7 @@ VOID STARTPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
int ASYSEND(struct PORTCONTROL * PortVector, char * buffer, int count);
int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len);
VOID KISSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID KISSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char _REPLYBUFFER[1000] = "";
char * ptr, * Context;
@ -5690,7 +5695,7 @@ VOID KISSCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
}
VOID FINDBUFFS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID FINDBUFFS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
FindLostBuffers();
@ -5702,7 +5707,7 @@ VOID FINDBUFFS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID FLMSG(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * UserCMD)
VOID FLMSG(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD)
{
// Telnet Connection from FLMSG
CLOSECURRENTSESSION(Session); // Kills any crosslink, plus local link
@ -5725,7 +5730,7 @@ BOOL CheckExcludeList(UCHAR * Call)
}
void ListExcludedCalls(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
void ListExcludedCalls(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
UCHAR * ptr = ExcludeList;
@ -5774,7 +5779,7 @@ BOOL isSYSOP(TRANSPORTENTRY * Session, char * Bufferptr)
return TRUE;
}
VOID HELPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID HELPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
int FileSize;
char MsgFile[MAX_PATH];
@ -5863,7 +5868,7 @@ int UZ7HOSetModem(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMES
int UZ7HOSetFlags(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESSAGE buff, PMSGWITHLEN buffptr);
VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char * Cmd;
int port;
@ -5934,7 +5939,7 @@ VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
return;
}
VOID QTSMCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID QTSMCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
int port;
struct PORTCONTROL * PORT;
@ -5946,7 +5951,7 @@ VOID QTSMCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
PORT = GetPortTableEntryFromPortNum(port);
if (PORT == NULL || PORT->PORTTXROUTINE != KISSTX) // Must be a kiss like port
if (PORT == NULL || (void *)PORT->PORTTXROUTINE != (void *)KISSTX) // Must be a kiss like port
{
Bufferptr = Cmdprintf(Session, Bufferptr, "Error - Port %d is not a KISS port\r", port);
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));

View File

@ -571,7 +571,7 @@ void * zalloc(int len)
return ptr;
}
char * strlop(char * buf, char delim)
char * strlop(const char * buf, char delim)
{
// Terminate buf at delim, and return rest of string
@ -692,7 +692,7 @@ VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer)
}
VOID CheckForDetach(struct TNCINFO * TNC, int Stream, struct STREAMINFO * STREAM,
VOID TidyCloseProc(), VOID ForcedCloseProc(), VOID CloseComplete())
VOID TidyCloseProc(struct TNCINFO * TNC, int Stream), VOID ForcedCloseProc(struct TNCINFO * TNC, int Stream), VOID CloseComplete(struct TNCINFO * TNC, int Stream))
{
void ** buffptr;
@ -1020,7 +1020,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
char * Config;
static char * ptr1, * ptr2;
BOOL ReadConfigFile(int Port, int ProcLine())
BOOL ReadConfigFile(int Port, int ProcLine(char * buf, int Port))
{
char buf[256],errbuf[256];
@ -2437,7 +2437,7 @@ static struct speed_struct
HANDLE OpenCOMPort(VOID * pPort, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits)
{
char Port[256];
char buf[100];
char buf[512];
// Linux Version.
@ -4759,7 +4759,7 @@ LRESULT CALLBACK UIWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam
extern struct DATAMESSAGE * REPLYBUFFER;
char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...);
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
char FN[250];
FILE *hFile;
@ -4912,7 +4912,7 @@ SOCKET OpenHTTPSock(char * Host)
{
err = WSAGetLastError();
Debugprintf("Resolve Failed for %s %d %x", "api.winlink.org", err, err);
Debugprintf("Resolve Failed for %s %d %x", Host, err, err);
return 0 ; // Resolve failed
}
@ -4945,7 +4945,7 @@ SOCKET OpenHTTPSock(char * Host)
}
static char HeaderTemplate[] = "POST %s HTTP/1.1\r\n"
"Accept: application/json\r\n"
"Accept: app N B lication/json\r\n"
// "Accept-Encoding: gzip,deflate,gzip, deflate\r\n"
"Content-Type: application/json\r\n"
"Host: %s:%d\r\n"
@ -4955,14 +4955,24 @@ static char HeaderTemplate[] = "POST %s HTTP/1.1\r\n"
"\r\n";
VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int Len, char * Return)
DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params, char * Return)
{
SOCKET sock;
int InputLen = 0;
int inptr = 0;
char Buffer[4096];
char Header[256];
char * ptr, * ptr1;
int Sent;
int Len = strlen(Params);
if (M0LTEMap == 0)
return;
sock = OpenHTTPSock(Host);
if (sock == 0)
return;
#ifdef LINBPQ
sprintf(Header, HeaderTemplate, Request, Host, 80, Len, "linbpq/", VersionString, Params);
@ -4976,6 +4986,7 @@ VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int
{
int Err = WSAGetLastError();
Debugprintf("Error %d from Web Update send()", Err);
closesocket(sock);
return;
}
@ -4987,12 +4998,10 @@ VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int
{
int Err = WSAGetLastError();
Debugprintf("Error %d from Web Update recv()", Err);
closesocket(sock);
return;
}
// As we are using a persistant connection, can't look for close. Check
// for complete message
inptr += InputLen;
Buffer[inptr] = 0;
@ -5031,10 +5040,9 @@ VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int
else
{
strlop(Buffer, 13);
Debugprintf("Map Update Params - %s", Params);
Debugprintf("Map Update failed - %s", Buffer);
}
closesocket(sock);
return;
}
}
@ -5046,6 +5054,7 @@ VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int
{
// Just accept anything until I've sorted things with Lee
Debugprintf("%s", ptr1);
closesocket(sock);
Debugprintf("Web Database update ok");
return;
}
@ -5584,19 +5593,11 @@ void SendDataToPktMap(char *Msg)
}
],
*/
// "contact": "string",
// "neighbours": [{"node": "G7TAJ","port": "30"}]
sock = OpenHTTPSock("packetnodes.spots.radio");
if (sock == 0)
return;
SendWebRequest(sock, "packetnodes.spots.radio", Request, Params, strlen(Params), Return);
closesocket(sock);
SendWebRequest("packetnodes.spots.radio", Request, Params, Return);
}
// ="{\"neighbours\": [{\"node\": \"G7TAJ\",\"port\": \"30\"}]}";

View File

@ -168,7 +168,7 @@ int AllocateDRATSStream(struct DRATSSession * Sess)
if (Stream == 255) return 0;
if (memcmp(Sess->CallTo, "NODE", 6) == 0)
if (memcmp(Sess->CallTo, "NODE", 4) == 0)
{
// Just connect to command level on switch
}
@ -563,7 +563,7 @@ void DRATSConnectionLost(struct ConnectionInfo * sockptr)
#define ZEXPORT __stdcall
#endif
#include "zlib.h"
#include <zlib.h>
int doinflate(unsigned char * source, unsigned char * dest, int Len, int destlen, int * outLen)

View File

@ -24,7 +24,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include "bpqmail.h"
int32_t Encode(char * in, char * out, int32_t inlen, BOOL B1Protocol, int Compress);
void MQTTMessageEvent(void* message);
int MaxRXSize = 99999;
int MaxTXSize = 99999;
@ -807,6 +807,11 @@ VOID FlagSentMessages(CIRCUIT * conn, struct UserInfo * user)
FBBHeader->FwdMsg->datechanged=time(NULL);
}
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(FBBHeader->FwdMsg);
#endif
FBBHeader->FwdMsg->Locked = 0; // Unlock
conn->UserPointer->ForwardingInfo->MsgCount--;
}

View File

@ -65,12 +65,12 @@ extern int (WINAPI FAR *GetModuleFileNameExPtr)();
;
int SemHeldByAPI;
static void ConnecttoFLDigiThread(void * portptr);
void ConnecttoFLDigiThread(void * portptr);
void CreateMHWindow();
int Update_MH_List(struct in_addr ipad, char * call, char proto);
static int ConnecttoFLDigi();
int ConnecttoFLDigi(int port);
static int ProcessReceivedData(int bpqport);
static int ProcessLine(char * buf, int Port);
int KillTNC(struct TNCINFO * TNC);
@ -93,6 +93,7 @@ VOID CheckFLDigiData(struct TNCINFO * TNC);
VOID SendPacket(struct TNCINFO * TNC, UCHAR * Msg, int MsgLen);
int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len);
VOID SendXMLCommand(struct TNCINFO * TNC, char * Command, char * Value, char ParamType);
VOID SendXMLCommandInt(struct TNCINFO * TNC, char * Command, int Value, char ParamType);
VOID FLSlowTimer(struct TNCINFO * TNC);
VOID SendKISSCommand(struct TNCINFO * TNC, char * Msg);
@ -101,8 +102,6 @@ VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len);
char * strlop(char * buf, char delim);
extern UCHAR BPQDirectory[];
#define MAXMPSKPORTS 16
@ -592,7 +591,7 @@ pollloop:
}
else
{
SendXMLCommand(TNC, "modem.set_carrier", (char *)atoi(&buff->L2DATA[5]), 'I');
SendXMLCommandInt(TNC, "modem.set_carrier", atoi(&buff->L2DATA[5]), 'I');
}
TNC->InternalCmd = TRUE;
@ -1482,14 +1481,14 @@ static int ProcessLine(char * buf, int Port)
return (TRUE);
}
static int ConnecttoFLDigi(int port)
int ConnecttoFLDigi(int port)
{
_beginthread(ConnecttoFLDigiThread, 0, (void *)(size_t)port);
return 0;
}
static VOID ConnecttoFLDigiThread(void * portptr)
VOID ConnecttoFLDigiThread(void * portptr)
{
int port = (int)(size_t)portptr;
char Msg[255];
@ -2580,7 +2579,7 @@ VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, char Channe
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available
@ -3197,7 +3196,7 @@ VOID FLReleaseTNC(struct TNCINFO * TNC)
else
{
SendXMLCommand(TNC, "modem.set_by_name", TNC->FLInfo->DefaultMode, 'S');
SendXMLCommand(TNC, "modem.set_carrier", (char *)TNC->FLInfo->DefaultFreq, 'I');
SendXMLCommandInt(TNC, "modem.set_carrier", TNC->FLInfo->DefaultFreq, 'I');
}
}
// Start Scanner
@ -3895,6 +3894,27 @@ VOID SendXMLCommand(struct TNCINFO * TNC, char * Command, char * Value, char Par
return;
}
VOID SendXMLCommandInt(struct TNCINFO * TNC, char * Command, int Value, char ParamType)
{
int Len;
char ReqBuf[512];
char SendBuff[512];
struct FLINFO * FL = TNC->FLInfo;
struct ARQINFO * ARQ = TNC->ARQInfo;
char ValueString[256] ="";
if (!TNC->CONNECTED || TNC->FLInfo->KISSMODE)
return;
sprintf(ValueString, "<params><param><value><i4>%d</i4></value></param></params\r\n>", Value);
strcpy(FL->LastXML, Command);
Len = sprintf(ReqBuf, Req, FL->LastXML, ValueString);
Len = sprintf(SendBuff, MsgHddr, Len, ReqBuf);
send(TNC->TCPSock, SendBuff, Len, 0);
return;
}
VOID SendXMLPoll(struct TNCINFO * TNC)
{
int Len;

View File

@ -347,41 +347,6 @@ loop:
return 1;
}
BOOL FreeDataReadConfigFile(int Port, int ProcLine())
{
char buf[256],errbuf[256];
Config = PortConfig[Port];
if (Config)
{
// Using config from bpq32.cfg
if (strlen(Config) == 0)
{
return TRUE;
}
ptr1 = Config;
ptr2 = strchr(ptr1, 13);
if (!ProcLine(buf, Port))
{
WritetoConsoleLocal("\n");
WritetoConsoleLocal("Bad config record ");
WritetoConsoleLocal(errbuf);
}
}
else
{
sprintf(buf," ** Error - No Configuration info in bpq32.cfg");
WritetoConsoleLocal(buf);
}
return (TRUE);
}
VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
@ -867,7 +832,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
char Message[256];
int Len, ret;
Len = sprintf(Message, TXF);
Len = sprintf(Message, "%s", TXF);
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
if (buffptr)
@ -1881,7 +1846,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
if (App < 32)
{
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY
@ -2242,7 +2207,7 @@ VOID FreeDataProcessNewConnect(struct TNCINFO * TNC, char * fromCall, char * toC
if (App < 32)
{
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY
@ -2476,7 +2441,7 @@ static void SendCQ(struct TNCINFO * TNC)
char Message[256];
int Len, ret;
Len = sprintf(Message, CQ);
Len = sprintf(Message, "%s", CQ);
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
}
@ -2491,7 +2456,7 @@ static void SendBeacon(struct TNCINFO * TNC, int Interval)
if (Interval > 0)
Len = sprintf(Message, Template1, Interval);
else
Len = sprintf(Message, Template2);
Len = sprintf(Message, "%s", Template2);
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
}
@ -3682,7 +3647,7 @@ int FreeDataDisconnect(struct TNCINFO * TNC)
// return FreeDataSendCommand(TNC, "D");
Len = sprintf(Msg, Disconnect);
Len = sprintf(Msg, "%s", Disconnect);
return send(TNC->TCPDataSock, Msg, Len, 0);
}
@ -3694,7 +3659,7 @@ int FreeGetData(struct TNCINFO * TNC)
char Msg[128];
int Len;
Len = sprintf(Msg, GetData);
Len = sprintf(Msg, "%s", GetData);
return send(TNC->TCPDataSock, Msg, Len, 0);
}

View File

@ -471,7 +471,7 @@ VOID * HALExtInit(EXTPORTDATA * PortEntry)
int port;
char * ptr;
int len;
char Msg[80];
char Msg[512];
#ifndef LINBPQ
HWND x;
#endif
@ -548,7 +548,7 @@ VOID * HALExtInit(EXTPORTDATA * PortEntry)
TNC->WebWinX = 510;
TNC->WebWinY = 280;
TNC->WEB_COMMSSTATE = zalloc(100);
TNC->WEB_COMMSSTATE = zalloc(512);
TNC->WEB_TNCSTATE = zalloc(100);
strcpy(TNC->WEB_TNCSTATE, "Free");
TNC->WEB_MODE = zalloc(100);

View File

@ -309,47 +309,10 @@ loop:
return 1;
}
BOOL HSMODEMReadConfigFile(int Port, int ProcLine())
{
char buf[256],errbuf[256];
Config = PortConfig[Port];
if (Config)
{
// Using config from bpq32.cfg
if (strlen(Config) == 0)
{
return TRUE;
}
ptr1 = Config;
ptr2 = strchr(ptr1, 13);
if (!ProcLine(buf, Port))
{
WritetoConsoleLocal("\n");
WritetoConsoleLocal("Bad config record ");
WritetoConsoleLocal(errbuf);
}
}
else
{
sprintf(buf," ** Error - No Configuration info in bpq32.cfg");
WritetoConsoleLocal(buf);
}
return (TRUE);
}
VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len);
static time_t ltime;

View File

@ -38,7 +38,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define ZEXPORT __stdcall
#endif
#include "zlib.h"
#include <zlib.h>
#define CKernel
#include "httpconnectioninfo.h"
@ -102,7 +102,6 @@ extern int NumberofPorts;
extern UCHAR ConfigDirectory[260];
char * strlop(char * buf, char delim);
VOID sendandcheck(SOCKET sock, const char * Buffer, int Len);
int CompareNode(const void *a, const void *b);
int CompareAlias(const void *a, const void *b);

View File

@ -1186,7 +1186,7 @@ static BOOL CheckforDups(ChatCIRCUIT * circuit, char * Call, char * Msg)
// Duplicate, so discard, but save time
DupInfo[i].DupTime = Now;
Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s supressed", Call, Msg);
Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s suppressed", Call, Msg);
return TRUE; // Duplicate
}

View File

@ -95,9 +95,13 @@ TODo ?Multiple Adapters
#pragma comment(lib, "IPHLPAPI.lib")
#endif
#include "pcap.h"
#include <pcap.h>
#ifdef WIN32
int pcap_sendpacket(pcap_t *p, u_char *buf, int size);
#else
PCAP_API int pcap_sendpacket(pcap_t *, const u_char *, int);
#endif
#ifndef LINBPQ
#include "kernelresource.h"
@ -4731,7 +4735,7 @@ void OpenTAP()
extern struct DATAMESSAGE * REPLYBUFFER;
char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...);
VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// Send ICMP Echo Request
@ -4789,7 +4793,7 @@ VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD
return;
}
VOID SHOWARP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SHOWARP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY IP Gateway ARP status or Clear
@ -4884,7 +4888,7 @@ VOID SHOWARP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX *
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID SHOWNAT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SHOWNAT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY IP Gateway ARP status or Clear
@ -4943,7 +4947,7 @@ int CountBits(uint32_t in)
return n;
}
VOID SHOWIPROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SHOWIPROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY IP Gateway ARP status or Clear
@ -5334,7 +5338,7 @@ int ProcessSNMPPayload(UCHAR * Msg, int Len, UCHAR * Reply, int * OffPtr)
// Should be nothing left
}
if (RequestType = 160)
if (RequestType == 160)
{
int Offset = 255;
int PDULen = 0;

View File

@ -725,7 +725,7 @@ VOID KISSHFReleaseTNC(struct TNCINFO * TNC)
ReleaseOtherPorts(TNC);
}
VOID KISSHFSuspendPort(struct TNCINFO * TNC, struct TNCINFO * ThisTNC)
VOID KISSHFSuspendPort(struct TNCINFO * TNC, struct TNCINFO * THISTNC)
{
TNC->PortRecord->PORTCONTROL.PortSuspended = 1;
strcpy(TNC->WEB_TNCSTATE, "Interlocked");

View File

@ -47,8 +47,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define THREESECS 3*3
VOID L2SENDCOMMAND();
VOID L2ROUTINE();
VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer);
MESSAGE * SETUPL2MESSAGE(struct _LINKTABLE * LINK, UCHAR CMD);
VOID SendSupervisCmd(struct _LINKTABLE * LINK);
void SEND_RR_RESP(struct _LINKTABLE * LINK, UCHAR PF);
@ -3098,7 +3097,7 @@ VOID ACKMSG(struct _LINKTABLE * LINK)
}
}
VOID CONNECTFAILED();
VOID CONNECTFAILED(struct _LINKTABLE * LINK);
VOID L2TIMEOUT(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT)
{
@ -3599,7 +3598,7 @@ VOID CONNECTREFUSED(struct _LINKTABLE * LINK)
ConnectFailedOrRefused(LINK, "Busy from");
}
VOID L3CONNECTFAILED();
VOID L3CONNECTFAILED(struct _LINKTABLE * LINK);
VOID ConnectFailedOrRefused(struct _LINKTABLE * LINK, char * Msg)
{
@ -4135,7 +4134,7 @@ int seeifUnlockneeded(struct _LINKTABLE * LINK)
if (TNC)
if (Interlock == TNC->RXRadio || Interlock == TNC->TXRadio) // Same Group
if (TNC->ReleasePortProc && TNC->PortRecord->PORTCONTROL.PortSuspended == TRUE)
TNC->ReleasePortProc(TNC, TNC);
TNC->ReleasePortProc(TNC);
}
return 0;

View File

@ -56,7 +56,7 @@ VOID L3SWAPADDRESSES(L3MESSAGEBUFFER * L3MSG);
VOID L4TIMEOUT(TRANSPORTENTRY * L4);
struct DEST_LIST * CHECKL3TABLES(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * Msg);
int CHECKIFBUSYL4(TRANSPORTENTRY * L4);
VOID AUTOTIMER();
VOID AUTOTIMER(TRANSPORTENTRY * L4);
VOID NRRecordRoute(UCHAR * Buff, int Len);
VOID REFRESHROUTE(TRANSPORTENTRY * Session);
VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR);

View File

@ -76,6 +76,7 @@ void SaveAIS();
void initAIS();
void DRATSPoll();
VOID GetPGConfig();
void SendBBSDataToPktMap();
extern uint64_t timeLoadedMS;
@ -666,7 +667,7 @@ void ConTermPoll()
// Replace CR with CRLF
printf(ptr);
printf("%s", ptr);
if (ptr2)
printf("\r\n");
@ -716,7 +717,7 @@ void ConTermPoll()
}
#include "getopt.h"
#include <getopt.h>
static struct option long_options[] =
{
@ -815,7 +816,7 @@ int main(int argc, char * argv[])
{
case 'h':
printf(HelpScreen);
printf("%s", HelpScreen);
exit (0);
case 'l':
@ -1281,6 +1282,10 @@ int main(int argc, char * argv[])
printf("Mail Started\n");
Logprintf(LOG_BBS, NULL, '!', "Mail Starting");
APIClock = 0;
SendBBSDataToPktMap();
}
}
@ -1579,6 +1584,13 @@ int main(int argc, char * argv[])
DoHouseKeeping(FALSE);
}
if (APIClock < NOW)
{
SendBBSDataToPktMap();
APIClock = NOW + 7200; // Every 2 hours
}
tm = gmtime(&NOW);
if (tm->tm_wday == 0) // Sunday

View File

@ -24,6 +24,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include "bpqmail.h"
void SendMessageReadEvent(char * call, struct MsgInfo * Msg);
void MQTTMessageEvent(void* message);
VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int len)
@ -199,6 +200,12 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l
}
conn->FwdMsg->Locked = 0; // Unlock
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(conn->FwdMsg);
#endif
}
return;
@ -282,7 +289,7 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l
{
// Reverse forward request
// If we have just sent a nessage, Flag it as sent
// If we have just sent a message, Flag it as sent
if (conn->FBBMsgsSent)
{
@ -300,6 +307,11 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l
conn->FwdMsg->Locked = 0; // Unlock
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(conn->FwdMsg);
#endif
conn->UserPointer->ForwardingInfo->MsgCount--;
}
@ -354,6 +366,11 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l
conn->FwdMsg->datechanged=time(NULL);
}
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(conn->FwdMsg);
#endif
conn->UserPointer->ForwardingInfo->MsgCount--;
}

View File

@ -60,7 +60,7 @@ static void ConnecttoMPSKThread(void * portptr);
void CreateMHWindow();
int Update_MH_List(struct in_addr ipad, char * call, char proto);
static int ConnecttoMPSK();
static int ConnecttoMPSK(int port);
static int ProcessReceivedData(int bpqport);
static int ProcessLine(char * buf, int Port);
int KillTNC(struct TNCINFO * TNC);
@ -71,8 +71,6 @@ static VOID SendData(struct TNCINFO * TNC, char * Msg, int MsgLen);
static VOID DoMonitorHddr(struct TNCINFO * TNC, struct AGWHEADER * RXHeader, UCHAR * Msg);
VOID SendRPBeacon(struct TNCINFO * TNC);
char * strlop(char * buf, char delim);
extern UCHAR BPQDirectory[];
#define MAXMPSKPORTS 16

View File

@ -205,6 +205,7 @@ int MailForInterval = 0;
char zeros[NBMASK]; // For forward bitmask tests
time_t MaintClock; // Time to run housekeeping
time_t APIClock; // Time to sent to MOLTE's Database
struct MsgInfo * MsgnotoMsg[100000]; // Message Number to Message Slot List.

View File

@ -141,7 +141,7 @@ struct Country Countries[] =
"HKG", "ASIA", "AS", // Hong Kong Special Administrative Region of China
"MAC", "ASIA", "AS", // Macao Special Administrative Region of China
"COL", "ASIA", "SA", // Colombia
"COM", "SAFR", "AF", // Comoros
// "COM", "SAFR", "AF", // Comoros
"COG", "CAFR", "AF", // Congo
"COK", "SPAC", "OC", // Cook Islands
"CRI", "CEAM", "NA", // Costa Rica

View File

@ -2897,6 +2897,8 @@ SocketConn * SMTPConnect(char * Host, int Port, BOOL AMPR, struct MsgInfo * Msg,
sinx.sin_addr.s_addr = INADDR_ANY;
sinx.sin_port = 0;
sockptr->Timeout = 0;
if (bind(sockptr->socket, (LPSOCKADDR) &sinx, addrlen) != 0 )
{
//
@ -3590,7 +3592,6 @@ VOID ProcessPOP3ClientMessage(SocketConn * sockptr, char * Buffer, int Len)
if (sockptr->POP3MsgCount > sockptr->POP3MsgNum++)
{
sockprintf(sockptr, "RETR %d", sockptr->POP3MsgNum);
sockptr->State = WaitingForRETRResponse;
}
else

View File

@ -59,7 +59,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define NODES_SIG 0xFF
char * strlop(char * buf, char delim);
UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, unsigned int msglen);
char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen);

View File

@ -612,15 +612,15 @@ struct MSESSION * FindMSession(unsigned int Key)
#define LZMA_STR "\1LZMA"
UCHAR * LZUncompress(UCHAR * Decoded, int Len, int * NewLen)
UCHAR * LZUncompress(UCHAR * Decoded, size_t Len, size_t * NewLen)
{
unsigned char * buf;
unsigned char inprops[LZMA_PROPS_SIZE];
size_t inlen;
int r;
UINT rlen;
UINT outlen;
size_t rlen = 0;
size_t outlen;
memcpy(&rlen, &Decoded[5], 4);
@ -668,8 +668,8 @@ void SaveMulticastMessage(struct MSESSION * MSession)
{
UCHAR * Decoded = NULL; // Output from Basexxx decode
UCHAR * Uncompressed = NULL;
int DecodedLen; // Length of decoded message
int UncompressedLen; // Length of decompressed message
size_t DecodedLen; // Length of decoded message
size_t UncompressedLen; // Length of decompressed message
int ExpectedLen; // From front of Base128 or Base256 message
int HddrLen; // Length of Expected Len Header
@ -1612,7 +1612,7 @@ int MulticastStatusHTML(char * Reply)
if (Sess ==NULL)
return 0;
Len = sprintf(Reply, StatusPage);
Len = sprintf(Reply, "%s", StatusPage);
while (Sess)
{
@ -1670,7 +1670,7 @@ int MulticastStatusHTML(char * Reply)
Sess = Sess->Next;
}
Len += sprintf(&Reply[Len], StatusTail);
Len += sprintf(&Reply[Len], "%s", StatusTail);
return Len;
}

View File

@ -25,6 +25,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
VOID __cdecl Debugprintf(const char * format, ...);
VOID ReleaseSock(SOCKET sock);
void MQTTMessageEvent(void* message);
struct NNTPRec * FirstNNTPRec = NULL;
@ -352,6 +353,12 @@ int CreateNNTPMessage(char * From, char * To, char * MsgTitle, time_t Date, char
BuildNNTPList(Msg); // Build NNTP Groups list
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
return CreateSMTPMessageFile(MsgBody, Msg);
}

View File

@ -1291,7 +1291,7 @@ int Rig_CommandEx(struct RIGPORTINFO * PORT, struct RIGINFO * RIG, TRANSPORTENTR
// use text command
Len = sprintf(CmdPtr, ptr1);
Len = sprintf(CmdPtr, "%S", ptr1);
break;
case YAESU:
@ -3205,7 +3205,7 @@ VOID ReleasePermission(struct RIGINFO *RIG)
while (RIG->PortRecord[i])
{
PortRecord = RIG->PortRecord[i];
PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, 3); // Release Perrmission
PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, (PDATAMESSAGE)3); // Release Perrmission
i++;
}
}
@ -3235,7 +3235,7 @@ int GetPermissionToChange(struct RIGPORTINFO * PORT, struct RIGINFO *RIG)
// TNC has been asked for permission, and we are waiting respoonse
// Only SCS pactor returns WaitingForPrmission, so check shouldn't be called on others
RIG->OKtoChange = (int)(intptr_t)RIG->PortRecord[0]->PORT_EXT_ADDR(6, RIG->PortRecord[0]->PORTCONTROL.PORTNUMBER, 2); // Get Ok Flag
RIG->OKtoChange = (int)(intptr_t)RIG->PortRecord[0]->PORT_EXT_ADDR(6, RIG->PortRecord[0]->PORTCONTROL.PORTNUMBER, (PDATAMESSAGE)2); // Get Ok Flag
if (RIG->OKtoChange == 1)
{
@ -3277,7 +3277,7 @@ int GetPermissionToChange(struct RIGPORTINFO * PORT, struct RIGINFO *RIG)
// not waiting for permission, so must be first call of a cycle
if (RIG->PortRecord[0] && RIG->PortRecord[0]->PORT_EXT_ADDR)
RIG->WaitingForPermission = (int)(intptr_t)RIG->PortRecord[0]->PORT_EXT_ADDR(6, RIG->PortRecord[0]->PORTCONTROL.PORTNUMBER, 1); // Request Perrmission
RIG->WaitingForPermission = (int)(intptr_t)RIG->PortRecord[0]->PORT_EXT_ADDR(6, RIG->PortRecord[0]->PORTCONTROL.PORTNUMBER, (PDATAMESSAGE)1); // Request Perrmission
// If it returns zero there is no need to wait.
// Normally SCS Returns True for first call, but returns 0 if Link not running
@ -3300,7 +3300,7 @@ CheckOtherPorts:
{
PortRecord = RIG->PortRecord[i];
if (PortRecord->PORT_EXT_ADDR && PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, 1))
if (PortRecord->PORT_EXT_ADDR && PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, (PDATAMESSAGE)1))
{
// 1 means can't change - release all
@ -3392,7 +3392,7 @@ VOID DoBandwidthandAntenna(struct RIGINFO *RIG, struct ScanEntry * ptr)
RIG->CurrentBandWidth = ptr->Bandwidth;
PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, ptr);
PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, (PDATAMESSAGE)ptr);
/* if (ptr->Bandwidth == 'R') // Robust Packet
PortRecord->PORT_EXT_ADDR(6, PortRecord->PORTCONTROL.PORTNUMBER, 6); // Set Robust Packet
@ -8385,7 +8385,7 @@ int ProcessHAMLIBSlaveMessage(SOCKET Sock, struct RIGINFO * RIG, unsigned char *
switch (Msg[0])
{
case 'f': // Get Freqency
case 'f': // Get Frequency
HLGetFreq(Sock, RIG, sep);
return 0;
@ -9938,14 +9938,10 @@ void ProcessSDRANGELFrame(struct RIGPORTINFO * PORT)
int Length;
char * msg;
char * rest;
struct RIGINFO * RIG;
char * ptr, * ptr1, * ptr2, * ptr3, * pos;
int Len, TotalLen;
char cmd[80];
char ReqBuf[256];
char SendBuff[256];
int chunklength;
int headerlen;
int i, n = 0;
@ -10332,7 +10328,6 @@ VOID SDRANGELPoll(struct RIGPORTINFO * PORT)
struct RIGINFO * RIG = &PORT->Rigs[0];
int Len, i;
char ReqBuf[256];
char SendBuff[256];
//char * SDRANGEL_GETheader = "GET /sdrangel/deviceset/%d/device/settings "
// "HTTP/1.1\nHost: %s\nConnection: keep-alive\n\r\n";
@ -10379,7 +10374,6 @@ VOID SDRANGELPoll(struct RIGPORTINFO * PORT)
if (GetPermissionToChange(PORT, RIG))
{
char cmd[80];
double freq;
if (RIG->RIG_DEBUG)
Debugprintf("BPQ32 Change Freq to %9.4f", PORT->FreqPtr->Freq);
@ -10451,7 +10445,6 @@ VOID SDRANGELPoll(struct RIGPORTINFO * PORT)
VOID SDRANGELSendCommand(struct RIGPORTINFO * PORT, char * Command, char * Value)
{
int Len, ret;
char ReqBuf[512];
char SendBuff[512];
char ValueString[256] ="";
char * SDRANGEL_PATCHheader = "PATCH /sdrangel/deviceset/%d/device/settings "

View File

@ -2893,7 +2893,7 @@ VOID ProcessIncomingCall(struct TNCINFO * TNC, struct STREAMINFO * STREAM, int S
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available
@ -3034,7 +3034,7 @@ VOID ProcessIncomingCall(struct TNCINFO * TNC, struct STREAMINFO * STREAM, int S
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY

View File

@ -48,7 +48,6 @@ extern UCHAR BPQDirectory[];
static RECT Rect;
VOID __cdecl Debugprintf(const char * format, ...);
char * strlop(char * buf, char delim);
BOOL KAMStartPort(struct PORTCONTROL * PORT);
BOOL KAMStopPort(struct PORTCONTROL * PORT);

View File

@ -52,7 +52,6 @@ extern char LOC[];
static RECT Rect;
VOID __cdecl Debugprintf(const char * format, ...);
char * strlop(char * buf, char delim);
char NodeCall[11]; // Nodecall, Null Terminated
@ -2175,7 +2174,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC)
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available

View File

@ -142,7 +142,7 @@ loop:
return 1;
}
BOOL SerialReadConfigFile(int Port, int ProcLine())
BOOL SerialReadConfigFile(int Port, int ProcLine(char * buf, int Port))
{
char buf[256],errbuf[256];
@ -735,7 +735,7 @@ VOID SerialReleasePort(struct TNCINFO * TNC)
VOID * SerialExtInit(EXTPORTDATA * PortEntry)
{
int port;
char Msg[255];
char Msg[512];
char * ptr;
struct TNCINFO * TNC;
char * TempScript;

View File

@ -27,6 +27,16 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include "CHeaders.h"
typedef struct _TCMDX
{
char String[12]; // COMMAND STRING
UCHAR CMDLEN; // SIGNIFICANT LENGTH
VOID (* CMDPROC)(struct TNCDATA * TNC, char * Tail, struct _TCMDX * CMD);// COMMAND PROCESSOR
size_t CMDFLAG; // FLAG/VALUE Offset
} TCMDX;
#define LF 10
#define CR 13
@ -848,7 +858,7 @@ int LocalSessionState(int stream, int * state, int * change, BOOL ACK)
VOID ONOFF(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID ONOFF(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
// PROCESS COMMANDS WITH ON/OFF PARAM
@ -897,7 +907,7 @@ VOID ONOFF(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID ONOFF_CONOK(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID ONOFF_CONOK(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
struct TNC2StreamInfo * TNCStream = TNC->TNC2Stream[TNC->TXStream];
@ -911,7 +921,7 @@ VOID ONOFF_CONOK(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
SetAppl(TNCStream->BPQPort, TNC->APPLFLAGS, 0);
}
VOID SETMYCALL(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID SETMYCALL(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
char Response[80];
int len;
@ -935,7 +945,7 @@ VOID SETMYCALL(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
SENDREPLY(TNC, Response, len);
}
VOID CTEXTCMD(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID CTEXTCMD(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
char Response[256];
int len, n;
@ -963,10 +973,10 @@ VOID CTEXTCMD(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
SENDREPLY(TNC, Response, len);
}
VOID BTEXT(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID BTEXT(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
}
VOID VALUE(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID VALUE(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
// PROCESS COMMANDS WITH decimal value
@ -995,7 +1005,7 @@ VOID VALUE(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
SENDREPLY(TNC, Response, len);
}
VOID VALHEX(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID VALHEX(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
// PROCESS COMMANDS WITH decimal value
@ -1032,7 +1042,7 @@ VOID VALHEX(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
SENDREPLY(TNC, Response, len);
}
VOID APPL_VALHEX(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID APPL_VALHEX(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
int ApplNum = 1;
UINT APPLMASK;
@ -1061,7 +1071,7 @@ VOID APPL_VALHEX(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
memcpy(TNC->MYCALL, GetApplCall(ApplNum), 10);
}
VOID CSWITCH(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID CSWITCH(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
char Response[80];
int len;
@ -1072,12 +1082,12 @@ VOID CSWITCH(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
CONNECTTONODE(TNC);
}
VOID CONMODE(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID CONMODE(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
SENDREPLY(TNC, CMDMSG, 4);
}
VOID TNCCONV(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID TNCCONV(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
struct TNC2StreamInfo * TNCStream = TNC->TNC2Stream[TNC->TXStream];
@ -1085,7 +1095,7 @@ VOID TNCCONV(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
TNCStream->MODEFLAG &= ~(COMMAND+TRANS);
}
VOID TNCNODE(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID TNCNODE(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
// CONNECT TO NODE
@ -1099,7 +1109,7 @@ VOID TNCNODE(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
CONNECTTONODE(TNC);
}
VOID CStatus(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID CStatus(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
struct TNC2StreamInfo * TNCStream = TNC->TNC2Stream[TNC->TXStream];
@ -1136,7 +1146,7 @@ VOID CStatus(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
}
VOID TNCCONNECT(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID TNCCONNECT(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
struct TNC2StreamInfo * TNCStream = TNC->TNC2Stream[TNC->TXStream];
@ -1179,7 +1189,7 @@ VOID TNCCONNECT(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
SENDPACKET(TNC); // Will now go to node
}
VOID TNCDISC(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID TNCDISC(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
struct TNC2StreamInfo * TNCStream = TNC->TNC2Stream[TNC->TXStream];
@ -1194,7 +1204,7 @@ VOID READCHANGE(int Stream)
LocalSessionState(Stream, &dummy, &dummy, TRUE);
}
VOID TNCRELEASE(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID TNCRELEASE(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
ReturntoNode(TNC->BPQPort);
@ -1203,7 +1213,7 @@ VOID TNCRELEASE(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
SENDREPLY(TNC, CMDMSG, 4);
}
VOID TNCTRANS(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
VOID TNCTRANS(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
struct TNC2StreamInfo * TNCStream = TNC->TNC2Stream[TNC->TXStream];
@ -1215,7 +1225,7 @@ VOID TNCTRANS(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
TNCStream->MODEFLAG |= TRANS;
TNCStream->MODEFLAG &= ~(COMMAND+CONV);
}
static VOID TNCRESTART(struct TNCDATA * TNC)
static VOID TNCRESTART(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
// REINITIALISE CHANNEL
@ -1243,12 +1253,12 @@ static VOID TNCRESTART(struct TNCDATA * TNC)
}
static VOID TNCUNPROTOCMD(struct TNCDATA * TNC, char * Tail, CMDX * CMD)
static VOID TNCUNPROTOCMD(struct TNCDATA * TNC, char * Tail, TCMDX * CMD)
{
}
CMDX TNCCOMMANDLIST[] =
TCMDX TNCCOMMANDLIST[] =
{
"AUTOLF ",2, ONOFF, offsetof(struct TNCDATA, AUTOLF),
"BBSMON ",6, ONOFF, offsetof(struct TNCDATA, BBSMON),
@ -1301,7 +1311,7 @@ CMDX TNCCOMMANDLIST[] =
int NUMBEROFTNCCOMMANDS = sizeof(TNCCOMMANDLIST)/sizeof(CMDX);
int NUMBEROFTNCCOMMANDS = sizeof(TNCCOMMANDLIST)/sizeof(TCMDX);
/*NEWVALUE DW 0
HEXFLAG DB 0
@ -2575,7 +2585,7 @@ VOID TNCCOMMAND(struct TNCDATA * TNC)
char * ptr, * ptr1, * ptr2;
int n;
CMDX * CMD;
TCMDX * CMD;
*(--TNC->CURSOR) = 0;
@ -2653,11 +2663,8 @@ VOID TNCCOMMAND(struct TNCDATA * TNC)
}
CMD++;
}
SENDREPLY(TNC, WHATMSG, 8);
}
/*
@ -4926,6 +4933,7 @@ int STATUSPOLL(struct TNCDATA * TNC, struct StreamInfo * Channel)
int State, Change, i;
char WorkString[256];
char ConMsg[64];
if (TNC->MSGCHANNEL == 0) // Monitor Chan
return 0;
@ -4941,7 +4949,7 @@ int STATUSPOLL(struct TNCDATA * TNC, struct StreamInfo * Channel)
{
// DISCONNECTED
i = sprintf(CONMSG, "\x3(%d) DISCONNECTED fm 0:SWITCH\r", TNC->MSGCHANNEL);
i = sprintf(ConMsg, "\x3(%d) DISCONNECTED fm 0:SWITCH\r", TNC->MSGCHANNEL);
i++;
}
else
@ -4950,11 +4958,11 @@ int STATUSPOLL(struct TNCDATA * TNC, struct StreamInfo * Channel)
GetCallsign(Channel->BPQStream, WorkString);
strlop(WorkString, ' ');
i = sprintf(CONMSG, "\x3(%d) CONNECTED to %s\r", TNC->MSGCHANNEL, WorkString);
i = sprintf(ConMsg, "\x3(%d) CONNECTED to %s\r", TNC->MSGCHANNEL, WorkString);
i++;
}
SENDCMDREPLY(TNC, CONMSG, i);
SENDCMDREPLY(TNC, ConMsg, i);
return 1;
}

View File

@ -127,7 +127,6 @@ static HMENU hMenu, hPopMenu, hPopMenu2, hPopMenu3; // handle of menu
static int ProcessLine(char * buf, int Port);
VOID __cdecl Debugprintf(const char * format, ...);
char * strlop(char * buf, char delim);
int DisplaySessions(struct TNCINFO * TNC);
@ -6757,7 +6756,7 @@ extern struct DATAMESSAGE * REPLYBUFFER;
char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...);
VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
int Port = 0, index =0;
char * ptr, *Context;
@ -6942,7 +6941,7 @@ VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail,
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
}
VOID SHOWTELNET(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
VOID SHOWTELNET(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
{
// DISPLAY Telnet Server Status Mheard

View File

@ -869,7 +869,7 @@ static VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, int
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available

View File

@ -62,7 +62,7 @@ void ConnecttoUZ7HOThread(void * portptr);
void CreateMHWindow();
int Update_MH_List(struct in_addr ipad, char * call, char proto);
int ConnecttoUZ7HO();
int ConnecttoUZ7HO(int port);
static int ProcessReceivedData(int bpqport);
static int ProcessLine(char * buf, int Port);
int KillTNC(struct TNCINFO * TNC);
@ -374,7 +374,7 @@ int UZ7HOSetFreq(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESS
{
// Read Freq
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Freqency %d\r", AGW->CenterFreq);
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Frequency %d\r", AGW->CenterFreq);
return 1;
}
@ -2479,7 +2479,7 @@ GotStream:
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available

2
V4.c
View File

@ -1273,7 +1273,7 @@ static VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available

2
VARA.c
View File

@ -2231,7 +2231,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY

View File

@ -10,14 +10,14 @@
#endif
#define KVers 6,0,24,50
#define KVerstring "6.0.24.50\0"
#define KVers 6,0,24,54
#define KVerstring "6.0.24.54\0"
#ifdef CKernel
#define Vers KVers
#define Verstring KVerstring
#define Datestring "October 2024"
#define Datestring "December 2024"
#define VerComments "G8BPQ Packet Switch (C Version)" KVerstring
#define VerCopyright "Copyright © 2001-2024 John Wiseman G8BPQ\0"
#define VerDesc "BPQ32 Switch\0"

View File

@ -508,7 +508,7 @@ static int ProcessLine(char * buf, int Port)
void WINMORThread(void * portptr);
VOID ProcessDataSocketData(int port);
int ConnecttoWINMOR();
int ConnecttoWINMOR(int port);
static int ProcessReceivedData(struct TNCINFO * TNC);
int V4ProcessReceivedData(struct TNCINFO * TNC);
VOID ReleaseTNC(struct TNCINFO * TNC);
@ -2231,7 +2231,7 @@ VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{
char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
AppName[12] = 0;
// Make sure app is available

View File

@ -34,6 +34,7 @@ VOID Do_Save_WPRec(HWND hDlg);
VOID SaveInt64Value(config_setting_t * group, char * name, long long value);
VOID SaveIntValue(config_setting_t * group, char * name, int value);
VOID SaveStringValue(config_setting_t * group, char * name, char * value);
void MQTTMessageEvent(void* message);
WPRec * AllocateWPRecord()
{
@ -1416,7 +1417,7 @@ int CreateWPMessage()
// if (ptr->last_modif > LASTWPSendTime && ptr->Type == 'U' && ptr->first_homebbs[0])
if (ptr->changed && ptr->last_modif > LASTWPSendTime && ptr->first_homebbs[0])
{
tm = gmtime(&ptr->last_modif);
tm = gmtime((time_t *)&ptr->last_modif);
MsgLen += sprintf(Buffptr, "On %02d%02d%02d %s/%c @ %s zip %s %s %s\r\n",
tm->tm_year-100, tm->tm_mon+1, tm->tm_mday,
ptr->callsign, ptr->Type, ptr->first_homebbs,
@ -1495,6 +1496,10 @@ int CreateWPMessage()
BuildNNTPList(Msg); // Build NNTP Groups list
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
To++;
}
@ -1533,8 +1538,8 @@ VOID CreateWPReport()
len = sprintf(Line, "%-7s,%c,%s,%s,%s,%s,%s,%s,%s,%d,%s,%s\r\n",
WP->callsign, WP->Type, WP->first_homebbs, WP->first_qth, WP->first_zip,
WP->secnd_homebbs, WP->secnd_qth, WP->secnd_zip, WP->name, WP->changed,
FormatWPDate(WP->last_modif),
FormatWPDate(WP->last_seen));
FormatWPDate((time_t)WP->last_modif),
FormatWPDate((time_t)WP->last_seen));
fwrite(Line, 1, len, hFile);
}

View File

@ -78,6 +78,7 @@ char * doXMLTransparency(char * string);
Dll BOOL APIENTRY APISendAPRSMessage(char * Text, char * ToCall);
void SendMessageReadEvent(char * Call, struct MsgInfo * Msg);
void SendNewMessageEvent(char * call, struct MsgInfo * Msg);
void MQTTMessageEvent(void* message);
extern char NodeTail[];
extern char BBSName[10];
@ -2020,7 +2021,7 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
"document.getElementById('myform').action = '/WebMail/QuoteOriginal' + '?%s';"
" document.getElementById('myform').submit();}</script>"
"<input type=button class='btn' onclick='myfunc()' "
"value='Include Orignal Msg'>";
"value='Include Original Msg'>";
char Temp[1024];
char ReplyAddr[128];
@ -2840,6 +2841,11 @@ VOID SaveNewMessage(struct HTTPConnectionInfo * Session, char * MsgPtr, char * R
SendNewMessageEvent(user->Call, Msg);
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
if (user && (user->flags & F_APRSMFOR))
{
char APRS[128];
@ -3784,6 +3790,12 @@ VOID WriteOneRecipient(struct MsgInfo * Msg, WebMailInfo * WebMail, int MsgLen,
Msg->status = '$'; // Has forwarding
BuildNNTPList(Msg); // Build NNTP Groups list
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
}
@ -4368,6 +4380,12 @@ VOID BuildMessageFromHTMLInput(struct HTTPConnectionInfo * Session, char * Reply
BuildNNTPList(Msg); // Build NNTP Groups list
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
SaveMessageDatabase();
SaveBIDDatabase();

View File

@ -63,8 +63,6 @@ extern char LOC[];
static RECT Rect;
VOID __cdecl Debugprintf(const char * format, ...);
char * strlop(char * buf, char delim);
char NodeCall[11]; // Nodecall, Null Terminated
static BOOL WriteCommBlock(struct TNCINFO * TNC);

View File

@ -111,7 +111,7 @@ int main(int argc, char ** argv)
if (argc < 3)
{
printf ("Missing paramters - you need COM port and IP Address and rigctl port of BPQ, eg \r\n"
printf ("Missing parameters - you need COM port and IP Address and rigctl port of BPQ, eg \r\n"
" WinRPRHelper com10 192.168.1.64:4532\r\n\r\n"
"Press any key to exit\r\n");

1
adif.c
View File

@ -609,7 +609,6 @@ VOID ADIFWriteFreqList()
fprintf(Handle, "[Channels]\r\n");
for (i = 0; i < freqCount; i++)
fprintf(Handle, "Frequency %d=%lld\r\n" , i + 1, Freqs[i]);

View File

@ -62,15 +62,15 @@ extern int ENDOFDATA;
extern int L3LIVES;
extern int NUMBEROFNODES;
typedef struct _CMDX
struct CMDX
{
char String[12]; // COMMAND STRING
UCHAR CMDLEN; // SIGNIFICANT LENGTH
VOID (* CMDPROC)(); // COMMAND PROCESSOR
// VOID (*CMDPROC)(struct _TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);// COMMAND PROCESSOR
VOID (*CMDPROC)();// COMMAND PROCESSOR
size_t CMDFLAG; // FLAG/VALUE Offset
} CMDX;
};
struct APPLCONFIG
{
@ -547,14 +547,14 @@ typedef struct PORTCONTROL
PMESSAGE PORTRX_Q; // FRAMES RECEIVED ON THIS PORT
PMESSAGE PORTTX_Q; // FRAMES TO BE SENT ON THIS PORT
void (FAR * PORTTXROUTINE)(); // POINTER TO TRANSMIT ROUTINE FOR THIS PORT
void (FAR * PORTRXROUTINE)(); // POINTER TO RECEIVE ROUTINE FOR THIS PORT
void (FAR * PORTINITCODE)(); // INITIALISATION ROUTINE
void (FAR * PORTTIMERCODE)(); //
void (FAR * PORTCLOSECODE)(); // CLOSE ROUTINE
int (FAR * PORTTXCHECKCODE)(); // OK to TX Check
BOOL (FAR * PORTSTOPCODE)(); // Temporarily Stop Port
BOOL (FAR * PORTSTARTCODE)(); // Restart Port
void (FAR * PORTTXROUTINE)(struct _EXTPORTDATA * PORTVEC, MESSAGE * Buffer); // POINTER TO TRANSMIT ROUTINE FOR THIS PORT
void (FAR * PORTRXROUTINE)(struct _EXTPORTDATA * PORTVEC); // POINTER TO RECEIVE ROUTINE FOR THIS PORT
void (FAR * PORTINITCODE)(struct PORTCONTROL * PortVector); // INITIALISATION ROUTINE
void (FAR * PORTTIMERCODE)(struct PORTCONTROL * PortVector); //
void (FAR * PORTCLOSECODE)(struct PORTCONTROL * PortVector); // CLOSE ROUTINE
int (FAR * PORTTXCHECKCODE)(struct PORTCONTROL * PORTVEC, int Chan); // OK to TX Check
BOOL (FAR * PORTSTOPCODE)(struct PORTCONTROL * PORT); // Temporarily Stop Port
BOOL (FAR * PORTSTARTCODE)(struct PORTCONTROL * PORT); // Restart Port
BOOL PortStopped; // STOPPORT command used
BOOL PortSuspended; // Suspended by interlock
@ -678,7 +678,7 @@ typedef struct PORTCONTROL
BOOL IgnoreUnlocked; // Ignore Unlocked routes
BOOL INP3ONLY; // Default to INP3 and disallow NODES
FARPROCY UIHook; // Used for KISSARQ
void (* UIHook)(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffer, MESSAGE * ADJBUFFER, UCHAR CTL, UCHAR MSGFLAG); // Used for KISSARQ
struct PORTCONTROL * HookPort;
int PortSlot; // Index in Port Table
struct TNCINFO * TNC; // Associated TNC record
@ -766,7 +766,7 @@ typedef struct _EXTPORTDATA
{
struct PORTCONTROL PORTCONTROL ; // REMAP HARDWARE INFO
void * (* PORT_EXT_ADDR) (); // ADDR OF RESIDENT ROUTINE
void * (* PORT_EXT_ADDR) (int fn, int port, PDATAMESSAGE buff); // ADDR OF RESIDENT ROUTINE
char PORT_DLL_NAME[16];
UCHAR EXTRESTART; // FLAG FOR DRIVER REINIT
HINSTANCE DLLhandle;

View File

@ -194,7 +194,7 @@ extern int OffsetH, OffsetW;
static void ResolveNames(struct AXIPPORTINFO * PORT);
void OpenSockets(struct AXIPPORTINFO * PORT);
void CloseSockets();
void CloseSockets(struct AXIPPORTINFO * PORT);
static int CONVFROMAX25(char * incall, char * outcall);

View File

@ -603,7 +603,7 @@ VOID __cdecl nprintf(ChatCIRCUIT * conn, const char * format, ...);
VOID nputs(ChatCIRCUIT * conn, char * buf);
#endif
BOOL matchi(char * p1, char * p2);
char * strlop(char * buf, char delim);
char * strlop(const char * buf, char delim);
int rt_cmd(ChatCIRCUIT *circuit, char * Buffer);
ChatCIRCUIT *circuit_new(ChatCIRCUIT *circuit, int flags);
void makelinks(void);

View File

@ -471,6 +471,8 @@ struct UserInfo
{
// New Format - with stats maintained by message type and unused fields removed.
// This is no longer a fixed length record so can't be saved as a binarl
char Call[10]; // Connected call without SSID
int Length; // To make subsequent format changes easier
@ -643,9 +645,9 @@ struct MsgInfo
// For 64 bit time_t compatibility define as long long
// (so struct is same with 32 or 64 bit time_t)
long long datereceived;
long long datecreated;
long long datechanged;
int64_t datereceived;
int64_t datecreated;
int64_t datechanged;
char Spare[61 - 24]; // For future use
} ;
@ -877,7 +879,7 @@ struct MSESSION
};
VOID __cdecl nprintf(CIRCUIT * conn, const char * format, ...);
char * strlop(char * buf, char delim);
char * strlop(const char * buf, char delim);
int rt_cmd(CIRCUIT *circuit, char * Buffer);
CIRCUIT *circuit_new(CIRCUIT *circuit, int flags);
VOID BBSputs(CIRCUIT * conn, char * buf);
@ -1191,6 +1193,7 @@ BOOL FBBDoForward(CIRCUIT * conn);
BOOL FindMessagestoForward(CIRCUIT * conn);
BOOL SeeifMessagestoForward(int BBSNumber, CIRCUIT * Conn);
int CountMessagestoForward(struct UserInfo * user);
int CountBytestoForward(struct UserInfo * user);
VOID * GetMultiLineDialogParam(HWND hDialog, int DLGItem);
@ -1210,10 +1213,9 @@ VOID Do_Delete_User(HWND hDlg);
VOID FlagSentMessages(CIRCUIT * conn, struct UserInfo * user);
VOID HoldSentMessages(CIRCUIT * conn, struct UserInfo * user);
VOID Do_Save_User(HWND hDlg, BOOL ShowBox);
VOID DeleteBBS();
VOID AddBBS();
VOID DeleteBBS(struct UserInfo * user);
VOID SaveBBSConfig();
BOOL GetChatConfig();
BOOL GetChatConfig(char * ConfigName);
VOID SaveChatConfig();
VOID SaveISPConfig();
VOID SaveFWDConfig();
@ -1633,6 +1635,8 @@ extern char ** SendWPAddrs; // Replacers WP To and VIA
extern BOOL DontCheckFromCall;
extern time_t APIClock;;
// YAPP stuff
#define SOH 1

64
cMain.c
View File

@ -42,7 +42,7 @@ VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer);
VOID ProcessIframe(struct _LINKTABLE * LINK, PDATAMESSAGE Buffer);
VOID FindLostBuffers();
VOID ReadMH();
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);
int upnpInit();
void AISTimer();
void ADSBTimer();
@ -50,6 +50,7 @@ VOID SendSmartID(struct PORTCONTROL * PORT);
int CanPortDigi(int Port);
int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len);
void MQTTTimer();
void SaveMH();
#include "configstructs.h"
@ -331,7 +332,7 @@ BOOL LINKTXCHECK()
return 0;
}
void * Dummy() // Dummy for missing EXT Driver
void * Dummy(int fn, int port, PDATAMESSAGE buff) // Dummy for missing EXT Driver
{
return 0;
}
@ -340,26 +341,31 @@ VOID EXTINIT(PEXTPORTDATA PORTVEC)
{
// LOAD DLL - NAME IS IN PORT_DLL_NAME
VOID * Routine;
void *(* Startup) (PEXTPORTDATA PORTVEC); // ADDR OF Startup ROUTINE
PORTVEC->PORT_EXT_ADDR = Dummy;
Routine = InitializeExtDriver(PORTVEC);
Startup = InitializeExtDriver(PORTVEC);
if (Routine == 0)
if (Startup == 0)
{
WritetoConsoleLocal("Driver installation failed\n");
return;
}
PORTVEC->PORT_EXT_ADDR = Routine;
// ALSO CALL THE ROUTINE TO START IT UP, ESPECIALLY IF A L2 ROUTINE
Routine = (VOID *)PORTVEC->PORT_EXT_ADDR(PORTVEC);
// CALL THE ROUTINE TO START IT UP
// Startup returns address of processing routine
PORTVEC->PORT_EXT_ADDR = Routine;
PORTVEC->PORT_EXT_ADDR = (void *(__cdecl *)(int,int,PDATAMESSAGE))Startup(PORTVEC);;
if (PORTVEC->PORT_EXT_ADDR == 0)
{
WritetoConsoleLocal("Driver Initialisation failed\n");
return;
}
}
VOID EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer)
@ -371,7 +377,7 @@ VOID EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer)
if (PORT->KISSFLAGS == 255) // Used for BAYCOM
{
PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, Buffer);
PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, (PDATAMESSAGE)Buffer);
return; // Baycom driver passes frames to trace once sent
}
@ -387,7 +393,7 @@ VOID EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer)
Buffer->Linkptr = 0; // CLEAR FLAG FROM BUFFER
}
PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, Buffer);
PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, (PDATAMESSAGE)Buffer);
if (PORT->PROTOCOL == 10 && PORT->TNC && PORT->TNC->Hardware != H_KISSHF)
{
@ -417,7 +423,7 @@ Loop:
if (Message == NULL)
return;
Len = (size_t)PORTVEC->PORT_EXT_ADDR(1, PORT->PORTNUMBER, Message);
Len = (size_t)PORTVEC->PORT_EXT_ADDR(1, PORT->PORTNUMBER, (PDATAMESSAGE)Message);
if (Len == 0)
{
@ -501,7 +507,9 @@ VOID EXTSLOWTIMER(PEXTPORTDATA PORTVEC)
size_t EXTTXCHECK(PEXTPORTDATA PORTVEC, int Chan)
{
return (size_t)PORTVEC->PORT_EXT_ADDR(3, PORTVEC->PORTCONTROL.PORTNUMBER, Chan);
uintptr_t Temp = Chan;
return (size_t)PORTVEC->PORT_EXT_ADDR(3, PORTVEC->PORTCONTROL.PORTNUMBER, (void *)Temp);
}
VOID PostDataAvailable(TRANSPORTENTRY * Session)
@ -577,8 +585,8 @@ extern VOID HDLCTXCHECK();
#endif
extern VOID KISSINIT(), KISSTX(), KISSRX(), KISSTIMER(), KISSCLOSE();
extern VOID EXTINIT(), EXTTX(), LINKRX(), EXTRX();
extern VOID LINKCLOSE(), EXTCLOSE() ,LINKTIMER(), EXTTIMER();
extern VOID EXTINIT(PEXTPORTDATA PORTVEC), EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer), LINKRX(), EXTRX(PEXTPORTDATA PORTVEC);
extern VOID LINKCLOSE(), EXTCLOSE() ,LINKTIMER(), EXTTIMER(PEXTPORTDATA PORTVEC);
// VECTORS TO HARDWARE DEPENDENT ROUTINES
@ -608,7 +616,7 @@ extern int L4TimerProc();
extern int L3FastTimer();
extern int StatsTimer();
extern int COMMANDHANDLER();
extern int SDETX();
VOID SDETX(struct _LINKTABLE * LINK);
extern int L4BG();
extern int L3BG();
extern int TNCTimerProc();
@ -627,7 +635,7 @@ BOOL Start()
APPLCALLS * APPL;
struct ROUTE * ROUTE;
struct DEST_LIST * DEST;
CMDX * CMD;
struct CMDX * CMD;
int PortSlot = 1;
uintptr_t int3;
@ -911,7 +919,7 @@ BOOL Start()
PORT->PROTOCOL = (char)PortRec->PROTOCOL;
PORT->IOBASE = PortRec->IOADDR;
if (PortRec->SerialPortName[0])
if (PortRec->SerialPortName && PortRec->SerialPortName[0])
PORT->SerialPortName = _strdup(PortRec->SerialPortName);
else
{
@ -1507,7 +1515,7 @@ BOOL Start()
upnpInit();
CurrentSecs = lastSlowSecs = time(NULL);
lastSaveSecs = CurrentSecs = lastSlowSecs = time(NULL);
return 0;
}
@ -2106,6 +2114,18 @@ VOID TIMERINTERRUPT()
*/
}
// Check Autosave Nodes and MH timer
if (CurrentSecs - lastSaveSecs >= 3600) // 1 per hour
{
lastSaveSecs = CurrentSecs;
if (AUTOSAVE == 1)
SaveNodes();
if (AUTOSAVEMH == 1)
SaveMH();
}
if (L4TIMERFLAG >= 10) // 1 PER SEC
{
L4TIMERFLAG -= 10;
@ -2329,7 +2349,7 @@ L2Packet:
PORT->L2FRAMESSENT++;
OutOctets[PORT->PORTNUMBER] += Buffer->LENGTH - MSGHDDRLEN;
PORT->PORTTXROUTINE(PORT, Buffer);
PORT->PORTTXROUTINE((struct _EXTPORTDATA *)PORT, Buffer);
Sent++;
continue;
@ -2375,7 +2395,7 @@ PACTORLOOP:
PORT->L2FRAMESSENT++;
OutOctets[PORT->PORTNUMBER] += Message->LENGTH;
PORT->PORTTXROUTINE(PORT, Buffer);
PORT->PORTTXROUTINE((struct _EXTPORTDATA *)PORT, Buffer);
Sent++;
if (Sent < 5)
@ -2388,7 +2408,7 @@ ENDOFLIST:
break;
}
PORT->PORTRXROUTINE(PORT); // SEE IF MESSAGE RECEIVED
PORT->PORTRXROUTINE((struct _EXTPORTDATA *)PORT); // SEE IF MESSAGE RECEIVED
PORT = PORT->PORTPOINTER;
}

View File

@ -208,10 +208,6 @@ VOID md5(char *arg, unsigned char * checksum);
int APIENTRY SendRaw(int port, char * msg, int len);
BOOL MySetDlgItemText();
VOID OutputDebugString(char * string);
#endif

View File

@ -174,15 +174,20 @@ extern BOOL Loopflag;
extern char NodeMapServer[80];
extern char ChatMapServer[80];
double LatFromLOC;
double LonFromLOC;
VOID * zalloc(int len);
int WritetoConsoleLocal(char * buff);
char * stristr (char *ch1, char *ch2);
int FromLOC(char * Locator, double * pLat, double * pLon);
VOID Consoleprintf(const char * format, ...)
{
char Mess[255];
char Mess[512];
va_list(arglist);
va_start(arglist, format);
@ -342,7 +347,7 @@ static int routine[] =
14, 14, 14, 14,
14, 14 ,14, 14,
15, 0, 2, 9, 9,
2, 2, 2, 2, 2, 2,
2, 2, 1, 2, 2, 2,
2, 2, 0, 1, 20, 20} ; // Routine to process param
int PARAMLIM = sizeof(routine)/sizeof(int);
@ -644,7 +649,7 @@ BOOL ProcessConfig()
if (LOCATOR[0] == 0 && LocSpecified == 0 && RFOnly == 0)
{
Consoleprintf("");
Consoleprintf("Please enter a LOCATOR statment in your BPQ32.cfg");
Consoleprintf("Please enter a LOCATOR statement in your BPQ32.cfg");
Consoleprintf("If you really don't want to be on the Node Map you can enter LOCATOR=NONE");
Consoleprintf("");
@ -924,11 +929,21 @@ NextAPRS:
strcat(LOCATOR, ":");
strcat(LOCATOR, ptr2);
ToLOC(atof(ptr1), atof(ptr2), LOC);
LatFromLOC = atof(ptr1);
LonFromLOC = atof(ptr2);
}
else
{
if (strlen(ptr1) == 6)
{
strcpy(LOC, ptr1);
FromLOC(LOC, &LatFromLOC, &LonFromLOC);
// Randomise in square
LatFromLOC += ((rand() / 24.0) / RAND_MAX);
LonFromLOC += ((rand() / 12.0) / RAND_MAX);
}
}
}
return 0;
@ -1740,8 +1755,7 @@ int tncports(int i)
/* FIND OCCURENCE OF ONE STRING WITHIN ANOTHER */
/************************************************************************/
int xindex(s, t)
char s[], t[];
int xindex(char s[], char t[])
{
int i, j ,k;
@ -1760,8 +1774,7 @@ char s[], t[];
/* FIND FIRST OCCURENCE OF A CHARACTER THAT IS NOT c */
/************************************************************************/
int verify(s, c)
char s[], c;
int verify(char s[], char c)
{
int i;
@ -2282,10 +2295,7 @@ int decode_port_rec(char * rec)
}
int doid(i, value, rec)
int i;
char value[];
char rec[];
int doid(int i, char value[], char rec[])
{
unsigned int j;
for (j = 3;( j < (unsigned int)strlen(rec)+1); j++)
@ -2319,10 +2329,7 @@ char rec[];
return(1);
}
int dodll(i, value, rec)
int i;
char value[];
char rec[];
int dodll(int i, char value[], char rec[])
{
unsigned int j;
@ -2397,11 +2404,11 @@ int doSerialPortName(int i, char * value, char * rec)
{
rec += 8;
if (strlen(rec) > 79)
if (strlen(rec) > 250)
{
Consoleprintf("Serial Port Name too long - Truncated");
Consoleprintf("%s\r\n",rec);
rec[79] = 0;
rec[250] = 0;
}
strlop(rec, ' ');
@ -2409,7 +2416,7 @@ int doSerialPortName(int i, char * value, char * rec)
if (IsNumeric(rec))
xxp.IOADDR = atoi(rec);
else
strcpy(xxp.SerialPortName, rec);
xxp.SerialPortName = _strdup(rec);
return 1;
}
@ -2442,10 +2449,7 @@ int doKissCommand(int i, char * value, char * rec)
}
int hwtypes(i, value, rec)
int i;
char value[];
char rec[];
int hwtypes(int i, char value[], char rec[])
{
hw = 255;
if (_stricmp(value,"ASYNC") == 0)
@ -2528,10 +2532,7 @@ char rec[];
return(1);
}
int protocols(i, value, rec)
int i;
char value[];
char rec[];
int protocols(int i, char value[], char rec[])
{
int hw;
@ -2565,10 +2566,7 @@ char rec[];
}
int bbsflag(i, value, rec)
int i;
char value[];
char rec[];
int bbsflag(int i, char value[],char rec[])
{
int hw=255;
@ -2619,10 +2617,7 @@ int validcalls(int i, char * value, char * rec)
}
int kissoptions(i, value, rec)
int i;
char value[];
char rec[];
int kissoptions(int i, char value[], char rec[])
{
int err=255;
@ -2674,7 +2669,19 @@ static int troutine[] =
#define TPARAMLIM 6
extern CMDX TNCCOMMANDLIST[];
typedef struct _TCMDX
{
char String[12]; // COMMAND STRING
UCHAR CMDLEN; // SIGNIFICANT LENGTH
VOID (* CMDPROC)(struct TNCDATA * TNC, char * Tail, struct _TCMDX * CMD);// COMMAND PROCESSOR
size_t CMDFLAG; // FLAG/VALUE Offset
} TCMDX;
extern TCMDX TNCCOMMANDLIST[];
extern int NUMBEROFTNCCOMMANDS;
int decode_tnc_rec(char * rec)
@ -2751,7 +2758,7 @@ int decode_tnc_rec(char * rec)
// Try process as TNC2 Command
int n = 0;
CMDX * CMD = &TNCCOMMANDLIST[0];
TCMDX * CMD = &TNCCOMMANDLIST[0];
char * ptr1 = key_word;
UCHAR * valueptr;

View File

@ -67,7 +67,7 @@ struct PORTCONFIG
char Pad2[10]; // 246
char VALIDCALLS[256]; // 256 - 512
struct WL2KInfo * WL2K; // 512
char SerialPortName[80]; // 516
char * SerialPortName; // 516
struct XDIGI * XDIGIS; // 596 Cross port digi setup
int RIGPORT; // Linked port with RigControl
unsigned int PERMITTEDAPPLS; // Appls allowed on this port

View File

@ -49,6 +49,9 @@ char MAPCOMMENT[250] = "";
char LOC[7] = ""; // Must be in shared mem// Maidenhead Locator for Reporting
char ReportDest[7];
double LatFromLOC = 0;
double LonFromLOC = 0;
UCHAR BPQDirectory[260] = ".";
UCHAR ConfigDirectory[260] = ".";
UCHAR LogDirectory[260] = "";
@ -62,6 +65,7 @@ UCHAR L3KEEP[7] = {'K'+'K','E'+'E','E'+'E','P'+'P','L'+'L','I'+'I', 0xe0}; // K
time_t CurrentSecs;
time_t lastSlowSecs;
time_t lastSaveSecs;
char WL2KCall[10] = "";
char WL2KLoc[7] = "";

6
kiss.c
View File

@ -209,7 +209,7 @@ VOID EnableFLDIGIReports(struct PORTCONTROL * PORT)
VOID ASYDISP(struct PORTCONTROL * PortVector)
{
char Msg[80];
char Msg[512];
if (PortVector->PORTIPADDR.s_addr || PortVector->KISSTCP)
@ -235,7 +235,7 @@ VOID ASYDISP(struct PORTCONTROL * PortVector)
int ASYINIT(int comport, int speed, struct PORTCONTROL * PortVector, char Channel )
{
char Msg[80];
char Msg[256];
NPASYINFO npKISSINFO;
int BPQPort = PortVector->PORTNUMBER;
@ -1485,7 +1485,7 @@ SeeifMore:
}
}
else
Debugprintf("Polled KISS - response from wrong address - Polled %d Reponse %d",
Debugprintf("Polled KISS - response from wrong address - Polled %d Response %d",
KISS->POLLPOINTER->OURCTRL, (Port->RXMSG[0] & 0xf0));
goto SeeifMore; // SEE IF ANYTHING ELSE

View File

@ -768,6 +768,9 @@ BOOL CheckifPacket(char * Via)
if (FindContinent(ptr1))
return TRUE; // Packet
if (FindCountry(ptr1))
return TRUE; // Packet
if ((_stricmp(ptr1, "MARS") == 0) || (_stricmp(ptr1, "USA") == 0)) // MARS used both
return TRUE; // Packet

406
mailapi.c
View File

@ -38,7 +38,7 @@ typedef struct MailAPI
{
char *URL;
int URLLen;
int (* APIRoutine)();
int (* APIRoutine)(struct HTTPConnectionInfo * Session, char * response, char * Rest, int Auth);
int Auth;
} MailAPI;
@ -706,3 +706,407 @@ packetmail_queue_length{partner="GB7NWL"} 0 1729090716916
packetmail_queue_length{partner="GM8BPQ"} 0 1729090716916
*/
// Stuff send to packetnodes.spots.radio/api/bbsdata/{bbsCall}
//https://nodes.ukpacketradio.network/swagger/index.html
/*
BbsData{
callsign* [...]
time* [...]
hroute* [...]
peers [...]
software* [...]
version* [...]
mailQueues [...]
messages [...]
latitude [...]
longitude [...]
locator [...]
location [...]
unroutable [...]
}
[
{
"callsign": "GE8PZT",
"time": "2024-11-25T10:07:41+00:00",
"hroute": ".#24.GBR.EU",
"peers": [
"GB7BBS",
"VE2PKT",
"GB7NXT",
"VA2OM"
],
"software": "XrLin",
"version": "504a",
"mailQueues": [],
"messages": [
{
"to": "TECH@WW",
"mid": "20539_GB7CIP",
"rcvd": "2024-11-24T09:27:59+00:00",
"routing": [
"R:241124/0927Z @:GE8PZT.#24.GBR.EU [Lamanva] #:2315 XrLin504a",
{
"to": "TNC@WW",
"mid": "37_PA2SNK",
"rcvd": "2024-11-18T21:56:55+00:00",
"routing": [
"R:241118/2156Z @:GE8PZT.#24.GBR.EU [] #:2215 XrLin504a",
"R:241118/2156Z 12456@VE2PKT.#TRV.QC.CAN.NOAM BPQ6.0.24",
"R:241118/2130Z 51539@VE3KPG.#ECON.ON.CAN.NOAM BPQK6.0.23",
"R:241118/2130Z 26087@VE3CGR.#SCON.ON.CAN.NOAM LinBPQ6.0.24",
"R:241118/2130Z 37521@PA8F.#ZH1.NLD.EURO LinBPQ6.0.24",
"R:241118/2129Z 48377@PI8LAP.#ZLD.NLD.EURO LinBPQ6.0.24",
"R:241118/2129Z @:PD0LPM.FRL.EURO.NLD #:33044 [Joure] $:37_PA2SNK"
]
}
],
"latitude": 50.145832,
"longitude": -5.125,
"locator": "IO70KD",
"location": "Lamanva",
"unroutable": [
{
"type": "P",
"at": "WW"
},
{
"type": "P",
"at": "G8PZT-2"
},
{
"type": "P",
"at": "g8pzt._24.gbr.eu"
},
{
"type": "P",
"at": "G8PZT.#24.GBR.EU"
},
{
"type": "P",
"at": "GE8PZT.#24.GBR.EU"
},
{
"type": "P",
"at": "G8PZT.#24.GBR.EURO"
}
]
},
*/
// https://packetnodes.spots.radio/swagger/index.html
// "unroutable": [{"type": "P","at": "WW"}, {"type": "P", "at": "G8PZT.#24.GBR.EURO"}]
char * ViaList[100000]; // Pointers to the Message Header field
char TypeList[100000];
int unroutableCount = 0;
void CheckifRoutable(struct MsgInfo * Msg)
{
char NextBBS[64];
int n;
if (Msg->status == 'K')
return;
if (Msg->via[0] == 0) // No routing
return;
strcpy(NextBBS, Msg->via);
strlop(NextBBS, '.');
if (strcmp(NextBBS, BBSName) == 0) // via this BBS
return;
if ((memcmp(Msg->fbbs, zeros, NBMASK) != 0) || (memcmp(Msg->forw, zeros, NBMASK) != 0)) // Has Forwarding Info
return;
// See if we already have it
for (n = 0; n < unroutableCount; n++)
{
if ((TypeList[n] == Msg->type) && strcmp(ViaList[n], Msg->via) == 0)
return;
}
// Add to list
TypeList[unroutableCount] = Msg->type;
ViaList[unroutableCount] = Msg->via;
unroutableCount++;
}
extern char LOC[7];
DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params, char * Return);
#ifdef LINBPQ
extern double LatFromLOC;
extern double LonFromLOC;
#else
typedef int (WINAPI FAR *FARPROCX)();
extern FARPROCX pSendWebRequest;
extern FARPROCX pGetLatLon;
double LatFromLOC = 0;
double LonFromLOC = 0;
#endif
void SendBBSDataToPktMap()
{
char Request[64];
char * Params;
char * ptr;
int paramLen;
struct MsgInfo * Msg;
struct UserInfo * ourBBSRec = LookupCall(BBSName);
struct UserInfo * USER;
char Time[64];
struct tm * tm;
time_t Date = time(NULL);
char Peers[2048] = "[]";
char MsgQueues[16000] = "[]";
char * Messages = malloc(1000000);
char * Unroutables;
int m;
char * MsgBytes;
char * Rlineptr;
char * Rlineend;
char * RLines;
char * ptr1, * ptr2;
int n;
#ifndef LINBPQ
if (pSendWebRequest == 0)
return; // Old Version of bpq32.dll
pGetLatLon(&LatFromLOC, &LonFromLOC);
#endif
if (ourBBSRec == 0)
return; // Wot!!
// Get peers and Mail Queues
ptr = &Peers[1];
ptr1 = &MsgQueues[1];
for (USER = BBSChain; USER; USER = USER->BBSNext)
{
if (strcmp(USER->Call, BBSName) != 0)
{
int Bytes;
int Count = CountMessagestoForward(USER);
ptr += sprintf(ptr, "\"%s\",", USER->Call);
if (Count)
{
Bytes = CountBytestoForward(USER);
ptr1 += sprintf(ptr1, "{\"peerCall\": \"%s\", \"numQueued\": %d, \"bytesQueued\": %d},",
USER->Call, Count, Bytes);
}
}
}
if ((*ptr) != ']') // Have some entries
{
ptr--; // over trailing comms
*(ptr++) = ']';
*(ptr) = 0;
}
if ((*ptr1) != ']') // Have some entries
{
ptr1--; // over trailing comms
*(ptr1++) = ']';
*(ptr1) = 0;
}
// Get Messages
strcpy(Messages, "[]");
ptr = &Messages[1];
for (m = LatestMsg; m >= 1; m--)
{
if (ptr > &Messages[999000])
break; // protect buffer
Msg = GetMsgFromNumber(m);
if (Msg == 0 || Msg->type == 0 || Msg->status == 0)
continue; // Protect against corrupt messages
// Paula suggests including H and K but limit it to the last 30 days or the last 100 messages, whichever is the smaller.
// if (Msg->status == 'K' || Msg->status == 'H')
// continue;
if ((Date - Msg->datereceived) > 30 * 86400) // Too old
continue;
CheckifRoutable(Msg);
tm = gmtime((time_t *)&Msg->datereceived);
sprintf(Time, "%04d-%02d-%02dT%02d:%02d:%02d+00:00",
tm->tm_year + 1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
// Get Routing
MsgBytes = ReadMessageFile(Msg->number);
RLines = malloc(Msg->length * 2); // Very unlikely to need so much but better safe..
strcpy(RLines, "[]");
ptr2 = &RLines[1];
// Need to skip B2 header if B2 Message
Rlineptr = MsgBytes;
// If it is a B2 Message, Must Skip B2 Header
if (Msg->B2Flags & B2Msg)
{
Rlineptr = strstr(Rlineptr, "\r\n\r\n");
if (Rlineptr)
Rlineptr += 4;
else
Rlineptr = MsgBytes;
}
// We have to process R: lines one at a time as we need to send each one as a separate string
while (memcmp(Rlineptr, "R:", 2) == 0)
{
// Have R Lines
Rlineend = strstr(Rlineptr, "\r\n");
Rlineend[0] = 0;
ptr2 += sprintf(ptr2, "\"%s\",", Rlineptr);
Rlineptr = Rlineend + 2; // over crlf
}
if ((*ptr2) == ']') // no entries
continue;
ptr2--; // over trailing comms
*(ptr2++) = ']';
*(ptr2) = 0;
ptr += sprintf(ptr, "{\"to\": \"%s\", \"mid\": \"%s\", \"rcvd\": \"%s\", \"routing\": %s},",
Msg->to, Msg->bid, Time, RLines);
free(MsgBytes);
free(RLines);
}
if ((*ptr) != ']') // Have some entries?
{
ptr--; // over trailing comms
*(ptr++) = ']';
*(ptr) = 0;
}
// Get unroutables
Unroutables = malloc((unroutableCount + 1) * 100);
strcpy(Unroutables, "[]");
ptr = &Unroutables[1];
for (n = 0; n < unroutableCount; n++)
{
ptr += sprintf(ptr, "{\"type\": \"%c\",\"at\": \"%s\"},", TypeList[n], ViaList[n]);
}
if ((*ptr) != ']') // Have some entries?
{
ptr--; // over trailing comms
*(ptr++) = ']';
*(ptr) = 0;
}
/*
char * ViaList[100000]; // Pointers to the Message Header field
char TypeList[100000];
int unroutableCount = 0;
"unroutable": [{"type": "P","at": "WW"}, {"type": "P", "at": "G8PZT.#24.GBR.EURO"}]
*/
tm = gmtime(&Date);
sprintf(Time, "%04d-%02d-%02dT%02d:%02d:%02d+00:00",
tm->tm_year + 1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
paramLen = strlen(Peers) + strlen(MsgQueues) + strlen(Messages) + strlen(Unroutables);
Params = malloc(paramLen + 1000);
if (Params == 0)
{
free(Messages);
free(Unroutables);
return;
}
ptr = Params;
sprintf(Request, "/api/bbsdata/%s", BBSName);
ptr += sprintf(ptr, "{\"callsign\": \"%s\",\r\n", BBSName);
ptr += sprintf(ptr, "\"time\": \"%s\",\r\n", Time);
ptr += sprintf(ptr, "\"hroute\": \"%s\",\r\n", HRoute);
ptr += sprintf(ptr, "\"peers\": %s,\r\n", Peers);
#ifdef LINBPQ
ptr += sprintf(ptr, "\"software\": \"%s\",\r\n", "linbpq");
#else
ptr += sprintf(ptr, "\"software\": \"%s\",\r\n", "BPQMail");
#endif
ptr += sprintf(ptr, "\"version\": \"%s\",\r\n", VersionString);
ptr += sprintf(ptr, "\"mailQueues\": %s,\r\n", MsgQueues);
ptr += sprintf(ptr, "\"messages\": %s,\r\n", Messages);
ptr += sprintf(ptr, "\"latitude\": %1.6f,\r\n", LatFromLOC);
ptr += sprintf(ptr, "\"longitude\": %.6f,\r\n", LonFromLOC);
ptr += sprintf(ptr, "\"locator\": \"%s\",\r\n", LOC);
ptr += sprintf(ptr, "\"location\": \"%s\",\r\n", ourBBSRec->Address);
ptr += sprintf(ptr, "\"unroutable\": %s\r\n}\r\n", Unroutables);
#ifdef LINBPQ
SendWebRequest("packetnodes.spots.radio", Request, Params, 0);
#else
pSendWebRequest("packetnodes.spots.radio", Request, Params, 0);
#endif
free(Messages);
free(Unroutables);
free(Params);
}

26
md5.c
View File

@ -74,17 +74,14 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
surprised if they were a performance bottleneck for MD5. */
static cvs_uint32
getu32 (addr)
const unsigned char *addr;
getu32(const unsigned char *addr)
{
return (((((uint32_t)addr[3] << 8) | addr[2]) << 8)
| addr[1]) << 8 | addr[0];
}
static void
putu32 (data, addr)
cvs_uint32 data;
unsigned char *addr;
putu32 (cvs_uint32 data, unsigned char *addr)
{
addr[0] = (unsigned char)data;
addr[1] = (unsigned char)(data >> 8);
@ -97,8 +94,7 @@ putu32 (data, addr)
* initialization constants.
*/
void
cvs_MD5Init (ctx)
struct cvs_MD5Context *ctx;
cvs_MD5Init (struct cvs_MD5Context *ctx)
{
ctx->buf[0] = 0x67452301;
ctx->buf[1] = 0xefcdab89;
@ -114,10 +110,8 @@ cvs_MD5Init (ctx)
* of bytes.
*/
void
cvs_MD5Update (ctx, buf, len)
struct cvs_MD5Context *ctx;
unsigned char const *buf;
unsigned len;
cvs_MD5Update (
struct cvs_MD5Context *ctx, unsigned char const *buf, unsigned len)
{
cvs_uint32 t;
@ -164,10 +158,7 @@ cvs_MD5Update (ctx, buf, len)
* Final wrapup - pad to 64-byte boundary with the bit pattern
* 1 0* (64-bit count of bits processed, MSB-first)
*/
void
cvs_MD5Final (digest, ctx)
unsigned char digest[16];
struct cvs_MD5Context *ctx;
void cvs_MD5Final (unsigned char digest[16], struct cvs_MD5Context *ctx)
{
unsigned count;
unsigned char *p;
@ -227,10 +218,7 @@ cvs_MD5Final (digest, ctx)
* reflect the addition of 16 longwords of new data. MD5Update blocks
* the data and converts bytes into longwords for this routine.
*/
void
cvs_MD5Transform (buf, inraw)
cvs_uint32 buf[4];
const unsigned char inraw[64];
void cvs_MD5Transform (cvs_uint32 buf[4], const unsigned char inraw[64])
{
register cvs_uint32 a, b, c, d;
cvs_uint32 in[16];

56
mqtt.c
View File

@ -317,7 +317,60 @@ int MQTTConnect(char* host, int port, char* user, char* pass)
return 0;
}
/*
// Message Database Entry. Designed to be compatible with FBB
#define NBBBS 160 // Max BBSes we can forward to. Must be Multiple of 8, and must be 80 for FBB compatibliliy
#define NBMASK NBBBS/8 // Number of bytes in Forward bitlists.
#pragma pack(1)
struct MsgInfo
{
char type;
char status;
int number;
int length;
int xdatereceived;
char bbsfrom[7]; // ? BBS we got it from ?
char via[41];
char from[7];
char to[7];
char bid[13];
char title[61];
int nntpnum; // Number within topic (ie Bull TO Addr) - used for nntp
UCHAR B2Flags; // Not all flags specific to B2
#define B2Msg 1 // Set if Message File is a formatted B2 message
#define Attachments 2 // Set if B2 message has attachments
#define FromPaclink 4
#define FromCMS 8
#define FromRMSExpress 16
#define RadioOnlyMsg 32 // Received using call-T
#define RadioOnlyFwd 64 // Received using call-R
#define WarnNotForwardedSent 128
int xdatecreated;
int xdatechanged;
UCHAR fbbs[NBMASK];
UCHAR forw[NBMASK];
char emailfrom[41];
char Locked; // Set if selected for sending (NTS Pickup)
char Defered; // FBB response '=' received
UCHAR UTF8; // Set if Message is in UTF8 (ie from POP/SMTP)
// For 64 bit time_t compatibility define as long long
// (so struct is same with 32 or 64 bit time_t)
int64_t datereceived;
int64_t datecreated;
int64_t datechanged;
char Spare[61 - 24]; // For future use
} ;
#pragma pack()
void MQTTMessageEvent(void* message)
{
struct MsgInfo* msg = (struct MsgInfo *)message;
@ -360,7 +413,6 @@ void MQTTMessageEvent(void* message)
MQTTAsync_sendMessage(client, topic, &pubmsg, &opts);
}
*/
#else

View File

@ -26,7 +26,7 @@ typedef struct API
{
char *URL;
int URLLen;
int (* APIRoutine)();
int (* APIRoutine)(char * response, char * token, char * param);
int Auth;
} API;

View File

@ -211,7 +211,7 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
#endif
#ifdef PNG_NO_CONSOLE_IO
/* make compiler happy */ ;
if (&error_message != NULL)
// if (&error_message != NULL)
return;
#endif
}

View File

@ -1165,7 +1165,7 @@ char * Housekeepingtxt()
"Send Non-delivery Notifications<br>\r\n"
"for P and T messages <input %sname=\"SendND\" value=\"SendND\" type=\"checkbox\" /><br>\r\n"
" <br />\r\n"
"Supress Mailing of<br>\r\n"
"Suppress Mailing of<br>\r\n"
"Housekeeping Result <input %sname=\"NoMail\" value=\"Yes\" type=\"checkbox\"><br><br>\r\n"
"Generate Traffic Report<input %sname=\"GenTraffic\" value=\"Yes\" type=\"checkbox\"><br><br>\r\n"
"<div style=\"text-align: center;\"><input class='btn' name=RunNow value=\"Run Housekeeping\" type=submit class='btn'></div>\r\n"
@ -1454,7 +1454,7 @@ char * ChatConfigtxt()
"<div style=\"text-align: left; width: 680px; margin: auto;\">The Nodes to link to box defines which other Chat Nodes should be connected to, or from which "
"connections may be accepted. The format is ALIAS:CALL, eg BPQCHT:G8BPQ-4. If the node is not directly "
"connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands "
"seperared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT"
"separared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT"
"<br><br>The Callsign of the Chat Node is not defined here - it is obtained from the bpq32.cfg APPLICATION line corresponding to the Chat Appl Number.<br>\r\n"
"<br></div>\n"

View File

@ -814,9 +814,9 @@ typedef struct TNCINFO
HMENU hMenu;
HMENU hWndMenu;
VOID (* SuspendPortProc) ();
VOID (* ReleasePortProc) ();
VOID (* ForcedCloseProc) ();
VOID (* SuspendPortProc) (struct TNCINFO * TNC, struct TNCINFO * ThisTNC);
VOID (* ReleasePortProc) (struct TNCINFO * TNC);
VOID (* ForcedCloseProc) (struct TNCINFO * TNC, int Stream);
time_t WinmorRestartCodecTimer;
int WinmorCurrentMode;