Compare commits

..

No commits in common. "hibbian/latest" and "debian/latest" have entirely different histories.

145 changed files with 11558 additions and 12644 deletions

BIN
250mS@1000Hz.wav Normal file

Binary file not shown.

BIN
250mS@600Hz.wav Normal file

Binary file not shown.

View File

@ -970,7 +970,7 @@ ok:
UCHAR * data = &buffptr->Data[0]; UCHAR * data = &buffptr->Data[0];
STREAM->FramesQueued--; STREAM->FramesQueued--;
txlen = (int)buffptr->Len; txlen = (int)buffptr->Len;
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
bytes=SerialSendData(TNC, data, txlen); bytes=SerialSendData(TNC, data, txlen);
WritetoTrace(TNC, data, txlen); WritetoTrace(TNC, data, txlen);

View File

@ -292,7 +292,8 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
{ {
// Send Error Response // Send Error Response
buffptr->Len = sprintf(buffptr->Data, "No Connection to PACTOR TNC\r"); buffptr->Len = 36;
memcpy(buffptr->Data, "No Connection to PACTOR TNC\r", 36);
C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr); C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr);
@ -811,7 +812,7 @@ VOID AEAPoll(int Port)
{ {
// Limit amount in TX // Limit amount in TX
if (TNC->Streams[0].bytesTXed - TNC->Streams[0].BytesAcked > 200) if (TNC->Streams[0].BytesTXed - TNC->Streams[0].BytesAcked > 200)
continue; continue;
// If in IRS state for too long, force turnround // If in IRS state for too long, force turnround
@ -876,8 +877,8 @@ VOID AEAPoll(int Port)
EncodeAndSend(TNC, TXMsg, datalen + 1); EncodeAndSend(TNC, TXMsg, datalen + 1);
ReleaseBuffer(buffptr); ReleaseBuffer(buffptr);
TNC->Streams[Stream].bytesTXed += datalen; TNC->Streams[Stream].BytesTXed += datalen;
Debugprintf("Stream %d Sending %d, BytesTXED now %d", Stream, datalen, TNC->Streams[Stream].bytesTXed); Debugprintf("Stream %d Sending %d, BytesTXED now %d", Stream, datalen, TNC->Streams[Stream].BytesTXed);
TNC->Timeout = 0; TNC->Timeout = 0;
TNC->DataBusy = TRUE; TNC->DataBusy = TRUE;
@ -1211,7 +1212,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len)
// If nothing more to send, turn round link // If nothing more to send, turn round link
if ((TNC->Streams[0].BPQtoPACTOR_Q == 0) && TNC->NeedTurnRound && if ((TNC->Streams[0].BPQtoPACTOR_Q == 0) && TNC->NeedTurnRound &&
(TNC->Streams[0].BytesAcked >= TNC->Streams[0].bytesTXed)) // Nothing following and all acked (TNC->Streams[0].BytesAcked >= TNC->Streams[0].BytesTXed)) // Nothing following and all acked
{ {
Debugprintf("AEA Sent = Acked - sending Turnround"); Debugprintf("AEA Sent = Acked - sending Turnround");
@ -1246,7 +1247,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len)
Len--; // Remove Header Len--; // Remove Header
buffptr->Len = Len; // Length buffptr->Len = Len; // Length
TNC->Streams[Stream].bytesRXed += (int)Len; TNC->Streams[Stream].BytesRXed += (int)Len;
memcpy(&buffptr->Data[0], Buffer, Len); memcpy(&buffptr->Data[0], Buffer, Len);
C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr); C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr);
@ -1417,7 +1418,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len)
Buffer[Len-2] = 0; Buffer[Len-2] = 0;
} }
TNC->Streams[Stream].bytesRXed = TNC->Streams[Stream].bytesTXed = TNC->Streams[Stream].BytesAcked = 0; TNC->Streams[Stream].BytesRXed = TNC->Streams[Stream].BytesTXed = TNC->Streams[Stream].BytesAcked = 0;
TNC->Streams[Stream].ConnectTime = time(NULL); TNC->Streams[Stream].ConnectTime = time(NULL);
if (Stream == 0) if (Stream == 0)

142
AGWAPI.c
View File

@ -36,14 +36,14 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
struct AGWHeader struct AGWHeader
{ {
unsigned int Port; int Port;
unsigned char DataKind; unsigned char DataKind;
unsigned char filler2; unsigned char filler2;
unsigned char PID; unsigned char PID;
unsigned char filler3; unsigned char filler3;
unsigned char callfrom[10]; unsigned char callfrom[10];
unsigned char callto[10]; unsigned char callto[10];
unsigned int DataLength; int DataLength;
int reserved; int reserved;
}; };
@ -128,7 +128,7 @@ int DataSocket_Write(struct AGWSocketConnectionInfo * sockptr, SOCKET sock);
int AGWGetSessionKey(char * key, struct AGWSocketConnectionInfo * sockptr); int AGWGetSessionKey(char * key, struct AGWSocketConnectionInfo * sockptr);
int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr); int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr);
int SendDataToAppl(int Stream, byte * Buffer, int Length); int SendDataToAppl(int Stream, byte * Buffer, int Length);
int InternalAGWDecodeFrame(char * msg, char * buffer, time_t Stamp, int * FrameType, int useLocalTime, int doNodes); int InternalAGWDecodeFrame(char * msg, char * buffer, int Stamp, int * FrameType, int useLocalTime, int doNodes);
int AGWDataSocket_Disconnect( struct AGWSocketConnectionInfo * sockptr); int AGWDataSocket_Disconnect( struct AGWSocketConnectionInfo * sockptr);
int SendRawPacket(struct AGWSocketConnectionInfo * sockptr, char *txmsg, int Length); int SendRawPacket(struct AGWSocketConnectionInfo * sockptr, char *txmsg, int Length);
int ShowApps(); int ShowApps();
@ -402,7 +402,7 @@ int SetUpHostSessions()
extern struct DATAMESSAGE * REPLYBUFFER; extern struct DATAMESSAGE * REPLYBUFFER;
extern BOOL AGWActive; extern BOOL AGWActive;
VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
{ {
// DISPLAY AGW Session Status // DISPLAY AGW Session Status
@ -564,27 +564,9 @@ int AGWConnected(struct BPQConnectionInfo * Con, int Stream)
{ {
// Create Key // Create Key
char callsign[10];
int port;
int sesstype;
int paclen;
int maxframe;
int l4window;
keyptr=(byte *)&Con->CallKey; keyptr=(byte *)&Con->CallKey;
// Try using the BPQ Port Number if a L2 connect, first free port number if not *(keyptr++)='1';
GetConnectionInfo(Stream, callsign,
&port, &sesstype, &paclen,
&maxframe, &l4window);
if (port == 0)
port = 64;
*(keyptr++)='0' + port;
memcpy(keyptr, ApplCall, 10); memcpy(keyptr, ApplCall, 10);
keyptr+=10; keyptr+=10;
memcpy(keyptr,ConnectingCall, 10); memcpy(keyptr,ConnectingCall, 10);
@ -704,9 +686,8 @@ int AGWDoMonitorData()
struct AGWSocketConnectionInfo * sockptr; struct AGWSocketConnectionInfo * sockptr;
byte AGWBuffer[1000]; byte AGWBuffer[1000];
int n; int n;
int Frametype; int Stamp, Frametype;
BOOL RXFlag; BOOL RXFlag;
time_t Stamp;
// Look for Monitor Data // Look for Monitor Data
@ -727,7 +708,7 @@ int AGWDoMonitorData()
return 0; return 0;
} }
Stamp = monbuff->Timestamp; Stamp = (UINT)monbuff->Timestamp;
memcpy(Buffer, monbuff, RawLen); memcpy(Buffer, monbuff, RawLen);
@ -1017,7 +998,6 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
{ {
int i; int i;
int DataLength; int DataLength;
struct AGWHeader * AGW = &sockptr->AGWRXHeader;
ioctlsocket(sock,FIONREAD,&DataLength); ioctlsocket(sock,FIONREAD,&DataLength);
@ -1029,56 +1009,6 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
return 0; 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) if (sockptr->GotHeader)
{ {
@ -1086,26 +1016,11 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
if (DataLength < sockptr->MsgDataLength) if (DataLength < sockptr->MsgDataLength)
{ {
// Fiddle - seem to be problems somtimes with un-Neagled hosts so wait a few ms // Fiddle - seem to be problems somtimes with un-Neagled hosts
// if we don't get a full packet assume a rogue connection and close it
int n = 50; Sleep(500);
while (n--)
{
Sleep(10);
ioctlsocket(sock,FIONREAD,&DataLength); 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) if (DataLength >= sockptr->MsgDataLength)
@ -1118,9 +1033,48 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
ProcessAGWCommand (sockptr); ProcessAGWCommand (sockptr);
free(sockptr->MsgData); free(sockptr->MsgData);
sockptr->GotHeader = FALSE; sockptr->GotHeader = FALSE;
} }
// Not Enough Data - wait
} }
else // Not got header
{
if (DataLength > 35)// A header
{
i=recv(sock,(char *)&sockptr->AGWRXHeader, 36, 0);
if (i == SOCKET_ERROR)
{
i=WSAGetLastError();
AGWDataSocket_Disconnect(sockptr);
}
sockptr->MsgDataLength = sockptr->AGWRXHeader.DataLength;
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; return 0;
} }

1646
AGWMon.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -61,6 +61,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define NODES_SIG 0xFF #define NODES_SIG 0xFF
char * strlop(char * buf, char delim);
UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, int msglen); UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, int msglen);
static UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen, int DoNodes); static UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen, int DoNodes);
@ -68,7 +69,7 @@ static UCHAR * DISPLAYIPDATAGRAM(IPMSG * IP, UCHAR * Output, int MsgLen);
static UCHAR * DISPLAYARPDATAGRAM(UCHAR * Datagram, UCHAR * Output); static UCHAR * DISPLAYARPDATAGRAM(UCHAR * Datagram, UCHAR * Output);
int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, int * FrameType, int useLocalTime, int DoNodes) int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, int Stamp, int * FrameType, int useLocalTime, int DoNodes)
{ {
UCHAR * ptr; UCHAR * ptr;
int n; int n;
@ -364,7 +365,7 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, int * Fra
} }
if (Output == NULL) if (Output == NULL)
return 0; return NULL;
if (Output[-1] != 13) if (Output[-1] != 13)
Output += sprintf((char *)Output, "\r"); Output += sprintf((char *)Output, "\r");

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1,139 +0,0 @@
--- 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];

51
ARDOP.c
View File

@ -314,7 +314,7 @@ void SendARDOPorPacketData(struct TNCINFO * TNC, int Stream, UCHAR * Buff, int t
if (Stream == 0) if (Stream == 0)
{ {
ARDOPSendData(TNC, Buff, txlen); ARDOPSendData(TNC, Buff, txlen);
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
WritetoTrace(TNC, Buff, txlen); WritetoTrace(TNC, Buff, txlen);
} }
else else
@ -562,7 +562,7 @@ static int ProcessLine(char * buf, int Port)
void ARDOPThread(struct TNCINFO * TNC); void ARDOPThread(struct TNCINFO * TNC);
VOID ARDOPProcessDataSocketData(int port); VOID ARDOPProcessDataSocketData(int port);
int ConnecttoARDOP(struct TNCINFO * TNC); int ConnecttoARDOP();
static VOID ARDOPProcessReceivedData(struct TNCINFO * TNC); static VOID ARDOPProcessReceivedData(struct TNCINFO * TNC);
static VOID ARDOPProcessReceivedControl(struct TNCINFO * TNC); static VOID ARDOPProcessReceivedControl(struct TNCINFO * TNC);
int V4ProcessReceivedData(struct TNCINFO * TNC); int V4ProcessReceivedData(struct TNCINFO * TNC);
@ -1274,7 +1274,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
UCHAR * data = &buffptr->Data[0]; UCHAR * data = &buffptr->Data[0];
STREAM->FramesQueued--; STREAM->FramesQueued--;
txlen = (int)buffptr->Len; txlen = (int)buffptr->Len;
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
if (Stream == 0) if (Stream == 0)
{ {
@ -1381,7 +1381,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
{ {
bytes=ARDOPSendData(TNC, &buff->L2DATA[0], txlen); bytes=ARDOPSendData(TNC, &buff->L2DATA[0], txlen);
TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
WritetoTrace(TNC, &buff->L2DATA[0], txlen); WritetoTrace(TNC, &buff->L2DATA[0], txlen);
} }
else else
@ -1627,8 +1627,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
ARDOPChangeMYC(TNC, TNC->Streams[0].MyCall); ARDOPChangeMYC(TNC, TNC->Streams[0].MyCall);
hookL4SessionAttempt(STREAM, &buff->L2DATA[2], TNC->Streams[0].MyCall);
// See if Busy // See if Busy
if (InterlockedCheckBusy(TNC)) if (InterlockedCheckBusy(TNC))
@ -2265,7 +2263,7 @@ VOID TNCLost(struct TNCINFO * TNC)
if (Stream == 0) if (Stream == 0)
{ {
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - STREAM->BytesOutstanding, STREAM->bytesRXed, STREAM->BytesOutstanding); STREAM->BytesTXed - STREAM->BytesOutstanding, STREAM->BytesRXed, STREAM->BytesOutstanding);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
} }
@ -3065,7 +3063,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
} }
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - STREAM->BytesOutstanding, STREAM->bytesRXed, STREAM->BytesOutstanding); STREAM->BytesTXed - STREAM->BytesOutstanding, STREAM->BytesRXed, STREAM->BytesOutstanding);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
return; return;
} }
@ -3085,7 +3083,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
WritetoTrace(TNC, Buffer, MsgLen - 1); WritetoTrace(TNC, Buffer, MsgLen - 1);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
memcpy(Call, &Buffer[10], 10); memcpy(Call, &Buffer[10], 10);
@ -3212,7 +3210,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
if (TNC->SendTandRtoRelay && memcmp(AppName, "RMS ", 4) == 0 if (TNC->SendTandRtoRelay && memcmp(AppName, "RMS ", 4) == 0
@ -3262,7 +3260,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
STREAM->NeedDisc = 100; // 10 secs STREAM->NeedDisc = 100; // 10 secs
} }
} }
strcpy(STREAM->MyCall, TNC->TargetCall);
return; return;
} }
else else
@ -3349,13 +3347,29 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
WritetoTrace(TNC, Buffer, MsgLen - 1); WritetoTrace(TNC, Buffer, MsgLen - 1);
// Release Session // Release Session3
if (TNC->Streams[0].Connected) if (TNC->Streams[0].Connected)
{ {
// Create a traffic record // Create a traffic record
hookL4SessionDeleted(TNC, STREAM); char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1;
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
STREAM->ConnectTime = 0; // Prevent retrigger
} }
@ -3836,12 +3850,13 @@ VOID ARDOPProcessDataPacket(struct TNCINFO * TNC, UCHAR * Type, UCHAR * Data, in
return; return;
} }
STREAM->bytesRXed += Length; STREAM->BytesRXed += Length;
Data[Length] = 0; Data[Length] = 0;
Debugprintf("ARDOP: RXD %d bytes", Length);
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - STREAM->BytesOutstanding, STREAM->bytesRXed, STREAM->BytesOutstanding); STREAM->BytesTXed - STREAM->BytesOutstanding, STREAM->BytesRXed, STREAM->BytesOutstanding);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
@ -3944,8 +3959,6 @@ VOID ARDOPProcessDataPacket(struct TNCINFO * TNC, UCHAR * Type, UCHAR * Data, in
BPQTRACE((MESSAGE *)buffptr, TRUE); BPQTRACE((MESSAGE *)buffptr, TRUE);
ReleaseBuffer(buffptr);
} }
else else
{ {
@ -4990,7 +5003,7 @@ tcpHostFrame:
WritetoTrace(TNC, Buffer, len); WritetoTrace(TNC, Buffer, len);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
memcpy(Call, &Buffer[19], 10); memcpy(Call, &Buffer[19], 10);
ptr = strchr(Call, ' '); ptr = strchr(Call, ' ');
@ -5063,7 +5076,7 @@ tcpHostFrame:
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// Make sure app is available // Make sure app is available

View File

@ -116,7 +116,7 @@ int SendWebMailHeader(char * Reply, char * Key, struct HTTPConnectionInfo * Sess
struct UserInfo * FindBBS(char * Name); struct UserInfo * FindBBS(char * Name);
void ReleaseWebMailStruct(WebMailInfo * WebMail); void ReleaseWebMailStruct(WebMailInfo * WebMail);
VOID TidyWelcomeMsg(char ** pPrompt); VOID TidyWelcomeMsg(char ** pPrompt);
int MailAPIProcessHTTPMessage(struct HTTPConnectionInfo * Session, char * response, char * Method, char * URL, char * request, BOOL LOCAL, char * Param, char * Token); int MailAPIProcessHTTPMessage(char * response, char * Method, char * URL, char * request, BOOL LOCAL, char * Param);
char UNC[] = ""; char UNC[] = "";
char CHKD[] = "checked=checked "; char CHKD[] = "checked=checked ";
@ -405,20 +405,41 @@ int SendHeader(char * Reply, char * Key)
void ConvertTitletoUTF8(WebMailInfo * WebMail, char * Title, char * UTF8Title, int Len) void ConvertTitletoUTF8(WebMailInfo * WebMail, char * Title, char * UTF8Title, int Len)
{ {
Len = strlen(Title); if (WebIsUTF8(Title, (int)strlen(Title)) == FALSE)
if (WebIsUTF8(Title, Len) == FALSE)
{ {
int code = TrytoGuessCode(Title, Len); // With Windows it is simple - convert using current codepage
// I think the only reliable way is to convert to unicode and back
if (code == 437) int origlen = (int)strlen(Title) + 1;
Len = Convert437toUTF8(Title, Len, UTF8Title); #ifdef WIN32
else if (code == 1251) WCHAR BufferW[128];
Len = Convert1251toUTF8(Title, Len, UTF8Title); int wlen;
else int len = origlen;
Len = Convert1252toUTF8(Title, Len, UTF8Title);
UTF8Title[Len] = 0; wlen = MultiByteToWideChar(CP_ACP, 0, Title, len, BufferW, origlen * 2);
len = WideCharToMultiByte(CP_UTF8, 0, BufferW, wlen, UTF8Title, origlen * 2, NULL, NULL);
#else
size_t left = Len - 1;
size_t len = origlen;
iconv_t * icu = WebMail->iconv_toUTF8;
if (WebMail->iconv_toUTF8 == NULL)
icu = WebMail->iconv_toUTF8 = iconv_open("UTF-8//IGNORE", "CP1252");
if (icu == (iconv_t)-1)
{
strcpy(UTF8Title, Title);
WebMail->iconv_toUTF8 = NULL;
return;
}
char * orig = UTF8Title;
iconv(icu, NULL, NULL, NULL, NULL); // Reset State Machine
iconv(icu, &Title, &len, (char ** __restrict__)&UTF8Title, &left);
#endif
} }
else else
strcpy(UTF8Title, Title); strcpy(UTF8Title, Title);
@ -426,7 +447,7 @@ void ConvertTitletoUTF8(WebMailInfo * WebMail, char * Title, char * UTF8Title, i
BOOL GotFirstMessage = 0; BOOL GotFirstMessage = 0;
void ProcessMailHTTPMessage(struct HTTPConnectionInfo * Session, char * Method, char * URL, char * input, char * Reply, int * RLen, int InputLen, char * Token) void ProcessMailHTTPMessage(struct HTTPConnectionInfo * Session, char * Method, char * URL, char * input, char * Reply, int * RLen, int InputLen)
{ {
char * Context = 0, * NodeURL; char * Context = 0, * NodeURL;
int ReplyLen; int ReplyLen;
@ -456,13 +477,6 @@ void ProcessMailHTTPMessage(struct HTTPConnectionInfo * Session, char * Method,
} }
if (_memicmp(URL, "/Mail/API/v1/", 13) == 0)
{
*RLen = MailAPIProcessHTTPMessage(Session, Reply, Method, URL, input, LOCAL, Context, Token);
return;
}
// There is a problem if Mail is reloaded without reloading the node // There is a problem if Mail is reloaded without reloading the node
if (GotFirstMessage == 0) if (GotFirstMessage == 0)
@ -480,6 +494,12 @@ void ProcessMailHTTPMessage(struct HTTPConnectionInfo * Session, char * Method,
return; return;
} }
if (_memicmp(URL, "/Mail/API/", 10) == 0)
{
*RLen = MailAPIProcessHTTPMessage(Reply, Method, URL, input, LOCAL, Context);
return;
}
if (strcmp(Method, "POST") == 0) if (strcmp(Method, "POST") == 0)
{ {
@ -2976,8 +2996,6 @@ int ProcessWebmailWebSock(char * MsgPtr, char * OutBuffer);
static char PipeFileName[] = "\\\\.\\pipe\\BPQMailWebPipe"; static char PipeFileName[] = "\\\\.\\pipe\\BPQMailWebPipe";
// Constants
static DWORD WINAPI InstanceThread(LPVOID lpvParam) static DWORD WINAPI InstanceThread(LPVOID lpvParam)
// This routine is a thread processing function to read from and reply to a client // This routine is a thread processing function to read from and reply to a client
@ -2998,7 +3016,6 @@ static DWORD WINAPI InstanceThread(LPVOID lpvParam)
char URL[100001]; char URL[100001];
char * Context, * Method; char * Context, * Method;
int n; int n;
char token[16]= "";
char * ptr; char * ptr;
@ -3034,33 +3051,8 @@ static DWORD WINAPI InstanceThread(LPVOID lpvParam)
} }
else else
{ {
// look for auth header
const char * auth_header = "Authorization: Bearer ";
char * token_begin = strstr(MsgPtr, auth_header);
int Flags = 0, n;
// Node Flags isn't currently used
char * Tok;
char * param;
if (token_begin)
{
// Using Auth Header
// Extract the token from the request (assuming it's present in the request headers)
token_begin += strlen(auth_header); // Move to the beginning of the token
strncpy(token, token_begin, 13);
token[13] = '\0'; // Null-terminate the token
}
}
strcpy(URL, MsgPtr); strcpy(URL, MsgPtr);
ptr = strstr(URL, " HTTP"); ptr = strstr(URL, " HTTP");
if (ptr) if (ptr)
@ -3068,8 +3060,8 @@ static DWORD WINAPI InstanceThread(LPVOID lpvParam)
Method = strtok_s(URL, " ", &Context); Method = strtok_s(URL, " ", &Context);
ProcessMailHTTPMessage(&Session, Method, Context, MsgPtr, OutBuffer, &OutputLen, InputLen, token); ProcessMailHTTPMessage(&Session, Method, Context, MsgPtr, OutBuffer, &OutputLen, InputLen);
}
WriteFile(hPipe, &Session, sizeof (struct HTTPConnectionInfo), &n, NULL); WriteFile(hPipe, &Session, sizeof (struct HTTPConnectionInfo), &n, NULL);
WriteFile(hPipe, OutBuffer, OutputLen, &cbWritten, NULL); WriteFile(hPipe, OutBuffer, OutputLen, &cbWritten, NULL);

View File

@ -51,8 +51,6 @@ extern struct ConsoleInfo BBSConsole;
extern char LOC[7]; extern char LOC[7];
extern BOOL MQTT;
//#define BBSIDLETIME 120 //#define BBSIDLETIME 120
//#define USERIDLETIME 300 //#define USERIDLETIME 300
@ -128,7 +126,6 @@ int32_t Encode(char * in, char * out, int32_t inlen, BOOL B1Protocol, int Compre
int APIENTRY ChangeSessionCallsign(int Stream, unsigned char * AXCall); int APIENTRY ChangeSessionCallsign(int Stream, unsigned char * AXCall);
void SendMessageReadEvent(char * call, struct MsgInfo * Msg); void SendMessageReadEvent(char * call, struct MsgInfo * Msg);
void SendNewMessageEvent(char * call, struct MsgInfo * Msg); void SendNewMessageEvent(char * call, struct MsgInfo * Msg);
void MQTTMessageEvent(struct MsgInfo * message);
config_t cfg; config_t cfg;
config_setting_t * group; config_setting_t * group;
@ -272,8 +269,6 @@ char FilesNames[4][100] = {"", "", "", ""};
char * Logs[4] = {"BBS", "CHAT", "TCP", "DEBUG"}; char * Logs[4] = {"BBS", "CHAT", "TCP", "DEBUG"};
extern struct SEM ConfigSEM;
BOOL OpenLogfile(int Flags) BOOL OpenLogfile(int Flags)
{ {
@ -2214,7 +2209,7 @@ BOOL CheckValidCall(char * From)
if (DontCheckFromCall) if (DontCheckFromCall)
return TRUE; return TRUE;
if (strcmp(From, "SYSOP") == 0 || strcmp(From, "SYSTEM") == 0 || strcmp(From, "SERVIC") == 0 || if (strcmp(From, "SYSOP") == 0 || strcmp(From, "SYSTEM") == 0 ||
strcmp(From, "IMPORT") == 0 || strcmp(From, "SMTP:") == 0 || strcmp(From, "RMS:") == 0) strcmp(From, "IMPORT") == 0 || strcmp(From, "SMTP:") == 0 || strcmp(From, "RMS:") == 0)
return TRUE; return TRUE;
@ -3455,11 +3450,6 @@ VOID FlagAsKilled(struct MsgInfo * Msg, BOOL SaveDB)
if (SaveDB) if (SaveDB)
SaveMessageDatabase(); SaveMessageDatabase();
RebuildNNTPList(); RebuildNNTPList();
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
} }
void DoDeliveredCommand(CIRCUIT * conn, struct UserInfo * user, char * Cmd, char * Arg1, char * Context) void DoDeliveredCommand(CIRCUIT * conn, struct UserInfo * user, char * Cmd, char * Arg1, char * Context)
@ -4904,10 +4894,6 @@ sendEOM:
Msg->datechanged=time(NULL); Msg->datechanged=time(NULL);
SaveMessageDatabase(); SaveMessageDatabase();
SendMessageReadEvent(user->Call, Msg); SendMessageReadEvent(user->Call, Msg);
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
} }
} }
} }
@ -5577,20 +5563,15 @@ BOOL CreateMessage(CIRCUIT * conn, char * From, char * ToCall, char * ATBBS, cha
else else
{ {
if (_memicmp(ToCall, "rms:", 4) == 0) if (_memicmp(ToCall, "rms:", 4) == 0)
{
// Could be ampr.org message
if (!isAMPRMsg(ToCall))
{ {
if (!FindRMS()) if (!FindRMS())
{ {
nodeprintf(conn, "*** Error - Forwarding via RMS is not configured on this BBS\r"); nodeprintf(conn, "*** Error - Forwarding via RMS is not configured on this BBS\r");
return FALSE; return FALSE;
} }
}
via=strlop(ToCall, ':'); via=strlop(ToCall, ':');
_strupr(ToCall); _strupr(ToCall);
} }
else if (_memicmp(ToCall, "rms/", 4) == 0) else if (_memicmp(ToCall, "rms/", 4) == 0)
{ {
@ -6469,10 +6450,6 @@ nextline:
user = LookupCall(Msg->to); user = LookupCall(Msg->to);
SendNewMessageEvent(user->Call, Msg); SendNewMessageEvent(user->Call, Msg);
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
if (EnableUI) if (EnableUI)
#ifdef LINBPQ #ifdef LINBPQ
@ -6898,7 +6875,7 @@ int CountMessagestoForward (struct UserInfo * user)
if ((Msg->status != 'H') && (Msg->status != 'D') && Msg->type && check_fwd_bit(Msg->fbbs, BBSNumber)) if ((Msg->status != 'H') && (Msg->status != 'D') && Msg->type && check_fwd_bit(Msg->fbbs, BBSNumber))
{ {
n++; n++;
continue; // So we dont count twice if Flag set and NTS MPS continue; // So we dont count twice in Flag set and NTS MPS
} }
// if an NTS MPS, also check for any matches // if an NTS MPS, also check for any matches
@ -6939,66 +6916,6 @@ int CountMessagestoForward (struct UserInfo * user)
return n; 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) int ListMessagestoForward(CIRCUIT * conn, struct UserInfo * user)
{ {
// See if any messages are queued for this BBS // See if any messages are queued for this BBS
@ -8219,15 +8136,6 @@ BOOL ProcessBBSConnectScript(CIRCUIT * conn, char * Buffer, int len)
Line = Scripts[n]; Line = Scripts[n];
} }
if (Line == NULL)
{
// No more lines - Disconnect
conn->BBSFlags &= ~RunningConnectScript; // so it doesn't get reentered
Disconnect(conn->BPQStream);
return FALSE;
}
if (_memicmp(Line, "TIMES", 5) == 0) if (_memicmp(Line, "TIMES", 5) == 0)
{ {
NextBand: NextBand:
@ -9615,8 +9523,6 @@ VOID SaveConfig(char * ConfigName)
FBBFilter * p = Filters; FBBFilter * p = Filters;
char * ptr = FBBString; char * ptr = FBBString;
GetSemaphore(&ConfigSEM, 60);
if (configSaved == 0) if (configSaved == 0)
{ {
// only create backup once per run // only create backup once per run
@ -10039,11 +9945,10 @@ VOID SaveConfig(char * ConfigName)
#ifdef LINBPQ #ifdef LINBPQ
if(!config_write_file(&cfg,"/dev/shm/linmail.cfg.temp" )) if(! config_write_file(&cfg,"/dev/shm/linmail.cfg.temp" ))
{ {
print("Error while writing file.\n"); print("Error while writing file.\n");
config_destroy(&cfg); config_destroy(&cfg);
FreeSemaphore(&ConfigSEM);
return; return;
} }
@ -10055,8 +9960,6 @@ VOID SaveConfig(char * ConfigName)
{ {
fprintf(stderr, "Error while writing file.\n"); fprintf(stderr, "Error while writing file.\n");
config_destroy(&cfg); config_destroy(&cfg);
FreeSemaphore(&ConfigSEM);
return; return;
} }
@ -10085,8 +9988,6 @@ VOID SaveConfig(char * ConfigName)
} }
#endif #endif
*/ */
FreeSemaphore(&ConfigSEM);
} }
int GetIntValue(config_setting_t * group, char * name) int GetIntValue(config_setting_t * group, char * name)
@ -10157,6 +10058,7 @@ BOOL GetConfig(char * ConfigName)
int i; int i;
char Size[80]; char Size[80];
config_setting_t *setting; config_setting_t *setting;
const char * ptr;
char * ptr1; char * ptr1;
char FBBString[8192]= ""; char FBBString[8192]= "";
FBBFilter f; FBBFilter f;
@ -10279,7 +10181,8 @@ BOOL GetConfig(char * ConfigName)
if (setting && setting->value.sval[0]) if (setting && setting->value.sval[0])
{ {
WelcomeMsg = _strdup(config_setting_get_string (setting)); ptr = config_setting_get_string (setting);
WelcomeMsg = _strdup(ptr);
} }
else else
WelcomeMsg = _strdup("Hello $I. Latest Message is $L, Last listed is $Z\r\n"); WelcomeMsg = _strdup("Hello $I. Latest Message is $L, Last listed is $Z\r\n");
@ -10288,7 +10191,10 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "NewUserWelcomeMsg"); setting = config_setting_get_member (group, "NewUserWelcomeMsg");
if (setting && setting->value.sval[0]) if (setting && setting->value.sval[0])
NewWelcomeMsg = _strdup(config_setting_get_string (setting)); {
ptr = config_setting_get_string (setting);
NewWelcomeMsg = _strdup(ptr);
}
else else
NewWelcomeMsg = _strdup("Hello $I. Latest Message is $L, Last listed is $Z\r\n"); NewWelcomeMsg = _strdup("Hello $I. Latest Message is $L, Last listed is $Z\r\n");
@ -10296,7 +10202,10 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "ExpertWelcomeMsg"); setting = config_setting_get_member (group, "ExpertWelcomeMsg");
if (setting && setting->value.sval[0]) if (setting && setting->value.sval[0])
ExpertWelcomeMsg = _strdup(config_setting_get_string (setting)); {
ptr = config_setting_get_string (setting);
ExpertWelcomeMsg = _strdup(ptr);
}
else else
ExpertWelcomeMsg = _strdup(""); ExpertWelcomeMsg = _strdup("");
@ -10305,7 +10214,10 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "Prompt"); setting = config_setting_get_member (group, "Prompt");
if (setting && setting->value.sval[0]) if (setting && setting->value.sval[0])
Prompt = _strdup(config_setting_get_string (setting)); {
ptr = config_setting_get_string (setting);
Prompt = _strdup(ptr);
}
else else
{ {
Prompt = malloc(20); Prompt = malloc(20);
@ -10315,7 +10227,10 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "NewUserPrompt"); setting = config_setting_get_member (group, "NewUserPrompt");
if (setting && setting->value.sval[0]) if (setting && setting->value.sval[0])
NewPrompt = _strdup(config_setting_get_string (setting)); {
ptr = config_setting_get_string (setting);
NewPrompt = _strdup(ptr);
}
else else
{ {
NewPrompt = malloc(20); NewPrompt = malloc(20);
@ -10325,7 +10240,10 @@ BOOL GetConfig(char * ConfigName)
setting = config_setting_get_member (group, "ExpertPrompt"); setting = config_setting_get_member (group, "ExpertPrompt");
if (setting && setting->value.sval[0]) if (setting && setting->value.sval[0])
ExpertPrompt = _strdup(config_setting_get_string (setting)); {
ptr = config_setting_get_string (setting);
ExpertPrompt = _strdup(ptr);
}
else else
{ {
ExpertPrompt = malloc(20); ExpertPrompt = malloc(20);
@ -10546,7 +10464,7 @@ int Connected(int Stream)
char ConnectedMsg[] = "*** CONNECTED "; char ConnectedMsg[] = "*** CONNECTED ";
char Msg[100]; char Msg[100];
char Title[100]; char Title[100];
int64_t Freq = 0; int Freq = 0;
int Mode = 0; int Mode = 0;
BPQVECSTRUC * SESS; BPQVECSTRUC * SESS;
TRANSPORTENTRY * Sess1 = NULL, * Sess2; TRANSPORTENTRY * Sess1 = NULL, * Sess2;
@ -11780,11 +11698,6 @@ VOID ProcessTextFwdLine(ConnectionInfo * conn, struct UserInfo * user, char * Bu
SaveMessageDatabase(); SaveMessageDatabase();
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(conn->FwdMsg);
#endif
conn->UserPointer->ForwardingInfo->MsgCount--; conn->UserPointer->ForwardingInfo->MsgCount--;
// See if any more to forward // See if any more to forward
@ -15892,11 +15805,6 @@ void SendMessageReadEvent(char * call, struct MsgInfo * Msg)
} }
} }
void SendMessageForwardedToM0LTE(char * call, struct MsgInfo * Msg)
{
}
void SendNewMessageEvent(char * call, struct MsgInfo * Msg) void SendNewMessageEvent(char * call, struct MsgInfo * Msg)
{ {
if (reportMailEvents) if (reportMailEvents)

View File

@ -162,7 +162,7 @@ BEGIN
WS_VSCROLL WS_VSCROLL
DEFPUSHBUTTON "Save Welcome Message",SAVEWELCOME,140,296,91,14, DEFPUSHBUTTON "Save Welcome Message",SAVEWELCOME,140,296,91,14,
BS_CENTER | BS_VCENTER 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 separared 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 seperared by |, eg NOTCHT:G8BPQ-4|C 3 GM8BPQ-9|CHAT",
IDC_STATIC,9,52,355,24 IDC_STATIC,9,52,355,24
END END

374
BPQChat.vcproj Normal file
View File

@ -0,0 +1,374 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="BPQChat"
ProjectGUID="{2BDD2C8A-2B4A-496C-A2EA-6B49AA0670B1}"
RootNamespace="BPQChat"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
CommandLine=""
Outputs=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\CInclude;..\CommonSource;..\BPQChat"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USE_32BIT_TIME_T"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="4"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="..\lib\bpq32.lib wsock32.lib comctl32.lib winmm.lib ..\lib\libconfig.lib DbgHelp.lib"
OutputFile="c:\DevProgs\bpq32\BPQChat.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(IntDir)$(TargetName).pdb"
GenerateMapFile="true"
MapFileName="$(IntDir)\BBSListings\BPQChat.map"
MapExports="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
CommandLine=""
/>
<Tool
Name="VCCustomBuildTool"
CommandLine=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\CInclude;..\CommonSource;..\BPQChat"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USE_32BIT_TIME_T"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
AssemblerOutput="2"
AssemblerListingLocation="$(IntDir)\BBSListings\"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="0"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="..\lib\bpq32.lib wsock32.lib comctl32.lib winmm.lib ..\lib\libconfig.lib DbgHelp.lib"
OutputFile="c:\DevProgs\bpq32\BPQChat.exe"
LinkIncremental="1"
GenerateDebugInformation="false"
ProgramDatabaseFile="$(IntDir)$(TargetName).pdb"
GenerateMapFile="true"
MapFileName="$(IntDir)\BBSListings\BPQChat.map"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\bpqchat.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\ChatDebug.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\ChatHTMLConfig.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\ChatMonitor.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\ChatMultiConsole.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\ChatUtilities.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\ChatUtils.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\HanksRT.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\HTMLCommonCode.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\BPQChat.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

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

View File

@ -1140,11 +1140,6 @@
// Rewrite PG server code on Lunux (41) // Rewrite PG server code on Lunux (41)
// Fix SendPToMultiple not stopping at Implied AT match (45) // Fix SendPToMultiple not stopping at Implied AT match (45)
// Log Our HA when checking for flood bulls (45) // Log Our HA when checking for flood bulls (45)
// 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 "bpqmail.h"
#include "winstdint.h" #include "winstdint.h"
@ -1163,8 +1158,6 @@ FARPROCZ pGetLOC;
FARPROCX pRefreshWebMailIndex; FARPROCX pRefreshWebMailIndex;
FARPROCX pRunEventProgram; FARPROCX pRunEventProgram;
FARPROCX pGetPortFrequency; FARPROCX pGetPortFrequency;
FARPROCX pSendWebRequest;
FARPROCX pGetLatLon;
BOOL WINE = FALSE; BOOL WINE = FALSE;
@ -1389,7 +1382,6 @@ char * CheckToAddress(CIRCUIT * conn, char * Addr);
BOOL CheckifPacket(char * Via); BOOL CheckifPacket(char * Via);
int GetHTMLForms(); int GetHTMLForms();
VOID GetPGConfig(); VOID GetPGConfig();
void SendBBSDataToPktMap();
struct _EXCEPTION_POINTERS exinfox; struct _EXCEPTION_POINTERS exinfox;
@ -1400,7 +1392,7 @@ DWORD Stack[16];
BOOL Restarting = FALSE; BOOL Restarting = FALSE;
void Dump_Process_State(struct _EXCEPTION_POINTERS * exinfo, char * Msg) Dump_Process_State(struct _EXCEPTION_POINTERS * exinfo, char * Msg)
{ {
unsigned int SPPtr; unsigned int SPPtr;
unsigned int SPVal; unsigned int SPVal;
@ -1941,8 +1933,6 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
pRefreshWebMailIndex = GetProcAddress(ExtDriver,"_RefreshWebMailIndex@0"); pRefreshWebMailIndex = GetProcAddress(ExtDriver,"_RefreshWebMailIndex@0");
pRunEventProgram = GetProcAddress(ExtDriver,"_RunEventProgram@8"); pRunEventProgram = GetProcAddress(ExtDriver,"_RunEventProgram@8");
pGetPortFrequency = GetProcAddress(ExtDriver,"_GetPortFrequency@8"); pGetPortFrequency = GetProcAddress(ExtDriver,"_GetPortFrequency@8");
pSendWebRequest = GetProcAddress(ExtDriver,"_SendWebRequest@16");
pGetLatLon = GetProcAddress(ExtDriver,"_GetLatLon@8");
if (pGetLOC) if (pGetLOC)
@ -2190,13 +2180,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Debugprintf("|Enter HouseKeeping"); Debugprintf("|Enter HouseKeeping");
DoHouseKeeping(FALSE); DoHouseKeeping(FALSE);
} }
if (APIClock < NOW)
{
SendBBSDataToPktMap();
APIClock = NOW + 7200; // Every 2 hours
}
tm = gmtime(&NOW); tm = gmtime(&NOW);
if (tm->tm_wday == 0) // Sunday if (tm->tm_wday == 0) // Sunday
@ -2830,12 +2813,6 @@ gotAddr:
EndDialog(hDlg, LOWORD(wParam)); EndDialog(hDlg, LOWORD(wParam));
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
return TRUE; return TRUE;
} }
@ -3077,6 +3054,7 @@ static PSOCKADDR_IN psin;
SOCKET sock; SOCKET sock;
BOOL Initialise() BOOL Initialise()
{ {
int i, len; int i, len;
@ -3091,8 +3069,6 @@ BOOL Initialise()
GetTimeZoneInformation(&TimeZoneInformation); GetTimeZoneInformation(&TimeZoneInformation);
Debugprintf("%d", sizeof(struct MsgInfo));
_tzset(); _tzset();
_MYTIMEZONE = timezone; _MYTIMEZONE = timezone;
_MYTIMEZONE = TimeZoneInformation.Bias * 60; _MYTIMEZONE = TimeZoneInformation.Bias * 60;
@ -3404,8 +3380,6 @@ BOOL Initialise()
CreatePipeThread(); CreatePipeThread();
GetPGConfig(); GetPGConfig();
APIClock = 0;
return TRUE; return TRUE;
} }

View File

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

493
BPQMail.vcproj Normal file
View File

@ -0,0 +1,493 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="BPQMail"
ProjectGUID="{3766AA10-C777-4ED8-A83D-F1452DE9B665}"
RootNamespace="TelnetServer"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
CommandLine=""
Outputs=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\CKernel;..\CInclude;..\CommonSource;..\BPQMail"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USE_32BIT_TIME_T"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="4"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="..\Include"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="..\lib\bpq32.lib wsock32.lib comctl32.lib winmm.lib ..\lib\libconfig.lib DbgHelp.lib"
OutputFile="c:\DevProgs\bpq32\BPQMail.exe"
LinkIncremental="2"
IgnoreAllDefaultLibraries="false"
IgnoreDefaultLibraryNames="LIBCMT"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(IntDir)$(TargetName).pdb"
GenerateMapFile="true"
MapFileName="$(IntDir)\BBSListings\bpqmail.map"
MapExports="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
CommandLine=""
/>
<Tool
Name="VCCustomBuildTool"
CommandLine=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\CKernel;..\CInclude;..\CommonSource;..\BPQMail"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USE_32BIT_TIME_T"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="..\Include"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="..\lib\bpq32.lib wsock32.lib comctl32.lib winmm.lib ..\lib\libconfig.lib DbgHelp.lib"
OutputFile="c:\DevProgs\bpq32\BPQMail.exe"
LinkIncremental="1"
GenerateDebugInformation="true"
ProgramDatabaseFile="c:\DevProgs\bpq32\BPQMail.pdb"
GenerateMapFile="true"
MapFileName="c:\DevProgs\bpq32\BPQMail.map"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\CommonSource\Alloc.c"
>
</File>
<File
RelativePath="..\CommonSource\BBSHTMLConfig.c"
>
</File>
<File
RelativePath="..\CommonSource\BBSUtilities.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="2"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\BPQMail.c"
>
</File>
<File
RelativePath=".\BPQMailConfig.c"
>
</File>
<File
RelativePath="..\CommonSource\CMSAuth.c"
>
</File>
<File
RelativePath="..\CommonSource\FBBRoutines.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\Housekeeping.c"
>
</File>
<File
RelativePath="..\CommonSource\HTMLCommonCode.c"
>
</File>
<File
RelativePath="..\CommonSource\LzFind.c"
>
</File>
<File
RelativePath="..\CommonSource\lzhuf32.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="2"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\LzmaDec.c"
>
</File>
<File
RelativePath="..\CommonSource\LzmaEnc.c"
>
</File>
<File
RelativePath="..\CommonSource\LzmaLib.c"
>
</File>
<File
RelativePath=".\mailapi.c"
>
</File>
<File
RelativePath="..\CommonSource\MailCommands.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\MailDataDefs.c"
>
</File>
<File
RelativePath="..\CommonSource\MailRouting.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\MailTCP.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\MBLRoutines.c"
>
</File>
<File
RelativePath=".\Monitor.c"
>
</File>
<File
RelativePath="..\CommonSource\Multicast.c"
>
</File>
<File
RelativePath=".\MultiConsole.c"
>
</File>
<File
RelativePath="..\CommonSource\NNTPRoutines.c"
>
</File>
<File
RelativePath="..\CommonSource\UIRoutines.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\utf8Routines.c"
>
</File>
<File
RelativePath="..\CommonSource\WebMail.c"
>
</File>
<File
RelativePath="..\CommonSource\WPRoutines.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\bpqmailrc.h"
>
</File>
<File
RelativePath="..\CommonSource\Versions.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\BPQMail.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

207
BPQMail.vcxproj Normal file
View File

@ -0,0 +1,207 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3766AA10-C777-4ED8-A83D-F1452DE9B665}</ProjectGuid>
<RootNamespace>TelnetServer</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
<Command />
</CustomBuildStep>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\CKernel;..\CInclude;..\CommonSource;..\BPQMail;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>..\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>..\lib\bpq32.lib;wsock32.lib;comctl32.lib;winmm.lib;..\lib\libconfig.lib;DbgHelp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>c:\DevProgs\bpq32\BPQMail.exe</OutputFile>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>LIBCMT;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(IntDir)BBSListings\bpqmail.map</MapFileName>
<MapExports>true</MapExports>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PreBuildEvent>
<Command />
</PreBuildEvent>
<CustomBuildStep>
<Command />
</CustomBuildStep>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\CKernel;..\CInclude;..\CommonSource;..\BPQMail;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>..\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>..\lib\bpq32.lib;wsock32.lib;comctl32.lib;winmm.lib;..\lib\libconfig.lib;DbgHelp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>c:\DevProgs\bpq32\BPQMail.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>c:\DevProgs\bpq32\BPQMail.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>c:\DevProgs\bpq32\BPQMail.map</MapFileName>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LinkTimeCodeGeneration />
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Alloc.c" />
<ClCompile Include="BBSHTMLConfig.c" />
<ClCompile Include="BBSUtilities.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<AssemblerOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">All</AssemblerOutput>
<AssemblerListingLocation Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)</AssemblerListingLocation>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="BPQMail.c" />
<ClCompile Include="BPQMailConfig.c" />
<ClCompile Include="CMSAuth.c" />
<ClCompile Include="FBBRoutines.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="Housekeeping.c" />
<ClCompile Include="HTMLCommonCode.c" />
<ClCompile Include="LzFind.c" />
<ClCompile Include="lzhuf32.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<AssemblerOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">All</AssemblerOutput>
<AssemblerListingLocation Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)</AssemblerListingLocation>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="LzmaDec.c" />
<ClCompile Include="LzmaEnc.c" />
<ClCompile Include="LzmaLib.c" />
<ClCompile Include="MailCommands.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="MailDataDefs.c" />
<ClCompile Include="MailRouting.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="MailTCP.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="MBLRoutines.c" />
<ClCompile Include="Monitor.c" />
<ClCompile Include="Multicast.c" />
<ClCompile Include="MultiConsole.c" />
<ClCompile Include="NNTPRoutines.c" />
<ClCompile Include="UIRoutines.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="utf8Routines.c" />
<ClCompile Include="WebMail.c" />
<ClCompile Include="WPRoutines.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="bpqmailrc.h" />
<ClInclude Include="Versions.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="BPQMail.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

113
BPQMail.vcxproj.filters Normal file
View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Alloc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BBSHTMLConfig.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BBSUtilities.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQMail.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQMailConfig.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CMSAuth.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="FBBRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Housekeeping.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HTMLCommonCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzFind.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="lzhuf32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzmaDec.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzmaEnc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzmaLib.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailCommands.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailDataDefs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailRouting.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailTCP.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MBLRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Monitor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Multicast.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MultiConsole.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="NNTPRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="UIRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="utf8Routines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WebMail.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WPRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="bpqmailrc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Versions.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="BPQMail.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

228
BPQRemotePTT.vcproj Normal file
View File

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="BPQRemotePTT"
ProjectGUID="{E9A342AF-65CF-4E38-9079-216264179675}"
RootNamespace="BPQRemotePTT"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\xxx"
IntermediateDirectory="c:\dev\msdev2005\intermed\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Debug/BPQRemotePTT.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="true"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/BPQRemotePTT.pch"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="WS2_32.Lib Psapi.lib ..\lib\libconfigd.lib"
OutputFile="c:\DevProgs\bpq32\BPQRemotePTT.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/bpq32.pdb"
GenerateMapFile="true"
MapFileName="c:\devprogs\bpq32\bpqpp.map"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/BPQRemotePTT.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\xxx"
IntermediateDirectory="c:\msdev2005\intermed\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Release/BPQRemotePTT.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\cinclude"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="C:\msdev2005\Intermed\Release/BPQRemotePTT.pch"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="WS2_32.Lib Psapi.lib ..\lib\libconfig.lib"
OutputFile="c:\DevProgs\bpq32\BPQRemotePTT.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile=".\Release/BPQRemotePTT.pdb"
GenerateMapFile="true"
MapFileName="c:\devprogs\bpq32\BPQRemotePTT.map"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/BPQRemotePTT.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
>
<File
RelativePath=".\BPQRemotePTT.c"
>
</File>
<File
RelativePath=".\BPQRemotePTT.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

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) ; LRESULT APIENTRY MonProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ;
extern struct CMDX COMMANDS[]; extern CMDX COMMANDS[];
extern int APPL1; extern int APPL1;
static HMENU trayMenu; static HMENU trayMenu;

230
BPQWinAPP.vcproj Normal file
View File

@ -0,0 +1,230 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="BPQWinAPP"
ProjectGUID="{005A91EA-3A00-4FB4-ADD9-EB78DBFA2B81}"
RootNamespace="BPQWinAPP"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="C:\Dev\Msdev200\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Debug/BPQWinAPP.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="C:\Users\johnw\OneDrive\Dev\Source\bpq32\Commonsource;C:\Users\johnw\OneDrive\Dev\Source\bpq32\CInclude"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="true"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/BPQWinAPP.pch"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="..\lib\bpq32.lib DbgHelp.lib"
OutputFile="c:\DevProgs\bpq32\bpq32.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/bpq32.pdb"
GenerateMapFile="true"
SubSystem="2"
StackReserveSize="0"
StackCommitSize="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/BPQWinAPP.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Release/BPQWinAPP.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="C:\Users\johnw\OneDrive\Dev\Source\bpq32\Commonsource"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="C:\msdev2005\Intermed\Release/BPQWinAPP.pch"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="..\lib\bpq32.lib DbgHelp.lib"
OutputFile="c:\DevProgs\bpq32\bpq32.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile=".\Release/bpq32.pdb"
GenerateMapFile="true"
MapFileName="c:\DevProgs\bpq32\bpq32app.map"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/BPQWinAPP.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
>
<File
RelativePath=".\BPQWinAPP.c"
>
</File>
<File
RelativePath=".\BPQWinAPP.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

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

29
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 ? and * wildcards to NODES command (74)
// Add Port RADIO config parameter (74) // Add Port RADIO config parameter (74)
// Version 6.0.24.1 August 2023 // Version 6.0.24.1 August 2024
// Apply NODES command wildcard to alias as well a call (2) // Apply NODES command wildcard to alias as well a call (2)
// Add STOPPORT/STARTPORT to VARA Driver (2) // Add STOPPORT/STARTPORT to VARA Driver (2)
@ -1227,18 +1227,8 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// Allow interlocking of KISS and Session mode ports (eg ARDOP and VARA) (45) // Allow interlocking of KISS and Session mode ports (eg ARDOP and VARA) (45)
// Add ARDOP UI Packets to MH (45) // Add ARDOP UI Packets to MH (45)
// Add support for Qtsm Mgmt Interface (45) // Add support for Qtsm Mgmt Interface (45)
// NodeAPI improvements (46)
// Add MQTT Interface (46)
// Fix buffer leak in ARDOP code(46)
// Fix possible crash if MQTT not in use (47)
// 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 #define CKernel
@ -1379,9 +1369,6 @@ extern struct _LINKTABLE * LINKS;
extern int LINK_TABLE_LEN; extern int LINK_TABLE_LEN;
extern int MAXLINKS; extern int MAXLINKS;
extern double LatFromLOC;
extern double LonFromLOC;
extern int BPQHOSTAPI(); extern int BPQHOSTAPI();
extern int INITIALISEPORTS(); extern int INITIALISEPORTS();
@ -3076,7 +3063,7 @@ SkipInit:
if (AttachedProcesses < 2) if (AttachedProcesses < 2)
{ {
if (AUTOSAVE) if (AUTOSAVE == 1)
SaveNodes(); SaveNodes();
if (AUTOSAVEMH) if (AUTOSAVEMH)
SaveMH(); SaveMH();
@ -6634,14 +6621,6 @@ DllExport char * APIENTRY GetLOC()
return LOC; return LOC;
} }
DllExport void APIENTRY GetLatLon(double * lat, double * lon)
{
*lat = LatFromLOC;
*lon = LonFromLOC;
return;
}
// UZ7HO Dll PTT interface // UZ7HO Dll PTT interface
// 1 ext_PTT_info // 1 ext_PTT_info

625
CBPQ32.vcproj Normal file
View File

@ -0,0 +1,625 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="CBPQ32"
ProjectGUID="{8EFA1E59-8654-4A23-8102-AA77A074D57C}"
RootNamespace="CBPQ32"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
<DefaultToolFile
FileName="masm.rules"
/>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="d:\devprogs\bpq32"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="MASM"
PreserveIdentifierCase="3"
IncludePaths="..\CInclude"
EnableMASM51Compatibility="true"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\CInclude;..\CommonSource;..\CKernel"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BPQ32_EXPORTS;MDIKERNEL;_USE_32BIT_TIME_T;BPQ32"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
AssemblerOutput="2"
AssemblerListingLocation="c:\devprogs\bpq32\listings\debug\"
BrowseInformation="1"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /section:_BPQDATA,srw"
AdditionalDependencies="WS2_32.Lib winmm.lib DbgHelp.lib comctl32.lib Iphlpapi.lib setupapi.lib ..\lib\libconfigd.lib miniupnpc.lib zlibstat.lib"
OutputFile="c:\DevProgs\BPQ32\bpq32.dll"
LinkIncremental="2"
IgnoreAllDefaultLibraries="false"
IgnoreDefaultLibraryNames="LIBCMTD.lib"
ModuleDefinitionFile="..\CommonSource\bpq32.def"
GenerateDebugInformation="true"
GenerateMapFile="true"
MapFileName="c:\DevProgs\BPQ32\bpqdev.map"
MapExports="true"
SubSystem="2"
HeapCommitSize="8000000"
StackCommitSize="4000000"
EnableCOMDATFolding="1"
EntryPointSymbol=""
BaseAddress="0x42000000"
ImportLibrary="..\lib\bpq32.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ConfigurationName)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="&quot;C:\Program Files\7-Zip\7z.exe&quot; a C:\DevProgs\BPQ32\bpq32.zip C:\DevProgs\BPQ32\bpq32.dll &amp;&amp; myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll &amp;&amp; del C:\DevProgs\BPQ32\bpq32.dll"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="0"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="MASM"
PreserveIdentifierCase="3"
AssembledCodeListingFile="$(IntDir)\$(InputName)"
IncludePaths="..\CInclude"
ListAllAvailableInformation="true"
EnableAssemblyGeneratedCodeListing="true"
EnableFalseConditionalsInListing="true"
EnableMASM51Compatibility="true"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/D &quot;MDIKERNEL&quot;"
Optimization="0"
WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\CInclude;..\CommonSource;..\CKernel"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;BPQ32_EXPORTS;MDIKERNEL;_USE_32BIT_TIME_T"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
AssemblerOutput="2"
AssemblerListingLocation="c:\devprogs\bpq32\listings\"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /section:_BPQDATA,srw"
AdditionalDependencies="WS2_32.Lib winmm.lib comctl32.lib setupapi.lib ..\lib\libconfig.lib miniupnpc.lib zlibstat.lib DbgHelp.lib"
OutputFile="C:\DevProgs\BPQ32\bpq32.dll"
LinkIncremental="1"
IgnoreDefaultLibraryNames=""
ModuleDefinitionFile="..\CommonSource\bpq32.def"
GenerateDebugInformation="true"
ProgramDatabaseFile="c:\DevProgs\BPQ32\bpq32.pdb"
GenerateMapFile="true"
MapFileName="c:\DevProgs\BPQ32\bpqpdn.map"
MapExports="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
BaseAddress="0x42000000"
ImportLibrary="C:\Dev\Msdev2005\Projects\BPQ32\lib\bpq32.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ConfigurationName)\$(ProjectName).bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="&quot;C:\Program Files\7-Zip\7z.exe&quot; a C:\DevProgs\BPQ32\bpq32.zip C:\DevProgs\BPQ32\bpq32.dll &amp;&amp; myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll &amp;&amp; del C:\DevProgs\BPQ32\bpq32.dll"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\6pack.c"
>
</File>
<File
RelativePath="..\CommonSource\adif.c"
>
</File>
<File
RelativePath="..\CommonSource\AEAPactor.c"
>
</File>
<File
RelativePath="..\CommonSource\AGWAPI.c"
>
</File>
<File
RelativePath="..\CommonSource\AGWMoncode.c"
>
</File>
<File
RelativePath=".\AISCommon.c"
>
</File>
<File
RelativePath="..\CommonSource\APRSCode.c"
>
</File>
<File
RelativePath=".\APRSIconData.c"
>
</File>
<File
RelativePath=".\APRSStdPages.c"
>
</File>
<File
RelativePath="..\CommonSource\ARDOP.c"
>
</File>
<File
RelativePath="..\CommonSource\asmDOSAPI.asm"
>
</File>
<File
RelativePath=".\base64.c"
>
</File>
<File
RelativePath="..\CommonSource\Bpq32.c"
>
</File>
<File
RelativePath="..\CommonSource\bpqaxip.c"
>
</File>
<File
RelativePath="..\CommonSource\bpqether.c"
>
</File>
<File
RelativePath="..\CommonSource\bpqhdlc.c"
>
</File>
<File
RelativePath="..\CommonSource\BPQINP3.c"
>
</File>
<File
RelativePath="..\CommonSource\BPQNRR.c"
>
</File>
<File
RelativePath=".\BPQTermMDI.c"
>
</File>
<File
RelativePath="..\CommonSource\BPQtoAGW.c"
>
</File>
<File
RelativePath="..\CommonSource\bpqvkiss.c"
>
</File>
<File
RelativePath="..\CommonSource\cMain.c"
>
</File>
<File
RelativePath="..\CommonSource\Cmd.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\CMSAuth.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\CommonCode.c"
>
</File>
<File
RelativePath="..\CommonSource\compatbits.c"
>
</File>
<File
RelativePath="..\CommonSource\config.c"
>
</File>
<File
RelativePath="..\CommonSource\datadefs.c"
>
</File>
<File
RelativePath="..\CommonSource\DOSAPI.c"
>
</File>
<File
RelativePath=".\DRATS.c"
>
</File>
<File
RelativePath=".\Events.c"
>
</File>
<File
RelativePath="..\CommonSource\FLDigi.c"
>
</File>
<File
RelativePath=".\FreeDATA.c"
>
</File>
<File
RelativePath="..\CommonSource\HALDriver.c"
>
</File>
<File
RelativePath="..\CommonSource\HFCommon.c"
>
</File>
<File
RelativePath="..\CommonSource\hid.c"
>
</File>
<File
RelativePath=".\HSMODEM.c"
>
</File>
<File
RelativePath="..\CommonSource\HTTPcode.c"
>
</File>
<File
RelativePath="..\CommonSource\IPCode.c"
>
</File>
<File
RelativePath="..\CommonSource\KAMPactor.c"
>
</File>
<File
RelativePath="..\CommonSource\kiss.c"
>
</File>
<File
RelativePath="..\CommonSource\KISSHF.c"
>
</File>
<File
RelativePath="..\CommonSource\L2Code.c"
>
</File>
<File
RelativePath="..\CommonSource\L3Code.c"
>
</File>
<File
RelativePath="..\CommonSource\L4Code.c"
>
</File>
<File
RelativePath="..\CommonSource\md5.c"
>
</File>
<File
RelativePath="..\CommonSource\Moncode.c"
>
</File>
<File
RelativePath="..\CommonSource\MULTIPSK.c"
>
</File>
<File
RelativePath=".\nodeapi.c"
>
</File>
<File
RelativePath=".\png.c"
>
</File>
<File
RelativePath=".\pngerror.c"
>
</File>
<File
RelativePath=".\pngget.c"
>
</File>
<File
RelativePath=".\pngmem.c"
>
</File>
<File
RelativePath=".\pngread.c"
>
</File>
<File
RelativePath=".\pngrio.c"
>
</File>
<File
RelativePath=".\pngrtran.c"
>
</File>
<File
RelativePath=".\pngrutil.c"
>
</File>
<File
RelativePath=".\pngset.c"
>
</File>
<File
RelativePath=".\pngtrans.c"
>
</File>
<File
RelativePath=".\pngvcrd.c"
>
</File>
<File
RelativePath=".\pngwio.c"
>
</File>
<File
RelativePath=".\pngwrite.c"
>
</File>
<File
RelativePath=".\pngwtran.c"
>
</File>
<File
RelativePath=".\pngwutil.c"
>
</File>
<File
RelativePath="..\CommonSource\PortMapper.c"
>
</File>
<File
RelativePath="..\CommonSource\RigControl.c"
>
</File>
<File
RelativePath="..\CommonSource\SCSPactor.c"
>
</File>
<File
RelativePath="..\CommonSource\SCSTrackeMulti.c"
>
</File>
<File
RelativePath="..\CommonSource\SCSTracker.c"
>
</File>
<File
RelativePath="..\CommonSource\SerialPort.c"
>
</File>
<File
RelativePath="..\CommonSource\TelnetV6.c"
>
</File>
<File
RelativePath="..\CommonSource\TNCCode.c"
>
</File>
<File
RelativePath="..\CommonSource\TNCEmulators.c"
>
</File>
<File
RelativePath="..\CommonSource\UIARQ.c"
>
</File>
<File
RelativePath=".\upnp.c"
>
</File>
<File
RelativePath="..\CommonSource\utf8Routines.c"
>
</File>
<File
RelativePath="..\CommonSource\UZ7HODrv.c"
>
</File>
<File
RelativePath="..\CommonSource\V4.c"
>
</File>
<File
RelativePath="..\CommonSource\VARA.c"
>
</File>
<File
RelativePath="..\CommonSource\WINMOR.c"
>
</File>
<File
RelativePath="..\CommonSource\WinRPR.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\CommonSource\asmstrucs.h"
>
</File>
<File
RelativePath="..\CommonSource\bpq32.def"
>
</File>
<File
RelativePath="..\CommonSource\CHeaders.h"
>
</File>
<File
RelativePath="..\CommonSource\compatbits.h"
>
</File>
<File
RelativePath="..\CKernel\kernelresource.h"
>
</File>
<File
RelativePath="..\CInclude\Strucs.inc"
>
</File>
<File
RelativePath="..\CommonSource\Versions.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\CommonSource\KernelScript1.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

232
CBPQ32.vcxproj Normal file
View File

@ -0,0 +1,232 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{8EFA1E59-8654-4A23-8102-AA77A074D57C}</ProjectGuid>
<RootNamespace>CBPQ32</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>15.0.28127.55</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<MASM>
<PreserveIdentifierCase>3</PreserveIdentifierCase>
<IncludePaths>..\CInclude</IncludePaths>
<EnableMASM51Compatibility>true</EnableMASM51Compatibility>
</MASM>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\CInclude;..\CommonSource;..\CKernel;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BPQ32_EXPORTS;MDIKERNEL;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader />
<AssemblerOutput>All</AssemblerOutput>
<AssemblerListingLocation>c:\devprogs\bpq32\listings\debug\</AssemblerListingLocation>
<BrowseInformation>true</BrowseInformation>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalOptions> /section:_BPQDATA,srw %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>WS2_32.Lib;winmm.lib;DbgHelp.lib;comctl32.lib;Iphlpapi.lib;setupapi.lib;..\lib\libconfig.lib;miniupnpc.lib;zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>c:\DevProgs\BPQ32\bpq32.dll</OutputFile>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>LIBCMTD.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ModuleDefinitionFile>..\CommonSource\bpq32.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>c:\DevProgs\BPQ32\bpqdev.map</MapFileName>
<MapExports>true</MapExports>
<SubSystem>Windows</SubSystem>
<HeapCommitSize>8000000</HeapCommitSize>
<StackCommitSize>4000000</StackCommitSize>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
<EntryPointSymbol />
<BaseAddress>0x42000000</BaseAddress>
<ImportLibrary>..\lib\bpq32.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
<Bscmake>
<OutputFile>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(Configuration)\$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>"C:\Program Files\7-Zip\7z.exe" a C:\DevProgs\BPQ32\bpq32.zip C:\DevProgs\BPQ32\bpq32.dll &amp;&amp; myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll &amp;&amp; del C:\DevProgs\BPQ32\bpq32.dll</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<MASM>
<PreserveIdentifierCase>3</PreserveIdentifierCase>
<AssembledCodeListingFile>$(IntDir)$(ProjectName)</AssembledCodeListingFile>
<IncludePaths>..\CInclude</IncludePaths>
<ListAllAvailableInformation>true</ListAllAvailableInformation>
<EnableAssemblyGeneratedCodeListing>true</EnableAssemblyGeneratedCodeListing>
<EnableFalseConditionalsInListing>true</EnableFalseConditionalsInListing>
<EnableMASM51Compatibility>true</EnableMASM51Compatibility>
</MASM>
<ClCompile>
<AdditionalOptions>/D "MDIKERNEL" %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
<WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\CInclude;..\CommonSource;..\CKernel;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BPQ32_EXPORTS;MDIKERNEL;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader />
<AssemblerOutput>All</AssemblerOutput>
<AssemblerListingLocation>c:\devprogs\bpq32\listings\</AssemblerListingLocation>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalOptions> /section:_BPQDATA,srw %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>WS2_32.Lib;winmm.lib;DbgHelp.lib;comctl32.lib;setupapi.lib;..\lib\libconfig.lib;miniupnpc.lib;zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>C:\DevProgs\BPQ32\bpq32.dll</OutputFile>
<ModuleDefinitionFile>..\CommonSource\bpq32.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>c:\DevProgs\BPQ32\bpq32.pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>c:\DevProgs\BPQ32\bpqpdn.map</MapFileName>
<MapExports>true</MapExports>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LinkTimeCodeGeneration />
<BaseAddress>0x42000000</BaseAddress>
<ImportLibrary>C:\Dev\Msdev2005\Projects\BPQ32\lib\bpq32.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<Bscmake>
<OutputFile>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(Configuration)\$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>"C:\Program Files\7-Zip\7z.exe" a C:\DevProgs\BPQ32\bpq32.zip C:\DevProgs\BPQ32\bpq32.dll &amp;&amp; myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll &amp;&amp; del C:\DevProgs\BPQ32\bpq32.dll</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="adif.c" />
<ClCompile Include="AEAPactor.c" />
<ClCompile Include="AGWAPI.c" />
<ClCompile Include="AGWMoncode.c" />
<ClCompile Include="AISCommon.c" />
<ClCompile Include="APRSCode.c" />
<ClCompile Include="APRSStdPages.c" />
<ClCompile Include="ARDOP.c" />
<ClCompile Include="Bpq32.c" />
<ClCompile Include="bpqaxip.c" />
<ClCompile Include="bpqether.c" />
<ClCompile Include="bpqhdlc.c" />
<ClCompile Include="BPQINP3.c" />
<ClCompile Include="BPQNRR.c" />
<ClCompile Include="BPQTermMDI.c" />
<ClCompile Include="BPQtoAGW.c" />
<ClCompile Include="bpqvkiss.c" />
<ClCompile Include="cMain.c" />
<ClCompile Include="Cmd.c" />
<ClCompile Include="CMSAuth.c" />
<ClCompile Include="CommonCode.c" />
<ClCompile Include="compatbits.c" />
<ClCompile Include="config.c" />
<ClCompile Include="datadefs.c" />
<ClCompile Include="DOSAPI.c" />
<ClCompile Include="FLDigi.c" />
<ClCompile Include="HALDriver.c" />
<ClCompile Include="HFCommon.c" />
<ClCompile Include="hid.c" />
<ClCompile Include="HSMODEM.c" />
<ClCompile Include="HTTPcode.c" />
<ClCompile Include="IPCode.c" />
<ClCompile Include="KAMPactor.c" />
<ClCompile Include="kiss.c" />
<ClCompile Include="KISSHF.c" />
<ClCompile Include="L2Code.c" />
<ClCompile Include="L3Code.c" />
<ClCompile Include="L4Code.c" />
<ClCompile Include="md5.c" />
<ClCompile Include="Moncode.c" />
<ClCompile Include="MULTIPSK.c" />
<ClCompile Include="PortMapper.c" />
<ClCompile Include="RigControl.c" />
<ClCompile Include="SCSPactor.c" />
<ClCompile Include="SCSTrackeMulti.c" />
<ClCompile Include="SCSTracker.c" />
<ClCompile Include="SerialPort.c" />
<ClCompile Include="TelnetV6.c" />
<ClCompile Include="TNCCode.c" />
<ClCompile Include="TNCEmulators.c" />
<ClCompile Include="UIARQ.c" />
<ClCompile Include="upnp.c" />
<ClCompile Include="utf8Routines.c" />
<ClCompile Include="UZ7HODrv.c" />
<ClCompile Include="V4.c" />
<ClCompile Include="VARA.c" />
<ClCompile Include="WINMOR.c" />
<ClCompile Include="WinRPR.c" />
</ItemGroup>
<ItemGroup>
<MASM Include="asmDOSAPI.asm" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\CKernel\kernelresource.h" />
<ClInclude Include="asmstrucs.h" />
<ClInclude Include="CHeaders.h" />
<ClInclude Include="compatbits.h" />
<ClInclude Include="Versions.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\CInclude\Strucs.inc" />
<None Include="bpq32.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="KernelScript1.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
</ImportGroup>
</Project>

228
CBPQ32.vcxproj.filters Normal file
View File

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="adif.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AEAPactor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AGWAPI.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AGWMoncode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AISCommon.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="APRSCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="APRSStdPages.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ARDOP.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Bpq32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqaxip.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqether.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqhdlc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQINP3.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQNRR.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQTermMDI.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQtoAGW.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqvkiss.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="cMain.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Cmd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CMSAuth.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CommonCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="compatbits.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="config.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="datadefs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DOSAPI.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="FLDigi.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HALDriver.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HFCommon.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="hid.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HSMODEM.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HTTPcode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="IPCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="KAMPactor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="kiss.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="KISSHF.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="L2Code.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="L3Code.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="L4Code.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="md5.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Moncode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MULTIPSK.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="PortMapper.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="RigControl.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SCSPactor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SCSTrackeMulti.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SCSTracker.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SerialPort.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TelnetV6.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TNCCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TNCEmulators.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="UIARQ.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="upnp.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="utf8Routines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="UZ7HODrv.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="V4.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="VARA.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WINMOR.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WinRPR.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<MASM Include="asmDOSAPI.asm">
<Filter>Source Files</Filter>
</MASM>
</ItemGroup>
<ItemGroup>
<ClInclude Include="asmstrucs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="CHeaders.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="compatbits.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\CKernel\kernelresource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Versions.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="bpq32.def">
<Filter>Header Files</Filter>
</None>
<None Include="..\CInclude\Strucs.inc">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="KernelScript1.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -93,7 +93,7 @@ VOID DoTheCommand(TRANSPORTENTRY * Session);
char * MOVEANDCHECK(TRANSPORTENTRY * Session, char * Bufferptr, char * Source, int Len); char * MOVEANDCHECK(TRANSPORTENTRY * Session, char * Bufferptr, char * Source, int Len);
VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer); VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer);
char * FormatUptime(int Uptime); char * FormatUptime(int Uptime);
char * strlop(const char * buf, char delim); char * strlop(char * buf, char delim);
BOOL CompareCalls(UCHAR * c1, UCHAR * c2); BOOL CompareCalls(UCHAR * c1, UCHAR * c2);
VOID PostDataAvailable(TRANSPORTENTRY * Session); VOID PostDataAvailable(TRANSPORTENTRY * Session);
@ -109,7 +109,7 @@ int cCOUNT_AT_L2(struct _LINKTABLE * LINK);
VOID SENDL4CONNECT(TRANSPORTENTRY * Session); VOID SENDL4CONNECT(TRANSPORTENTRY * Session);
VOID CloseSessionPartner(TRANSPORTENTRY * Session); VOID CloseSessionPartner(TRANSPORTENTRY * Session);
int COUNTNODES(struct ROUTE * ROUTE); int COUNTNODES();
int DecodeNodeName(char * NodeName, char * ptr);; int DecodeNodeName(char * NodeName, char * ptr);;
VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer); VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer);
int cCOUNT_AT_L2(struct _LINKTABLE * LINK); int cCOUNT_AT_L2(struct _LINKTABLE * LINK);
@ -153,7 +153,6 @@ int APIENTRY Reboot();
int APIENTRY Reconfig(); int APIENTRY Reconfig();
Dll int APIENTRY SaveNodes (); Dll int APIENTRY SaveNodes ();
struct SEM; struct SEM;
void GetSemaphore(struct SEM * Semaphore, int ID); void GetSemaphore(struct SEM * Semaphore, int ID);
@ -252,7 +251,6 @@ extern UCHAR MYCALLWITHALIAS[13];
extern APPLCALLS APPLCALLTABLE[NumberofAppls]; extern APPLCALLS APPLCALLTABLE[NumberofAppls];
extern UCHAR MYNODECALL[]; // NODE CALLSIGN (ASCII) extern UCHAR MYNODECALL[]; // NODE CALLSIGN (ASCII)
extern char NODECALLLOPPED[]; // NODE CALLSIGN (ASCII). Null terminated
extern UCHAR MYNETROMCALL[]; // NETROM CALLSIGN (ASCII) extern UCHAR MYNETROMCALL[]; // NETROM CALLSIGN (ASCII)
extern UCHAR NETROMCALL[]; // NETORM CALL (AX25) extern UCHAR NETROMCALL[]; // NETORM CALL (AX25)
@ -359,7 +357,7 @@ extern char * ConfigBuffer;
extern char * WL2KReportLine[]; extern char * WL2KReportLine[];
extern struct CMDX COMMANDS[]; extern CMDX COMMANDS[];
extern int QCOUNT, MAXBUFFS, MAXCIRCUITS, L4DEFAULTWINDOW, L4T1, CMDXLEN; extern int QCOUNT, MAXBUFFS, MAXCIRCUITS, L4DEFAULTWINDOW, L4T1, CMDXLEN;
extern char CMDALIAS[ALIASLEN][NumberofAppls]; extern char CMDALIAS[ALIASLEN][NumberofAppls];
@ -398,7 +396,6 @@ extern int REALTIMETICKS;
extern time_t CurrentSecs; extern time_t CurrentSecs;
extern time_t lastSlowSecs; extern time_t lastSlowSecs;
extern time_t lastSaveSecs;
// SNMP Variables // SNMP Variables
@ -430,19 +427,4 @@ extern char Message[MaxBPQPortNo + 1][1000]; // Beacon Text
extern int MinCounter[MaxBPQPortNo + 1]; // Interval Countdown extern int MinCounter[MaxBPQPortNo + 1]; // Interval Countdown
extern BOOL SendFromFile[MaxBPQPortNo + 1]; extern BOOL SendFromFile[MaxBPQPortNo + 1];
extern BOOL MQTT;
extern char MQTT_HOST[80];
extern int MQTT_PORT;
extern char MQTT_USER[80];
extern char MQTT_PASS[80];
DllExport uint64_t APIENTRY GetPortFrequency(int PortNo, char * FreqStringMhz); DllExport uint64_t APIENTRY GetPortFrequency(int PortNo, char * FreqStringMhz);
void hookL2SessionAccepted(int Port, char * remotecall, char * ourcall, struct _LINKTABLE * LINK);
void hookL2SessionDeleted(struct _LINKTABLE * LINK);
void hookL2SessionAttempt(int Port, char * ourcall, char * remotecall, struct _LINKTABLE * LINK);
void hookL4SessionAttempt(void * STREAM, char * remotecall, char * ourcall);
void hookL4SessionAccepted(void * STREAM, char * remotecall, char * ourcall);
void hookL4SessionDeleted(struct TNCINFO * TNC, void * STREAM);

View File

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

205
Cmd.c
View File

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

View File

@ -28,7 +28,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.h>
#include "mqtt.h"
#pragma data_seg("_BPQDATA") #pragma data_seg("_BPQDATA")
@ -571,7 +570,7 @@ void * zalloc(int len)
return ptr; return ptr;
} }
char * strlop(const char * buf, char delim) char * strlop(char * buf, char delim)
{ {
// Terminate buf at delim, and return rest of string // Terminate buf at delim, and return rest of string
@ -692,7 +691,7 @@ VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer)
} }
VOID CheckForDetach(struct TNCINFO * TNC, int Stream, struct STREAMINFO * STREAM, VOID CheckForDetach(struct TNCINFO * TNC, int Stream, struct STREAMINFO * STREAM,
VOID TidyCloseProc(struct TNCINFO * TNC, int Stream), VOID ForcedCloseProc(struct TNCINFO * TNC, int Stream), VOID CloseComplete(struct TNCINFO * TNC, int Stream)) VOID TidyCloseProc(), VOID ForcedCloseProc(), VOID CloseComplete())
{ {
void ** buffptr; void ** buffptr;
@ -736,7 +735,22 @@ VOID CheckForDetach(struct TNCINFO * TNC, int Stream, struct STREAMINFO * STREAM
// Create a traffic record // Create a traffic record
hookL4SessionDeleted(TNC, STREAM); if (STREAM->Connected && STREAM->ConnectTime)
{
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1; // Or will get divide by zero error
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
STREAM->ConnectTime = 0;
}
if (STREAM->BPQtoPACTOR_Q) // Still data to send? if (STREAM->BPQtoPACTOR_Q) // Still data to send?
return; // Will close when all acked return; // Will close when all acked
@ -906,7 +920,6 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
int Totallen = 0; int Totallen = 0;
UCHAR * ptr; UCHAR * ptr;
struct PORTCONTROL * PORT = (struct PORTCONTROL *)TNC->PortRecord; struct PORTCONTROL * PORT = (struct PORTCONTROL *)TNC->PortRecord;
struct STREAMINFO * STREAM = &TNC->Streams[Stream];
// Stop Scanner // Stop Scanner
@ -939,11 +952,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
memset(Session, 0, sizeof(TRANSPORTENTRY)); memset(Session, 0, sizeof(TRANSPORTENTRY));
memcpy(STREAM->RemoteCall, Call, 9); // Save Text Callsign memcpy(TNC->Streams[Stream].RemoteCall, Call, 9); // Save Text Callsign
// May be subsequently rejected but a good place to capture calls
hookL4SessionAccepted(STREAM, Call, TNC->TargetCall);
if (AllowTR) if (AllowTR)
ConvToAX25Ex(Call, Session->L4USER); // Allow -T and -R SSID's for MPS ConvToAX25Ex(Call, Session->L4USER); // Allow -T and -R SSID's for MPS
@ -956,7 +965,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
if (NEXTID == 0) NEXTID++; // Keep non-zero if (NEXTID == 0) NEXTID++; // Keep non-zero
TNC->PortRecord->ATTACHEDSESSIONS[Stream] = Session; TNC->PortRecord->ATTACHEDSESSIONS[Stream] = Session;
STREAM->Attached = TRUE; TNC->Streams[Stream].Attached = TRUE;
Session->L4TARGET.EXTPORT = TNC->PortRecord; Session->L4TARGET.EXTPORT = TNC->PortRecord;
@ -967,7 +976,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
Session->SESSPACLEN = TNC->PortRecord->PORTCONTROL.PORTPACLEN; Session->SESSPACLEN = TNC->PortRecord->PORTCONTROL.PORTPACLEN;
Session->KAMSESSION = Stream; Session->KAMSESSION = Stream;
STREAM->Connected = TRUE; // Subsequent data to data channel TNC->Streams[Stream].Connected = TRUE; // Subsequent data to data channel
if (LogAllConnects) if (LogAllConnects)
{ {
@ -1020,7 +1029,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
char * Config; char * Config;
static char * ptr1, * ptr2; static char * ptr1, * ptr2;
BOOL ReadConfigFile(int Port, int ProcLine(char * buf, int Port)) BOOL ReadConfigFile(int Port, int ProcLine())
{ {
char buf[256],errbuf[256]; char buf[256],errbuf[256];
@ -2437,7 +2446,7 @@ static struct speed_struct
HANDLE OpenCOMPort(VOID * pPort, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits) HANDLE OpenCOMPort(VOID * pPort, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits)
{ {
char Port[256]; char Port[256];
char buf[512]; char buf[100];
// Linux Version. // Linux Version.
@ -3707,11 +3716,6 @@ VOID OpenReportingSockets()
Chatreportdest.sin_port = htons(81); Chatreportdest.sin_port = htons(81);
_beginthread(ResolveUpdateThread, 0, NULL); _beginthread(ResolveUpdateThread, 0, NULL);
printf("MQTT Enabled %d\n", MQTT);
if (MQTT)
MQTTConnect(MQTT_HOST, MQTT_PORT, MQTT_USER, MQTT_PASS);
} }
VOID WriteMiniDumpThread(); VOID WriteMiniDumpThread();
@ -4759,7 +4763,7 @@ LRESULT CALLBACK UIWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam
extern struct DATAMESSAGE * REPLYBUFFER; extern struct DATAMESSAGE * REPLYBUFFER;
char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...); char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...);
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
{ {
char FN[250]; char FN[250];
FILE *hFile; FILE *hFile;
@ -4912,7 +4916,7 @@ SOCKET OpenHTTPSock(char * Host)
{ {
err = WSAGetLastError(); err = WSAGetLastError();
Debugprintf("Resolve Failed for %s %d %x", Host, err, err); Debugprintf("Resolve Failed for %s %d %x", "api.winlink.org", err, err);
return 0 ; // Resolve failed return 0 ; // Resolve failed
} }
@ -4945,7 +4949,7 @@ SOCKET OpenHTTPSock(char * Host)
} }
static char HeaderTemplate[] = "POST %s HTTP/1.1\r\n" static char HeaderTemplate[] = "POST %s HTTP/1.1\r\n"
"Accept: app N B lication/json\r\n" "Accept: application/json\r\n"
// "Accept-Encoding: gzip,deflate,gzip, deflate\r\n" // "Accept-Encoding: gzip,deflate,gzip, deflate\r\n"
"Content-Type: application/json\r\n" "Content-Type: application/json\r\n"
"Host: %s:%d\r\n" "Host: %s:%d\r\n"
@ -4955,24 +4959,14 @@ static char HeaderTemplate[] = "POST %s HTTP/1.1\r\n"
"\r\n"; "\r\n";
DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params, char * Return) VOID SendWebRequest(SOCKET sock, char * Host, char * Request, char * Params, int Len, char * Return)
{ {
SOCKET sock;
int InputLen = 0; int InputLen = 0;
int inptr = 0; int inptr = 0;
char Buffer[4096]; char Buffer[4096];
char Header[256]; char Header[256];
char * ptr, * ptr1; char * ptr, * ptr1;
int Sent; int Sent;
int Len = strlen(Params);
if (M0LTEMap == 0)
return;
sock = OpenHTTPSock(Host);
if (sock == 0)
return;
#ifdef LINBPQ #ifdef LINBPQ
sprintf(Header, HeaderTemplate, Request, Host, 80, Len, "linbpq/", VersionString, Params); sprintf(Header, HeaderTemplate, Request, Host, 80, Len, "linbpq/", VersionString, Params);
@ -4986,7 +4980,6 @@ DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params,
{ {
int Err = WSAGetLastError(); int Err = WSAGetLastError();
Debugprintf("Error %d from Web Update send()", Err); Debugprintf("Error %d from Web Update send()", Err);
closesocket(sock);
return; return;
} }
@ -4998,10 +4991,12 @@ DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params,
{ {
int Err = WSAGetLastError(); int Err = WSAGetLastError();
Debugprintf("Error %d from Web Update recv()", Err); Debugprintf("Error %d from Web Update recv()", Err);
closesocket(sock);
return; return;
} }
// As we are using a persistant connection, can't look for close. Check
// for complete message
inptr += InputLen; inptr += InputLen;
Buffer[inptr] = 0; Buffer[inptr] = 0;
@ -5040,9 +5035,10 @@ DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params,
else else
{ {
strlop(Buffer, 13); strlop(Buffer, 13);
Debugprintf("Map Update Params - %s", Params);
Debugprintf("Map Update failed - %s", Buffer); Debugprintf("Map Update failed - %s", Buffer);
} }
closesocket(sock);
return; return;
} }
} }
@ -5054,7 +5050,6 @@ DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params,
{ {
// Just accept anything until I've sorted things with Lee // Just accept anything until I've sorted things with Lee
Debugprintf("%s", ptr1); Debugprintf("%s", ptr1);
closesocket(sock);
Debugprintf("Web Database update ok"); Debugprintf("Web Database update ok");
return; return;
} }
@ -5593,11 +5588,19 @@ void SendDataToPktMap(char *Msg)
} }
], ],
*/ */
// "contact": "string", // "contact": "string",
// "neighbours": [{"node": "G7TAJ","port": "30"}] // "neighbours": [{"node": "G7TAJ","port": "30"}]
SendWebRequest("packetnodes.spots.radio", Request, Params, Return); sock = OpenHTTPSock("packetnodes.spots.radio");
if (sock == 0)
return;
SendWebRequest(sock, "packetnodes.spots.radio", Request, Params, strlen(Params), Return);
closesocket(sock);
} }
// ="{\"neighbours\": [{\"node\": \"G7TAJ\",\"port\": \"30\"}]}"; // ="{\"neighbours\": [{\"node\": \"G7TAJ\",\"port\": \"30\"}]}";

164
ConfigDirewolf.vcxproj Normal file
View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{271FDA0A-4F41-4F35-8227-9F2F29AA5A25}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>ConsoleApplication2</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
<ProjectName>ConfigDirewolf</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>c:\devprogs\bpq32\ConfigDirewolf.exe</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="ConfigDirewolf.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

164
ConfigWinRPR.vcxproj Normal file
View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{2AD91A25-DF1B-462E-8CCB-CD1ABC627AA5}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>ConsoleApplication2</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
<ProjectName>ConfigWinRPR</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>c:\devprogs\bpq32\ConfigWinRPR.exe</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="ConfigWinRPR.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

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

118
Events.c
View File

@ -23,8 +23,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include "compatbits.h" #include "compatbits.h"
#include <string.h> #include <string.h>
#include "asmstrucs.h"
#include "tncinfo.h"
VOID __cdecl Debugprintf(const char * format, ...); VOID __cdecl Debugprintf(const char * format, ...);
@ -39,11 +37,6 @@ VOID __cdecl Debugprintf(const char * format, ...);
#endif #endif
extern BOOL EventsEnabled; extern BOOL EventsEnabled;
void MQTTReportSession(char * Msg);
extern int MQTT;
extern char Modenames[19][10];
// Runs use specified routine on certain event // Runs use specified routine on certain event
#ifndef WIN32 #ifndef WIN32
@ -117,122 +110,13 @@ DllExport void APIENTRY RunEventProgram(char * Program, char * Param)
void hookL2SessionAccepted(int Port, char * remotecall, char * ourcall, struct _LINKTABLE * LINK) void hookL2SessionAccepted(int Port, char * remotecall, char * ourcall, struct _LINKTABLE * LINK)
{ {
// Incoming SABM
LINK->ConnectTime = time(NULL);
LINK->bytesTXed = LINK->bytesRXed = 0;
strcpy(LINK->callingCall, remotecall);
strcpy(LINK->receivingCall, ourcall);
strcpy(LINK->Direction, "In");
} }
void hookL2SessionDeleted(struct _LINKTABLE * LINK) void hookL2SessionDeleted(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK)
{ {
// calculate session time and av bytes/min in and out
if (LINK->ConnectTime)
{
if (LINK->bytesTXed == 0 && LINK->bytesRXed == 0)
{
// assume failed connect and ignore for now - maybe log later
}
else
{
char Msg[256];
char timestamp[16];
time_t sessionTime = time(NULL) - LINK->ConnectTime;
double avBytesSent = LINK->bytesTXed / (sessionTime / 60.0);
double avBytesRXed = LINK->bytesRXed / (sessionTime / 60.0);
time_t Now = time(NULL);
struct tm * TM = localtime(&Now);
sprintf(timestamp, "%02d:%02d:%02d", TM->tm_hour, TM->tm_min, TM->tm_sec);
if (sessionTime == 0)
sessionTime = 1; // Or will get divide by zero error
Debugprintf("KISS Session Stats Port %d %s %s %d secs Bytes Sent %d BPM %4.2f Bytes Received %d %4.2f BPM ",
LINK->LINKPORT->PORTNUMBER, LINK->callingCall, LINK->receivingCall, sessionTime, LINK->bytesTXed, avBytesSent, LINK->bytesRXed, avBytesRXed, timestamp);
sprintf(Msg, "{\"mode\": \"%s\", \"direction\": \"%s\", \"port\": %d, \"callfrom\": \"%s\", \"callto\": \"%s\", \"time\": %d, \"bytesSent\": %d,"
"\"BPMSent\": %4.2f, \"BytesReceived\": %d, \"BPMReceived\": %4.2f, \"timestamp\": \"%s\"}",
"KISS", LINK->Direction, LINK->LINKPORT->PORTNUMBER, LINK->callingCall, LINK->receivingCall, sessionTime,
LINK->bytesTXed, avBytesSent, LINK->bytesRXed, avBytesRXed, timestamp);
if (MQTT)
MQTTReportSession(Msg);
}
LINK->ConnectTime = 0;
}
} }
void hookL2SessionAttempt(int Port, char * ourcall, char * remotecall, struct _LINKTABLE * LINK) void hookL2SessionAttempt(int Port, char * ourcall, char * remotecall, struct _LINKTABLE * LINK)
{ {
LINK->ConnectTime = time(NULL);
LINK->bytesTXed = LINK->bytesRXed = 0;
strcpy(LINK->callingCall, ourcall);
strcpy(LINK->receivingCall, remotecall);
strcpy(LINK->Direction, "Out");
} }
void hookL4SessionAttempt(struct STREAMINFO * STREAM, char * remotecall, char * ourcall)
{
// Outgoing Connect
STREAM->ConnectTime = time(NULL);
STREAM->bytesTXed = STREAM->bytesRXed = 0;
strcpy(STREAM->callingCall, ourcall);
strcpy(STREAM->receivingCall, remotecall);
strcpy(STREAM->Direction, "Out");
}
void hookL4SessionAccepted(struct STREAMINFO * STREAM, char * remotecall, char * ourcall)
{
// Incoming Connect
STREAM->ConnectTime = time(NULL);
STREAM->bytesTXed = STREAM->bytesRXed = 0;
strcpy(STREAM->callingCall, remotecall);
strcpy(STREAM->receivingCall, ourcall);
strcpy(STREAM->Direction, "In");
}
void hookL4SessionDeleted(struct TNCINFO * TNC, struct STREAMINFO * STREAM)
{
char Msg[256];
char timestamp[16];
if (STREAM->ConnectTime)
{
time_t sessionTime = time(NULL) - STREAM->ConnectTime;
double avBytesRXed = STREAM->bytesRXed / (sessionTime / 60.0);
double avBytesSent = STREAM->bytesTXed / (sessionTime / 60.0);
time_t Now = time(NULL);
struct tm * TM = localtime(&Now);
sprintf(timestamp, "%02d:%02d:%02d", TM->tm_hour, TM->tm_min, TM->tm_sec);
if (sessionTime == 0)
sessionTime = 1; // Or will get divide by zero error
sprintf(Msg, "{\"mode\": \"%s\", \"direction\": \"%s\", \"port\": %d, \"callfrom\": \"%s\", \"callto\": \"%s\", \"time\": %d, \"bytesSent\": %d,"
"\"BPMSent\": %4.2f, \"BytesReceived\": %d, \"BPMReceived\": %4.2f, \"timestamp\": \"%s\"}",
Modenames[TNC->Hardware - 1], STREAM->Direction, TNC->Port, STREAM->callingCall, STREAM->receivingCall, sessionTime,
STREAM->bytesTXed, avBytesSent, STREAM->bytesRXed, avBytesRXed, timestamp);
if (MQTT)
MQTTReportSession(Msg);
STREAM->ConnectTime = 0;
}
}

View File

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

View File

@ -65,12 +65,12 @@ extern int (WINAPI FAR *GetModuleFileNameExPtr)();
; ;
int SemHeldByAPI; int SemHeldByAPI;
void ConnecttoFLDigiThread(void * portptr); static void ConnecttoFLDigiThread(void * portptr);
void CreateMHWindow(); void CreateMHWindow();
int Update_MH_List(struct in_addr ipad, char * call, char proto); int Update_MH_List(struct in_addr ipad, char * call, char proto);
int ConnecttoFLDigi(int port); static int ConnecttoFLDigi();
static int ProcessReceivedData(int bpqport); static int ProcessReceivedData(int bpqport);
static int ProcessLine(char * buf, int Port); static int ProcessLine(char * buf, int Port);
int KillTNC(struct TNCINFO * TNC); int KillTNC(struct TNCINFO * TNC);
@ -93,7 +93,6 @@ VOID CheckFLDigiData(struct TNCINFO * TNC);
VOID SendPacket(struct TNCINFO * TNC, UCHAR * Msg, int MsgLen); VOID SendPacket(struct TNCINFO * TNC, UCHAR * Msg, int MsgLen);
int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len); int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len);
VOID SendXMLCommand(struct TNCINFO * TNC, char * Command, char * Value, char ParamType); 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 FLSlowTimer(struct TNCINFO * TNC);
VOID SendKISSCommand(struct TNCINFO * TNC, char * Msg); VOID SendKISSCommand(struct TNCINFO * TNC, char * Msg);
@ -102,6 +101,8 @@ VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC); VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len); VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len);
char * strlop(char * buf, char delim);
extern UCHAR BPQDirectory[]; extern UCHAR BPQDirectory[];
#define MAXMPSKPORTS 16 #define MAXMPSKPORTS 16
@ -591,7 +592,7 @@ pollloop:
} }
else else
{ {
SendXMLCommandInt(TNC, "modem.set_carrier", atoi(&buff->L2DATA[5]), 'I'); SendXMLCommand(TNC, "modem.set_carrier", (char *)atoi(&buff->L2DATA[5]), 'I');
} }
TNC->InternalCmd = TRUE; TNC->InternalCmd = TRUE;
@ -1481,14 +1482,14 @@ static int ProcessLine(char * buf, int Port)
return (TRUE); return (TRUE);
} }
int ConnecttoFLDigi(int port) static int ConnecttoFLDigi(int port)
{ {
_beginthread(ConnecttoFLDigiThread, 0, (void *)(size_t)port); _beginthread(ConnecttoFLDigiThread, 0, (void *)(size_t)port);
return 0; return 0;
} }
VOID ConnecttoFLDigiThread(void * portptr) static VOID ConnecttoFLDigiThread(void * portptr)
{ {
int port = (int)(size_t)portptr; int port = (int)(size_t)portptr;
char Msg[255]; char Msg[255];
@ -1636,7 +1637,7 @@ VOID ConnecttoFLDigiThread(void * portptr)
VOID UpdateStatsLine(struct TNCINFO * TNC, struct STREAMINFO * STREAM) VOID UpdateStatsLine(struct TNCINFO * TNC, struct STREAMINFO * STREAM)
{ {
sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d Resent %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d Resent %d Queued %d",
STREAM->bytesRXed, STREAM->bytesTXed, STREAM->BytesAcked, STREAM->BytesResent, STREAM->BytesOutstanding); STREAM->BytesRXed, STREAM->BytesTXed, STREAM->BytesAcked, STREAM->BytesResent, STREAM->BytesOutstanding);
SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
} }
@ -2530,7 +2531,7 @@ VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, char Channe
strcpy(STREAM->MyCall, call2); strcpy(STREAM->MyCall, call2);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0;
if (TNC->RIG && TNC->RIG != &TNC->DummyRig && strcmp(TNC->RIG->RigName, "PTT")) if (TNC->RIG && TNC->RIG != &TNC->DummyRig && strcmp(TNC->RIG->RigName, "PTT"))
{ {
@ -2579,7 +2580,7 @@ VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, char Channe
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// Make sure app is available // Make sure app is available
@ -2689,7 +2690,7 @@ AckConnectRequest:
goto SendKReply; // Repeated ACK goto SendKReply; // Repeated ACK
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0;
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
ARQ->ARQTimerState = 0; ARQ->ARQTimerState = 0;
@ -2950,7 +2951,22 @@ SendKReply:
if (STREAM->Connected) if (STREAM->Connected)
{ {
hookL4SessionDeleted(TNC, STREAM); // Create a traffic record
char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1;
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
} }
STREAM->Connecting = FALSE; STREAM->Connecting = FALSE;
@ -3013,7 +3029,7 @@ SendKReply:
buffptr->Len = Len; buffptr->Len = Len;
memcpy(buffptr->Data, &Input[1], Len); memcpy(buffptr->Data, &Input[1], Len);
STREAM->bytesRXed += Len; STREAM->BytesRXed += Len;
UpdateStatsLine(TNC, STREAM); UpdateStatsLine(TNC, STREAM);
@ -3130,7 +3146,7 @@ VOID SendARQData(struct TNCINFO * TNC, PMSGWITHLEN Buffer)
ARQ->TXHOLDQ[ARQ->TXSeq] = Buffer; ARQ->TXHOLDQ[ARQ->TXSeq] = Buffer;
STREAM->bytesTXed += Origlen; STREAM->BytesTXed += Origlen;
UpdateStatsLine(TNC, STREAM); UpdateStatsLine(TNC, STREAM);
@ -3196,7 +3212,7 @@ VOID FLReleaseTNC(struct TNCINFO * TNC)
else else
{ {
SendXMLCommand(TNC, "modem.set_by_name", TNC->FLInfo->DefaultMode, 'S'); SendXMLCommand(TNC, "modem.set_by_name", TNC->FLInfo->DefaultMode, 'S');
SendXMLCommandInt(TNC, "modem.set_carrier", TNC->FLInfo->DefaultFreq, 'I'); SendXMLCommand(TNC, "modem.set_carrier", (char *)TNC->FLInfo->DefaultFreq, 'I');
} }
} }
// Start Scanner // Start Scanner
@ -3894,27 +3910,6 @@ VOID SendXMLCommand(struct TNCINFO * TNC, char * Command, char * Value, char Par
return; 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) VOID SendXMLPoll(struct TNCINFO * TNC)
{ {
int Len; int Len;

219
FormatHTML.vcproj Normal file
View File

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="FormatHTML"
ProjectGUID="{2B892B53-6549-4872-AF51-45280ADC8AB5}"
RootNamespace="FormatHTML"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib $(NoInherit)"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib $(NoInherit)"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\FormatHTML.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\stdafx.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -347,6 +347,41 @@ loop:
return 1; 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 SuspendOtherPorts(struct TNCINFO * ThisTNC);
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC); VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
@ -832,7 +867,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
char Message[256]; char Message[256];
int Len, ret; int Len, ret;
Len = sprintf(Message, "%s", TXF); Len = sprintf(Message, TXF);
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0); ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
if (buffptr) if (buffptr)
@ -936,7 +971,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
memset(STREAM->RemoteCall, 0, 10); memset(STREAM->RemoteCall, 0, 10);
strcpy(STREAM->RemoteCall, &buff->L2DATA[2]); strcpy(STREAM->RemoteCall, &buff->L2DATA[2]);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
sprintf(TNC->WEB_TNCSTATE, "%s Connecting to %s", STREAM->MyCall, STREAM->RemoteCall); sprintf(TNC->WEB_TNCSTATE, "%s Connecting to %s", STREAM->MyCall, STREAM->RemoteCall);
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE); MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
@ -1846,7 +1881,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
if (App < 32) if (App < 32)
{ {
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY // if SendTandRtoRelay set and Appl is RMS change to RELAY
@ -1915,7 +1950,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE); MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
// Send Connect ACK // Send Connect ACK
@ -1984,7 +2019,20 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
{ {
// Create a traffic record // Create a traffic record
hookL4SessionDeleted(TNC, STREAM); char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1;
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
} }
STREAM->Connected = FALSE; // Back to Command Mode STREAM->Connected = FALSE; // Back to Command Mode
@ -2014,7 +2062,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
WritetoTrace(TNC, Msg, 256); WritetoTrace(TNC, Msg, 256);
Len -= 256; Len -= 256;
Msg += 256; Msg += 256;
STREAM->bytesRXed += 256; STREAM->BytesRXed += 256;
} }
@ -2023,9 +2071,9 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
memcpy(buffptr->Data, Msg, Len); memcpy(buffptr->Data, Msg, Len);
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
WritetoTrace(TNC, Msg, Len); WritetoTrace(TNC, Msg, Len);
STREAM->bytesRXed += Len; STREAM->BytesRXed += Len;
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
return; return;
@ -2207,7 +2255,7 @@ VOID FreeDataProcessNewConnect(struct TNCINFO * TNC, char * fromCall, char * toC
if (App < 32) if (App < 32)
{ {
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY // if SendTandRtoRelay set and Appl is RMS change to RELAY
@ -2278,7 +2326,7 @@ VOID FreeDataProcessNewConnect(struct TNCINFO * TNC, char * fromCall, char * toC
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE); MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
return; return;
@ -2378,7 +2426,7 @@ void FlushData(struct TNCINFO * TNC)
Info->toSendTimeout = 0; Info->toSendTimeout = 0;
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
} }
@ -2401,10 +2449,10 @@ static int SendAsFile(struct TNCINFO * TNC, char * Call, char * Msg, int Len)
Info->toSendCount += Len; Info->toSendCount += Len;
Info->toSendTimeout = 10; // About a second Info->toSendTimeout = 10; // About a second
STREAM->bytesTXed += Len; STREAM->BytesTXed += Len;
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
return Len; return Len;
@ -2441,7 +2489,7 @@ static void SendCQ(struct TNCINFO * TNC)
char Message[256]; char Message[256];
int Len, ret; int Len, ret;
Len = sprintf(Message, "%s", CQ); Len = sprintf(Message, CQ);
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0); ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
} }
@ -2456,7 +2504,7 @@ static void SendBeacon(struct TNCINFO * TNC, int Interval)
if (Interval > 0) if (Interval > 0)
Len = sprintf(Message, Template1, Interval); Len = sprintf(Message, Template1, Interval);
else else
Len = sprintf(Message, "%s", Template2); Len = sprintf(Message, Template2);
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0); ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
} }
@ -2671,7 +2719,7 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
WritetoTrace(TNC, Line, 256); WritetoTrace(TNC, Line, 256);
Len -= 256; Len -= 256;
Line += 256; Line += 256;
STREAM->bytesRXed += 256; STREAM->BytesRXed += 256;
} }
buffptr = GetBuff(); buffptr = GetBuff();
@ -2679,12 +2727,12 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
memcpy(buffptr->Data, Line, Len); memcpy(buffptr->Data, Line, Len);
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
WritetoTrace(TNC, Line, Len); WritetoTrace(TNC, Line, Len);
STREAM->bytesRXed += Len; STREAM->BytesRXed += Len;
} }
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
} }
return; return;
@ -2763,7 +2811,7 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
WritetoTrace(TNC, Line, 256); WritetoTrace(TNC, Line, 256);
Len -= 256; Len -= 256;
TEXT += 256; TEXT += 256;
STREAM->bytesRXed += 256; STREAM->BytesRXed += 256;
} }
buffptr = GetBuff(); buffptr = GetBuff();
@ -2771,14 +2819,14 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
memcpy(buffptr->Data, Line, Len); memcpy(buffptr->Data, Line, Len);
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
WritetoTrace(TNC, Line, Len); WritetoTrace(TNC, Line, Len);
STREAM->bytesRXed += Len; STREAM->BytesRXed += Len;
TEXT = rest; TEXT = rest;
rest = strlop(TEXT, 10); // FreeData chat ues LF rest = strlop(TEXT, 10); // FreeData chat ues LF
} }
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
} }
} }
@ -3110,8 +3158,22 @@ void ProcessTNCJSON(struct TNCINFO * TNC, char * Msg, int Len)
if (STREAM->Connected) if (STREAM->Connected)
{ {
// Create a traffic record
hookL4SessionDeleted(TNC, STREAM); char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1;
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
STREAM->Connected = FALSE; // Back to Command Mode STREAM->Connected = FALSE; // Back to Command Mode
STREAM->ReportDISC = TRUE; // Tell Node STREAM->ReportDISC = TRUE; // Tell Node
@ -3289,7 +3351,20 @@ void ProcessTNCJSON(struct TNCINFO * TNC, char * Msg, int Len)
{ {
// Create a traffic record // Create a traffic record
hookL4SessionDeleted(TNC, STREAM); char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1;
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
STREAM->Connected = FALSE; // Back to Command Mode STREAM->Connected = FALSE; // Back to Command Mode
STREAM->ReportDISC = TRUE; // Tell Node STREAM->ReportDISC = TRUE; // Tell Node
@ -3647,7 +3722,7 @@ int FreeDataDisconnect(struct TNCINFO * TNC)
// return FreeDataSendCommand(TNC, "D"); // return FreeDataSendCommand(TNC, "D");
Len = sprintf(Msg, "%s", Disconnect); Len = sprintf(Msg, Disconnect);
return send(TNC->TCPDataSock, Msg, Len, 0); return send(TNC->TCPDataSock, Msg, Len, 0);
} }
@ -3659,7 +3734,7 @@ int FreeGetData(struct TNCINFO * TNC)
char Msg[128]; char Msg[128];
int Len; int Len;
Len = sprintf(Msg, "%s", GetData); Len = sprintf(Msg, GetData);
return send(TNC->TCPDataSock, Msg, Len, 0); return send(TNC->TCPDataSock, Msg, Len, 0);
} }

View File

@ -471,7 +471,7 @@ VOID * HALExtInit(EXTPORTDATA * PortEntry)
int port; int port;
char * ptr; char * ptr;
int len; int len;
char Msg[512]; char Msg[80];
#ifndef LINBPQ #ifndef LINBPQ
HWND x; HWND x;
#endif #endif
@ -548,7 +548,7 @@ VOID * HALExtInit(EXTPORTDATA * PortEntry)
TNC->WebWinX = 510; TNC->WebWinX = 510;
TNC->WebWinY = 280; TNC->WebWinY = 280;
TNC->WEB_COMMSSTATE = zalloc(512); TNC->WEB_COMMSSTATE = zalloc(100);
TNC->WEB_TNCSTATE = zalloc(100); TNC->WEB_TNCSTATE = zalloc(100);
strcpy(TNC->WEB_TNCSTATE, "Free"); strcpy(TNC->WEB_TNCSTATE, "Free");
TNC->WEB_MODE = zalloc(100); TNC->WEB_MODE = zalloc(100);
@ -749,7 +749,7 @@ VOID HALPoll(int Port)
STREAM->Attached = TRUE; STREAM->Attached = TRUE;
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = 0;
calllen = ConvFromAX25(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4USER, STREAM->MyCall); calllen = ConvFromAX25(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4USER, STREAM->MyCall);
STREAM->MyCall[calllen] = 0; STREAM->MyCall[calllen] = 0;
@ -829,7 +829,7 @@ VOID HALPoll(int Port)
//for (Stream = 0; Stream <= MaxStreams; Stream++) //for (Stream = 0; Stream <= MaxStreams; Stream++)
{ {
if (TNC->TNCOK && STREAM->BPQtoPACTOR_Q && (STREAM->bytesTXed - STREAM->BytesAcked < 600)) if (TNC->TNCOK && STREAM->BPQtoPACTOR_Q && (STREAM->BytesTXed - STREAM->BytesAcked < 600))
{ {
int datalen; int datalen;
PMSGWITHLEN buffptr; PMSGWITHLEN buffptr;
@ -872,7 +872,7 @@ VOID HALPoll(int Port)
ReleaseBuffer(buffptr); ReleaseBuffer(buffptr);
WriteLogLine(2, MsgPtr, datalen); WriteLogLine(2, MsgPtr, datalen);
STREAM->bytesTXed += datalen; STREAM->BytesTXed += datalen;
STREAM->FramesQueued--; STREAM->FramesQueued--;
ShowTraffic(TNC); ShowTraffic(TNC);
@ -1090,10 +1090,10 @@ VOID ProcessHALData(struct TNCINFO * TNC)
STREAM->BytesAcked += Len; STREAM->BytesAcked += Len;
// Debugprintf("Acked %d", Len); // Debugprintf("Acked %d", Len);
if (STREAM->BytesAcked > STREAM->bytesTXed) if (STREAM->BytesAcked > STREAM->BytesTXed)
Debugprintf("Too Much Acked"); Debugprintf("Too Much Acked");
if ((STREAM->BPQtoPACTOR_Q == 0) && STREAM->BytesAcked >= STREAM->bytesTXed) if ((STREAM->BPQtoPACTOR_Q == 0) && STREAM->BytesAcked >= STREAM->BytesTXed)
{ {
// All sent // All sent
@ -1121,7 +1121,7 @@ VOID ProcessHALData(struct TNCINFO * TNC)
WriteLogLine(1, TNC->DataBuffer, Len); WriteLogLine(1, TNC->DataBuffer, Len);
STREAM->bytesRXed += Len; STREAM->BytesRXed += Len;
memcpy(buffptr->Data, TNC->DataBuffer, Len); memcpy(buffptr->Data, TNC->DataBuffer, Len);
@ -1756,7 +1756,7 @@ BOOL HALConnected(struct TNCINFO * TNC, char * Call)
strcpy(CallCopy, Call); strcpy(CallCopy, Call);
strcat(CallCopy, " "); // Some routines expect 10 char calls strcat(CallCopy, " "); // Some routines expect 10 char calls
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = 0;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
// Stop Scanner // Stop Scanner
@ -1804,7 +1804,7 @@ BOOL HALConnected(struct TNCINFO * TNC, char * Call)
EncodeAndSend(TNC, CTEXTMSG, CTEXTLEN); EncodeAndSend(TNC, CTEXTMSG, CTEXTLEN);
WriteLogLine(2, CTEXTMSG, CTEXTLEN); WriteLogLine(2, CTEXTMSG, CTEXTLEN);
STREAM->bytesTXed += CTEXTLEN; STREAM->BytesTXed += CTEXTLEN;
} }
return TRUE; return TRUE;
} }

View File

@ -1602,7 +1602,7 @@ VOID ShowTraffic(struct TNCINFO * TNC)
char Status[80]; char Status[80];
sprintf(Status, "RX %d TX %d ACKED %d ", sprintf(Status, "RX %d TX %d ACKED %d ",
TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked);
#ifndef LINBPQ #ifndef LINBPQ
SetDlgItemText(TNC->hDlg, IDC_TRAFFIC, Status); SetDlgItemText(TNC->hDlg, IDC_TRAFFIC, Status);
#endif #endif

View File

@ -309,10 +309,47 @@ loop:
return 1; 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 SuspendOtherPorts(struct TNCINFO * ThisTNC);
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC); VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len); VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len);
static time_t ltime; static time_t ltime;
@ -552,7 +589,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
UCHAR * data = &buffptr->Data[0]; UCHAR * data = &buffptr->Data[0];
STREAM->FramesQueued--; STREAM->FramesQueued--;
txlen = (int)buffptr->Len; txlen = (int)buffptr->Len;
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
bytes=HSMODEMSendData(TNC, data, txlen); bytes=HSMODEMSendData(TNC, data, txlen);
WritetoTrace(TNC, data, txlen); WritetoTrace(TNC, data, txlen);
@ -631,7 +668,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
bytes=HSMODEMSendData(TNC, TXMsg, txlen); bytes=HSMODEMSendData(TNC, TXMsg, txlen);
TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
// WritetoTrace(TNC, &buff->L2DATA[0], txlen); // WritetoTrace(TNC, &buff->L2DATA[0], txlen);
return 1; return 1;

View File

@ -38,7 +38,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define ZEXPORT __stdcall #define ZEXPORT __stdcall
#endif #endif
#include <zlib.h> #include "zlib.h"
#define CKernel #define CKernel
#include "httpconnectioninfo.h" #include "httpconnectioninfo.h"
@ -102,16 +102,16 @@ extern int NumberofPorts;
extern UCHAR ConfigDirectory[260]; extern UCHAR ConfigDirectory[260];
char * strlop(char * buf, char delim);
VOID sendandcheck(SOCKET sock, const char * Buffer, int Len); VOID sendandcheck(SOCKET sock, const char * Buffer, int Len);
int CompareNode(const void *a, const void *b); int CompareNode(const void *a, const void *b);
int CompareAlias(const void *a, const void *b); int CompareAlias(const void *a, const void *b);
void ProcessMailHTTPMessage(struct HTTPConnectionInfo * Session, char * Method, char * URL, char * input, char * Reply, int * RLen, int InputLen, char * Token); void ProcessMailHTTPMessage(struct HTTPConnectionInfo * Session, char * Method, char * URL, char * input, char * Reply, int * RLen, int InputLen);
void ProcessChatHTTPMessage(struct HTTPConnectionInfo * Session, char * Method, char * URL, char * input, char * Reply, int * RLen); void ProcessChatHTTPMessage(struct HTTPConnectionInfo * Session, char * Method, char * URL, char * input, char * Reply, int * RLen);
struct PORTCONTROL * APIENTRY GetPortTableEntryFromSlot(int portslot); struct PORTCONTROL * APIENTRY GetPortTableEntryFromSlot(int portslot);
int SetupNodeMenu(char * Buff, int SYSOP); int SetupNodeMenu(char * Buff, int SYSOP);
int StatusProc(char * Buff); int StatusProc(char * Buff);
int ProcessMailSignon(struct TCPINFO * TCP, char * MsgPtr, char * Appl, char * Reply, struct HTTPConnectionInfo ** Session, BOOL WebMail, int LOCAL); int ProcessMailSignon(struct TCPINFO * TCP, char * MsgPtr, char * Appl, char * Reply, struct HTTPConnectionInfo ** Session, BOOL WebMail, int LOCAL);
int ProcessMailAPISignon(struct TCPINFO * TCP, char * MsgPtr, char * Appl, char * Reply, struct HTTPConnectionInfo ** Session, BOOL WebMail, int LOCAL);
int ProcessChatSignon(struct TCPINFO * TCP, char * MsgPtr, char * Appl, char * Reply, struct HTTPConnectionInfo ** Session, int LOCAL); int ProcessChatSignon(struct TCPINFO * TCP, char * MsgPtr, char * Appl, char * Reply, struct HTTPConnectionInfo ** Session, int LOCAL);
VOID APRSProcessHTTPMessage(SOCKET sock, char * MsgPtr, BOOL LOCAL, BOOL COOKIE); VOID APRSProcessHTTPMessage(SOCKET sock, char * MsgPtr, BOOL LOCAL, BOOL COOKIE);
@ -1167,9 +1167,6 @@ int SendMessageFile(SOCKET sock, char * FN, BOOL OnlyifExists, int allowDeflate)
if (_stricmp(ptr, "js") == 0) if (_stricmp(ptr, "js") == 0)
strcpy(Type, "Content-Type: text/javascript\r\n"); strcpy(Type, "Content-Type: text/javascript\r\n");
if (_stricmp(ptr, "css") == 0)
strcpy(Type, "Content-Type: text/css\r\n");
if (_stricmp(ptr, "pdf") == 0) if (_stricmp(ptr, "pdf") == 0)
strcpy(Type, "Content-Type: application/pdf\r\n"); strcpy(Type, "Content-Type: application/pdf\r\n");
@ -1183,8 +1180,7 @@ int SendMessageFile(SOCKET sock, char * FN, BOOL OnlyifExists, int allowDeflate)
Compressed = MsgBytes; Compressed = MsgBytes;
} }
if (_stricmp(ptr, "jpg") == 0 || _stricmp(ptr, "jpeg") == 0 || _stricmp(ptr, "png") == 0 || if (_stricmp(ptr, "jpg") == 0 || _stricmp(ptr, "jpeg") == 0 || _stricmp(ptr, "png") == 0 || _stricmp(ptr, "gif") == 0 || _stricmp(ptr, "ico") == 0)
_stricmp(ptr, "gif") == 0 || _stricmp(ptr, "bmp") == 0 || _stricmp(ptr, "ico") == 0)
strcpy(Type, "Content-Type: image\r\n"); strcpy(Type, "Content-Type: image\r\n");
HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n" HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n"
@ -1797,28 +1793,6 @@ int InnerProcessHTTPMessage(struct ConnectionInfo * conn)
if (_memicmp(Context, "/api/", 5) == 0 || _stricmp(Context, "/api") == 0) if (_memicmp(Context, "/api/", 5) == 0 || _stricmp(Context, "/api") == 0)
{ {
char * Compressed; char * Compressed;
// if for mail api process signon here and rearrange url from
// api/v1/mail to mail/api/v1 so it goes to mail handler later
if (_memicmp(Context, "/api/v1/mail/", 13) == 0)
{
memcpy(MsgPtr, "GET /mail/api/v1/", 17);
if (memcmp(&Context[13], "login", 5) == 0)
{
ReplyLen = ProcessMailAPISignon(TCP, MsgPtr, "M", Reply, &Session, FALSE, LOCAL);
memcpy(MsgPtr, "GET /mail/api/v1/", 17);
if (ReplyLen) // Error message
goto Returnit;
}
memcpy(Context, "/mail/api/v1/", 13);
goto doHeader;
}
else
{
ReplyLen = APIProcessHTTPMessage(_REPLYBUFFER, Method, Context, MsgPtr, LOCAL, COOKIE); ReplyLen = APIProcessHTTPMessage(_REPLYBUFFER, Method, Context, MsgPtr, LOCAL, COOKIE);
if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0) if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0)
@ -1839,7 +1813,6 @@ int InnerProcessHTTPMessage(struct ConnectionInfo * conn)
"Content-Length: %d\r\n" "Content-Length: %d\r\n"
"Content-Type: application/json\r\n" "Content-Type: application/json\r\n"
"Connection: close\r\n" "Connection: close\r\n"
"Access-Control-Allow-Origin: *\r\n"
"%s\r\n", ReplyLen, Encoding); "%s\r\n", ReplyLen, Encoding);
sendandcheck(sock, Header, HeaderLen); sendandcheck(sock, Header, HeaderLen);
@ -1850,7 +1823,7 @@ int InnerProcessHTTPMessage(struct ConnectionInfo * conn)
return 0; return 0;
} }
}
// APRS process internally // APRS process internally
@ -2122,7 +2095,11 @@ Returnit:
Compressed = Reply; Compressed = Reply;
if (NodeURL && _memicmp(NodeURL, "/mail/api/", 10) == 0) if (NodeURL && _memicmp(NodeURL, "/mail/api/", 10) == 0)
HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\nContent-Type: application/json\r\nConnection: close\r\n%s\r\n", ReplyLen, Encoding); HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\n"
"Content-Length: %d\r\n"
"Content-Type: application/json\r\n"
"Connection: close\r\n"
"%s\r\n", ReplyLen, Encoding);
else else
HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\nContent-Type: text/html\r\n%s\r\n", ReplyLen, Encoding); HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\nContent-Type: text/html\r\n%s\r\n", ReplyLen, Encoding);
@ -2145,82 +2122,15 @@ doHeader:
char _REPLYBUFFER[250000]; char _REPLYBUFFER[250000];
struct HTTPConnectionInfo Dummy = {0}; struct HTTPConnectionInfo Dummy = {0};
int Sent, Loops = 0; int Sent, Loops = 0;
char token[16] = "";
// look for auth header
const char * auth_header = "Authorization: Bearer ";
char * token_begin = strstr(MsgPtr, auth_header);
int Flags = 0, n;
char * Tok;
char * param;
if (token_begin)
{
// Using Auth Header
// Extract the token from the request (assuming it's present in the request headers)
token_begin += strlen(auth_header); // Move to the beginning of the token
strncpy(token, token_begin, 13);
token[13] = '\0'; // Null-terminate the token
}
ReplyLen = 0; ReplyLen = 0;
if (Session == 0) if (Session == 0)
Session = &Dummy; Session = &Dummy;
if (LOCAL) Session->TNC = (void *)LOCAL; // TNC only used for Web Terminal Sessions
Session->TNC = (void *)1; // TNC only used for Web Terminal Sessions
else
Session->TNC = (void *)0;
ProcessMailHTTPMessage(Session, Method, Context, MsgPtr, _REPLYBUFFER, &ReplyLen, MsgLen, token); ProcessMailHTTPMessage(Session, Method, Context, MsgPtr, _REPLYBUFFER, &ReplyLen, MsgLen);
if (Context && _memicmp(Context, "/mail/api/", 10) == 0)
{
if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0)
{
// Full Header provided by appl - just send it
// Send may block
Sent = send(sock, _REPLYBUFFER, ReplyLen, 0);
while (Sent != ReplyLen && Loops++ < 3000) // 100 secs max
{
// Debugprintf("%d out of %d sent %d Loops", Sent, InputLen, Loops);
if (Sent > 0) // something sent
{
InputLen -= Sent;
memmove(_REPLYBUFFER, &_REPLYBUFFER[Sent], ReplyLen);
}
Sleep(30);
Sent = send(sock, _REPLYBUFFER, ReplyLen, 0);
}
return 0;
}
// compress if allowed
if (allowDeflate)
Compressed = Compressit(_REPLYBUFFER, ReplyLen, &ReplyLen);
else
Compressed = _REPLYBUFFER;
HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\nContent-Type: application/json\r\nConnection: close\r\n%s\r\n", ReplyLen, Encoding);
sendandcheck(sock, Header, HeaderLen);
sendandcheck(sock, Compressed, ReplyLen);
if (allowDeflate)
free (Compressed);
return 0;
}
if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0) if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0)
{ {
@ -2246,16 +2156,11 @@ doHeader:
return 0; return 0;
} }
if (Context && _memicmp(Context, "/mail/api/", 10) != 0)
{
// Add tail // Add tail
strcpy(&_REPLYBUFFER[ReplyLen], Tail); strcpy(&_REPLYBUFFER[ReplyLen], Tail);
ReplyLen += strlen(Tail); ReplyLen += strlen(Tail);
}
// compress if allowed // compress if allowed
if (allowDeflate) if (allowDeflate)
@ -2345,8 +2250,6 @@ doHeader:
// Pass to MailChat if active // Pass to MailChat if active
NodeURL = Context;
if ((_memicmp(Context, "/MAIL/", 6) == 0) || (_memicmp(Context, "/WebMail", 8) == 0)) if ((_memicmp(Context, "/MAIL/", 6) == 0) || (_memicmp(Context, "/WebMail", 8) == 0))
{ {
// If for Mail, Pass to Mail Server via Named Pipe // If for Mail, Pass to Mail Server via Named Pipe
@ -4280,78 +4183,6 @@ int ProcessNodeSignon(SOCKET sock, struct TCPINFO * TCP, char * MsgPtr, char * A
return ReplyLen; return ReplyLen;
} }
int ProcessMailAPISignon(struct TCPINFO * TCP, char * MsgPtr, char * Appl, char * Reply, struct HTTPConnectionInfo ** Session, BOOL WebMail, int LOCAL)
{
int ReplyLen = 0;
char * input = strstr(MsgPtr, "\r\n\r\n"); // End of headers
char * user, * password, * Key;
struct HTTPConnectionInfo * NewSession;
int i;
struct UserRec * USER;
if (strchr(MsgPtr, '?'))
{
// Check Password
user = strlop(MsgPtr, '?');
password = strlop(user, '&');
strlop(password, ' ');
for (i = 0; i < TCP->NumberofUsers; i++)
{
USER = TCP->UserRecPtr[i];
if (user && _stricmp(user, USER->UserName) == 0)
{
if ((strcmp(password, USER->Password) == 0) && (USER->Secure || WebMail))
{
// ok
NewSession = AllocateSession(Appl[0], 'M');
*Session = NewSession;
if (NewSession)
{
ReplyLen = 0;
strcpy(NewSession->Callsign, USER->Callsign);
}
else
{
ReplyLen = SetupNodeMenu(Reply, LOCAL);
ReplyLen += sprintf(&Reply[ReplyLen], "%s", BusyError);
}
return ReplyLen;
}
}
}
// Pass failed attempt to BBS code so it can try a bbs user login
// Need to put url back together
if (user && user[0] && password && password[0])
{
sprintf(MsgPtr, "%s?%s&%s", MsgPtr, user, password);
}
}
NewSession = AllocateSession(Appl[0], 'M');
*Session = NewSession;
if (NewSession)
ReplyLen = 0;
else
{
ReplyLen = SetupNodeMenu(Reply, LOCAL);
ReplyLen += sprintf(&Reply[ReplyLen], "%s", BusyError);
}
return ReplyLen;
}

View File

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

View File

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

View File

@ -1099,7 +1099,7 @@ VOID KAMPoll(int Port)
// Limit amount in TX, so we keep some on the TX Q and don't send turnround too early // Limit amount in TX, so we keep some on the TX Q and don't send turnround too early
if (TNC->Streams[0].bytesTXed - TNC->Streams[0].BytesAcked > 200) if (TNC->Streams[0].BytesTXed - TNC->Streams[0].BytesAcked > 200)
continue; continue;
// Dont send if IRS State // Dont send if IRS State
@ -1132,7 +1132,7 @@ VOID KAMPoll(int Port)
} }
Next = 0; Next = 0;
STREAM->bytesTXed += datalen; STREAM->BytesTXed += datalen;
if (Stream == 0) if (Stream == 0)
{ {
@ -1157,7 +1157,7 @@ VOID KAMPoll(int Port)
if (Stream == 0) if (Stream == 0)
{ {
sprintf(Status, "RX %d TX %d ACKED %d ", sprintf(Status, "RX %d TX %d ACKED %d ",
TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked);
SetWindowText(TNC->xIDC_TRAFFIC, Status); SetWindowText(TNC->xIDC_TRAFFIC, Status);
if ((TNC->HFPacket == 0) && (TNC->Streams[0].BPQtoPACTOR_Q == 0)) // Nothing following if ((TNC->HFPacket == 0) && (TNC->Streams[0].BPQtoPACTOR_Q == 0)) // Nothing following
@ -1532,14 +1532,14 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
{ {
if (Msg[1] == '2') // HF Port if (Msg[1] == '2') // HF Port
{ {
if (TNC->Streams[0].bytesTXed) if (TNC->Streams[0].BytesTXed)
TNC->Streams[0].BytesAcked += Len - 3; // We get an ack before the first send TNC->Streams[0].BytesAcked += Len - 3; // We get an ack before the first send
sprintf(Status, "RX %d TX %d ACKED %d ", sprintf(Status, "RX %d TX %d ACKED %d ",
TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked);
SetWindowText(TNC->xIDC_TRAFFIC, Status); SetWindowText(TNC->xIDC_TRAFFIC, Status);
if (TNC->Streams[0].bytesTXed - TNC->Streams[0].BytesAcked < 500) if (TNC->Streams[0].BytesTXed - TNC->Streams[0].BytesAcked < 500)
TNC->Streams[0].FramesOutstanding = 0; TNC->Streams[0].FramesOutstanding = 0;
} }
return; return;
@ -1555,7 +1555,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
Len-=3; // Remove Header Len-=3; // Remove Header
buffptr->Len = Len; // Length buffptr->Len = Len; // Length
STREAM->bytesRXed += Len; STREAM->BytesRXed += Len;
memcpy(buffptr->Data, Buffer, Len); memcpy(buffptr->Data, Buffer, Len);
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
@ -1563,7 +1563,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
if (Stream == 0) if (Stream == 0)
{ {
sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d ", sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d ",
TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked);
SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
} }
@ -1762,7 +1762,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
Buffer[Len-4] = 0; Buffer[Len-4] = 0;
} }
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = 0;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
if (Stream == 0) if (Stream == 0)
@ -1776,7 +1776,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
Rig_Command( (TRANSPORTENTRY *) -1, Msg); Rig_Command( (TRANSPORTENTRY *) -1, Msg);
sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d ", sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d ",
TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked);
SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
} }
@ -1874,7 +1874,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
memcpy(&CTBuff[3], &CTEXTMSG[Next], Len); memcpy(&CTBuff[3], &CTEXTMSG[Next], Len);
EncodeAndSend(TNC, CTBuff, Len + 3); EncodeAndSend(TNC, CTBuff, Len + 3);
EncodeAndSend(TNC, "E", 1); // Changeover when all sent EncodeAndSend(TNC, "E", 1); // Changeover when all sent
TNC->Streams[0].bytesTXed += CTEXTLEN; TNC->Streams[0].BytesTXed += CTEXTLEN;
} }
return; return;

View File

@ -358,7 +358,7 @@ ok:
UCHAR * data = &buffptr->Data[0]; UCHAR * data = &buffptr->Data[0];
STREAM->FramesQueued--; STREAM->FramesQueued--;
txlen = (int)buffptr->Len; txlen = (int)buffptr->Len;
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
bytes=SerialSendData(TNC, data, txlen); bytes=SerialSendData(TNC, data, txlen);
WritetoTrace(TNC, data, txlen); WritetoTrace(TNC, data, txlen);
@ -725,7 +725,7 @@ VOID KISSHFReleaseTNC(struct TNCINFO * TNC)
ReleaseOtherPorts(TNC); ReleaseOtherPorts(TNC);
} }
VOID KISSHFSuspendPort(struct TNCINFO * TNC, struct TNCINFO * THISTNC) VOID KISSHFSuspendPort(struct TNCINFO * TNC, struct TNCINFO * ThisTNC)
{ {
TNC->PortRecord->PORTCONTROL.PortSuspended = 1; TNC->PortRecord->PORTCONTROL.PortSuspended = 1;
strcpy(TNC->WEB_TNCSTATE, "Interlocked"); strcpy(TNC->WEB_TNCSTATE, "Interlocked");

View File

@ -47,7 +47,8 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define THREESECS 3*3 #define THREESECS 3*3
VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer); VOID L2SENDCOMMAND();
VOID L2ROUTINE();
MESSAGE * SETUPL2MESSAGE(struct _LINKTABLE * LINK, UCHAR CMD); MESSAGE * SETUPL2MESSAGE(struct _LINKTABLE * LINK, UCHAR CMD);
VOID SendSupervisCmd(struct _LINKTABLE * LINK); VOID SendSupervisCmd(struct _LINKTABLE * LINK);
void SEND_RR_RESP(struct _LINKTABLE * LINK, UCHAR PF); void SEND_RR_RESP(struct _LINKTABLE * LINK, UCHAR PF);
@ -109,7 +110,7 @@ int seeifInterlockneeded(struct PORTCONTROL * PORT);
int seeifUnlockneeded(struct _LINKTABLE * LINK); int seeifUnlockneeded(struct _LINKTABLE * LINK);
int CheckKissInterlock(struct PORTCONTROL * MYPORT, int Exclusive); int CheckKissInterlock(struct PORTCONTROL * MYPORT, int Exclusive);
void hookL2SessionAccepted(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK); void hookL2SessionAccepted(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK);
void hookL2SessionDeleted(struct _LINKTABLE * LINK); void hookL2SessionDeleted(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK);
void hookL2SessionAttempt(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK); void hookL2SessionAttempt(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK);
@ -1130,9 +1131,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
return; return;
} }
toCall[ConvFromAX25(ADJBUFFER->DEST, toCall)] = 0;
fromCall[ConvFromAX25(ADJBUFFER->ORIGIN, fromCall)] = 0;
SETUPNEWL2SESSION(LINK, PORT, Buffer, MSGFLAG); SETUPNEWL2SESSION(LINK, PORT, Buffer, MSGFLAG);
if (LINK->L2STATE != 5) // Setup OK? if (LINK->L2STATE != 5) // Setup OK?
@ -1145,6 +1143,10 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
seeifInterlockneeded(PORT); seeifInterlockneeded(PORT);
toCall[ConvFromAX25(ADJBUFFER->DEST, toCall)] = 0;
fromCall[ConvFromAX25(ADJBUFFER->ORIGIN, fromCall)] = 0;
// IF CONNECT TO APPL ADDRESS, SET UP APPL SESSION // IF CONNECT TO APPL ADDRESS, SET UP APPL SESSION
if (APPLMASK == 0) if (APPLMASK == 0)
@ -1160,7 +1162,12 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
UCHAR * ptr; UCHAR * ptr;
if (LogAllConnects) if (LogAllConnects)
{
char toCall[12], fromCall[12];
toCall[ConvFromAX25(ADJBUFFER->DEST, toCall)] = 0;
fromCall[ConvFromAX25(ADJBUFFER->ORIGIN, fromCall)] = 0;
WriteConnectLog(fromCall, toCall, "AX.25"); WriteConnectLog(fromCall, toCall, "AX.25");
}
hookL2SessionAccepted(PORT->PORTNUMBER, fromCall, toCall, LINK); hookL2SessionAccepted(PORT->PORTNUMBER, fromCall, toCall, LINK);
@ -1278,8 +1285,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
L2SENDUA(PORT, Buffer, ADJBUFFER); L2SENDUA(PORT, Buffer, ADJBUFFER);
hookL2SessionAccepted(PORT->PORTNUMBER, fromCall, toCall, LINK);
if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF) if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
{ {
struct DATAMESSAGE * Msg; struct DATAMESSAGE * Msg;
@ -1378,9 +1383,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
L2SENDUA(PORT, Buffer, ADJBUFFER); L2SENDUA(PORT, Buffer, ADJBUFFER);
hookL2SessionAccepted(PORT->PORTNUMBER, fromCall, toCall, LINK);
if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF) if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
{ {
struct DATAMESSAGE * Msg; struct DATAMESSAGE * Msg;
@ -2440,8 +2442,6 @@ VOID PROC_I_FRAME(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE *
Length = Buffer->LENGTH - (MSGHDDRLEN + 15); // Buffer Header + addrs + CTL Length = Buffer->LENGTH - (MSGHDDRLEN + 15); // Buffer Header + addrs + CTL
Info = &Buffer->PID; Info = &Buffer->PID;
LINK->bytesRXed += Length;
// Adjust for DIGIS // Adjust for DIGIS
EOA = &Buffer->ORIGIN[6]; // End of address Bit EOA = &Buffer->ORIGIN[6]; // End of address Bit
@ -2647,13 +2647,6 @@ VOID RESET2(struct _LINKTABLE * LINK)
VOID SENDSABM(struct _LINKTABLE * LINK) VOID SENDSABM(struct _LINKTABLE * LINK)
{ {
char toCall[10];
char fromCall[10];
toCall[ConvFromAX25(LINK->LINKCALL, toCall)] = 0;
fromCall[ConvFromAX25(LINK->OURCALL, fromCall)] = 0;
hookL2SessionAttempt(LINK->LINKPORT->PORTNUMBER, fromCall, toCall, LINK);
L2SENDCOMMAND(LINK, SABM | PFBIT); L2SENDCOMMAND(LINK, SABM | PFBIT);
} }
@ -3097,7 +3090,7 @@ VOID ACKMSG(struct _LINKTABLE * LINK)
} }
} }
VOID CONNECTFAILED(struct _LINKTABLE * LINK); VOID CONNECTFAILED();
VOID L2TIMEOUT(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT) VOID L2TIMEOUT(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT)
{ {
@ -3267,7 +3260,12 @@ VOID SENDFRMR(struct _LINKTABLE * LINK)
VOID CLEAROUTLINK(struct _LINKTABLE * LINK) VOID CLEAROUTLINK(struct _LINKTABLE * LINK)
{ {
hookL2SessionDeleted(LINK); char toCall[12], fromCall[12];
toCall[ConvFromAX25(LINK->LINKCALL, toCall)] = 0;
fromCall[ConvFromAX25(LINK->OURCALL, fromCall)] = 0;
hookL2SessionDeleted(LINK->LINKPORT->PORTNUMBER, fromCall, toCall, LINK);
seeifUnlockneeded(LINK); seeifUnlockneeded(LINK);
@ -3598,7 +3596,7 @@ VOID CONNECTREFUSED(struct _LINKTABLE * LINK)
ConnectFailedOrRefused(LINK, "Busy from"); ConnectFailedOrRefused(LINK, "Busy from");
} }
VOID L3CONNECTFAILED(struct _LINKTABLE * LINK); VOID L3CONNECTFAILED();
VOID ConnectFailedOrRefused(struct _LINKTABLE * LINK, char * Msg) VOID ConnectFailedOrRefused(struct _LINKTABLE * LINK, char * Msg)
{ {
@ -4134,7 +4132,7 @@ int seeifUnlockneeded(struct _LINKTABLE * LINK)
if (TNC) if (TNC)
if (Interlock == TNC->RXRadio || Interlock == TNC->TXRadio) // Same Group if (Interlock == TNC->RXRadio || Interlock == TNC->TXRadio) // Same Group
if (TNC->ReleasePortProc && TNC->PortRecord->PORTCONTROL.PortSuspended == TRUE) if (TNC->ReleasePortProc && TNC->PortRecord->PORTCONTROL.PortSuspended == TRUE)
TNC->ReleasePortProc(TNC); TNC->ReleasePortProc(TNC, TNC);
} }
return 0; return 0;

View File

@ -56,7 +56,7 @@ VOID L3SWAPADDRESSES(L3MESSAGEBUFFER * L3MSG);
VOID L4TIMEOUT(TRANSPORTENTRY * L4); VOID L4TIMEOUT(TRANSPORTENTRY * L4);
struct DEST_LIST * CHECKL3TABLES(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * Msg); struct DEST_LIST * CHECKL3TABLES(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * Msg);
int CHECKIFBUSYL4(TRANSPORTENTRY * L4); int CHECKIFBUSYL4(TRANSPORTENTRY * L4);
VOID AUTOTIMER(TRANSPORTENTRY * L4); VOID AUTOTIMER();
VOID NRRecordRoute(UCHAR * Buff, int Len); VOID NRRecordRoute(UCHAR * Buff, int Len);
VOID REFRESHROUTE(TRANSPORTENTRY * Session); VOID REFRESHROUTE(TRANSPORTENTRY * Session);
VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR); VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR);
@ -603,9 +603,6 @@ VOID L4BG()
// If we want to enforce PACLEN this may be a good place to do it // If we want to enforce PACLEN this may be a good place to do it
Msglen = Msg->LENGTH - (MSGHDDRLEN + 1); //Dont include PID Msglen = Msg->LENGTH - (MSGHDDRLEN + 1); //Dont include PID
LINK->bytesTXed += Msglen;
Paclen = L4->SESSPACLEN; Paclen = L4->SESSPACLEN;
if (Paclen == 0) if (Paclen == 0)

View File

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

View File

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

203
MCP2221.vcproj Normal file
View File

@ -0,0 +1,203 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="MCP2221"
ProjectGUID="{FCBB40CD-F7C2-4A97-989A-FC5CEADF7FC1}"
RootNamespace="MCP2221"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib setupapi.lib $(NOINHERIT)"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib $(NoInherit)"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\hid.c"
>
</File>
<File
RelativePath=".\MCP2221.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -60,7 +60,7 @@ static void ConnecttoMPSKThread(void * portptr);
void CreateMHWindow(); void CreateMHWindow();
int Update_MH_List(struct in_addr ipad, char * call, char proto); int Update_MH_List(struct in_addr ipad, char * call, char proto);
static int ConnecttoMPSK(int port); static int ConnecttoMPSK();
static int ProcessReceivedData(int bpqport); static int ProcessReceivedData(int bpqport);
static int ProcessLine(char * buf, int Port); static int ProcessLine(char * buf, int Port);
int KillTNC(struct TNCINFO * TNC); int KillTNC(struct TNCINFO * TNC);
@ -71,6 +71,8 @@ static VOID SendData(struct TNCINFO * TNC, char * Msg, int MsgLen);
static VOID DoMonitorHddr(struct TNCINFO * TNC, struct AGWHEADER * RXHeader, UCHAR * Msg); static VOID DoMonitorHddr(struct TNCINFO * TNC, struct AGWHEADER * RXHeader, UCHAR * Msg);
VOID SendRPBeacon(struct TNCINFO * TNC); VOID SendRPBeacon(struct TNCINFO * TNC);
char * strlop(char * buf, char delim);
extern UCHAR BPQDirectory[]; extern UCHAR BPQDirectory[];
#define MAXMPSKPORTS 16 #define MAXMPSKPORTS 16
@ -1315,7 +1317,7 @@ VOID ProcessMSPKData(struct TNCINFO * TNC)
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
STREAM->bytesRXed += TNC->DataLen; STREAM->BytesRXed += TNC->DataLen;
} }
TNC->DataLen = 0; TNC->DataLen = 0;
@ -1385,7 +1387,7 @@ DataLoop:
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
STREAM->Connecting = FALSE; STREAM->Connecting = FALSE;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = 0; STREAM->BytesRXed = STREAM->BytesTXed = 0;
buffptr = GetBuff(); buffptr = GetBuff();
if (buffptr) if (buffptr)
@ -1400,7 +1402,7 @@ DataLoop:
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = 0; STREAM->BytesRXed = STREAM->BytesTXed = 0;
UpdateMH(TNC, CallFrom, '+', 'I'); UpdateMH(TNC, CallFrom, '+', 'I');
@ -1481,7 +1483,7 @@ VOID SendData(struct TNCINFO * TNC, char * Msg, int MsgLen)
char * inptr = Msg; char * inptr = Msg;
SOCKET sock = TNCInfo[MasterPort[TNC->Port]]->TCPSock; SOCKET sock = TNCInfo[MasterPort[TNC->Port]]->TCPSock;
TNC->Streams[0].bytesTXed += MsgLen; TNC->Streams[0].BytesTXed += MsgLen;
for (n = 0; n < MsgLen; n++) for (n = 0; n < MsgLen; n++)
{ {

View File

@ -43,7 +43,6 @@ struct SEM AllocSemaphore = {0, 0};
struct SEM ConSemaphore = {0, 0}; struct SEM ConSemaphore = {0, 0};
struct SEM Semaphore = {0, 0}; struct SEM Semaphore = {0, 0};
struct SEM OutputSEM = {0, 0}; struct SEM OutputSEM = {0, 0};
struct SEM ConfigSEM = {0, 0};
struct UserInfo ** UserRecPtr=NULL; struct UserInfo ** UserRecPtr=NULL;
int NumberofUsers=0; int NumberofUsers=0;
@ -205,7 +204,6 @@ int MailForInterval = 0;
char zeros[NBMASK]; // For forward bitmask tests char zeros[NBMASK]; // For forward bitmask tests
time_t MaintClock; // Time to run housekeeping 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. struct MsgInfo * MsgnotoMsg[100000]; // Message Number to Message Slot List.

639
MailNode.vcproj Normal file
View File

@ -0,0 +1,639 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="LinBPQ"
ProjectGUID="{3766AA10-C777-4ED8-A83D-F1452DE9B666}"
RootNamespace="MailNode"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\CKernel;..\CommonSource;..\CInclude"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;LINBPQ;_USE_32BIT_TIME_T"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib WS2_32.Lib ..\lib\libconfigd.lib DbgHelp.lib setupapi.lib miniupnpc.lib zlibstat.lib"
OutputFile="c:\LINBPQ\$(ProjectName).exe"
LinkIncremental="2"
IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true"
GenerateMapFile="true"
MapFileName="c:\linbpq\linmail.map"
SubSystem="1"
StackReserveSize="4000000"
StackCommitSize="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\CKernel;..\CommonSource;..\CInclude"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;LINBPQ;_USE_32BIT_TIME_T"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib WS2_32.Lib ..\lib\libconfig.lib DbgHelp.lib Setupapi.lib miniupnpc.lib zlibstat.lib"
OutputFile="c:\devprogs\bpq32\LinBPQ.exe"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
HeapReserveSize="5000000"
StackReserveSize="10000000"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\CommonSource\adif.c"
>
</File>
<File
RelativePath="..\CommonSource\AEAPactor.c"
>
</File>
<File
RelativePath="..\CommonSource\AGWAPI.c"
>
</File>
<File
RelativePath="..\CommonSource\AGWMoncode.c"
>
</File>
<File
RelativePath=".\AISCommon.c"
>
</File>
<File
RelativePath="..\CommonSource\Alloc.c"
>
</File>
<File
RelativePath="..\CommonSource\APRSCode.c"
>
</File>
<File
RelativePath=".\APRSIconData.c"
>
</File>
<File
RelativePath=".\APRSStdPages.c"
>
</File>
<File
RelativePath="..\CommonSource\ARDOP.c"
>
</File>
<File
RelativePath=".\base64.c"
>
</File>
<File
RelativePath="..\CommonSource\BBSHTMLConfig.c"
>
</File>
<File
RelativePath="..\CommonSource\BBSUtilities.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="2"
ObjectFile="$(IntDir)\"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\CommonSource\bpqaxip.c"
>
</File>
<File
RelativePath="..\CommonSource\bpqether.c"
>
</File>
<File
RelativePath="..\CommonSource\bpqhdlc.c"
>
</File>
<File
RelativePath="..\CommonSource\BPQINP3.c"
>
</File>
<File
RelativePath="..\CommonSource\BPQNRR.c"
>
</File>
<File
RelativePath="..\CommonSource\BPQtoAGW.c"
>
</File>
<File
RelativePath="..\CommonSource\bpqvkiss.c"
>
</File>
<File
RelativePath="..\CommonSource\ChatHTMLConfig.c"
>
</File>
<File
RelativePath="..\CommonSource\cMain.c"
>
</File>
<File
RelativePath="..\CommonSource\Cmd.c"
>
</File>
<File
RelativePath="..\CommonSource\CMSAuth.c"
>
</File>
<File
RelativePath="..\CommonSource\CommonCode.c"
>
</File>
<File
RelativePath="..\CommonSource\compatbits.c"
>
</File>
<File
RelativePath="..\CommonSource\config.c"
>
</File>
<File
RelativePath="..\CommonSource\datadefs.c"
>
</File>
<File
RelativePath=".\DRATS.c"
>
</File>
<File
RelativePath=".\Events.c"
>
</File>
<File
RelativePath="..\CommonSource\FBBRoutines.c"
>
</File>
<File
RelativePath="..\CommonSource\FLDigi.c"
>
</File>
<File
RelativePath=".\FreeDATA.c"
>
</File>
<File
RelativePath=".\getopt.c"
>
</File>
<File
RelativePath="..\CommonSource\HALDriver.c"
>
</File>
<File
RelativePath="..\CommonSource\HanksRT.c"
>
</File>
<File
RelativePath="..\CommonSource\HFCommon.c"
>
</File>
<File
RelativePath="..\CommonSource\hid.c"
>
</File>
<File
RelativePath="..\CommonSource\Housekeeping.c"
>
</File>
<File
RelativePath=".\HSMODEM.c"
>
</File>
<File
RelativePath="..\CommonSource\HTMLCommonCode.c"
>
</File>
<File
RelativePath="..\CommonSource\HTTPcode.c"
>
</File>
<File
RelativePath="..\CommonSource\IPCode.c"
>
</File>
<File
RelativePath="..\CommonSource\KAMPactor.c"
>
</File>
<File
RelativePath="..\CommonSource\kiss.c"
>
</File>
<File
RelativePath="..\CommonSource\KISSHF.c"
>
</File>
<File
RelativePath="..\CommonSource\L2Code.c"
>
</File>
<File
RelativePath="..\CommonSource\L3Code.c"
>
</File>
<File
RelativePath="..\CommonSource\L4Code.c"
>
</File>
<File
RelativePath="..\CommonSource\LinBPQ.c"
>
</File>
<File
RelativePath="..\CommonSource\LzFind.c"
>
</File>
<File
RelativePath="..\CommonSource\lzhuf32.c"
>
</File>
<File
RelativePath="..\CommonSource\LzmaDec.c"
>
</File>
<File
RelativePath="..\CommonSource\LzmaEnc.c"
>
</File>
<File
RelativePath="..\CommonSource\LzmaLib.c"
>
</File>
<File
RelativePath=".\mailapi.c"
>
</File>
<File
RelativePath="..\CommonSource\MailCommands.c"
>
</File>
<File
RelativePath="..\CommonSource\MailDataDefs.c"
>
</File>
<File
RelativePath="..\CommonSource\MailRouting.c"
>
</File>
<File
RelativePath="..\CommonSource\MailTCP.c"
>
</File>
<File
RelativePath="..\CommonSource\MBLRoutines.c"
>
</File>
<File
RelativePath="..\CommonSource\md5.c"
>
</File>
<File
RelativePath="..\CommonSource\Moncode.c"
>
</File>
<File
RelativePath="..\CommonSource\Multicast.c"
>
</File>
<File
RelativePath="..\CommonSource\MULTIPSK.c"
>
</File>
<File
RelativePath="..\CommonSource\NNTPRoutines.c"
>
</File>
<File
RelativePath=".\nodeapi.c"
>
</File>
<File
RelativePath="..\CommonSource\pibits.c"
>
</File>
<File
RelativePath=".\png.c"
>
</File>
<File
RelativePath=".\png.h"
>
</File>
<File
RelativePath=".\pngerror.c"
>
</File>
<File
RelativePath=".\pnggccrd.c"
>
</File>
<File
RelativePath=".\pngget.c"
>
</File>
<File
RelativePath=".\pngmem.c"
>
</File>
<File
RelativePath=".\pngpread.c"
>
</File>
<File
RelativePath=".\pngread.c"
>
</File>
<File
RelativePath=".\pngrio.c"
>
</File>
<File
RelativePath=".\pngrtran.c"
>
</File>
<File
RelativePath=".\pngrutil.c"
>
</File>
<File
RelativePath=".\pngset.c"
>
</File>
<File
RelativePath=".\pngtrans.c"
>
</File>
<File
RelativePath=".\pngvcrd.c"
>
</File>
<File
RelativePath=".\pngwio.c"
>
</File>
<File
RelativePath=".\pngwrite.c"
>
</File>
<File
RelativePath=".\pngwtran.c"
>
</File>
<File
RelativePath=".\pngwutil.c"
>
</File>
<File
RelativePath="..\CommonSource\RigControl.c"
>
</File>
<File
RelativePath="..\CommonSource\SCSPactor.c"
>
</File>
<File
RelativePath="..\CommonSource\SCSTrackeMulti.c"
>
</File>
<File
RelativePath="..\CommonSource\SCSTracker.c"
>
</File>
<File
RelativePath="..\CommonSource\SerialPort.c"
>
</File>
<File
RelativePath="..\CommonSource\TelnetV6.c"
>
</File>
<File
RelativePath="..\CommonSource\TNCCode.c"
>
</File>
<File
RelativePath="..\CommonSource\TNCEmulators.c"
>
</File>
<File
RelativePath="..\CommonSource\UIRoutines.c"
>
</File>
<File
RelativePath=".\upnp.c"
>
</File>
<File
RelativePath="..\CommonSource\utf8Routines.c"
>
</File>
<File
RelativePath="..\CommonSource\UZ7HODrv.c"
>
</File>
<File
RelativePath="..\CommonSource\V4.c"
>
</File>
<File
RelativePath="..\CommonSource\VARA.c"
>
</File>
<File
RelativePath="..\CommonSource\WebMail.c"
>
</File>
<File
RelativePath="..\CommonSource\WINMOR.c"
>
</File>
<File
RelativePath=".\WinRPR.c"
>
</File>
<File
RelativePath="..\CommonSource\WPRoutines.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

294
MailNode.vcxproj Normal file
View File

@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>LinBPQ</ProjectName>
<ProjectGuid>{3766AA10-C777-4ED8-A83D-F1452DE9B666}</ProjectGuid>
<RootNamespace>MailNode</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>D:\linbpq</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\CKernel;..\CommonSource;..\CInclude;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;LINBPQ;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>kernel32.lib;WS2_32.Lib;..\lib\libconfigd.lib;DbgHelp.lib;setupapi.lib;miniupnpc.lib;zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>c:\LINBPQ\$(ProjectName).exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>c:\linbpq\linmail.map</MapFileName>
<SubSystem>Console</SubSystem>
<StackReserveSize>4000000</StackReserveSize>
<StackCommitSize>0</StackCommitSize>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\CKernel;..\CommonSource;..\CInclude;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;LINBPQ;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>kernel32.lib;WS2_32.Lib;C:\OneDrive\Dev\Source\bpq32\libconfig\x64\Release\libconfig.lib;DbgHelp.lib;setupapi.lib;C:\Dev\Msdev2005\projects\bpq32\CKernel\x64\Debug\miniupnpc.lib;C:\OneDrive\Dev\Source\zlib-1.2.11\contrib\vstudio\vc14\x64\ZlibStatDebug\zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>c:\LINBPQ\$(ProjectName).exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>c:\linbpq\linmail.map</MapFileName>
<SubSystem>Console</SubSystem>
<StackReserveSize>4000000</StackReserveSize>
<StackCommitSize>0</StackCommitSize>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\CKernel;..\CommonSource;..\CInclude;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;LINBPQ;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>kernel32.lib;WS2_32.Lib;..\lib\libconfig.lib;DbgHelp.lib;Setupapi.lib;miniupnpc.lib;zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>c:\devprogs\bpq32\LinBPQ.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<HeapReserveSize>5000000</HeapReserveSize>
<StackReserveSize>10000000</StackReserveSize>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\CKernel;..\CommonSource;..\CInclude;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;LINBPQ;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>kernel32.lib;WS2_32.Lib;..\lib\libconfig.lib;DbgHelp.lib;Setupapi.lib;miniupnpc.lib;zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>c:\devprogs\bpq32\LinBPQ.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<HeapReserveSize>5000000</HeapReserveSize>
<StackReserveSize>10000000</StackReserveSize>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="adif.c" />
<ClCompile Include="AEAPactor.c" />
<ClCompile Include="AGWAPI.c" />
<ClCompile Include="AGWMoncode.c" />
<ClCompile Include="AISCommon.c" />
<ClCompile Include="Alloc.c" />
<ClCompile Include="APRSCode.c" />
<ClCompile Include="APRSIconData.c" />
<ClCompile Include="APRSStdPages.c" />
<ClCompile Include="ARDOP.c" />
<ClCompile Include="base64.c" />
<ClCompile Include="BBSHTMLConfig.c" />
<ClCompile Include="BBSUtilities.c">
<AssemblerOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
</AssemblerOutput>
<AssemblerOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
</AssemblerOutput>
<AssemblerOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">All</AssemblerOutput>
<AssemblerOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'">All</AssemblerOutput>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)</ObjectFileName>
</ClCompile>
<ClCompile Include="bpqaxip.c" />
<ClCompile Include="bpqether.c" />
<ClCompile Include="bpqhdlc.c" />
<ClCompile Include="BPQINP3.c" />
<ClCompile Include="BPQNRR.c" />
<ClCompile Include="BPQtoAGW.c" />
<ClCompile Include="bpqvkiss.c" />
<ClCompile Include="ChatHTMLConfig.c" />
<ClCompile Include="cMain.c" />
<ClCompile Include="Cmd.c" />
<ClCompile Include="CMSAuth.c" />
<ClCompile Include="CommonCode.c" />
<ClCompile Include="compatbits.c" />
<ClCompile Include="config.c" />
<ClCompile Include="datadefs.c" />
<ClCompile Include="DRATS.c" />
<ClCompile Include="Events.c" />
<ClCompile Include="FBBRoutines.c" />
<ClCompile Include="FLDigi.c" />
<ClCompile Include="FreeDATA.c" />
<ClCompile Include="getopt.c" />
<ClCompile Include="HALDriver.c" />
<ClCompile Include="HanksRT.c" />
<ClCompile Include="HFCommon.c" />
<ClCompile Include="hid.c" />
<ClCompile Include="Housekeeping.c" />
<ClCompile Include="HSMODEM.c" />
<ClCompile Include="HTMLCommonCode.c" />
<ClCompile Include="HTTPcode.c" />
<ClCompile Include="IPCode.c" />
<ClCompile Include="KAMPactor.c" />
<ClCompile Include="kiss.c" />
<ClCompile Include="KISSHF.c" />
<ClCompile Include="L2Code.c" />
<ClCompile Include="L3Code.c" />
<ClCompile Include="L4Code.c" />
<ClCompile Include="LinBPQ.c" />
<ClCompile Include="LzFind.c" />
<ClCompile Include="lzhuf32.c" />
<ClCompile Include="LzmaDec.c" />
<ClCompile Include="LzmaEnc.c" />
<ClCompile Include="LzmaLib.c" />
<ClCompile Include="MailCommands.c" />
<ClCompile Include="MailDataDefs.c" />
<ClCompile Include="MailRouting.c" />
<ClCompile Include="MailTCP.c" />
<ClCompile Include="MBLRoutines.c" />
<ClCompile Include="md5.c" />
<ClCompile Include="Moncode.c" />
<ClCompile Include="Multicast.c" />
<ClCompile Include="MULTIPSK.c" />
<ClCompile Include="NNTPRoutines.c" />
<ClCompile Include="pibits.c" />
<ClCompile Include="png.c" />
<ClCompile Include="pngerror.c" />
<ClCompile Include="pnggccrd.c" />
<ClCompile Include="pngget.c" />
<ClCompile Include="pngmem.c" />
<ClCompile Include="pngpread.c" />
<ClCompile Include="pngread.c" />
<ClCompile Include="pngrio.c" />
<ClCompile Include="pngrtran.c" />
<ClCompile Include="pngrutil.c" />
<ClCompile Include="pngset.c" />
<ClCompile Include="pngtrans.c" />
<ClCompile Include="pngvcrd.c" />
<ClCompile Include="pngwio.c" />
<ClCompile Include="pngwrite.c" />
<ClCompile Include="pngwtran.c" />
<ClCompile Include="pngwutil.c" />
<ClCompile Include="RigControl.c" />
<ClCompile Include="SCSPactor.c" />
<ClCompile Include="SCSTrackeMulti.c" />
<ClCompile Include="SCSTracker.c" />
<ClCompile Include="SerialPort.c" />
<ClCompile Include="TelnetV6.c" />
<ClCompile Include="TNCCode.c" />
<ClCompile Include="TNCEmulators.c" />
<ClCompile Include="UIRoutines.c" />
<ClCompile Include="upnp.c" />
<ClCompile Include="utf8Routines.c" />
<ClCompile Include="UZ7HODrv.c" />
<ClCompile Include="V4.c" />
<ClCompile Include="VARA.c" />
<ClCompile Include="WebMail.c" />
<ClCompile Include="WINMOR.c" />
<ClCompile Include="WinRPR.c" />
<ClCompile Include="WPRoutines.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="png.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

327
MailNode.vcxproj.filters Normal file
View File

@ -0,0 +1,327 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="adif.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AEAPactor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AGWAPI.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AGWMoncode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AISCommon.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Alloc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="APRSCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="APRSIconData.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="APRSStdPages.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ARDOP.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="base64.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BBSHTMLConfig.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BBSUtilities.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqaxip.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqether.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqhdlc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQINP3.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQNRR.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="BPQtoAGW.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bpqvkiss.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ChatHTMLConfig.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="cMain.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Cmd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CMSAuth.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="CommonCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="compatbits.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="config.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="datadefs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DRATS.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Events.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="FBBRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="FLDigi.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="FreeDATA.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HALDriver.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HanksRT.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HFCommon.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="hid.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Housekeeping.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HSMODEM.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HTMLCommonCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HTTPcode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="IPCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="KAMPactor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="kiss.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="KISSHF.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="L2Code.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="L3Code.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="L4Code.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LinBPQ.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzFind.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="lzhuf32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzmaDec.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzmaEnc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="LzmaLib.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailCommands.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailDataDefs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailRouting.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MailTCP.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MBLRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="md5.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Moncode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Multicast.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MULTIPSK.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="NNTPRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pibits.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="png.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngerror.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pnggccrd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngget.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngmem.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngpread.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngread.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngrio.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngrtran.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngrutil.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngset.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngtrans.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngvcrd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngwio.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngwrite.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngwtran.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pngwutil.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="RigControl.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SCSPactor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SCSTrackeMulti.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SCSTracker.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SerialPort.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TelnetV6.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TNCCode.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TNCEmulators.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="UIRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="upnp.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="utf8Routines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="UZ7HODrv.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="V4.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="VARA.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WebMail.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WINMOR.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WinRPR.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WPRoutines.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="getopt.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="png.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

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

View File

@ -2656,7 +2656,6 @@ VOID ProcessPOP3ServerMessage(SocketConn * sockptr, char * Buffer, int Len)
// Must be some other coding // Must be some other coding
int code = TrytoGuessCode(msgbytes, Len); int code = TrytoGuessCode(msgbytes, Len);
UCHAR * UTF = malloc(Len * 3); UCHAR * UTF = malloc(Len * 3);
if (code == 437) if (code == 437)
@ -2897,8 +2896,6 @@ SocketConn * SMTPConnect(char * Host, int Port, BOOL AMPR, struct MsgInfo * Msg,
sinx.sin_addr.s_addr = INADDR_ANY; sinx.sin_addr.s_addr = INADDR_ANY;
sinx.sin_port = 0; sinx.sin_port = 0;
sockptr->Timeout = 0;
if (bind(sockptr->socket, (LPSOCKADDR) &sinx, addrlen) != 0 ) if (bind(sockptr->socket, (LPSOCKADDR) &sinx, addrlen) != 0 )
{ {
// //
@ -3592,6 +3589,7 @@ VOID ProcessPOP3ClientMessage(SocketConn * sockptr, char * Buffer, int Len)
if (sockptr->POP3MsgCount > sockptr->POP3MsgNum++) if (sockptr->POP3MsgCount > sockptr->POP3MsgNum++)
{ {
sockprintf(sockptr, "RETR %d", sockptr->POP3MsgNum); sockprintf(sockptr, "RETR %d", sockptr->POP3MsgNum);
sockptr->State = WaitingForRETRResponse; sockptr->State = WaitingForRETRResponse;
} }
else else

View File

@ -59,6 +59,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define NODES_SIG 0xFF #define NODES_SIG 0xFF
char * strlop(char * buf, char delim);
UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, unsigned int msglen); UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, unsigned int msglen);
char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, 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" #define LZMA_STR "\1LZMA"
UCHAR * LZUncompress(UCHAR * Decoded, size_t Len, size_t * NewLen) UCHAR * LZUncompress(UCHAR * Decoded, int Len, int * NewLen)
{ {
unsigned char * buf; unsigned char * buf;
unsigned char inprops[LZMA_PROPS_SIZE]; unsigned char inprops[LZMA_PROPS_SIZE];
size_t inlen; size_t inlen;
int r; int r;
size_t rlen = 0; UINT rlen;
size_t outlen; UINT outlen;
memcpy(&rlen, &Decoded[5], 4); memcpy(&rlen, &Decoded[5], 4);
@ -668,8 +668,8 @@ void SaveMulticastMessage(struct MSESSION * MSession)
{ {
UCHAR * Decoded = NULL; // Output from Basexxx decode UCHAR * Decoded = NULL; // Output from Basexxx decode
UCHAR * Uncompressed = NULL; UCHAR * Uncompressed = NULL;
size_t DecodedLen; // Length of decoded message int DecodedLen; // Length of decoded message
size_t UncompressedLen; // Length of decompressed message int UncompressedLen; // Length of decompressed message
int ExpectedLen; // From front of Base128 or Base256 message int ExpectedLen; // From front of Base128 or Base256 message
int HddrLen; // Length of Expected Len Header int HddrLen; // Length of Expected Len Header
@ -1612,7 +1612,7 @@ int MulticastStatusHTML(char * Reply)
if (Sess ==NULL) if (Sess ==NULL)
return 0; return 0;
Len = sprintf(Reply, "%s", StatusPage); Len = sprintf(Reply, StatusPage);
while (Sess) while (Sess)
{ {
@ -1670,7 +1670,7 @@ int MulticastStatusHTML(char * Reply)
Sess = Sess->Next; Sess = Sess->Next;
} }
Len += sprintf(&Reply[Len], "%s", StatusTail); Len += sprintf(&Reply[Len], StatusTail);
return Len; return Len;
} }

View File

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

209
NodeMapTest.vcproj Normal file
View File

@ -0,0 +1,209 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="NodeMapTest"
ProjectGUID="{FAF0D3D4-CB63-4E07-9AE2-11A90760023D}"
RootNamespace="NodeMapTest"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="4"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="WS2_32.Lib kernel32.lib $(NoInherit)"
OutputFile="c:\devprogs\bpq32\$(ProjectName).exe"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib $(NoInherit)"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\NodeMapTest.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

BIN
PCBeep.wav Normal file

Binary file not shown.

BIN
PG/Loop.exe Normal file

Binary file not shown.

BIN
PG/PGTest.exe Normal file

Binary file not shown.

View File

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

BIN
Ring.wav Normal file

Binary file not shown.

View File

@ -1972,7 +1972,7 @@ VOID SCSPoll(int Port)
} }
Poll[3] = 0; // Data? Poll[3] = 0; // Data?
TNC->Streams[Stream].bytesTXed += datalen; TNC->Streams[Stream].BytesTXed += datalen;
Poll[4] = datalen - 1; Poll[4] = datalen - 1;
memcpy(&Poll[5], Buffer, datalen); memcpy(&Poll[5], Buffer, datalen);
@ -2324,7 +2324,7 @@ void SCSTryToSendDATA(struct TNCINFO * TNC, int Stream)
} }
Poll[3] = 0; // Data Poll[3] = 0; // Data
STREAM->bytesTXed += datalen; STREAM->BytesTXed += datalen;
Poll[4] = datalen - 1; Poll[4] = datalen - 1;
memcpy(&Poll[5], Buffer, datalen); memcpy(&Poll[5], Buffer, datalen);
@ -2893,7 +2893,7 @@ VOID ProcessIncomingCall(struct TNCINFO * TNC, struct STREAMINFO * STREAM, int S
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// Make sure app is available // Make sure app is available
@ -3034,7 +3034,7 @@ VOID ProcessIncomingCall(struct TNCINFO * TNC, struct STREAMINFO * STREAM, int S
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY // if SendTandRtoRelay set and Appl is RMS change to RELAY
@ -3402,7 +3402,7 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen)
{ {
if (TNC->TXBuffer[6]== 'T') // TX count Status if (TNC->TXBuffer[6]== 'T') // TX count Status
{ {
sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].bytesRXed, TNC->Streams[Stream].bytesTXed, Buffer); sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].BytesRXed, TNC->Streams[Stream].BytesTXed, Buffer);
SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
return; return;
} }
@ -3501,7 +3501,7 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen)
STREAM->Connected = TRUE; // Subsequent data to data channel STREAM->Connected = TRUE; // Subsequent data to data channel
STREAM->Connecting = FALSE; STREAM->Connecting = FALSE;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = 0; STREAM->BytesRXed = STREAM->BytesTXed = 0;
// Stop Scanner // Stop Scanner
@ -3897,7 +3897,7 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen)
if (buffptr == NULL) return; // No buffers, so ignore if (buffptr == NULL) return; // No buffers, so ignore
buffptr->Len = Msg[4] + 1; // Length buffptr->Len = Msg[4] + 1; // Length
TNC->Streams[Stream].bytesRXed += (int)buffptr->Len; TNC->Streams[Stream].BytesRXed += (int)buffptr->Len;
memcpy(buffptr->Data, &Msg[5], buffptr->Len); memcpy(buffptr->Data, &Msg[5], buffptr->Len);
WritetoTrace(TNC, &Msg[5], (int)buffptr->Len); WritetoTrace(TNC, &Msg[5], (int)buffptr->Len);

View File

@ -48,6 +48,7 @@ extern UCHAR BPQDirectory[];
static RECT Rect; static RECT Rect;
VOID __cdecl Debugprintf(const char * format, ...); VOID __cdecl Debugprintf(const char * format, ...);
char * strlop(char * buf, char delim);
BOOL KAMStartPort(struct PORTCONTROL * PORT); BOOL KAMStartPort(struct PORTCONTROL * PORT);
BOOL KAMStopPort(struct PORTCONTROL * PORT); BOOL KAMStopPort(struct PORTCONTROL * PORT);
@ -824,7 +825,7 @@ static VOID DEDPoll(int Port)
} }
Poll[1] = 0; // Data Poll[1] = 0; // Data
TNC->Streams[Stream].bytesTXed += datalen; TNC->Streams[Stream].BytesTXed += datalen;
Poll[2] = datalen - 1; Poll[2] = datalen - 1;
memcpy(&Poll[3], Buffer, datalen); memcpy(&Poll[3], Buffer, datalen);
@ -1507,7 +1508,7 @@ static VOID ProcessDEDFrame(struct TNCINFO * TNC)
STREAM->Connected = TRUE; // Subsequent data to data channel STREAM->Connected = TRUE; // Subsequent data to data channel
STREAM->Connecting = FALSE; STREAM->Connecting = FALSE;
STREAM->bytesRXed = STREAM->bytesTXed = 0; STREAM->BytesRXed = STREAM->BytesTXed = 0;
memcpy(MHCall, Call, 9); memcpy(MHCall, Call, 9);
MHCall[9] = 0; MHCall[9] = 0;
@ -1676,7 +1677,7 @@ static VOID ProcessDEDFrame(struct TNCINFO * TNC)
if (buffptr == NULL) return; // No buffers, so ignore if (buffptr == NULL) return; // No buffers, so ignore
buffptr->Len = framelen; // Length buffptr->Len = framelen; // Length
TNC->Streams[Stream].bytesRXed += buffptr->Len; TNC->Streams[Stream].BytesRXed += buffptr->Len;
memcpy(buffptr->Data, Msg, buffptr->Len); memcpy(buffptr->Data, Msg, buffptr->Len);
C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr); C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr);

View File

@ -52,6 +52,7 @@ extern char LOC[];
static RECT Rect; static RECT Rect;
VOID __cdecl Debugprintf(const char * format, ...); VOID __cdecl Debugprintf(const char * format, ...);
char * strlop(char * buf, char delim);
char NodeCall[11]; // Nodecall, Null Terminated char NodeCall[11]; // Nodecall, Null Terminated
@ -1266,7 +1267,7 @@ reinit:
} }
Poll[1] = 0; // Data Poll[1] = 0; // Data
TNC->Streams[Stream].bytesTXed += datalen; TNC->Streams[Stream].BytesTXed += datalen;
Poll[2] = datalen - 1; Poll[2] = datalen - 1;
memcpy(&Poll[3], Buffer, datalen); memcpy(&Poll[3], Buffer, datalen);
@ -1887,7 +1888,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC)
{ {
if (TNC->TXBuffer[4]== 'T') // TX count Status if (TNC->TXBuffer[4]== 'T') // TX count Status
{ {
sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].bytesRXed, TNC->Streams[Stream].bytesTXed, Buffer); sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].BytesRXed, TNC->Streams[Stream].BytesTXed, Buffer);
SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
TNC->WEB_CHANGED = TRUE; TNC->WEB_CHANGED = TRUE;
return; return;
@ -2026,7 +2027,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC)
STREAM->Connected = TRUE; // Subsequent data to data channel STREAM->Connected = TRUE; // Subsequent data to data channel
STREAM->Connecting = FALSE; STREAM->Connecting = FALSE;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = 0; STREAM->BytesRXed = STREAM->BytesTXed = 0;
if (TNC->SlowTimer) if (TNC->SlowTimer)
Debugprintf("RP Incoming call to APPLCALL completed"); Debugprintf("RP Incoming call to APPLCALL completed");
@ -2174,7 +2175,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC)
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// Make sure app is available // Make sure app is available
@ -2384,7 +2385,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC)
if (buffptr == NULL) return; // No buffers, so ignore if (buffptr == NULL) return; // No buffers, so ignore
buffptr->Len = framelen; // Length buffptr->Len = framelen; // Length
TNC->Streams[Stream].bytesRXed += (int)buffptr->Len; TNC->Streams[Stream].BytesRXed += (int)buffptr->Len;
memcpy(buffptr->Data, Msg, buffptr->Len); memcpy(buffptr->Data, Msg, buffptr->Len);
WritetoTrace(TNC, Msg, (int)buffptr->Len); WritetoTrace(TNC, Msg, (int)buffptr->Len);

View File

@ -142,7 +142,7 @@ loop:
return 1; return 1;
} }
BOOL SerialReadConfigFile(int Port, int ProcLine(char * buf, int Port)) BOOL SerialReadConfigFile(int Port, int ProcLine())
{ {
char buf[256],errbuf[256]; char buf[256],errbuf[256];
@ -402,7 +402,7 @@ ok:
UCHAR * data = &buffptr->Data[0]; UCHAR * data = &buffptr->Data[0];
STREAM->FramesQueued--; STREAM->FramesQueued--;
txlen = (int)buffptr->Len; txlen = (int)buffptr->Len;
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
bytes=SerialSendData(TNC, data, txlen); bytes=SerialSendData(TNC, data, txlen);
WritetoTrace(TNC, data, txlen); WritetoTrace(TNC, data, txlen);
@ -491,7 +491,7 @@ ok:
bytes=SerialSendData(TNC, TXMsg, txlen); bytes=SerialSendData(TNC, TXMsg, txlen);
TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
// WritetoTrace(TNC, &buff->L2DATA[0], txlen); // WritetoTrace(TNC, &buff->L2DATA[0], txlen);
return 1; return 1;
@ -735,7 +735,7 @@ VOID SerialReleasePort(struct TNCINFO * TNC)
VOID * SerialExtInit(EXTPORTDATA * PortEntry) VOID * SerialExtInit(EXTPORTDATA * PortEntry)
{ {
int port; int port;
char Msg[512]; char Msg[255];
char * ptr; char * ptr;
struct TNCINFO * TNC; struct TNCINFO * TNC;
char * TempScript; char * TempScript;

View File

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

View File

@ -127,6 +127,7 @@ static HMENU hMenu, hPopMenu, hPopMenu2, hPopMenu3; // handle of menu
static int ProcessLine(char * buf, int Port); static int ProcessLine(char * buf, int Port);
VOID __cdecl Debugprintf(const char * format, ...); VOID __cdecl Debugprintf(const char * format, ...);
char * strlop(char * buf, char delim);
int DisplaySessions(struct TNCINFO * TNC); int DisplaySessions(struct TNCINFO * TNC);
@ -2381,7 +2382,7 @@ nosocks:
{ {
char logmsg[120]; char logmsg[120];
sprintf(logmsg,"%d Disconnected. Bytes Sent = %d Bytes Received %d\n", sprintf(logmsg,"%d Disconnected. Bytes Sent = %d Bytes Received %d\n",
sockptr->Number, STREAM->bytesTXed, STREAM->bytesRXed); sockptr->Number, STREAM->BytesTXed, STREAM->BytesRXed);
WriteLog (logmsg); WriteLog (logmsg);
} }
@ -2406,7 +2407,7 @@ nosocks:
{ {
char logmsg[120]; char logmsg[120];
sprintf(logmsg,"%d Disconnected. Bytes Sent = %d Bytes Received %d Time %d Seconds\r\n", sprintf(logmsg,"%d Disconnected. Bytes Sent = %d Bytes Received %d Time %d Seconds\r\n",
sockptr->Number, STREAM->bytesTXed, STREAM->bytesRXed, (int)(time(NULL) - sockptr->ConnectTime)); sockptr->Number, STREAM->BytesTXed, STREAM->BytesRXed, (int)(time(NULL) - sockptr->ConnectTime));
WriteCMSLog (logmsg); WriteCMSLog (logmsg);
} }
@ -2414,7 +2415,7 @@ nosocks:
// Don't report if Internet down unless ReportRelayTraffic set) // Don't report if Internet down unless ReportRelayTraffic set)
if (sockptr->RelaySession == FALSE || TCP->ReportRelayTraffic) if (sockptr->RelaySession == FALSE || TCP->ReportRelayTraffic)
SendWL2KSessionRecord(sockptr->ADIF, STREAM->bytesTXed, STREAM->bytesRXed); SendWL2KSessionRecord(sockptr->ADIF, STREAM->BytesTXed, STREAM->BytesRXed);
WriteADIFRecord(sockptr->ADIF); WriteADIFRecord(sockptr->ADIF);
@ -3284,7 +3285,7 @@ int Socket_Accept(struct TNCINFO * TNC, SOCKET SocketId, int Port)
sockptr->Keepalive = FALSE; sockptr->Keepalive = FALSE;
sockptr->UTF8 = 0; sockptr->UTF8 = 0;
TNC->Streams[n].bytesRXed = TNC->Streams[n].bytesTXed = 0; TNC->Streams[n].BytesRXed = TNC->Streams[n].BytesTXed = 0;
TNC->Streams[n].FramesQueued = 0; TNC->Streams[n].FramesQueued = 0;
sockptr->HTTPMode = FALSE; sockptr->HTTPMode = FALSE;
@ -3833,7 +3834,7 @@ MsgLoop:
// Normal Data State // Normal Data State
STREAM->bytesRXed += MsgLen; STREAM->BytesRXed += MsgLen;
SendIndex = 0; SendIndex = 0;
// Line could be up to 500 chars if coming from a program rather than an interative user // Line could be up to 500 chars if coming from a program rather than an interative user
@ -3985,7 +3986,7 @@ MsgLoop:
if (ctlen > 0) send(sock, ct, ctlen, 0); if (ctlen > 0) send(sock, ct, ctlen, 0);
STREAM->bytesTXed = ctlen; STREAM->BytesTXed = ctlen;
if (LogEnabled) if (LogEnabled)
{ {
@ -4066,7 +4067,7 @@ int DataSocket_ReadRelay(struct TNCINFO * TNC, struct ConnectionInfo * sockptr,
MsgPtr = &sockptr->InputBuffer[0]; MsgPtr = &sockptr->InputBuffer[0];
InputLen = sockptr->InputLen; InputLen = sockptr->InputLen;
STREAM->bytesRXed += InputLen; STREAM->BytesRXed += InputLen;
if (sockptr->LoginState == 2) if (sockptr->LoginState == 2)
{ {
@ -4076,7 +4077,7 @@ int DataSocket_ReadRelay(struct TNCINFO * TNC, struct ConnectionInfo * sockptr,
// Queue to Node. Data may arrive it large quatities, possibly exceeding node buffer capacity // Queue to Node. Data may arrive it large quatities, possibly exceeding node buffer capacity
STREAM->bytesRXed += InputLen; STREAM->BytesRXed += InputLen;
if (sockptr->FromHostBuffPutptr + InputLen > sockptr->FromHostBufferSize) if (sockptr->FromHostBuffPutptr + InputLen > sockptr->FromHostBufferSize)
{ {
@ -4346,7 +4347,7 @@ int DataSocket_ReadSync(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, S
InputLen = sockptr->InputLen; InputLen = sockptr->InputLen;
MsgPtr[InputLen] = 0; MsgPtr[InputLen] = 0;
STREAM->bytesRXed += InputLen; STREAM->BytesRXed += InputLen;
if (sockptr->LoginState == 0) // Initial connection if (sockptr->LoginState == 0) // Initial connection
{ {
@ -4494,7 +4495,7 @@ MsgLoop:
// Queue to Node. Data may arrive it large quantities, possibly exceeding node buffer capacity // Queue to Node. Data may arrive it large quantities, possibly exceeding node buffer capacity
STREAM->bytesRXed += InputLen; STREAM->BytesRXed += InputLen;
BuffertoNode(sockptr, MsgPtr, InputLen); BuffertoNode(sockptr, MsgPtr, InputLen);
sockptr->InputLen = 0; sockptr->InputLen = 0;
@ -4676,7 +4677,7 @@ MsgLoop:
if (strstr(MsgPtr, "Password :")) if (strstr(MsgPtr, "Password :"))
{ {
// Send "CMSTelnet" + gateway callsign + frequency + emission type if info is available // Send “CMSTelnet” + gateway callsign + frequency + emission type if info is available
TRANSPORTENTRY * Sess1 = TNC->PortRecord->ATTACHEDSESSIONS[Stream]; TRANSPORTENTRY * Sess1 = TNC->PortRecord->ATTACHEDSESSIONS[Stream];
TRANSPORTENTRY * Sess2 = NULL; TRANSPORTENTRY * Sess2 = NULL;
@ -5649,7 +5650,7 @@ int Telnet_Connected(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, SOCK
sockptr->FromHostBuffPutptr = sockptr->FromHostBuffGetptr = 0; sockptr->FromHostBuffPutptr = sockptr->FromHostBuffGetptr = 0;
TNC->Streams[Stream].bytesRXed = TNC->Streams[Stream].bytesTXed = 0; TNC->Streams[Stream].BytesRXed = TNC->Streams[Stream].BytesTXed = 0;
return 0; return 0;
} }
@ -6507,7 +6508,7 @@ BOOL TelSendPacket(int Stream, struct STREAMINFO * STREAM, PMSGWITHLEN buffptr,
datalen = (int)buffptr->Len; datalen = (int)buffptr->Len;
MsgPtr = &buffptr->Data[0]; MsgPtr = &buffptr->Data[0];
STREAM->bytesTXed += datalen; STREAM->BytesTXed += datalen;
sock = sockptr->socket; sock = sockptr->socket;
@ -6756,7 +6757,7 @@ extern struct DATAMESSAGE * REPLYBUFFER;
char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...); char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...);
VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
{ {
int Port = 0, index =0; int Port = 0, index =0;
char * ptr, *Context; char * ptr, *Context;
@ -6941,7 +6942,7 @@ VOID RECONFIGTELNET (TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail,
SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER));
} }
VOID SHOWTELNET(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) VOID SHOWTELNET(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
{ {
// DISPLAY Telnet Server Status Mheard // DISPLAY Telnet Server Status Mheard

View File

@ -0,0 +1,207 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="UDPtoTCP"
ProjectGUID="{879D4FD3-82E0-429E-8A54-7AF4CA9FEF7D}"
RootNamespace="UDPtoTCP"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib WS2_32.Lib $(NOINHERIT)"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib $(NoInherit)"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\UDPtoTCP.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="8.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="SKIGACER"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

29
UIARQ.c
View File

@ -367,10 +367,10 @@ static VOID UpdateStatsLine(struct TNCINFO * TNC, struct STREAMINFO * STREAM)
{ {
char Count[16]; char Count[16];
sprintf(Count, "%d", STREAM->bytesRXed); sprintf(Count, "%d", STREAM->BytesRXed);
SetWindowText(STREAM->xIDC_RXED, Count); SetWindowText(STREAM->xIDC_RXED, Count);
sprintf(Count, "%d", STREAM->bytesTXed); sprintf(Count, "%d", STREAM->BytesTXed);
SetWindowText(STREAM->xIDC_SEND, Count); SetWindowText(STREAM->xIDC_SEND, Count);
sprintf(Count, "%d", STREAM->BytesResent); sprintf(Count, "%d", STREAM->BytesResent);
@ -849,7 +849,7 @@ static VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, int
strcpy(STREAM->MyCall, call2); strcpy(STREAM->MyCall, call2);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0;
if (WL2K) if (WL2K)
strcpy(SESS->RMSCall, WL2K->RMSCall); strcpy(SESS->RMSCall, WL2K->RMSCall);
@ -869,7 +869,7 @@ static VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, int
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// Make sure app is available // Make sure app is available
@ -1001,7 +1001,7 @@ AckConnectRequest:
goto SendKReply; // Repeated ACK goto SendKReply; // Repeated ACK
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0;
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
ARQ->ARQTimerState = 0; ARQ->ARQTimerState = 0;
@ -1240,7 +1240,20 @@ SendKReply:
{ {
// Create a traffic record // Create a traffic record
hookL4SessionDeleted(TNC, STREAM); char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1;
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
} }
STREAM->Connecting = FALSE; STREAM->Connecting = FALSE;
@ -1300,7 +1313,7 @@ SendKReply:
buffptr->Len = Len; buffptr->Len = Len;
memcpy(buffptr->Data, &Input[1], Len); memcpy(buffptr->Data, &Input[1], Len);
STREAM->bytesRXed += Len; STREAM->BytesRXed += Len;
UpdateStatsLine(TNC, STREAM); UpdateStatsLine(TNC, STREAM);
@ -1388,7 +1401,7 @@ static VOID SendARQData(struct TNCINFO * TNC, PMSGWITHLEN Buffer, int Stream)
ARQ->TXHOLDQ[ARQ->TXSeq] = Buffer; ARQ->TXHOLDQ[ARQ->TXSeq] = Buffer;
STREAM->bytesTXed += Origlen; STREAM->BytesTXed += Origlen;
UpdateStatsLine(TNC, STREAM); UpdateStatsLine(TNC, STREAM);

View File

@ -62,7 +62,7 @@ void ConnecttoUZ7HOThread(void * portptr);
void CreateMHWindow(); void CreateMHWindow();
int Update_MH_List(struct in_addr ipad, char * call, char proto); int Update_MH_List(struct in_addr ipad, char * call, char proto);
int ConnecttoUZ7HO(int port); int ConnecttoUZ7HO();
static int ProcessReceivedData(int bpqport); static int ProcessReceivedData(int bpqport);
static int ProcessLine(char * buf, int Port); static int ProcessLine(char * buf, int Port);
int KillTNC(struct TNCINFO * TNC); int KillTNC(struct TNCINFO * TNC);
@ -374,7 +374,7 @@ int UZ7HOSetFreq(int port, struct TNCINFO * TNC, struct AGWINFO * AGW, PDATAMESS
{ {
// Read Freq // Read Freq
buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Frequency %d\r", AGW->CenterFreq); buffptr->Len = sprintf((UCHAR *)&buffptr->Data[0], "UZ7HO} Modem Freqency %d\r", AGW->CenterFreq);
return 1; return 1;
} }
@ -884,7 +884,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
if (STREAM->ReportDISC) if (STREAM->ReportDISC)
{ {
hookL4SessionDeleted(TNC, STREAM);
STREAM->ReportDISC = FALSE; STREAM->ReportDISC = FALSE;
buff->PORT = Stream; buff->PORT = Stream;
@ -1230,9 +1229,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
ViaList[0] = Digis; ViaList[0] = Digis;
} }
hookL4SessionAttempt(STREAM,&STREAM->AGWKey[1], &STREAM->AGWKey[11]);
sent = send(TNCInfo[MasterPort[port]]->TCPSock, (char *)&AGW->TXHeader, AGWHDDRLEN, 0); sent = send(TNCInfo[MasterPort[port]]->TCPSock, (char *)&AGW->TXHeader, AGWHDDRLEN, 0);
if (Digis) if (Digis)
send(TNCInfo[MasterPort[port]]->TCPSock, ViaList, Digis * 10 + 1, 0); send(TNCInfo[MasterPort[port]]->TCPSock, ViaList, Digis * 10 + 1, 0);
@ -2234,8 +2230,6 @@ VOID ProcessAGWPacket(struct TNCINFO * TNC, UCHAR * Message)
buffptr->Len = RXHeader->DataLength; buffptr->Len = RXHeader->DataLength;
memcpy(buffptr->Data, Message, RXHeader->DataLength); memcpy(buffptr->Data, Message, RXHeader->DataLength);
STREAM->bytesRXed += RXHeader->DataLength;
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
return; return;
} }
@ -2376,7 +2370,7 @@ GotStream:
memcpy(STREAM->AGWKey, Key, 21); memcpy(STREAM->AGWKey, Key, 21);
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = 0; STREAM->BytesRXed = STREAM->BytesTXed = 0;
SuspendOtherPorts(TNC); SuspendOtherPorts(TNC);
@ -2473,13 +2467,11 @@ GotStream:
} }
strcpy(STREAM->MyCall, TNC->TargetCall);
if (App < 32) if (App < 32)
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// Make sure app is available // Make sure app is available
@ -2511,9 +2503,6 @@ GotStream:
} }
} }
strcpy(STREAM->MyCall, TNC->TargetCall);
// Not to a known appl - drop through to Node // Not to a known appl - drop through to Node
return; return;
@ -2537,7 +2526,7 @@ GotStream:
STREAM->Connected = TRUE; STREAM->Connected = TRUE;
STREAM->Connecting = FALSE; STREAM->Connecting = FALSE;
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = 0; STREAM->BytesRXed = STREAM->BytesTXed = 0;
buffptr = GetBuff(); buffptr = GetBuff();
if (buffptr == 0) return; // No buffers, so ignore if (buffptr == 0) return; // No buffers, so ignore
@ -2751,7 +2740,7 @@ GotStream:
// Capabilities - along with Version used to indicate QtSoundModem // Capabilities - along with Version used to indicate QtSoundModem
// with ability to set and read Modem type and frequency/ // with ability to set and read Modem type and frequency/
if ((Message[2] == 24 && Message[3] == 3 && Message[4] == 100) || TNC->AGWInfo->isQTSM) if (Message[2] == 24 && Message[3] == 3 && Message[4] == 100)
{ {
// Set flag on any other ports on same TNC (all ports with this as master port) // Set flag on any other ports on same TNC (all ports with this as master port)
@ -2939,9 +2928,6 @@ VOID SendData(int Stream, struct TNCINFO * TNC, char * Key, char * Msg, int MsgL
memcpy(AGW->TXHeader.callfrom, &Key[11], 10); memcpy(AGW->TXHeader.callfrom, &Key[11], 10);
memcpy(AGW->TXHeader.callto, &Key[1], 10); memcpy(AGW->TXHeader.callto, &Key[1], 10);
TNC->Streams[Stream].bytesTXed += MsgLen;
// If Length is greater than Paclen we should fragment // If Length is greater than Paclen we should fragment
if (TNC->PortRecord->ATTACHEDSESSIONS[Stream]) if (TNC->PortRecord->ATTACHEDSESSIONS[Stream])

2
V4.c
View File

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

70
VARA.c
View File

@ -394,18 +394,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
} }
} }
// Check ATTACH time limit
if (STREAM->Attached)
{
if (STREAM->AttachTime && TNC->AttachTimeLimit && time(NULL) > (TNC->AttachTimeLimit + STREAM->AttachTime))
{
STREAM->ReportDISC = 1;
STREAM->AttachTime = 0;
}
}
while (TNC->PortRecord->UI_Q) while (TNC->PortRecord->UI_Q)
{ {
buffptr = Q_REM(&TNC->PortRecord->UI_Q); buffptr = Q_REM(&TNC->PortRecord->UI_Q);
@ -518,8 +506,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
int calllen; int calllen;
char Msg[80]; char Msg[80];
memset(STREAM, 0, sizeof(struct STREAMINFO));
TNC->Streams[0].Attached = TRUE; TNC->Streams[0].Attached = TRUE;
calllen = ConvFromAX25(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4USER, TNC->Streams[0].MyCall); calllen = ConvFromAX25(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4USER, TNC->Streams[0].MyCall);
@ -530,7 +516,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
VARASendCommand(TNC, "LISTEN OFF\r", TRUE); VARASendCommand(TNC, "LISTEN OFF\r", TRUE);
TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit; // Reset Limit TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit; // Reset Limit
STREAM->AttachTime = time(NULL);
// Stop other ports in same group // Stop other ports in same group
@ -583,7 +568,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
buffptr->Data[txlen] = 0; // Null terminate buffptr->Data[txlen] = 0; // Null terminate
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
WritetoTrace(TNC, buffptr->Data, txlen); WritetoTrace(TNC, buffptr->Data, txlen);
// Always add to stored data and set timer. If it expires send message // Always add to stored data and set timer. If it expires send message
@ -614,7 +599,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
memcpy(txbuff, buffptr->Data, txlen); memcpy(txbuff, buffptr->Data, txlen);
bytes = VARASendData(TNC, &txbuff[0], txlen); bytes = VARASendData(TNC, &txbuff[0], txlen);
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
ReleaseBuffer(buffptr); ReleaseBuffer(buffptr);
} }
@ -662,7 +647,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
txlen = (int)buffptr->Len; txlen = (int)buffptr->Len;
memcpy(txbuff, buffptr->Data, txlen); memcpy(txbuff, buffptr->Data, txlen);
bytes=send(TNC->TCPDataSock, buff->L2DATA, txlen, 0); bytes=send(TNC->TCPDataSock, buff->L2DATA, txlen, 0);
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
WritetoTrace(TNC, txbuff, txlen); WritetoTrace(TNC, txbuff, txlen);
ReleaseBuffer(buffptr); ReleaseBuffer(buffptr);
} }
@ -689,7 +674,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
memcpy(txbuff, buff->L2DATA, txlen); memcpy(txbuff, buff->L2DATA, txlen);
bytes=send(TNC->TCPDataSock, txbuff, txlen, 0); bytes=send(TNC->TCPDataSock, txbuff, txlen, 0);
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
WritetoTrace(TNC, buff->L2DATA, txlen); WritetoTrace(TNC, buff->L2DATA, txlen);
return 0; return 0;
} }
@ -705,7 +690,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
buff->L2DATA[txlen] = 0; // Null terminate buff->L2DATA[txlen] = 0; // Null terminate
STREAM->bytesTXed += txlen; STREAM->BytesTXed += txlen;
WritetoTrace(TNC, buff->L2DATA, txlen); WritetoTrace(TNC, buff->L2DATA, txlen);
// Always add to stored data and set timer. If it expires send message // Always add to stored data and set timer. If it expires send message
@ -831,8 +816,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
TNC->Streams[0].Connecting = TRUE; TNC->Streams[0].Connecting = TRUE;
hookL4SessionAttempt(STREAM, &buff->L2DATA[2], TNC->Streams[0].MyCall);
// See if Busy // See if Busy
if (InterlockedCheckBusy(TNC)) if (InterlockedCheckBusy(TNC))
@ -2017,7 +2000,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
} }
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %s", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %s",
STREAM->bytesTXed, STREAM->bytesRXed, &Buffer[7]); STREAM->BytesTXed, STREAM->BytesRXed, &Buffer[7]);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
return; return;
@ -2037,7 +2020,8 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
Debugprintf(Buffer); Debugprintf(Buffer);
WritetoTrace(TNC, Buffer, MsgLen - 1); WritetoTrace(TNC, Buffer, MsgLen - 1);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->ConnectTime = time(NULL);
STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
if (TNC->VARACMsg) if (TNC->VARACMsg)
free(TNC->VARACMsg); free(TNC->VARACMsg);
@ -2104,10 +2088,6 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
// Stop other ports in same group // Stop other ports in same group
memset(STREAM, 0, sizeof(struct STREAMINFO));
STREAM->ConnectTime = time(NULL);
SuspendOtherPorts(TNC); SuspendOtherPorts(TNC);
TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit; // Reset Limit TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit; // Reset Limit
@ -2203,7 +2183,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
STREAM->PacketsSent++; STREAM->PacketsSent++;
bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0); bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0);
STREAM->bytesTXed += TNC->NetRomTxLen; STREAM->BytesTXed += TNC->NetRomTxLen;
free(TNC->NetRomTxBuffer); free(TNC->NetRomTxBuffer);
TNC->NetRomTxBuffer = NULL; TNC->NetRomTxBuffer = NULL;
@ -2231,7 +2211,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// if SendTandRtoRelay set and Appl is RMS change to RELAY // if SendTandRtoRelay set and Appl is RMS change to RELAY
@ -2284,8 +2264,6 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
STREAM->NeedDisc = 100; // 10 secs STREAM->NeedDisc = 100; // 10 secs
} }
} }
strcpy(STREAM->MyCall, TNC->TargetCall);
return; return;
} }
else else
@ -2295,7 +2273,6 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
char Reply[80]; char Reply[80];
int ReplyLen; int ReplyLen;
STREAM->ConnectTime = time(NULL);
if (TNC->NetRomMode) if (TNC->NetRomMode)
{ {
@ -2308,7 +2285,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
STREAM->PacketsSent++; STREAM->PacketsSent++;
bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0); bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0);
STREAM->bytesTXed += TNC->NetRomTxLen; STREAM->BytesTXed += TNC->NetRomTxLen;
free(TNC->NetRomTxBuffer); free(TNC->NetRomTxBuffer);
TNC->NetRomTxBuffer = NULL; TNC->NetRomTxBuffer = NULL;
TNC->NetRomTxLen = 0; TNC->NetRomTxLen = 0;
@ -2397,7 +2374,22 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{ {
// Create a traffic record // Create a traffic record
hookL4SessionDeleted(TNC, STREAM); char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1;
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
STREAM->ConnectTime= 0; //Prevent retrigger
} }
@ -2750,13 +2742,13 @@ VOID VARAProcessDataPacket(struct TNCINFO * TNC, UCHAR * Data, int Length)
TNC->TimeSinceLast = 0; TNC->TimeSinceLast = 0;
STREAM->bytesRXed += Length; STREAM->BytesRXed += Length;
Data[Length] = 0; Data[Length] = 0;
// Debugprintf("VARA: RXD %d bytes", Length); // Debugprintf("VARA: RXD %d bytes", Length);
sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d",
STREAM->bytesTXed, STREAM->bytesRXed,STREAM->BytesOutstanding); STREAM->BytesTXed, STREAM->BytesRXed,STREAM->BytesOutstanding);
MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC);
// if VARAAC Mode, remove byte count from front and add cr // if VARAAC Mode, remove byte count from front and add cr
@ -2899,7 +2891,7 @@ int VARASendData(struct TNCINFO * TNC, UCHAR * Buff, int Len)
struct STREAMINFO * STREAM = &TNC->Streams[0]; struct STREAMINFO * STREAM = &TNC->Streams[0];
int bytes=send(TNC->TCPDataSock,(const char FAR *)Buff, Len, 0); int bytes=send(TNC->TCPDataSock,(const char FAR *)Buff, Len, 0);
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
WritetoTrace(TNC, Buff, Len); WritetoTrace(TNC, Buff, Len);
return bytes; return bytes;
} }
@ -2998,7 +2990,7 @@ void SendVARANetrom(struct TNCINFO * TNC, unsigned char * Data, int Len)
STREAM->PacketsSent++; STREAM->PacketsSent++;
bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0); bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0);
STREAM->bytesTXed += TNC->NetRomTxLen; STREAM->BytesTXed += TNC->NetRomTxLen;
free(TNC->NetRomTxBuffer); free(TNC->NetRomTxBuffer);
TNC->NetRomTxBuffer = NULL; TNC->NetRomTxBuffer = NULL;

View File

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

View File

@ -508,7 +508,7 @@ static int ProcessLine(char * buf, int Port)
void WINMORThread(void * portptr); void WINMORThread(void * portptr);
VOID ProcessDataSocketData(int port); VOID ProcessDataSocketData(int port);
int ConnecttoWINMOR(int port); int ConnecttoWINMOR();
static int ProcessReceivedData(struct TNCINFO * TNC); static int ProcessReceivedData(struct TNCINFO * TNC);
int V4ProcessReceivedData(struct TNCINFO * TNC); int V4ProcessReceivedData(struct TNCINFO * TNC);
VOID ReleaseTNC(struct TNCINFO * TNC); VOID ReleaseTNC(struct TNCINFO * TNC);
@ -915,7 +915,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
txlen = buffptr->Len; txlen = buffptr->Len;
memcpy(txbuff, buffptr->Data, txlen); memcpy(txbuff, buffptr->Data, txlen);
bytes = send(TNC->TCPDataSock, txbuff, (int)txlen, 0); bytes = send(TNC->TCPDataSock, txbuff, (int)txlen, 0);
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
WritetoTrace(TNC, txbuff, (int)txlen); WritetoTrace(TNC, txbuff, (int)txlen);
ReleaseBuffer(buffptr); ReleaseBuffer(buffptr);
} }
@ -941,7 +941,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
} }
bytes = send(TNC->TCPDataSock,buff->L2DATA, (int)txlen, 0); bytes = send(TNC->TCPDataSock,buff->L2DATA, (int)txlen, 0);
STREAM->bytesTXed += bytes; STREAM->BytesTXed += bytes;
WritetoTrace(TNC, &buff->L2DATA[0], (int)txlen); WritetoTrace(TNC, &buff->L2DATA[0], (int)txlen);
} }
@ -2106,7 +2106,7 @@ VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
FreeSemaphore(&Semaphore); FreeSemaphore(&Semaphore);
STREAM->ConnectTime = time(NULL); STREAM->ConnectTime = time(NULL);
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
if (TNC->StartInRobust) if (TNC->StartInRobust)
send(TNC->TCPSock, "ROBUST TRUE\r\n", 13, 0); send(TNC->TCPSock, "ROBUST TRUE\r\n", 13, 0);
@ -2207,7 +2207,7 @@ VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
PMSGWITHLEN buffptr = Q_REM(&STREAM->BPQtoPACTOR_Q); PMSGWITHLEN buffptr = Q_REM(&STREAM->BPQtoPACTOR_Q);
send(TNC->TCPDataSock, buffptr->Data, (int)buffptr->Len, 0); send(TNC->TCPDataSock, buffptr->Data, (int)buffptr->Len, 0);
STREAM->bytesTXed += (int)buffptr->Len; STREAM->BytesTXed += (int)buffptr->Len;
WritetoTrace(TNC, buffptr->Data, (int)buffptr->Len); WritetoTrace(TNC, buffptr->Data, (int)buffptr->Len);
ReleaseBuffer(buffptr); ReleaseBuffer(buffptr);
} }
@ -2231,7 +2231,7 @@ VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
{ {
char AppName[13]; char AppName[13];
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12); memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
AppName[12] = 0; AppName[12] = 0;
// Make sure app is available // Make sure app is available
@ -2368,7 +2368,22 @@ VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
if (TNC->Streams[0].Connected) if (TNC->Streams[0].Connected)
{ {
hookL4SessionDeleted(TNC, STREAM); // Create a traffic record
char logmsg[120];
time_t Duration;
Duration = time(NULL) - STREAM->ConnectTime;
if (Duration == 0)
Duration = 1; // Avoid zero divide
sprintf(logmsg,"Port %2d %9s Bytes Sent %d BPS %d Bytes Received %d BPS %d Time %d Seconds",
TNC->Port, STREAM->RemoteCall,
STREAM->BytesTXed, (int)(STREAM->BytesTXed/Duration),
STREAM->BytesRXed, (int)(STREAM->BytesRXed/Duration), (int)Duration);
Debugprintf(logmsg);
GetSemaphore(&Semaphore, 50); GetSemaphore(&Semaphore, 50);
WritetoTrace(TNC, Buffer, MsgLen - 2); WritetoTrace(TNC, Buffer, MsgLen - 2);
@ -2693,7 +2708,7 @@ loop:
return; return;
} }
STREAM->bytesRXed += InputLen; STREAM->BytesRXed += InputLen;
msg = &buffptr->Data[0]; msg = &buffptr->Data[0];
msg[InputLen] = 0; msg[InputLen] = 0;

View File

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

View File

@ -78,7 +78,6 @@ char * doXMLTransparency(char * string);
Dll BOOL APIENTRY APISendAPRSMessage(char * Text, char * ToCall); Dll BOOL APIENTRY APISendAPRSMessage(char * Text, char * ToCall);
void SendMessageReadEvent(char * Call, struct MsgInfo * Msg); void SendMessageReadEvent(char * Call, struct MsgInfo * Msg);
void SendNewMessageEvent(char * call, struct MsgInfo * Msg); void SendNewMessageEvent(char * call, struct MsgInfo * Msg);
void MQTTMessageEvent(void* message);
extern char NodeTail[]; extern char NodeTail[];
extern char BBSName[10]; extern char BBSName[10];
@ -1247,25 +1246,63 @@ int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Nu
User->Total.MsgsSent[Index] ++; User->Total.MsgsSent[Index] ++;
// User->Total.BytesForwardedOut[Index] += Length; // User->Total.BytesForwardedOut[Index] += Length;
// if body not UTF-8, convert it // if body not UTF-8, convert it
if (WebIsUTF8(MsgBytes, msgLen) == FALSE) if (WebIsUTF8(MsgBytes, msgLen) == FALSE)
{ {
int code = TrytoGuessCode(MsgBytes, msgLen); // With Windows it is simple - convert using current codepage
// I think the only reliable way is to convert to unicode and back
UCHAR * UTF = malloc(msgLen * 3); size_t origlen = msgLen + 1;
if (code == 437) UCHAR * BufferB = malloc(2 * origlen);
msgLen = Convert437toUTF8(MsgBytes, msgLen, UTF); #ifdef WIN32
else if (code == 1251) WCHAR * BufferW = malloc(2 * origlen);
msgLen = Convert1251toUTF8(MsgBytes, msgLen, UTF); int wlen;
else int len = (int)origlen;
msgLen = Convert1252toUTF8(MsgBytes, msgLen, UTF);
free(MsgBytes); wlen = MultiByteToWideChar(CP_ACP, 0, MsgBytes, len, BufferW, (int)(origlen * 2));
Save = MsgBytes = UTF; len = WideCharToMultiByte(CP_UTF8, 0, BufferW, wlen, BufferB, (int)(origlen * 2), NULL, NULL);
free(Save);
Save = MsgBytes = BufferB;
free(BufferW);
msgLen = len - 1; // exclude NULL
#else
size_t left = 2 * msgLen;
size_t outbuflen = left;
size_t len = msgLen + 1; // include null
int ret;
UCHAR * BufferBP = BufferB;
char * orig = MsgBytes;
MsgBytes[msgLen] = 0; MsgBytes[msgLen] = 0;
iconv_t * icu = Session->WebMail->iconv_toUTF8;
if (icu == NULL)
icu = Session->WebMail->iconv_toUTF8 = iconv_open("UTF-8//IGNORE", "CP1252");
if (icu == (iconv_t) -1)
{
Session->WebMail->iconv_toUTF8 = NULL;
strcpy(BufferB, MsgBytes);
}
else
{
iconv(icu, NULL, NULL, NULL, NULL); // Reset State Machine
ret = iconv(icu, &MsgBytes, &len, (char ** __restrict__)&BufferBP, &left);
}
// left is next location to write, so length written is outbuflen - left
// add a null in case iconv didn't complete comversion
BufferB[outbuflen - left] = 0;
free(Save);
Save = MsgBytes = BufferB;
msgLen = strlen(MsgBytes);
#endif
} }
// ptr += sprintf(ptr, "%s", MsgBytes); // ptr += sprintf(ptr, "%s", MsgBytes);
@ -2021,7 +2058,7 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
"document.getElementById('myform').action = '/WebMail/QuoteOriginal' + '?%s';" "document.getElementById('myform').action = '/WebMail/QuoteOriginal' + '?%s';"
" document.getElementById('myform').submit();}</script>" " document.getElementById('myform').submit();}</script>"
"<input type=button class='btn' onclick='myfunc()' " "<input type=button class='btn' onclick='myfunc()' "
"value='Include Original Msg'>"; "value='Include Orignal Msg'>";
char Temp[1024]; char Temp[1024];
char ReplyAddr[128]; char ReplyAddr[128];
@ -2841,11 +2878,6 @@ VOID SaveNewMessage(struct HTTPConnectionInfo * Session, char * MsgPtr, char * R
SendNewMessageEvent(user->Call, Msg); SendNewMessageEvent(user->Call, Msg);
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
if (user && (user->flags & F_APRSMFOR)) if (user && (user->flags & F_APRSMFOR))
{ {
char APRS[128]; char APRS[128];
@ -3790,12 +3822,6 @@ VOID WriteOneRecipient(struct MsgInfo * Msg, WebMailInfo * WebMail, int MsgLen,
Msg->status = '$'; // Has forwarding Msg->status = '$'; // Has forwarding
BuildNNTPList(Msg); // Build NNTP Groups list BuildNNTPList(Msg); // Build NNTP Groups list
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
} }
@ -4380,12 +4406,6 @@ VOID BuildMessageFromHTMLInput(struct HTTPConnectionInfo * Session, char * Reply
BuildNNTPList(Msg); // Build NNTP Groups list BuildNNTPList(Msg); // Build NNTP Groups list
#ifndef NOMQTT
if (MQTT)
MQTTMessageEvent(Msg);
#endif
SaveMessageDatabase(); SaveMessageDatabase();
SaveBIDDatabase(); SaveBIDDatabase();

View File

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

View File

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

199
WinRPRHelper.vcproj Normal file
View File

@ -0,0 +1,199 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="WinRPRHelper"
ProjectGUID="{8FED3782-1A9B-435D-96AC-6A1432995818}"
RootNamespace="WinRPRHelper"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="c:\devprogs\bpq32\"
IntermediateDirectory="$(SolutionDir))Intermed\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="WS2_32.Lib"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="c:\devprogs\bpq32\"
IntermediateDirectory="$(SolutionDir)Intermed\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="WS2_32.Lib"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\WinRPRHelper.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

229
WinmorControl.vcproj Normal file
View File

@ -0,0 +1,229 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="WinmorControl"
ProjectGUID="{005A91EA-3A00-4FB4-ADD9-EB78DBFA2B82}"
RootNamespace="WinmorControl"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Debug/WinmorControl.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="true"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/WinmorControl.pch"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="WS2_32.Lib Psapi.lib"
OutputFile="c:\DevProgs\bpq32\WinmorControl.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/bpq32.pdb"
GenerateMapFile="true"
MapFileName="c:\devprogs\bpq32\bpqpp.map"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/WinmorControl.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\Dev\Msdev2005\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
IntermediateDirectory="C:\Dev\Msdev2005\Intermed\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Release/WinmorControl.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\cinclude"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="C:\msdev2005\Intermed\Release/WinmorControl.pch"
AssemblerListingLocation="$(IntDir)\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="WS2_32.Lib Psapi.lib"
OutputFile="c:\DevProgs\bpq32\WinmorControl.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile=".\Release/WinmorControl.pdb"
GenerateMapFile="true"
MapFileName="c:\devprogs\bpq32\WinmorControl.map"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/WinmorControl.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
>
<File
RelativePath=".\WinmorControl.c"
>
</File>
<File
RelativePath=".\WinmorControl.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

BIN
XAprs Normal file

Binary file not shown.

1
adif.c
View File

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

136
asmDOSAPI.asm Normal file
View File

@ -0,0 +1,136 @@
IF 0
Copyright 2001-2015 John Wiseman G8BPQ
This file is part of LinBPQ/BPQ32.
LinBPQ/BPQ32 is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
LinBPQ/BPQ32 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
ENDIF
IFNDEF BPQ64
PAGE 56,132
;
.386
;
; SEGMENT definitions and order
;
;* 32 Bit code
_TEXT SEGMENT DWORD USE32 PUBLIC 'CODE'
_TEXT ENDS
;* Contains 32 Bit data
_BPQDATA SEGMENT DWORD PUBLIC 'DATA'
_BPQDATA ENDS
ASSUME CS:FLAT, DS:FLAT, ES:FLAT, SS:FLAT
OFFSET32 EQU <OFFSET FLAT:>
_BPQDATA SEGMENT
extern _APISemaphore:DWORD
ApiEAX DD 0;
ApiEBX DD 0;
ApiECX DD 0;
ApiEDX DD 0;
ApiESI DD 0;
ApiEDI DD 0;
_BPQDATA ENDS
_TEXT SEGMENT
;
EXTRN _CHOSTAPI:NEAR
MARKER DB 'G8BPQ' ; MUST BE JUST BEFORE INT 7F ENTRY
DB 4 ; MAJORVERSION
DB 9 ; MINORVERSION
PUBLIC _BPQHOSTAPI
_BPQHOSTAPI:
;
; SPECIAL INTERFACE, MAINLY FOR EXTERNAL HOST MODE SUPPORT PROGS
;
extrn _GetSemaphore:near
extrn _FreeSemaphore:near
extrn _Check_Timer:near
pushad
call _Check_Timer
push offset _APISemaphore
call _GetSemaphore
add esp, 4
popad
; Params are 16 bits
movzx eax,ax
movzx ebx,bx
movzx ecx,cx
movzx edx,dx
mov ApiEAX, eax
mov ApiEBX, ebx
mov ApiECX, ecx
mov ApiEDX, edx
mov ApiESI, esi
mov ApiEDI, edi
lea eax,ApiEDI
push eax
lea eax,ApiESI
push eax
lea eax,ApiEDX
push eax
lea eax,ApiECX
push eax
lea eax,ApiEBX
push eax
lea eax,ApiEAX
push eax
call _CHOSTAPI
add esp, 24
mov eax,ApiEAX
mov ebx,ApiEBX
mov ecx,ApiECX
mov edx,ApiEDX
mov esi,ApiESI
mov esi,ApiEDI
pushad
push offset _APISemaphore
call _FreeSemaphore
add esp, 4
popad
ret
_TEXT ENDS
ENDIF
END

View File

@ -62,15 +62,15 @@ extern int ENDOFDATA;
extern int L3LIVES; extern int L3LIVES;
extern int NUMBEROFNODES; extern int NUMBEROFNODES;
struct CMDX typedef struct _CMDX
{ {
char String[12]; // COMMAND STRING char String[12]; // COMMAND STRING
UCHAR CMDLEN; // SIGNIFICANT LENGTH UCHAR CMDLEN; // SIGNIFICANT LENGTH
// VOID (*CMDPROC)(struct _TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD);// COMMAND PROCESSOR VOID (* CMDPROC)(); // COMMAND PROCESSOR
VOID (*CMDPROC)();// COMMAND PROCESSOR
size_t CMDFLAG; // FLAG/VALUE Offset size_t CMDFLAG; // FLAG/VALUE Offset
}; } CMDX;
struct APPLCONFIG struct APPLCONFIG
{ {
@ -547,14 +547,14 @@ typedef struct PORTCONTROL
PMESSAGE PORTRX_Q; // FRAMES RECEIVED ON THIS PORT PMESSAGE PORTRX_Q; // FRAMES RECEIVED ON THIS PORT
PMESSAGE PORTTX_Q; // FRAMES TO BE SENT ON THIS PORT PMESSAGE PORTTX_Q; // FRAMES TO BE SENT ON THIS PORT
void (FAR * PORTTXROUTINE)(struct _EXTPORTDATA * PORTVEC, MESSAGE * Buffer); // POINTER TO TRANSMIT ROUTINE FOR THIS PORT void (FAR * PORTTXROUTINE)(); // POINTER TO TRANSMIT ROUTINE FOR THIS PORT
void (FAR * PORTRXROUTINE)(struct _EXTPORTDATA * PORTVEC); // POINTER TO RECEIVE ROUTINE FOR THIS PORT void (FAR * PORTRXROUTINE)(); // POINTER TO RECEIVE ROUTINE FOR THIS PORT
void (FAR * PORTINITCODE)(struct PORTCONTROL * PortVector); // INITIALISATION ROUTINE void (FAR * PORTINITCODE)(); // INITIALISATION ROUTINE
void (FAR * PORTTIMERCODE)(struct PORTCONTROL * PortVector); // void (FAR * PORTTIMERCODE)(); //
void (FAR * PORTCLOSECODE)(struct PORTCONTROL * PortVector); // CLOSE ROUTINE void (FAR * PORTCLOSECODE)(); // CLOSE ROUTINE
int (FAR * PORTTXCHECKCODE)(struct PORTCONTROL * PORTVEC, int Chan); // OK to TX Check int (FAR * PORTTXCHECKCODE)(); // OK to TX Check
BOOL (FAR * PORTSTOPCODE)(struct PORTCONTROL * PORT); // Temporarily Stop Port BOOL (FAR * PORTSTOPCODE)(); // Temporarily Stop Port
BOOL (FAR * PORTSTARTCODE)(struct PORTCONTROL * PORT); // Restart Port BOOL (FAR * PORTSTARTCODE)(); // Restart Port
BOOL PortStopped; // STOPPORT command used BOOL PortStopped; // STOPPORT command used
BOOL PortSuspended; // Suspended by interlock BOOL PortSuspended; // Suspended by interlock
@ -678,7 +678,7 @@ typedef struct PORTCONTROL
BOOL IgnoreUnlocked; // Ignore Unlocked routes BOOL IgnoreUnlocked; // Ignore Unlocked routes
BOOL INP3ONLY; // Default to INP3 and disallow NODES BOOL INP3ONLY; // Default to INP3 and disallow NODES
void (* UIHook)(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffer, MESSAGE * ADJBUFFER, UCHAR CTL, UCHAR MSGFLAG); // Used for KISSARQ FARPROCY UIHook; // Used for KISSARQ
struct PORTCONTROL * HookPort; struct PORTCONTROL * HookPort;
int PortSlot; // Index in Port Table int PortSlot; // Index in Port Table
struct TNCINFO * TNC; // Associated TNC record struct TNCINFO * TNC; // Associated TNC record
@ -756,6 +756,7 @@ typedef struct KISSINFO
int QtSMFreq; int QtSMFreq;
int QtSMStats; // Set if stats received as KISS Command int QtSMStats; // Set if stats received as KISS Command
// UCHAR WIN32INFO[16]; // FOR WINDOWS DRIVER // UCHAR WIN32INFO[16]; // FOR WINDOWS DRIVER
} *PKISSINFO; } *PKISSINFO;
@ -766,7 +767,7 @@ typedef struct _EXTPORTDATA
{ {
struct PORTCONTROL PORTCONTROL ; // REMAP HARDWARE INFO struct PORTCONTROL PORTCONTROL ; // REMAP HARDWARE INFO
void * (* PORT_EXT_ADDR) (int fn, int port, PDATAMESSAGE buff); // ADDR OF RESIDENT ROUTINE void * (* PORT_EXT_ADDR) (); // ADDR OF RESIDENT ROUTINE
char PORT_DLL_NAME[16]; char PORT_DLL_NAME[16];
UCHAR EXTRESTART; // FLAG FOR DRIVER REINIT UCHAR EXTRESTART; // FLAG FOR DRIVER REINIT
HINSTANCE DLLhandle; HINSTANCE DLLhandle;
@ -879,11 +880,6 @@ typedef struct _LINKTABLE
UCHAR OURCALL[7]; // CALLSIGN OF OUR END UCHAR OURCALL[7]; // CALLSIGN OF OUR END
UCHAR DIGIS[56]; // LEVEL 2 DIGIS IN PATH UCHAR DIGIS[56]; // LEVEL 2 DIGIS IN PATH
char callingCall[10]; // for reporting. Link and Our calls depand on which end connected
char receivingCall[10]; // for reporting. Link and Our calls depand on which end connected
char Direction[4]; // In or Out
PPORTCONTROL LINKPORT; // PORT NUMBER PPORTCONTROL LINKPORT; // PORT NUMBER
UCHAR LINKTYPE; // 1 = UP, 2= DOWN, 3 = INTERNODE UCHAR LINKTYPE; // 1 = UP, 2= DOWN, 3 = INTERNODE
@ -931,10 +927,6 @@ typedef struct _LINKTABLE
int IFrameRetryCounter; // Number of times an I frame in repeated without a frame being acked int IFrameRetryCounter; // Number of times an I frame in repeated without a frame being acked
time_t ConnectTime; // For session stats
int bytesRXed; // Info bytes only
int bytesTXed;
} LINKTABLE; } LINKTABLE;
#pragma pack(1) #pragma pack(1)

View File

@ -194,7 +194,7 @@ extern int OffsetH, OffsetW;
static void ResolveNames(struct AXIPPORTINFO * PORT); static void ResolveNames(struct AXIPPORTINFO * PORT);
void OpenSockets(struct AXIPPORTINFO * PORT); void OpenSockets(struct AXIPPORTINFO * PORT);
void CloseSockets(struct AXIPPORTINFO * PORT); void CloseSockets();
static int CONVFROMAX25(char * incall, char * outcall); 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); VOID nputs(ChatCIRCUIT * conn, char * buf);
#endif #endif
BOOL matchi(char * p1, char * p2); BOOL matchi(char * p1, char * p2);
char * strlop(const char * buf, char delim); char * strlop(char * buf, char delim);
int rt_cmd(ChatCIRCUIT *circuit, char * Buffer); int rt_cmd(ChatCIRCUIT *circuit, char * Buffer);
ChatCIRCUIT *circuit_new(ChatCIRCUIT *circuit, int flags); ChatCIRCUIT *circuit_new(ChatCIRCUIT *circuit, int flags);
void makelinks(void); void makelinks(void);

View File

@ -55,7 +55,7 @@ extern int ProgramErrors;
extern struct _EXCEPTION_POINTERS exinfox; extern struct _EXCEPTION_POINTERS exinfox;
#ifdef WIN32 #ifdef WIN32
void Dump_Process_State(struct _EXCEPTION_POINTERS * exinfo, char * Msg); Dump_Process_State(struct _EXCEPTION_POINTERS * exinfo, char * Msg);
#define My__except_Routine(Message) \ #define My__except_Routine(Message) \
__except(memcpy(&exinfo, GetExceptionInformation(), sizeof(struct _EXCEPTION_POINTERS)), EXCEPTION_EXECUTE_HANDLER)\ __except(memcpy(&exinfo, GetExceptionInformation(), sizeof(struct _EXCEPTION_POINTERS)), EXCEPTION_EXECUTE_HANDLER)\
@ -471,8 +471,6 @@ struct UserInfo
{ {
// New Format - with stats maintained by message type and unused fields removed. // 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 char Call[10]; // Connected call without SSID
int Length; // To make subsequent format changes easier int Length; // To make subsequent format changes easier
@ -645,9 +643,9 @@ struct MsgInfo
// For 64 bit time_t compatibility define as long long // For 64 bit time_t compatibility define as long long
// (so struct is same with 32 or 64 bit time_t) // (so struct is same with 32 or 64 bit time_t)
int64_t datereceived; long long datereceived;
int64_t datecreated; long long datecreated;
int64_t datechanged; long long datechanged;
char Spare[61 - 24]; // For future use char Spare[61 - 24]; // For future use
} ; } ;
@ -879,7 +877,7 @@ struct MSESSION
}; };
VOID __cdecl nprintf(CIRCUIT * conn, const char * format, ...); VOID __cdecl nprintf(CIRCUIT * conn, const char * format, ...);
char * strlop(const char * buf, char delim); char * strlop(char * buf, char delim);
int rt_cmd(CIRCUIT *circuit, char * Buffer); int rt_cmd(CIRCUIT *circuit, char * Buffer);
CIRCUIT *circuit_new(CIRCUIT *circuit, int flags); CIRCUIT *circuit_new(CIRCUIT *circuit, int flags);
VOID BBSputs(CIRCUIT * conn, char * buf); VOID BBSputs(CIRCUIT * conn, char * buf);
@ -1193,7 +1191,6 @@ BOOL FBBDoForward(CIRCUIT * conn);
BOOL FindMessagestoForward(CIRCUIT * conn); BOOL FindMessagestoForward(CIRCUIT * conn);
BOOL SeeifMessagestoForward(int BBSNumber, CIRCUIT * Conn); BOOL SeeifMessagestoForward(int BBSNumber, CIRCUIT * Conn);
int CountMessagestoForward(struct UserInfo * user); int CountMessagestoForward(struct UserInfo * user);
int CountBytestoForward(struct UserInfo * user);
VOID * GetMultiLineDialogParam(HWND hDialog, int DLGItem); VOID * GetMultiLineDialogParam(HWND hDialog, int DLGItem);
@ -1213,9 +1210,10 @@ VOID Do_Delete_User(HWND hDlg);
VOID FlagSentMessages(CIRCUIT * conn, struct UserInfo * user); VOID FlagSentMessages(CIRCUIT * conn, struct UserInfo * user);
VOID HoldSentMessages(CIRCUIT * conn, struct UserInfo * user); VOID HoldSentMessages(CIRCUIT * conn, struct UserInfo * user);
VOID Do_Save_User(HWND hDlg, BOOL ShowBox); VOID Do_Save_User(HWND hDlg, BOOL ShowBox);
VOID DeleteBBS(struct UserInfo * user); VOID DeleteBBS();
VOID AddBBS();
VOID SaveBBSConfig(); VOID SaveBBSConfig();
BOOL GetChatConfig(char * ConfigName); BOOL GetChatConfig();
VOID SaveChatConfig(); VOID SaveChatConfig();
VOID SaveISPConfig(); VOID SaveISPConfig();
VOID SaveFWDConfig(); VOID SaveFWDConfig();
@ -1635,8 +1633,6 @@ extern char ** SendWPAddrs; // Replacers WP To and VIA
extern BOOL DontCheckFromCall; extern BOOL DontCheckFromCall;
extern time_t APIClock;;
// YAPP stuff // YAPP stuff
#define SOH 1 #define SOH 1

94
cMain.c
View File

@ -36,21 +36,18 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#include "kernelresource.h" #include "kernelresource.h"
#include "CHeaders.h" #include "CHeaders.h"
#include "tncinfo.h" #include "tncinfo.h"
#include "mqtt.h"
VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer); VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer);
VOID ProcessIframe(struct _LINKTABLE * LINK, PDATAMESSAGE Buffer); VOID ProcessIframe(struct _LINKTABLE * LINK, PDATAMESSAGE Buffer);
VOID FindLostBuffers(); VOID FindLostBuffers();
VOID ReadMH(); VOID ReadMH();
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD);
int upnpInit(); int upnpInit();
void AISTimer(); void AISTimer();
void ADSBTimer(); void ADSBTimer();
VOID SendSmartID(struct PORTCONTROL * PORT); VOID SendSmartID(struct PORTCONTROL * PORT);
int CanPortDigi(int Port); int CanPortDigi(int Port);
int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len); int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len);
void MQTTTimer();
void SaveMH();
#include "configstructs.h" #include "configstructs.h"
@ -85,7 +82,6 @@ char MYCALL[7] = ""; // DB 7 DUP (0) ; NODE CALLSIGN (BIT SHIFTED)
char MYALIASTEXT[6] = ""; // DB ' ' ; NODE ALIAS (KEEP TOGETHER) char MYALIASTEXT[6] = ""; // DB ' ' ; NODE ALIAS (KEEP TOGETHER)
char MYALIASLOPPED[10]; char MYALIASLOPPED[10];
char MYCALLLOPPED[10];
UCHAR MYCALLWITHALIAS[13] = ""; UCHAR MYCALLWITHALIAS[13] = "";
@ -95,7 +91,6 @@ APPLCALLS APPLCALLTABLE[NumberofAppls] = {0};
UCHAR MYNODECALL[10] = ""; // NODE CALLSIGN (ASCII) UCHAR MYNODECALL[10] = ""; // NODE CALLSIGN (ASCII)
UCHAR MYNETROMCALL[10] = ""; // NETROM CALLSIGN (ASCII) UCHAR MYNETROMCALL[10] = ""; // NETROM CALLSIGN (ASCII)
char NODECALLLOPPED[10];
VOID * FREE_Q = NULL; VOID * FREE_Q = NULL;
@ -147,15 +142,6 @@ extern UCHAR LogDirectory[260];
extern BOOL EventsEnabled; extern BOOL EventsEnabled;
extern BOOL SaveAPRSMsgs; extern BOOL SaveAPRSMsgs;
BOOL M0LTEMap = FALSE; BOOL M0LTEMap = FALSE;
BOOL MQTT = FALSE;
char MQTT_HOST[80] = "";
int MQTT_PORT = 0;
char MQTT_USER[80] = "";
char MQTT_PASS[80] = "";
int MQTT_Connecting = 0;
int MQTT_Connected = 0;
//TNCTABLE DD 0 //TNCTABLE DD 0
//NUMBEROFSTREAMS DD 0 //NUMBEROFSTREAMS DD 0
@ -332,7 +318,7 @@ BOOL LINKTXCHECK()
return 0; return 0;
} }
void * Dummy(int fn, int port, PDATAMESSAGE buff) // Dummy for missing EXT Driver void * Dummy() // Dummy for missing EXT Driver
{ {
return 0; return 0;
} }
@ -341,31 +327,26 @@ VOID EXTINIT(PEXTPORTDATA PORTVEC)
{ {
// LOAD DLL - NAME IS IN PORT_DLL_NAME // LOAD DLL - NAME IS IN PORT_DLL_NAME
void *(* Startup) (PEXTPORTDATA PORTVEC); // ADDR OF Startup ROUTINE VOID * Routine;
PORTVEC->PORT_EXT_ADDR = Dummy; PORTVEC->PORT_EXT_ADDR = Dummy;
Startup = InitializeExtDriver(PORTVEC); Routine = InitializeExtDriver(PORTVEC);
if (Startup == 0) if (Routine == 0)
{ {
WritetoConsoleLocal("Driver installation failed\n"); WritetoConsoleLocal("Driver installation failed\n");
return; return;
} }
PORTVEC->PORT_EXT_ADDR = Routine;
// ALSO CALL THE ROUTINE TO START IT UP, ESPECIALLY IF A L2 ROUTINE
// CALL THE ROUTINE TO START IT UP Routine = (VOID *)PORTVEC->PORT_EXT_ADDR(PORTVEC);
// Startup returns address of processing routine // Startup returns address of processing routine
PORTVEC->PORT_EXT_ADDR = (void *(__cdecl *)(int,int,PDATAMESSAGE))Startup(PORTVEC);; PORTVEC->PORT_EXT_ADDR = Routine;
if (PORTVEC->PORT_EXT_ADDR == 0)
{
WritetoConsoleLocal("Driver Initialisation failed\n");
return;
}
} }
VOID EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer) VOID EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer)
@ -377,7 +358,7 @@ VOID EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer)
if (PORT->KISSFLAGS == 255) // Used for BAYCOM if (PORT->KISSFLAGS == 255) // Used for BAYCOM
{ {
PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, (PDATAMESSAGE)Buffer); PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, Buffer);
return; // Baycom driver passes frames to trace once sent return; // Baycom driver passes frames to trace once sent
} }
@ -393,7 +374,7 @@ VOID EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer)
Buffer->Linkptr = 0; // CLEAR FLAG FROM BUFFER Buffer->Linkptr = 0; // CLEAR FLAG FROM BUFFER
} }
PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, (PDATAMESSAGE)Buffer); PORTVEC->PORT_EXT_ADDR(2, PORT->PORTNUMBER, Buffer);
if (PORT->PROTOCOL == 10 && PORT->TNC && PORT->TNC->Hardware != H_KISSHF) if (PORT->PROTOCOL == 10 && PORT->TNC && PORT->TNC->Hardware != H_KISSHF)
{ {
@ -423,7 +404,7 @@ Loop:
if (Message == NULL) if (Message == NULL)
return; return;
Len = (size_t)PORTVEC->PORT_EXT_ADDR(1, PORT->PORTNUMBER, (PDATAMESSAGE)Message); Len = (size_t)PORTVEC->PORT_EXT_ADDR(1, PORT->PORTNUMBER, Message);
if (Len == 0) if (Len == 0)
{ {
@ -457,6 +438,7 @@ Loop:
if (TNC->DisconnectScript) if (TNC->DisconnectScript)
{ {
int n = 0; int n = 0;
char command[256];
struct DATAMESSAGE * Buffer; struct DATAMESSAGE * Buffer;
TRANSPORTENTRY Session = {0}; // = TNC->PortRecord->ATTACHEDSESSIONS[Sessno]; TRANSPORTENTRY Session = {0}; // = TNC->PortRecord->ATTACHEDSESSIONS[Sessno];
@ -507,9 +489,7 @@ VOID EXTSLOWTIMER(PEXTPORTDATA PORTVEC)
size_t EXTTXCHECK(PEXTPORTDATA PORTVEC, int Chan) size_t EXTTXCHECK(PEXTPORTDATA PORTVEC, int Chan)
{ {
uintptr_t Temp = Chan; return (size_t)PORTVEC->PORT_EXT_ADDR(3, PORTVEC->PORTCONTROL.PORTNUMBER, Chan);
return (size_t)PORTVEC->PORT_EXT_ADDR(3, PORTVEC->PORTCONTROL.PORTNUMBER, (void *)Temp);
} }
VOID PostDataAvailable(TRANSPORTENTRY * Session) VOID PostDataAvailable(TRANSPORTENTRY * Session)
@ -585,8 +565,8 @@ extern VOID HDLCTXCHECK();
#endif #endif
extern VOID KISSINIT(), KISSTX(), KISSRX(), KISSTIMER(), KISSCLOSE(); extern VOID KISSINIT(), KISSTX(), KISSRX(), KISSTIMER(), KISSCLOSE();
extern VOID EXTINIT(PEXTPORTDATA PORTVEC), EXTTX(PEXTPORTDATA PORTVEC, MESSAGE * Buffer), LINKRX(), EXTRX(PEXTPORTDATA PORTVEC); extern VOID EXTINIT(), EXTTX(), LINKRX(), EXTRX();
extern VOID LINKCLOSE(), EXTCLOSE() ,LINKTIMER(), EXTTIMER(PEXTPORTDATA PORTVEC); extern VOID LINKCLOSE(), EXTCLOSE() ,LINKTIMER(), EXTTIMER();
// VECTORS TO HARDWARE DEPENDENT ROUTINES // VECTORS TO HARDWARE DEPENDENT ROUTINES
@ -616,7 +596,7 @@ extern int L4TimerProc();
extern int L3FastTimer(); extern int L3FastTimer();
extern int StatsTimer(); extern int StatsTimer();
extern int COMMANDHANDLER(); extern int COMMANDHANDLER();
VOID SDETX(struct _LINKTABLE * LINK); extern int SDETX();
extern int L4BG(); extern int L4BG();
extern int L3BG(); extern int L3BG();
extern int TNCTimerProc(); extern int TNCTimerProc();
@ -635,7 +615,7 @@ BOOL Start()
APPLCALLS * APPL; APPLCALLS * APPL;
struct ROUTE * ROUTE; struct ROUTE * ROUTE;
struct DEST_LIST * DEST; struct DEST_LIST * DEST;
struct CMDX * CMD; CMDX * CMD;
int PortSlot = 1; int PortSlot = 1;
uintptr_t int3; uintptr_t int3;
@ -749,10 +729,6 @@ BOOL Start()
memcpy(MYNETROMCALL, cfg->C_NETROMCALL, 10); memcpy(MYNETROMCALL, cfg->C_NETROMCALL, 10);
strlop(MYNETROMCALL, ' '); strlop(MYNETROMCALL, ' ');
strlop(MYNODECALL, ' ');
memcpy(NODECALLLOPPED, MYNODECALL, 10);
strlop(NODECALLLOPPED, ' ');
APPLCALLTABLE[0].APPLQUAL = BBSQUAL; APPLCALLTABLE[0].APPLQUAL = BBSQUAL;
@ -817,11 +793,7 @@ BOOL Start()
EventsEnabled = cfg->C_EVENTS; EventsEnabled = cfg->C_EVENTS;
SaveAPRSMsgs = cfg->C_SaveAPRSMsgs; SaveAPRSMsgs = cfg->C_SaveAPRSMsgs;
M0LTEMap = cfg->C_M0LTEMap; M0LTEMap = cfg->C_M0LTEMap;
MQTT = cfg->C_MQTT;
strcpy(MQTT_HOST, cfg->C_MQTT_HOST);
MQTT_PORT = cfg->C_MQTT_PORT;
strcpy(MQTT_USER, cfg->C_MQTT_USER);
strcpy(MQTT_PASS, cfg->C_MQTT_PASS);
// Get pointers to PASSWORD and APPL1 commands // Get pointers to PASSWORD and APPL1 commands
@ -919,7 +891,7 @@ BOOL Start()
PORT->PROTOCOL = (char)PortRec->PROTOCOL; PORT->PROTOCOL = (char)PortRec->PROTOCOL;
PORT->IOBASE = PortRec->IOADDR; PORT->IOBASE = PortRec->IOADDR;
if (PortRec->SerialPortName && PortRec->SerialPortName[0]) if (PortRec->SerialPortName[0])
PORT->SerialPortName = _strdup(PortRec->SerialPortName); PORT->SerialPortName = _strdup(PortRec->SerialPortName);
else else
{ {
@ -1515,7 +1487,7 @@ BOOL Start()
upnpInit(); upnpInit();
lastSaveSecs = CurrentSecs = lastSlowSecs = time(NULL); CurrentSecs = lastSlowSecs = time(NULL);
return 0; return 0;
} }
@ -2095,9 +2067,6 @@ VOID TIMERINTERRUPT()
sendFreqReport(); sendFreqReport();
sendModeReport(); sendModeReport();
if (MQTT)
MQTTTimer();
/* /*
if (QCOUNT < 200) if (QCOUNT < 200)
{ {
@ -2114,18 +2083,6 @@ 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 if (L4TIMERFLAG >= 10) // 1 PER SEC
{ {
L4TIMERFLAG -= 10; L4TIMERFLAG -= 10;
@ -2262,9 +2219,6 @@ L2Packet:
Message->PORT = CURRENTPORT; Message->PORT = CURRENTPORT;
if (MQTT && PORT->PROTOCOL == 0)
MQTTKISSRX(Buffer);
// Bridge if requested // Bridge if requested
for (toPort = 1; toPort <= MaxBPQPortNo; toPort++) for (toPort = 1; toPort <= MaxBPQPortNo; toPort++)
@ -2349,7 +2303,7 @@ L2Packet:
PORT->L2FRAMESSENT++; PORT->L2FRAMESSENT++;
OutOctets[PORT->PORTNUMBER] += Buffer->LENGTH - MSGHDDRLEN; OutOctets[PORT->PORTNUMBER] += Buffer->LENGTH - MSGHDDRLEN;
PORT->PORTTXROUTINE((struct _EXTPORTDATA *)PORT, Buffer); PORT->PORTTXROUTINE(PORT, Buffer);
Sent++; Sent++;
continue; continue;
@ -2395,7 +2349,7 @@ PACTORLOOP:
PORT->L2FRAMESSENT++; PORT->L2FRAMESSENT++;
OutOctets[PORT->PORTNUMBER] += Message->LENGTH; OutOctets[PORT->PORTNUMBER] += Message->LENGTH;
PORT->PORTTXROUTINE((struct _EXTPORTDATA *)PORT, Buffer); PORT->PORTTXROUTINE(PORT, Buffer);
Sent++; Sent++;
if (Sent < 5) if (Sent < 5)
@ -2408,7 +2362,7 @@ ENDOFLIST:
break; break;
} }
PORT->PORTRXROUTINE((struct _EXTPORTDATA *)PORT); // SEE IF MESSAGE RECEIVED PORT->PORTRXROUTINE(PORT); // SEE IF MESSAGE RECEIVED
PORT = PORT->PORTPOINTER; PORT = PORT->PORTPOINTER;
} }

View File

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

Some files were not shown because too many files have changed in this diff Show More