Compare commits
27 Commits
hibbian/la
...
ubuntu/jam
Author | SHA1 | Date |
---|---|---|
|
81279b4b22 | |
|
14f7882f2f | |
|
fbbb08966c | |
|
a37d026f89 | |
|
62be7b55b5 | |
|
f06c172633 | |
|
18da0369b1 | |
|
bc090e47e9 | |
|
056b34d0f4 | |
|
594377a91b | |
|
d2ff69e9ce | |
|
c34d15c946 | |
|
b5ff5e0f73 | |
![]() |
9ab44dc753 | |
![]() |
3e9dcea143 | |
![]() |
552b65aaf2 | |
![]() |
33dde662d8 | |
![]() |
6c9d8101fd | |
![]() |
1a97731f25 | |
![]() |
9dd1003e91 | |
![]() |
c5456dd210 | |
![]() |
3ea67a184e | |
![]() |
adc7c52d78 | |
![]() |
a9804cffa7 | |
![]() |
227e793b7a | |
![]() |
c946034bca | |
![]() |
27278c3915 |
Binary file not shown.
Binary file not shown.
22
AEAPactor.c
22
AEAPactor.c
|
@ -45,7 +45,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
//#include <process.h>
|
||||
//#include <time.h>
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
#include "bpq32.h"
|
||||
|
@ -292,7 +292,8 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
{
|
||||
// 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);
|
||||
|
||||
|
@ -382,8 +383,7 @@ VOID * AEAExtInit(EXTPORTDATA * PortEntry)
|
|||
|
||||
TNC->Port = port;
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_AEA;
|
||||
TNC->Hardware = H_AEA;
|
||||
|
||||
TNC->TEXTMODE = FALSE;
|
||||
|
||||
|
@ -391,6 +391,8 @@ VOID * AEAExtInit(EXTPORTDATA * PortEntry)
|
|||
|
||||
TNC->InitScript = _strupr(TNC->InitScript);
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
{
|
||||
memcpy(TNC->NodeCall, MYNODECALL, 10);
|
||||
|
@ -810,7 +812,7 @@ VOID AEAPoll(int Port)
|
|||
{
|
||||
// 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;
|
||||
|
||||
// If in IRS state for too long, force turnround
|
||||
|
@ -875,8 +877,8 @@ VOID AEAPoll(int Port)
|
|||
|
||||
EncodeAndSend(TNC, TXMsg, datalen + 1);
|
||||
ReleaseBuffer(buffptr);
|
||||
TNC->Streams[Stream].bytesTXed += datalen;
|
||||
Debugprintf("Stream %d Sending %d, BytesTXED now %d", Stream, datalen, TNC->Streams[Stream].bytesTXed);
|
||||
TNC->Streams[Stream].BytesTXed += datalen;
|
||||
Debugprintf("Stream %d Sending %d, BytesTXED now %d", Stream, datalen, TNC->Streams[Stream].BytesTXed);
|
||||
TNC->Timeout = 0;
|
||||
TNC->DataBusy = TRUE;
|
||||
|
||||
|
@ -1210,7 +1212,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len)
|
|||
// If nothing more to send, turn round link
|
||||
|
||||
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");
|
||||
|
||||
|
@ -1245,7 +1247,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len)
|
|||
Len--; // Remove Header
|
||||
|
||||
buffptr->Len = Len; // Length
|
||||
TNC->Streams[Stream].bytesRXed += (int)Len;
|
||||
TNC->Streams[Stream].BytesRXed += (int)Len;
|
||||
memcpy(&buffptr->Data[0], Buffer, Len);
|
||||
C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr);
|
||||
|
||||
|
@ -1416,7 +1418,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len)
|
|||
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);
|
||||
|
||||
if (Stream == 0)
|
||||
|
|
155
AGWAPI.c
155
AGWAPI.c
|
@ -26,7 +26,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
*/
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
#include "bpq32.h"
|
||||
|
||||
|
@ -36,14 +36,14 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
struct AGWHeader
|
||||
{
|
||||
unsigned int Port;
|
||||
int Port;
|
||||
unsigned char DataKind;
|
||||
unsigned char filler2;
|
||||
unsigned char PID;
|
||||
unsigned char filler3;
|
||||
unsigned char callfrom[10];
|
||||
unsigned char callto[10];
|
||||
unsigned int DataLength;
|
||||
int DataLength;
|
||||
int reserved;
|
||||
};
|
||||
|
||||
|
@ -128,7 +128,7 @@ int DataSocket_Write(struct AGWSocketConnectionInfo * sockptr, SOCKET sock);
|
|||
int AGWGetSessionKey(char * key, struct AGWSocketConnectionInfo * sockptr);
|
||||
int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr);
|
||||
int SendDataToAppl(int Stream, byte * Buffer, int Length);
|
||||
int InternalAGWDecodeFrame(char * msg, char * buffer, 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 SendRawPacket(struct AGWSocketConnectionInfo * sockptr, char *txmsg, int Length);
|
||||
int ShowApps();
|
||||
|
@ -402,7 +402,7 @@ int SetUpHostSessions()
|
|||
extern struct DATAMESSAGE * REPLYBUFFER;
|
||||
extern BOOL AGWActive;
|
||||
|
||||
VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
|
||||
VOID SHOWAGW(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
|
||||
{
|
||||
// DISPLAY AGW Session Status
|
||||
|
||||
|
@ -563,28 +563,10 @@ int AGWConnected(struct BPQConnectionInfo * Con, int Stream)
|
|||
(memcmp(sockptr->CallSign1, ApplCall, 10) == 0) || (memcmp(sockptr->CallSign2, ApplCall, 10) == 0))
|
||||
{
|
||||
// Create Key
|
||||
|
||||
char callsign[10];
|
||||
int port;
|
||||
int sesstype;
|
||||
int paclen;
|
||||
int maxframe;
|
||||
int l4window;
|
||||
|
||||
|
||||
|
||||
keyptr=(byte *)&Con->CallKey;
|
||||
|
||||
// Try using the BPQ Port Number if a L2 connect, first free port number if not
|
||||
|
||||
GetConnectionInfo(Stream, callsign,
|
||||
&port, &sesstype, &paclen,
|
||||
&maxframe, &l4window);
|
||||
|
||||
|
||||
if (port == 0)
|
||||
port = 64;
|
||||
|
||||
*(keyptr++)='0' + port;
|
||||
*(keyptr++)='1';
|
||||
memcpy(keyptr, ApplCall, 10);
|
||||
keyptr+=10;
|
||||
memcpy(keyptr,ConnectingCall, 10);
|
||||
|
@ -704,9 +686,8 @@ int AGWDoMonitorData()
|
|||
struct AGWSocketConnectionInfo * sockptr;
|
||||
byte AGWBuffer[1000];
|
||||
int n;
|
||||
int Frametype;
|
||||
int Stamp, Frametype;
|
||||
BOOL RXFlag;
|
||||
time_t Stamp;
|
||||
|
||||
// Look for Monitor Data
|
||||
|
||||
|
@ -727,7 +708,7 @@ int AGWDoMonitorData()
|
|||
return 0;
|
||||
}
|
||||
|
||||
Stamp = monbuff->Timestamp;
|
||||
Stamp = (UINT)monbuff->Timestamp;
|
||||
|
||||
memcpy(Buffer, monbuff, RawLen);
|
||||
|
||||
|
@ -1017,7 +998,6 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
|
|||
{
|
||||
int i;
|
||||
int DataLength;
|
||||
struct AGWHeader * AGW = &sockptr->AGWRXHeader;
|
||||
|
||||
ioctlsocket(sock,FIONREAD,&DataLength);
|
||||
|
||||
|
@ -1029,83 +1009,18 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (DataLength < 36) // A header
|
||||
{
|
||||
// If we don't get a header within a few ms assume a rogue connection and close it
|
||||
|
||||
int n = 50;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
Sleep(10);
|
||||
ioctlsocket(sock,FIONREAD,&DataLength);
|
||||
|
||||
if (DataLength >= 36)
|
||||
break;
|
||||
}
|
||||
|
||||
if (n < 1)
|
||||
{
|
||||
Debugprintf("Corrupt AGW Packet Received");
|
||||
AGWDataSocket_Disconnect(sockptr);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Have a header
|
||||
|
||||
i=recv(sock,(char *)&sockptr->AGWRXHeader, 36, 0);
|
||||
|
||||
if (i == SOCKET_ERROR)
|
||||
{
|
||||
i=WSAGetLastError();
|
||||
AGWDataSocket_Disconnect(sockptr);
|
||||
}
|
||||
|
||||
sockptr->MsgDataLength = sockptr->AGWRXHeader.DataLength;
|
||||
|
||||
// Validate packet to protect against accidental (or malicious!) connects from a non-agw application
|
||||
|
||||
if (AGW->Port > 64 || AGW->filler2 != 0 || AGW->filler3 != 0 || AGW->DataLength > 400)
|
||||
{
|
||||
Debugprintf("Corrupt AGW Packet Received");
|
||||
AGWDataSocket_Disconnect(sockptr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sockptr->MsgDataLength == 0)
|
||||
ProcessAGWCommand (sockptr);
|
||||
else
|
||||
sockptr->GotHeader = TRUE; // Wait for data
|
||||
|
||||
ioctlsocket(sock,FIONREAD,&DataLength); // See if more data
|
||||
|
||||
if (sockptr->GotHeader)
|
||||
{
|
||||
// Received a header, without sufficient data bytes
|
||||
|
||||
if (DataLength < sockptr->MsgDataLength)
|
||||
{
|
||||
// Fiddle - seem to be problems somtimes with un-Neagled hosts so wait a few ms
|
||||
// if we don't get a full packet assume a rogue connection and close it
|
||||
// Fiddle - seem to be problems somtimes with un-Neagled hosts
|
||||
|
||||
Sleep(500);
|
||||
|
||||
int n = 50;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
Sleep(10);
|
||||
ioctlsocket(sock,FIONREAD,&DataLength);
|
||||
|
||||
if (DataLength >= sockptr->MsgDataLength)
|
||||
break;
|
||||
}
|
||||
|
||||
if (n < 1)
|
||||
{
|
||||
Debugprintf("Corrupt AGW Packet Received");
|
||||
AGWDataSocket_Disconnect(sockptr);
|
||||
return 0;
|
||||
}
|
||||
ioctlsocket(sock,FIONREAD,&DataLength);
|
||||
}
|
||||
|
||||
if (DataLength >= sockptr->MsgDataLength)
|
||||
|
@ -1118,9 +1033,48 @@ int AGWDataSocket_Read(struct AGWSocketConnectionInfo * sockptr, SOCKET sock)
|
|||
|
||||
ProcessAGWCommand (sockptr);
|
||||
free(sockptr->MsgData);
|
||||
|
||||
sockptr->GotHeader = FALSE;
|
||||
}
|
||||
|
||||
// Not Enough Data - wait
|
||||
|
||||
}
|
||||
else // Not got header
|
||||
{
|
||||
if (DataLength > 35)// A header
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1142,7 +1096,6 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
|
|||
int con,conport;
|
||||
int AGWYReply = 0;
|
||||
int state, change;
|
||||
int n;
|
||||
|
||||
// if we have hidden some ports then the port in the AGW packet will be an index into the visible ports,
|
||||
// not the real port number
|
||||
|
@ -1197,7 +1150,7 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
|
|||
|
||||
conport=GetPortNumber(VisiblePortToRealPort[key[0]-48]);
|
||||
|
||||
n = sprintf(ConnectMsg,"C %d %s",conport,ToCall);
|
||||
sprintf(ConnectMsg,"C %d %s",conport,ToCall);
|
||||
|
||||
// if 'v' command add digis
|
||||
|
||||
|
@ -1212,7 +1165,7 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr)
|
|||
|
||||
while(nDigis--)
|
||||
{
|
||||
n += sprintf(&ConnectMsg[n], " %s", Digis);
|
||||
sprintf(ConnectMsg, "%s, %s", ConnectMsg, Digis);
|
||||
Digis += 10;
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -33,7 +33,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#pragma data_seg("_BPQDATA")
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
// MSGFLAG contains CMD/RESPONSE BITS
|
||||
|
@ -61,6 +61,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define NODES_SIG 0xFF
|
||||
|
||||
char * strlop(char * buf, char delim);
|
||||
UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, int msglen);
|
||||
|
||||
static UCHAR * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen, int DoNodes);
|
||||
|
@ -68,7 +69,7 @@ static UCHAR * DISPLAYIPDATAGRAM(IPMSG * IP, UCHAR * Output, int MsgLen);
|
|||
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;
|
||||
int n;
|
||||
|
@ -364,7 +365,7 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, int * Fra
|
|||
}
|
||||
|
||||
if (Output == NULL)
|
||||
return 0;
|
||||
return NULL;
|
||||
|
||||
if (Output[-1] != 13)
|
||||
Output += sprintf((char *)Output, "\r");
|
||||
|
|
25
AISCommon.c
25
AISCommon.c
|
@ -7,7 +7,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include "time.h"
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
//#include "tncinfo.h"
|
||||
//#include "adif.h"
|
||||
//#include "telnetserver.h"
|
||||
|
@ -760,7 +760,7 @@ void SaveVesselDataBase()
|
|||
|
||||
void LoadNavAidDataBase()
|
||||
{
|
||||
int i, n, count;
|
||||
int i;
|
||||
|
||||
FILE *file;
|
||||
char buf[256];
|
||||
|
@ -793,12 +793,10 @@ void LoadNavAidDataBase()
|
|||
|
||||
NavRecords = (struct NAVAIDRECORD **)malloc(NavAidCount * sizeof(void *));
|
||||
|
||||
count = 0;
|
||||
|
||||
for (i = 0; i < NavAidCount; i++)
|
||||
{
|
||||
navptr = (struct NAVAIDRECORD *)malloc(sizeof(struct NAVAIDRECORD));
|
||||
NavRecords[count] = navptr;
|
||||
NavRecords[i] = navptr;
|
||||
memset(navptr, 0, sizeof(struct NAVAIDRECORD));
|
||||
|
||||
fgets(buf, 255, file);
|
||||
|
@ -809,19 +807,6 @@ void LoadNavAidDataBase()
|
|||
token = strtok(NULL, "|\n" );
|
||||
strcpy(&navptr->name[0],token);
|
||||
|
||||
for (n = 0; n < 20; n++)
|
||||
{
|
||||
char c = navptr->name[n];
|
||||
|
||||
if (!isalpha(c) && !isdigit(c) && c != ' ' && c != '_')
|
||||
{
|
||||
count--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
count++;
|
||||
|
||||
token = strtok(NULL, "|\n" );
|
||||
navptr->lat = atof(token);
|
||||
|
||||
|
@ -835,7 +820,6 @@ void LoadNavAidDataBase()
|
|||
navptr->TimeLastUpdated = atoi(token);
|
||||
}
|
||||
|
||||
NavAidCount = count;
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
|
@ -848,7 +832,6 @@ void SaveNavAidDataBase()
|
|||
char FN[256];
|
||||
struct NAVAIDRECORD * navptr;
|
||||
|
||||
|
||||
if (BPQDirectory[0] == 0)
|
||||
{
|
||||
strcpy(FN, "AIS_NavAids.txt");
|
||||
|
@ -2389,8 +2372,6 @@ void ProcessAISNavAidMessage()
|
|||
NavAidCount++;
|
||||
|
||||
ProcessAISNavAidMessage();
|
||||
NavAidDBChanged = 1;
|
||||
|
||||
|
||||
return;
|
||||
|
||||
|
|
30
APRSCode.c
30
APRSCode.c
|
@ -22,10 +22,11 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
// First Version, November 2011
|
||||
|
||||
#pragma data_seg("_BPQDATA")
|
||||
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include <stdio.h>
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "bpq32.h"
|
||||
#include <time.h>
|
||||
#include "kernelresource.h"
|
||||
|
@ -62,6 +63,7 @@ VOID __cdecl Debugprintf(const char * format, ...);
|
|||
VOID __cdecl Consoleprintf(const char * format, ...);
|
||||
BOOL APIENTRY Send_AX(PMESSAGE Block, DWORD Len, UCHAR Port);
|
||||
VOID Send_AX_Datagram(PDIGIMESSAGE Block, DWORD Len, UCHAR Port);
|
||||
char * strlop(char * buf, char delim);
|
||||
int APRSDecodeFrame(char * msg, char * buffer, time_t Stamp, uint64_t Mask); // Unsemaphored DecodeFrame
|
||||
APRSHEARDRECORD * UpdateHeard(UCHAR * Call, int Port);
|
||||
BOOL CheckforDups(char * Call, char * Msg, int Len);
|
||||
|
@ -86,7 +88,7 @@ double myDistance(double laa, double loa, BOOL KM);
|
|||
struct STATIONRECORD * FindStation(char * Call, BOOL AddIfNotFound);
|
||||
int DecodeAPRSPayload(char * Payload, struct STATIONRECORD * Station);
|
||||
BOOL KillOldTNC(char * Path);
|
||||
|
||||
int FromLOC(char * Locator, double * pLat, double * pLon);
|
||||
BOOL ToLOC(double Lat, double Lon , char * Locator);
|
||||
BOOL InternalSendAPRSMessage(char * Text, char * Call);
|
||||
void UndoTransparency(char * input);
|
||||
|
@ -102,7 +104,6 @@ void ClearSavedMessages();
|
|||
void GetSavedAPRSMessages();
|
||||
static VOID GPSDConnect(void * unused);
|
||||
int CanPortDigi(int Port);
|
||||
int FromLOC(char * Locator, double * pLat, double * pLon);
|
||||
|
||||
extern int SemHeldByAPI;
|
||||
extern int APRSMONDECODE();
|
||||
|
@ -347,7 +348,7 @@ APRSHEARDRECORD MHTABLE[MAXHEARD] = {0};
|
|||
|
||||
APRSHEARDRECORD * MHDATA = &MHTABLE[0];
|
||||
|
||||
static SOCKET sock = 0;
|
||||
static SOCKET sock = (SOCKET) NULL;
|
||||
|
||||
//Duplicate suppression Code
|
||||
|
||||
|
@ -553,8 +554,6 @@ int APRSWriteLog(char * msg)
|
|||
UCHAR Value[MAX_PATH];
|
||||
time_t T;
|
||||
struct tm * tm;
|
||||
int n;
|
||||
|
||||
|
||||
if (LogAPRSIS == 0)
|
||||
return 0;
|
||||
|
@ -576,9 +575,8 @@ int APRSWriteLog(char * msg)
|
|||
strcat(Value, "logs/APRS_");
|
||||
}
|
||||
|
||||
n = strlen(Value);
|
||||
|
||||
sprintf(&Value[n], "%02d%02d%02d.log", tm->tm_year - 100, tm->tm_mon+1, tm->tm_mday);
|
||||
sprintf(Value, "%s%02d%02d%02d.log", Value,
|
||||
tm->tm_year - 100, tm->tm_mon+1, tm->tm_mday);
|
||||
|
||||
if ((file = fopen(Value, "ab")) == NULL)
|
||||
return FALSE;
|
||||
|
@ -3115,7 +3113,7 @@ VOID APRSISThread(void * Report)
|
|||
BOOL bcopt=TRUE;
|
||||
char Buffer[1000];
|
||||
int InputLen = 1; // Non-zero
|
||||
char errmsg[300];
|
||||
char errmsg[100];
|
||||
char * ptr;
|
||||
size_t inptr = 0;
|
||||
char APRSinMsg[1000];
|
||||
|
@ -3676,7 +3674,7 @@ BOOL CheckforDups(char * Call, char * Msg, int Len)
|
|||
if (ptr1)
|
||||
*ptr1 = 0;
|
||||
|
||||
// Debugprintf("Duplicate Message suppressed %s", Msg);
|
||||
// Debugprintf("Duplicate Message supressed %s", Msg);
|
||||
return TRUE; // Duplicate
|
||||
}
|
||||
}
|
||||
|
@ -7668,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);
|
||||
sendandcheck(sock, Header, HeaderLen);
|
||||
|
@ -7713,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);
|
||||
sendandcheck(sock, Header, HeaderLen);
|
||||
|
@ -8115,7 +8113,7 @@ extern char OrigCmdBuffer[81];
|
|||
|
||||
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
|
||||
|
||||
|
@ -9156,7 +9154,7 @@ void GetSavedAPRSMessages()
|
|||
FILE *file;
|
||||
struct APRSMESSAGE * Message;
|
||||
struct APRSMESSAGE * ptr;
|
||||
char Line[512];
|
||||
char Line[256];
|
||||
char * Stamp = 0;
|
||||
char * From = 0;
|
||||
char * To = 0;
|
||||
|
@ -9180,7 +9178,7 @@ void GetSavedAPRSMessages()
|
|||
if ((file = fopen(FN, "r")) == NULL)
|
||||
return ;
|
||||
|
||||
while (fgets(Line, sizeof(Line), file))
|
||||
while (fgets(Line, 512, file))
|
||||
{
|
||||
Stamp = Line;
|
||||
From = strlop(Stamp, ' ');
|
||||
|
|
168
APRSStdPages.c
168
APRSStdPages.c
|
@ -3225,170 +3225,6 @@ char * get_plane(int * Len)
|
|||
return ptr;
|
||||
}
|
||||
|
||||
char * get_portstats()
|
||||
{
|
||||
char Msg[] =
|
||||
"<!DOCTYPE html>\n"
|
||||
"<html>\n"
|
||||
"\n"
|
||||
"<head>\n"
|
||||
"<script src=\"https://code.jquery.com/jquery-3.6.0.min.js\"> </script>\n"
|
||||
"</head>\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"<body>\n"
|
||||
"<H2 id=\"h1\"> Last hour's stats for Port </h2>\n"
|
||||
"<p>\n"
|
||||
"<canvas id=\"myCanvas\" width=\"600\" height=\"250\" style=\"border:1px solid #d3d3d3;\">\n"
|
||||
"Your browser does not support the HTML canvas tag.</canvas>\n"
|
||||
"<br>\n"
|
||||
"<canvas id=\"myCanvas2\" width=\"600\" height=\"250\" style=\"border:1px solid #d3d3d3;\">\n"
|
||||
"Your browser does not support the HTML canvas tag.</canvas>\n"
|
||||
"\n"
|
||||
"<script>\n"
|
||||
"var c = document.getElementById(\"myCanvas\");\n"
|
||||
"var ctx = c.getContext(\"2d\");\n"
|
||||
"\n"
|
||||
"var port = window.location.search.slice(1);\n"
|
||||
"\n"
|
||||
"document.getElementById(\"h1\").innerHTML = \"Last hour's stats for Port \" + port;;\n"
|
||||
"\n"
|
||||
"var oReq = new XMLHttpRequest();\n"
|
||||
"oReq.open(\"GET\", \"/portstats.txt?\" + port, true);\n"
|
||||
"oReq.responseType = \"arraybuffer\";\n"
|
||||
"\n"
|
||||
"oReq.onload = function(oEvent)\n"
|
||||
" {\n"
|
||||
" var arrayBuffer = oReq.response;\n"
|
||||
"\n"
|
||||
" var byteArray = new Uint8Array(arrayBuffer);\n"
|
||||
" \n"
|
||||
" \n"
|
||||
" // Draw it. Do last hour for testing. Plot each value for 10 pixels\n"
|
||||
" \n"
|
||||
"\tctx.strokeStyle = \"green\";\n"
|
||||
"\tctx.beginPath();\n"
|
||||
"\t\n"
|
||||
"\tctx.moveTo(0,200);\n"
|
||||
"\tvar y = 2880 - 60;\n"
|
||||
"\tvar val;\n"
|
||||
"\t\n"
|
||||
"\tfor (i = 0; i < 600; i+=10)\n"
|
||||
"\t{\n"
|
||||
"\t\tval = byteArray[y] * 2;\n"
|
||||
"\t\t\n"
|
||||
"\t\tctx.lineTo(i, 200 - val);\n"
|
||||
"\t\tctx.lineTo(i+10, 200 - val);\n"
|
||||
"\t\ty++;\n"
|
||||
"\t}\n"
|
||||
"\t\n"
|
||||
"\tctx.stroke();\n"
|
||||
"\t\n"
|
||||
"\tctx.strokeStyle = \"gray\";\n"
|
||||
"\tctx.setLineDash([5, 3]);\n"
|
||||
"\t\n"
|
||||
"\tctx.beginPath();\n"
|
||||
" \tctx.moveTo(0,100);\n"
|
||||
"\tctx.lineTo(600,100);\n"
|
||||
" \tctx.moveTo(0,50);\n"
|
||||
"\tctx.lineTo(600,50);\n"
|
||||
" \tctx.moveTo(0,150);\n"
|
||||
"\tctx.lineTo(600,150);\n"
|
||||
"\tctx.stroke();\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"\t\n"
|
||||
"\tctx.fillText(\"100%\",0,10);\n"
|
||||
"\tctx.fillText(\"50%\",0,100);\n"
|
||||
"\tctx.fillText(\"0%\",0,200);\t\n"
|
||||
"\tctx.fillText(\"-60 mins\",0,220);\t\n"
|
||||
"\tctx.fillText(\"-30 mins\",300,220);\t\n"
|
||||
"\tctx.fillText(\"Now\",580,220);\t\n"
|
||||
"\n"
|
||||
"\t\n"
|
||||
"\t// Do TX\n"
|
||||
"\t\n"
|
||||
"\t\n"
|
||||
"\tc = document.getElementById(\"myCanvas2\");\n"
|
||||
"\tctx = c.getContext(\"2d\");\n"
|
||||
"\n"
|
||||
"\tctx.fillText(\"100%\",0,10);\n"
|
||||
"\tctx.fillText(\"50%\",0,100);\n"
|
||||
"\tctx.fillText(\"0%\",0,200);\t\n"
|
||||
"\tctx.fillText(\"-60 mins\",0,220);\t\n"
|
||||
"\tctx.fillText(\"-30 mins\",300,220);\t\n"
|
||||
"\tctx.fillText(\"Now\",580,220);\t\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"\tctx.strokeStyle = \"red\";\n"
|
||||
"\tctx.beginPath();\n"
|
||||
"\t\n"
|
||||
"\tctx.moveTo(0,200);\n"
|
||||
"\tvar y = 1440 - 60;\n"
|
||||
"\tvar val;\n"
|
||||
"\t\n"
|
||||
"\tfor (i = 0; i < 600; i+=10)\n"
|
||||
"\t\n"
|
||||
"\t{\n"
|
||||
"\t\tval = byteArray[y] * 2;\n"
|
||||
"\t\t\n"
|
||||
"\t\tctx.lineTo(i, 200 - val);\n"
|
||||
"\t\tctx.lineTo(i+10, 200 - val);\n"
|
||||
"\t\ty++;\n"
|
||||
"\t}\n"
|
||||
"\t\n"
|
||||
"\tctx.stroke();\n"
|
||||
"\n"
|
||||
"\tctx.strokeStyle = \"gray\";\n"
|
||||
"\tctx.setLineDash([5, 3]);\n"
|
||||
"\t\n"
|
||||
"\tctx.beginPath();\n"
|
||||
" \tctx.moveTo(0,100);\n"
|
||||
"\tctx.lineTo(600,100);\n"
|
||||
" \tctx.moveTo(0,50);\n"
|
||||
"\tctx.lineTo(600,50);\n"
|
||||
" \tctx.moveTo(0,150);\n"
|
||||
"\tctx.lineTo(600,150);\n"
|
||||
"\tctx.stroke();\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"oReq.send();\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"function draw(Data)\n"
|
||||
"{\n"
|
||||
"\n"
|
||||
"\t// Data has 4 bytes of index to current position the 1440 bytes of load info\n"
|
||||
"\t\n"
|
||||
"\n"
|
||||
"\tview = new Int8Array(Data);\n"
|
||||
"\t\n"
|
||||
"alert(view[3]);\n"
|
||||
"\n"
|
||||
"ctx.moveTo(0,200);\n"
|
||||
"var y = 0;\n"
|
||||
"for (i = 0; i < 720; i+=30)\n"
|
||||
"{\n"
|
||||
"\tctx.lineTo(i, 200 - y);\n"
|
||||
"\tctx.lineTo(i+30, 200 - y);\n"
|
||||
"\ty += 10;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"ctx.stroke();\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"</script>\n"
|
||||
"\n"
|
||||
"</body>\n"
|
||||
"</html>\n"
|
||||
"\n"
|
||||
"";
|
||||
|
||||
return _strdup(Msg);;
|
||||
}
|
||||
|
||||
char * get_aprs()
|
||||
{
|
||||
|
@ -3802,10 +3638,6 @@ char * GetStandardPage(char * FN, int * Len)
|
|||
if (_stricmp(FN, "leaflet.rotatedMarker.js") == 0)
|
||||
return get_rotatedMarker();
|
||||
|
||||
if (_stricmp(FN, "PortStats.html") == 0)
|
||||
return get_portstats();
|
||||
|
||||
|
||||
if (_stricmp(FN, "info_call.html") == 0)
|
||||
return get_info_call();
|
||||
|
||||
|
|
163
ARDOP.c
163
ARDOP.c
|
@ -45,7 +45,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
|
||||
int (WINAPI FAR *GetModuleFileNameExPtr)();
|
||||
|
@ -136,10 +136,6 @@ BOOL ARDOPStopPort(struct PORTCONTROL * PORT)
|
|||
if (TNC->Streams[0].Attached)
|
||||
TNC->Streams[0].ReportDISC = TRUE;
|
||||
|
||||
TNC->Streams[0].Connecting = 0;
|
||||
TNC->Streams[0].Connected = 0;
|
||||
TNC->Streams[0].Attached = 0;
|
||||
|
||||
if (TNC->TCPSock)
|
||||
{
|
||||
shutdown(TNC->TCPSock, SD_BOTH);
|
||||
|
@ -166,9 +162,6 @@ BOOL ARDOPStopPort(struct PORTCONTROL * PORT)
|
|||
sprintf(PORT->TNC->WEB_COMMSSTATE, "%s", "Port Stopped");
|
||||
MySetWindowText(PORT->TNC->xIDC_COMMSSTATE, PORT->TNC->WEB_COMMSSTATE);
|
||||
|
||||
strcpy(TNC->WEB_TNCSTATE, "Free");
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -321,7 +314,7 @@ void SendARDOPorPacketData(struct TNCINFO * TNC, int Stream, UCHAR * Buff, int t
|
|||
if (Stream == 0)
|
||||
{
|
||||
ARDOPSendData(TNC, Buff, txlen);
|
||||
STREAM->bytesTXed += txlen;
|
||||
STREAM->BytesTXed += txlen;
|
||||
WritetoTrace(TNC, Buff, txlen);
|
||||
}
|
||||
else
|
||||
|
@ -569,7 +562,7 @@ static int ProcessLine(char * buf, int Port)
|
|||
|
||||
void ARDOPThread(struct TNCINFO * TNC);
|
||||
VOID ARDOPProcessDataSocketData(int port);
|
||||
int ConnecttoARDOP(struct TNCINFO * TNC);
|
||||
int ConnecttoARDOP();
|
||||
static VOID ARDOPProcessReceivedData(struct TNCINFO * TNC);
|
||||
static VOID ARDOPProcessReceivedControl(struct TNCINFO * TNC);
|
||||
int V4ProcessReceivedData(struct TNCINFO * TNC);
|
||||
|
@ -650,12 +643,6 @@ VOID ARDOPSendCommand(struct TNCINFO * TNC, char * Buff, BOOL Queue)
|
|||
if (Buff[0] == 0) // Terminal Keepalive?
|
||||
return;
|
||||
|
||||
if (memcmp(Buff, "LISTEN ", 7) == 0)
|
||||
{
|
||||
strcpy(TNC->WEB_MODE, &Buff[7]);
|
||||
MySetWindowText(TNC->xIDC_MODE, &Buff[7]);
|
||||
}
|
||||
|
||||
EncLen = sprintf(Encoded, "%s\r", Buff);
|
||||
|
||||
// it is possible for binary data to be dumped into the command
|
||||
|
@ -889,19 +876,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
if (TNC->SessionTimeLimit && STREAM->ConnectTime && time(NULL) > (TNC->SessionTimeLimit + STREAM->ConnectTime))
|
||||
{
|
||||
ARDOPSendCommand(TNC, "DISCONNECT", TRUE);
|
||||
STREAM->ReportDISC = 1;
|
||||
STREAM->AttachTime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Check ATTACH time limit
|
||||
|
||||
if (STREAM->Attached)
|
||||
{
|
||||
if (STREAM->AttachTime && TNC->AttachTimeLimit && time(NULL) > (TNC->AttachTimeLimit + STREAM->AttachTime))
|
||||
{
|
||||
STREAM->ReportDISC = 1;
|
||||
STREAM->AttachTime = 0;
|
||||
STREAM->Disconnecting = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -972,7 +947,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
TNC->Streams[0].Connecting ||
|
||||
TNC->Streams[0].Connected)
|
||||
{
|
||||
// discard if TNC not connected or session active
|
||||
// discard if TNC not connected or sesison active
|
||||
|
||||
ReleaseBuffer(buffptr);
|
||||
continue;
|
||||
|
@ -1215,7 +1190,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
Debugprintf("ARDOP New Attach Stream %d DEDStream %d", Stream, STREAM->DEDStream);
|
||||
|
||||
STREAM->Attached = TRUE;
|
||||
STREAM->AttachTime = time(NULL);
|
||||
|
||||
calllen = ConvFromAX25(TNC->PortRecord->ATTACHEDSESSIONS[Stream]->L4USER, TNC->Streams[Stream].MyCall);
|
||||
TNC->Streams[Stream].MyCall[calllen] = 0;
|
||||
|
@ -1288,7 +1262,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
UCHAR * data = &buffptr->Data[0];
|
||||
STREAM->FramesQueued--;
|
||||
txlen = (int)buffptr->Len;
|
||||
STREAM->bytesTXed += txlen;
|
||||
STREAM->BytesTXed += txlen;
|
||||
|
||||
if (Stream == 0)
|
||||
{
|
||||
|
@ -1395,7 +1369,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
{
|
||||
bytes=ARDOPSendData(TNC, &buff->L2DATA[0], txlen);
|
||||
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);
|
||||
}
|
||||
else
|
||||
|
@ -1494,10 +1468,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
|
||||
if (_memicmp(&buff->L2DATA[0], "RADIO ", 6) == 0)
|
||||
{
|
||||
char cmd[56];
|
||||
|
||||
strcpy(cmd, &buff->L2DATA[6]);
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, cmd);
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, &buff->L2DATA[6]);
|
||||
|
||||
if (Rig_Command(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4CROSSLINK, &buff->L2DATA[0]))
|
||||
{
|
||||
|
@ -1644,8 +1615,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
|
||||
ARDOPChangeMYC(TNC, TNC->Streams[0].MyCall);
|
||||
|
||||
hookL4SessionAttempt(STREAM, &buff->L2DATA[2], TNC->Streams[0].MyCall);
|
||||
|
||||
// See if Busy
|
||||
|
||||
if (InterlockedCheckBusy(TNC))
|
||||
|
@ -1736,7 +1705,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
return TNC->CONNECTED << 8 | 1;
|
||||
|
||||
return (TNC->CONNECTED << 8 | TNC->Streams[Stream].Disconnecting << 15); // OK
|
||||
|
||||
|
||||
|
||||
case 4: // reinit7
|
||||
|
||||
|
@ -1884,11 +1853,13 @@ VOID ARDOPReleaseTNC(struct TNCINFO * TNC)
|
|||
|
||||
ARDOPChangeMYC(TNC, TNC->NodeCall);
|
||||
|
||||
ARDOPSendCommand(TNC, "LISTEN TRUE", TRUE);
|
||||
|
||||
strcpy(TNC->WEB_TNCSTATE, "Free");
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
||||
ARDOPSendCommand(TNC, "LISTEN TRUE", TRUE);
|
||||
|
||||
// Start Scanner
|
||||
|
||||
// Start Scanner
|
||||
|
||||
if (TNC->DefaultRadioCmd)
|
||||
|
@ -1906,19 +1877,12 @@ VOID ARDOPReleaseTNC(struct TNCINFO * TNC)
|
|||
|
||||
VOID ARDOPSuspendPort(struct TNCINFO * TNC, struct TNCINFO * ThisTNC)
|
||||
{
|
||||
TNC->PortRecord->PORTCONTROL.PortSuspended = TRUE;
|
||||
ARDOPSendCommand(TNC, "LISTEN FALSE", TRUE);
|
||||
strcpy(TNC->WEB_TNCSTATE, "Interlocked");
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
||||
}
|
||||
|
||||
VOID ARDOPReleasePort(struct TNCINFO * TNC)
|
||||
{
|
||||
TNC->PortRecord->PORTCONTROL.PortSuspended = FALSE;
|
||||
ARDOPSendCommand(TNC, "LISTEN TRUE", TRUE);
|
||||
strcpy(TNC->WEB_TNCSTATE, "Free");
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
}
|
||||
|
||||
extern char WebProcTemplate[];
|
||||
|
@ -1935,7 +1899,7 @@ static int WebProc(struct TNCINFO * TNC, char * Buff, BOOL LOCAL)
|
|||
|
||||
Len += sprintf(&Buff[Len], "<tr><td width=110px>Comms State</td><td>%s</td></tr>", TNC->WEB_COMMSSTATE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>TNC State</td><td>%s</td></tr>", TNC->WEB_TNCSTATE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Listen</td><td>%s</td></tr>", TNC->WEB_MODE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Mode</td><td>%s</td></tr>", TNC->WEB_MODE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Channel State</td><td>%s %s</td></tr>", TNC->WEB_CHANSTATE, TNC->WEB_LEVELS);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Proto State</td><td>%s</td></tr>", TNC->WEB_PROTOSTATE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Traffic</td><td>%s</td></tr>", TNC->WEB_TRAFFIC);
|
||||
|
@ -1984,7 +1948,6 @@ VOID * ARDOPExtInit(EXTPORTDATA * PortEntry)
|
|||
}
|
||||
|
||||
TNC->Port = port;
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (TNC->LogPath)
|
||||
ARDOPOpenLogFiles(TNC);
|
||||
|
@ -1997,7 +1960,7 @@ VOID * ARDOPExtInit(EXTPORTDATA * PortEntry)
|
|||
if (TNC->ProgramPath)
|
||||
TNC->WeStartedTNC = RestartTNC(TNC);
|
||||
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_ARDOP;
|
||||
TNC->Hardware = H_ARDOP;
|
||||
|
||||
if (TNC->BusyWait == 0)
|
||||
TNC->BusyWait = 10;
|
||||
|
@ -2005,6 +1968,7 @@ VOID * ARDOPExtInit(EXTPORTDATA * PortEntry)
|
|||
if (TNC->BusyHold == 0)
|
||||
TNC->BusyHold = 1;
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
memcpy(TNC->NodeCall, MYNODECALL, 10);
|
||||
|
@ -2151,7 +2115,7 @@ VOID * ARDOPExtInit(EXTPORTDATA * PortEntry)
|
|||
CreateWindowEx(0, "STATIC", "TNC State", WS_CHILD | WS_VISIBLE, 10,28,106,20, TNC->hDlg, NULL, hInstance, NULL);
|
||||
TNC->xIDC_TNCSTATE = CreateWindowEx(0, "STATIC", "", WS_CHILD | WS_VISIBLE, 120,28,520,20, TNC->hDlg, NULL, hInstance, NULL);
|
||||
|
||||
CreateWindowEx(0, "STATIC", "Listen", WS_CHILD | WS_VISIBLE, 10,50,80,20, TNC->hDlg, NULL, hInstance, NULL);
|
||||
CreateWindowEx(0, "STATIC", "Mode", WS_CHILD | WS_VISIBLE, 10,50,80,20, TNC->hDlg, NULL, hInstance, NULL);
|
||||
TNC->xIDC_MODE = CreateWindowEx(0, "STATIC", "", WS_CHILD | WS_VISIBLE, 120,50,200,20, TNC->hDlg, NULL, hInstance, NULL);
|
||||
|
||||
CreateWindowEx(0, "STATIC", "Channel State", WS_CHILD | WS_VISIBLE, 10,72,110,20, TNC->hDlg, NULL, hInstance, NULL);
|
||||
|
@ -2282,16 +2246,16 @@ VOID TNCLost(struct TNCINFO * TNC)
|
|||
if (Stream == 0)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
if (STREAM->Attached)
|
||||
{
|
||||
STREAM->Connected = FALSE;
|
||||
STREAM->Connecting = FALSE;
|
||||
STREAM->ReportDISC = TRUE;
|
||||
|
||||
STREAM->Connected = FALSE;
|
||||
STREAM->Connecting = FALSE;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2617,8 +2581,6 @@ VOID ARDOPThread(struct TNCINFO * TNC)
|
|||
|
||||
TNC->Alerted = TRUE;
|
||||
|
||||
ARDOPSendCommand(TNC, "LISTEN TRUE", TRUE);
|
||||
|
||||
sprintf(TNC->WEB_COMMSSTATE, "Connected to ARDOP TNC");
|
||||
MySetWindowText(TNC->xIDC_COMMSSTATE, TNC->WEB_COMMSSTATE);
|
||||
|
||||
|
@ -2698,10 +2660,6 @@ VOID ARDOPThread(struct TNCINFO * TNC)
|
|||
sprintf(TNC->WEB_COMMSSTATE, "Connection to TNC lost");
|
||||
MySetWindowText(TNC->xIDC_COMMSSTATE, TNC->WEB_COMMSSTATE);
|
||||
|
||||
strcpy(TNC->WEB_TNCSTATE, "Free");
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
||||
|
||||
TNC->CONNECTED = FALSE;
|
||||
TNC->Alerted = FALSE;
|
||||
|
||||
|
@ -2983,15 +2941,6 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
if (TNC->PTTMode)
|
||||
Rig_PTT(TNC, TRUE);
|
||||
|
||||
TNC->PTTonTime = GetTickCount();
|
||||
|
||||
// Cancel Busy timer (stats include ptt on time in port active
|
||||
|
||||
if (TNC->BusyonTime)
|
||||
{
|
||||
TNC->BusyActivemS += (GetTickCount() - TNC->BusyonTime);
|
||||
TNC->BusyonTime = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (_memicmp(Buffer, "PTT F", 5) == 0)
|
||||
|
@ -3000,12 +2949,6 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
if (TNC->PTTMode)
|
||||
Rig_PTT(TNC, FALSE);
|
||||
|
||||
if (TNC->PTTonTime)
|
||||
{
|
||||
TNC->PTTActivemS += (GetTickCount() - TNC->PTTonTime);
|
||||
TNC->PTTonTime = 0;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3014,8 +2957,6 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
TNC->BusyFlags |= CDBusy;
|
||||
TNC->Busy = TNC->BusyHold * 10; // BusyHold delay
|
||||
|
||||
TNC->BusyonTime = GetTickCount();
|
||||
|
||||
MySetWindowText(TNC->xIDC_CHANSTATE, "Busy");
|
||||
strcpy(TNC->WEB_CHANSTATE, "Busy");
|
||||
|
||||
|
@ -3032,12 +2973,6 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
else
|
||||
strcpy(TNC->WEB_CHANSTATE, "Clear");
|
||||
|
||||
if (TNC->BusyonTime)
|
||||
{
|
||||
TNC->BusyActivemS += (GetTickCount() - TNC->BusyonTime);
|
||||
TNC->BusyonTime = 0;
|
||||
}
|
||||
|
||||
MySetWindowText(TNC->xIDC_CHANSTATE, TNC->WEB_CHANSTATE);
|
||||
TNC->WinmorRestartCodecTimer = time(NULL);
|
||||
return;
|
||||
|
@ -3088,7 +3023,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
}
|
||||
|
||||
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);
|
||||
return;
|
||||
}
|
||||
|
@ -3108,7 +3043,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
WritetoTrace(TNC, Buffer, MsgLen - 1);
|
||||
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0;
|
||||
STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
|
||||
|
||||
memcpy(Call, &Buffer[10], 10);
|
||||
|
||||
|
@ -3235,7 +3170,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
{
|
||||
char AppName[13];
|
||||
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
|
||||
AppName[12] = 0;
|
||||
|
||||
if (TNC->SendTandRtoRelay && memcmp(AppName, "RMS ", 4) == 0
|
||||
|
@ -3285,7 +3220,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
STREAM->NeedDisc = 100; // 10 secs
|
||||
}
|
||||
}
|
||||
strcpy(STREAM->MyCall, TNC->TargetCall);
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
@ -3323,9 +3258,9 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if (_memicmp(Buffer, "DISCONNECTED", 12) == 0
|
||||
|| _memicmp(Buffer, "STATUS CONNECT TO", 17) == 0
|
||||
|| _memicmp(Buffer, "STATUS END ARQ CALL", 19) == 0
|
||||
|| _memicmp(Buffer, "STATUS ARQ TIMEOUT FROM PROTOCOL STATE", 24) == 0
|
||||
// || _memicmp(Buffer, "NEWSTATE DISC", 13) == 0
|
||||
|| _memicmp(Buffer, "ABORT", 5) == 0)
|
||||
|
@ -3367,21 +3302,34 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen)
|
|||
RestartTNC(TNC);
|
||||
}
|
||||
|
||||
sprintf(TNC->WEB_TNCSTATE, "In Use by %s", TNC->Streams[0].MyCall);
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
WritetoTrace(TNC, Buffer, MsgLen - 1);
|
||||
|
||||
// Release Session
|
||||
// Release Session3
|
||||
|
||||
if (TNC->Streams[0].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->ConnectTime = 0; // Prevent retrigger
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -3862,12 +3810,13 @@ VOID ARDOPProcessDataPacket(struct TNCINFO * TNC, UCHAR * Type, UCHAR * Data, in
|
|||
return;
|
||||
}
|
||||
|
||||
STREAM->bytesRXed += Length;
|
||||
STREAM->BytesRXed += Length;
|
||||
|
||||
Data[Length] = 0;
|
||||
Debugprintf("ARDOP: RXD %d bytes", Length);
|
||||
|
||||
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);
|
||||
|
||||
|
||||
|
@ -3891,7 +3840,6 @@ VOID ARDOPProcessDataPacket(struct TNCINFO * TNC, UCHAR * Type, UCHAR * Data, in
|
|||
char * ptr2;
|
||||
char c;
|
||||
int Len = Length;
|
||||
char Call[10] = "";
|
||||
|
||||
Debugprintf(Data);
|
||||
|
||||
|
@ -3964,14 +3912,7 @@ VOID ARDOPProcessDataPacket(struct TNCINFO * TNC, UCHAR * Type, UCHAR * Data, in
|
|||
buffptr->LENGTH = 16 + MSGHDDRLEN + APLen;
|
||||
time(&buffptr->Timestamp);
|
||||
|
||||
memcpy(Call,ptr1, 9);
|
||||
strlop(Call, '>');
|
||||
UpdateMH(TNC, Call, '!', 'I');
|
||||
|
||||
BPQTRACE((MESSAGE *)buffptr, TRUE);
|
||||
|
||||
ReleaseBuffer(buffptr);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -5016,7 +4957,7 @@ tcpHostFrame:
|
|||
WritetoTrace(TNC, Buffer, len);
|
||||
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0;
|
||||
STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
|
||||
|
||||
memcpy(Call, &Buffer[19], 10);
|
||||
ptr = strchr(Call, ' ');
|
||||
|
@ -5089,7 +5030,7 @@ tcpHostFrame:
|
|||
{
|
||||
char AppName[13];
|
||||
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
|
||||
AppName[12] = 0;
|
||||
|
||||
// Make sure app is available
|
||||
|
@ -5958,8 +5899,8 @@ VOID ARAXINIT(struct PORTCONTROL * PORT)
|
|||
char Msg[80] = "";
|
||||
|
||||
memcpy(Msg, PORT->PORTDESCRIPTION, 30);
|
||||
strcat(Msg, "\n);
|
||||
|
||||
sprintf(Msg, "%s\n", Msg);
|
||||
|
||||
WritetoConsoleLocal(Msg);
|
||||
}
|
||||
|
||||
|
|
115
BBSHTMLConfig.c
115
BBSHTMLConfig.c
|
@ -19,7 +19,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "bpqmail.h"
|
||||
|
||||
#ifdef WIN32
|
||||
|
@ -116,7 +116,7 @@ int SendWebMailHeader(char * Reply, char * Key, struct HTTPConnectionInfo * Sess
|
|||
struct UserInfo * FindBBS(char * Name);
|
||||
void ReleaseWebMailStruct(WebMailInfo * WebMail);
|
||||
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 CHKD[] = "checked=checked ";
|
||||
|
@ -158,7 +158,6 @@ char MailPage[] = "<html><head><title>%s's BBS Web Server</title>"
|
|||
"<td><a href=/Mail/Wel?%s>Welcome Msgs & Prompts</a></td>"
|
||||
"<td><a href=/Mail/HK?%s>Housekeeping</a></td>"
|
||||
"<td><a href=/Mail/WP?%s>WP Update</a></td>"
|
||||
"<td><a href=/Webmail>WebMail</a></td>"
|
||||
"<td><a href=/>Node Menu</a></td>"
|
||||
"</tr></table>";
|
||||
|
||||
|
@ -179,7 +178,6 @@ char RefreshMainPage[] = "<html><head>"
|
|||
"<td><a href=/Mail/Wel?%s>Welcome Msgs & Prompts</a></td>"
|
||||
"<td><a href=/Mail/HK?%s>Housekeeping</a></td>"
|
||||
"<td><a href=/Mail/WP?%s>WP Update</a></td>"
|
||||
"<td><a href=/Webmail>WebMail</a></td>"
|
||||
"<td><a href=/>Node Menu</a></td>"
|
||||
"</tr></table>";
|
||||
|
||||
|
@ -405,20 +403,41 @@ int SendHeader(char * Reply, char * Key)
|
|||
|
||||
void ConvertTitletoUTF8(WebMailInfo * WebMail, char * Title, char * UTF8Title, int Len)
|
||||
{
|
||||
Len = strlen(Title);
|
||||
|
||||
if (WebIsUTF8(Title, Len) == FALSE)
|
||||
if (WebIsUTF8(Title, (int)strlen(Title)) == 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)
|
||||
Len = Convert437toUTF8(Title, Len, UTF8Title);
|
||||
else if (code == 1251)
|
||||
Len = Convert1251toUTF8(Title, Len, UTF8Title);
|
||||
else
|
||||
Len = Convert1252toUTF8(Title, Len, UTF8Title);
|
||||
int origlen = (int)strlen(Title) + 1;
|
||||
#ifdef WIN32
|
||||
WCHAR BufferW[128];
|
||||
int wlen;
|
||||
int len = origlen;
|
||||
|
||||
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
|
||||
strcpy(UTF8Title, Title);
|
||||
|
@ -426,7 +445,7 @@ void ConvertTitletoUTF8(WebMailInfo * WebMail, char * Title, char * UTF8Title, i
|
|||
|
||||
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;
|
||||
int ReplyLen;
|
||||
|
@ -456,13 +475,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
|
||||
|
||||
if (GotFirstMessage == 0)
|
||||
|
@ -480,6 +492,12 @@ void ProcessMailHTTPMessage(struct HTTPConnectionInfo * Session, char * Method,
|
|||
return;
|
||||
}
|
||||
|
||||
if (_memicmp(URL, "/Mail/API/", 10) == 0)
|
||||
{
|
||||
*RLen = MailAPIProcessHTTPMessage(Reply, Method, URL, input, LOCAL, Context);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (strcmp(Method, "POST") == 0)
|
||||
{
|
||||
|
@ -1869,7 +1887,6 @@ VOID SaveFwdCommon(struct HTTPConnectionInfo * Session, char * MsgPtr, char * Re
|
|||
GetCheckBox(input, "WarnNoRoute=", &WarnNoRoute);
|
||||
GetCheckBox(input, "LocalTime=", &Localtime);
|
||||
GetCheckBox(input, "SendPtoMultiple=", &SendPtoMultiple);
|
||||
GetCheckBox(input, "FourCharCont=", &FOURCHARCONT);
|
||||
|
||||
// Reinitialise Aliases
|
||||
|
||||
|
@ -2219,21 +2236,21 @@ VOID ProcessUserUpdate(struct HTTPConnectionInfo * Session, char * MsgPtr, char
|
|||
ptr1 = GetNextParam(&ptr2); // Last Listed
|
||||
USER->lastmsg = atoi(ptr1);
|
||||
ptr1 = GetNextParam(&ptr2); // Name
|
||||
memcpy(USER->Name, ptr1, 17);
|
||||
strcpy(USER->Name, ptr1);
|
||||
ptr1 = GetNextParam(&ptr2); // Pass
|
||||
memcpy(USER->pass, ptr1, 12);
|
||||
strcpy(USER->pass, ptr1);
|
||||
ptr1 = GetNextParam(&ptr2); // CMS Pass
|
||||
if (memcmp("****************", ptr1, strlen(ptr1) != 0))
|
||||
{
|
||||
memcpy(USER->CMSPass, ptr1, 15);
|
||||
strcpy(USER->CMSPass, ptr1);
|
||||
}
|
||||
|
||||
ptr1 = GetNextParam(&ptr2); // QTH
|
||||
memcpy(USER->Address, ptr1, 60);
|
||||
strcpy(USER->Address, ptr1);
|
||||
ptr1 = GetNextParam(&ptr2); // ZIP
|
||||
memcpy(USER->ZIP, ptr1, 8);
|
||||
strcpy(USER->ZIP, ptr1);
|
||||
ptr1 = GetNextParam(&ptr2); // HomeBBS
|
||||
memcpy(USER->HomeBBS, ptr1, 40);
|
||||
strcpy(USER->HomeBBS, ptr1);
|
||||
_strupr(USER->HomeBBS);
|
||||
|
||||
SaveUserDatabase();
|
||||
|
@ -2699,7 +2716,6 @@ VOID SendFwdMainPage(char * Reply, int * RLen, char * Key)
|
|||
(WarnNoRoute) ? CHKD : UNC,
|
||||
(Localtime) ? CHKD : UNC,
|
||||
(SendPtoMultiple) ? CHKD : UNC,
|
||||
(FOURCHARCONT) ? CHKD : UNC,
|
||||
ALIASES);
|
||||
}
|
||||
|
||||
|
@ -2976,8 +2992,6 @@ int ProcessWebmailWebSock(char * MsgPtr, char * OutBuffer);
|
|||
|
||||
static char PipeFileName[] = "\\\\.\\pipe\\BPQMailWebPipe";
|
||||
|
||||
// Constants
|
||||
|
||||
static DWORD WINAPI InstanceThread(LPVOID lpvParam)
|
||||
|
||||
// This routine is a thread processing function to read from and reply to a client
|
||||
|
@ -2998,7 +3012,6 @@ static DWORD WINAPI InstanceThread(LPVOID lpvParam)
|
|||
char URL[100001];
|
||||
char * Context, * Method;
|
||||
int n;
|
||||
char token[16]= "";
|
||||
|
||||
char * ptr;
|
||||
|
||||
|
@ -3034,40 +3047,18 @@ static DWORD WINAPI InstanceThread(LPVOID lpvParam)
|
|||
}
|
||||
else
|
||||
{
|
||||
// look for auth header
|
||||
|
||||
const char * auth_header = "Authorization: Bearer ";
|
||||
char * token_begin = strstr(MsgPtr, auth_header);
|
||||
int Flags = 0;
|
||||
strcpy(URL, MsgPtr);
|
||||
|
||||
// Node Flags isn't currently used
|
||||
ptr = strstr(URL, " HTTP");
|
||||
|
||||
if (token_begin)
|
||||
{
|
||||
// Using Auth Header
|
||||
if (ptr)
|
||||
*ptr = 0;
|
||||
|
||||
// Extract the token from the request (assuming it's present in the request headers)
|
||||
Method = strtok_s(URL, " ", &Context);
|
||||
|
||||
token_begin += strlen(auth_header); // Move to the beginning of the token
|
||||
strncpy(token, token_begin, 13);
|
||||
token[13] = '\0'; // Null-terminate the token
|
||||
}
|
||||
ProcessMailHTTPMessage(&Session, Method, Context, MsgPtr, OutBuffer, &OutputLen, InputLen);
|
||||
}
|
||||
|
||||
strcpy(URL, MsgPtr);
|
||||
|
||||
|
||||
|
||||
ptr = strstr(URL, " HTTP");
|
||||
|
||||
if (ptr)
|
||||
*ptr = 0;
|
||||
|
||||
Method = strtok_s(URL, " ", &Context);
|
||||
|
||||
ProcessMailHTTPMessage(&Session, Method, Context, MsgPtr, OutBuffer, &OutputLen, InputLen, token);
|
||||
|
||||
|
||||
WriteFile(hPipe, &Session, sizeof (struct HTTPConnectionInfo), &n, NULL);
|
||||
WriteFile(hPipe, OutBuffer, OutputLen, &cbWritten, NULL);
|
||||
|
||||
|
|
740
BBSUtilities.c
740
BBSUtilities.c
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -162,7 +162,7 @@ BEGIN
|
|||
WS_VSCROLL
|
||||
DEFPUSHBUTTON "Save Welcome Message",SAVEWELCOME,140,296,91,14,
|
||||
BS_CENTER | BS_VCENTER
|
||||
LTEXT " If the node is not directly connectable (ie is not in your NODES table) you can add a connect script. This consists of a series of commands 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
|
||||
END
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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="LAPTOP-Q6S4RP5Q"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<DebugSettings
|
||||
Command="$(TargetPath)"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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="NOTTSDESKTOP"
|
||||
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="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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>
|
|
@ -28,7 +28,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#pragma data_seg("_BPQDATA")
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
#include "time.h"
|
||||
#include "stdio.h"
|
||||
|
@ -64,7 +64,7 @@ typedef struct _RTTMSG
|
|||
|
||||
} RTTMSG;
|
||||
|
||||
int COUNTNODES(struct ROUTE * ROUTE);
|
||||
extern int COUNTNODES();
|
||||
|
||||
VOID __cdecl Debugprintf(const char * format, ...);
|
||||
|
||||
|
@ -932,7 +932,7 @@ int SendRIPTimer()
|
|||
|
||||
// Delay more if Locked - they could be retrying for a long time
|
||||
|
||||
if ((Route->NEIGHBOUR_FLAG)) // LOCKED ROUTE
|
||||
if ((Route->NEIGHBOUR_FLAG & 1)) // LOCKED ROUTE
|
||||
INP3Delay = 1200;
|
||||
else
|
||||
INP3Delay = 600;
|
||||
|
|
Binary file not shown.
49
BPQMail.c
49
BPQMail.c
|
@ -1133,21 +1133,6 @@
|
|||
// Fix possible failure to update last listed count when user disconnects without using B command
|
||||
// Add short random delay (<30 secs) when forward new Messages immediately is enabled (35)
|
||||
// Fix Connect Script IDLETIME (38)
|
||||
// Add "Mail Mgmt" to Webmail menu bar and "WebMail" to Mail Mgmt Menu (39)
|
||||
// Improve "New User" frequency determination (39)
|
||||
// Allow selection of 2 or 4 character country codes for forward processing (39)
|
||||
// Fix Send P to multiple BBS's when routing on HR (40)
|
||||
// Rewrite PG server code on Lunux (41)
|
||||
// Fix SendPToMultiple not stopping at Implied AT match (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)
|
||||
// Fix bug in WP Message processing (56)
|
||||
// Fix treating addresses ending in WW as Internet (57)
|
||||
// Run sending to packetnodes.spots.radio in a separate thread (61)
|
||||
|
||||
#include "bpqmail.h"
|
||||
#include "winstdint.h"
|
||||
|
@ -1165,9 +1150,6 @@ FARPROCX pDllBPQTRACE;
|
|||
FARPROCZ pGetLOC;
|
||||
FARPROCX pRefreshWebMailIndex;
|
||||
FARPROCX pRunEventProgram;
|
||||
FARPROCX pGetPortFrequency;
|
||||
FARPROCX pSendWebRequest;
|
||||
FARPROCX pGetLatLon;
|
||||
|
||||
BOOL WINE = FALSE;
|
||||
|
||||
|
@ -1392,7 +1374,6 @@ char * CheckToAddress(CIRCUIT * conn, char * Addr);
|
|||
BOOL CheckifPacket(char * Via);
|
||||
int GetHTMLForms();
|
||||
VOID GetPGConfig();
|
||||
void SendBBSDataToPktMap();
|
||||
|
||||
struct _EXCEPTION_POINTERS exinfox;
|
||||
|
||||
|
@ -1403,7 +1384,7 @@ DWORD Stack[16];
|
|||
|
||||
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 SPVal;
|
||||
|
@ -1539,11 +1520,7 @@ VOID WriteMiniDump()
|
|||
}
|
||||
|
||||
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
|
||||
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line)
|
||||
void GetSemaphore(struct SEM * Semaphore, int ID)
|
||||
{
|
||||
//
|
||||
// Wait for it to be free
|
||||
|
@ -1947,10 +1924,6 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
|||
pGetLOC = GetProcAddress(ExtDriver,"_GetLOC@0");
|
||||
pRefreshWebMailIndex = GetProcAddress(ExtDriver,"_RefreshWebMailIndex@0");
|
||||
pRunEventProgram = GetProcAddress(ExtDriver,"_RunEventProgram@8");
|
||||
pGetPortFrequency = GetProcAddress(ExtDriver,"_GetPortFrequency@8");
|
||||
pSendWebRequest = GetProcAddress(ExtDriver,"_SendWebRequest@16");
|
||||
pGetLatLon = GetProcAddress(ExtDriver,"_GetLatLon@8");
|
||||
|
||||
|
||||
if (pGetLOC)
|
||||
{
|
||||
|
@ -2197,13 +2170,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
Debugprintf("|Enter HouseKeeping");
|
||||
DoHouseKeeping(FALSE);
|
||||
}
|
||||
|
||||
if (APIClock < NOW)
|
||||
{
|
||||
SendBBSDataToPktMap();
|
||||
APIClock = NOW + 7200; // Every 2 hours
|
||||
}
|
||||
|
||||
tm = gmtime(&NOW);
|
||||
|
||||
if (tm->tm_wday == 0) // Sunday
|
||||
|
@ -2837,12 +2803,6 @@ gotAddr:
|
|||
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
|
||||
#ifndef NOMQTT
|
||||
if (MQTT)
|
||||
MQTTMessageEvent(Msg);
|
||||
#endif
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -3084,6 +3044,7 @@ static PSOCKADDR_IN psin;
|
|||
SOCKET sock;
|
||||
|
||||
|
||||
|
||||
BOOL Initialise()
|
||||
{
|
||||
int i, len;
|
||||
|
@ -3098,8 +3059,6 @@ BOOL Initialise()
|
|||
|
||||
GetTimeZoneInformation(&TimeZoneInformation);
|
||||
|
||||
Debugprintf("%d", sizeof(struct MsgInfo));
|
||||
|
||||
_tzset();
|
||||
_MYTIMEZONE = timezone;
|
||||
_MYTIMEZONE = TimeZoneInformation.Bias * 60;
|
||||
|
@ -3411,8 +3370,6 @@ BOOL Initialise()
|
|||
CreatePipeThread();
|
||||
GetPGConfig();
|
||||
|
||||
APIClock = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
13
BPQMail.rc
13
BPQMail.rc
|
@ -387,16 +387,16 @@ BEGIN
|
|||
CONTROL "Warn if no route for P or T",IDC_WARNNOROUTE,"Button",
|
||||
BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE |
|
||||
WS_TABSTOP,5,101,103,8
|
||||
LTEXT "Aliases",IDC_STATIC,5,165,57,13
|
||||
EDITTEXT IDC_ALIAS,4,183,99,81,ES_MULTILINE | ES_UPPERCASE |
|
||||
LTEXT "Aliases",IDC_STATIC,5,144,57,13
|
||||
EDITTEXT IDC_ALIAS,4,162,99,81,ES_MULTILINE | ES_UPPERCASE |
|
||||
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN |
|
||||
WS_VSCROLL
|
||||
CONTROL "Readdress Locally Input",IDC_READDRESSLOCAL,"Button",
|
||||
BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE |
|
||||
WS_DISABLED | WS_TABSTOP,4,267,97,8
|
||||
WS_DISABLED | WS_TABSTOP,4,246,97,8
|
||||
CONTROL "Readdress Received",IDC_READDRESSRXED,"Button",
|
||||
BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE |
|
||||
WS_DISABLED | WS_TABSTOP,4,281,97,8
|
||||
WS_DISABLED | WS_TABSTOP,4,260,97,8
|
||||
GROUPBOX "Per-BBS Params",IDC_STATIC,121,33,326,263
|
||||
LTEXT "BBS",IDC_STATIC,128,46,57,10
|
||||
COMBOBOX IDC_BBS,122,59,50,60,CBS_SIMPLE | CBS_OEMCONVERT |
|
||||
|
@ -471,9 +471,6 @@ BEGIN
|
|||
WS_TABSTOP,5,130,103,8
|
||||
LTEXT "Incoming Connect Timeout",IDC_STATIC,125,278,95,12
|
||||
EDITTEXT IDC_CONTIMEOUT,219,276,22,12,ES_AUTOHSCROLL
|
||||
CONTROL "Use 4 Char Continent Codes",IDC_FOURCHARCONTINENT,
|
||||
"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE |
|
||||
WS_TABSTOP,6,146,103,8
|
||||
END
|
||||
|
||||
IDD_USERADDED_BOX DIALOG DISCARDABLE 176, 132, 129, 68
|
||||
|
@ -1045,7 +1042,7 @@ BEGIN
|
|||
CONTROL "Delete Log and Message Files to Recycle Bin",
|
||||
IDC_DELETETORECYCLE,"Button",BS_AUTOCHECKBOX |
|
||||
BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,142,115,20
|
||||
CONTROL "Suppress Mailing of Housekeeping Results",
|
||||
CONTROL "Supress 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",
|
||||
|
|
|
@ -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>
|
|
@ -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="NOTTSDESKTOP"
|
||||
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="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
</Project>
|
|
@ -1867,7 +1867,6 @@ VOID SaveFWDConfig(HWND hDlg)
|
|||
MaxRXSize = GetDlgItemInt(hDlg, IDC_MAXRECV, &OK, FALSE);
|
||||
MaxAge = GetDlgItemInt(hDlg, IDC_MAXAGE, &OK, FALSE);
|
||||
SendPtoMultiple = IsDlgButtonChecked(hDlg, IDC_MULTIP);
|
||||
FOURCHARCONT = IsDlgButtonChecked(hDlg, IDC_FOURCHARCONTINENT);
|
||||
|
||||
|
||||
// Reinitialise Aliases
|
||||
|
@ -3250,7 +3249,6 @@ INT_PTR CALLBACK FwdEditDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARA
|
|||
CheckDlgButton(hDlg, IDC_WARNNOROUTE, WarnNoRoute);
|
||||
CheckDlgButton(hDlg, IDC_USELOCALTIME, Localtime);
|
||||
CheckDlgButton(hDlg, IDC_MULTIP, SendPtoMultiple);
|
||||
CheckDlgButton(hDlg, IDC_FOURCHARCONTINENT, FOURCHARCONT);
|
||||
|
||||
CurrentBBS = NULL;
|
||||
|
||||
|
|
|
@ -319,7 +319,6 @@
|
|||
#define ID_MULTICAST 40024
|
||||
#define IDC_DEFAULTNOWINLINK 41001
|
||||
#define IDC_MULTIP 41002
|
||||
#define IDC_FOURCHARCONTINENT 41003
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
|
|
2
BPQNRR.c
2
BPQNRR.c
|
@ -36,7 +36,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
//#include "vmm.h"
|
||||
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
|
||||
extern int SENDNETFRAME();
|
||||
|
|
|
@ -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>
|
|
@ -214,7 +214,7 @@ LRESULT APIENTRY InputProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ;
|
|||
LRESULT APIENTRY MonProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ;
|
||||
|
||||
|
||||
extern struct CMDX COMMANDS[];
|
||||
extern CMDX COMMANDS[];
|
||||
extern int APPL1;
|
||||
|
||||
static HMENU trayMenu;
|
||||
|
|
|
@ -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>
|
|
@ -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="LAPTOP-Q6S4RP5Q"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<DebugSettings
|
||||
Command="$(TargetPath)"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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="NOTTSDESKTOP"
|
||||
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="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -56,7 +56,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#ifndef WIN32
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
|
@ -87,7 +87,7 @@ void CreateMHWindow();
|
|||
int Update_MH_List(struct in_addr ipad, char * call, char proto);
|
||||
|
||||
static BOOL ReadConfigFile(int Port);
|
||||
int ConnecttoAGW(int port);
|
||||
int ConnecttoAGW();
|
||||
int ProcessReceivedData(int bpqport);
|
||||
static int ProcessLine(char * buf, int Port, BOOL CheckPort);
|
||||
|
||||
|
|
88
Bpq32.c
88
Bpq32.c
|
@ -3,7 +3,7 @@ Copyright 2001-2022 John Wiseman G8BPQ
|
|||
|
||||
This file is part of LinBPQ/BPQ32.
|
||||
|
||||
LinBPQ/BPQ32 is free software: you can redistribute it and/or modifyextern int HTTP
|
||||
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.
|
||||
|
@ -1086,7 +1086,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
// Add ? and * wildcards to NODES command (74)
|
||||
// Add Port RADIO config parameter (74)
|
||||
|
||||
// Version 6.0.24.1 August 2023
|
||||
// Version 6.0.24.1 August 2024
|
||||
|
||||
// Apply NODES command wildcard to alias as well a call (2)
|
||||
// Add STOPPORT/STARTPORT to VARA Driver (2)
|
||||
|
@ -1212,50 +1212,11 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
// Add NodeAPI call sendLinks and remove get from other calls (32)
|
||||
// Improve validation of Web Beacon Config (33)
|
||||
// Support SNMP via host ip stack as well as IPGateway (34)
|
||||
|
||||
// Switch APRS Map to OSM tile servers (36)
|
||||
// Fix potential buffer overflow in Telnet login (36)
|
||||
// Allow longer serial device names (37)
|
||||
// Fix ICF8101 Mode setting (37)
|
||||
// Kill link if we are getting repeated RR(F) after timeout
|
||||
// (Indicating other station is seeing our RR(P) but not the resent I frame) (40)
|
||||
// Change default of SECURETELNET to 1 (41)
|
||||
// Add optional ATTACH time limit for ARDOP (42)
|
||||
// Fix buffer overflow risk in HTTP Terminal(42)
|
||||
// Fix KISSHF Interlock (43)
|
||||
// Support other than channel A on HFKISS (43)
|
||||
// Support additional port info reporting for M0LTE Map (44)
|
||||
// Allow interlocking of KISS and Session mode ports (eg ARDOP and VARA) (45)
|
||||
// Add ARDOP UI Packets to MH (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 of Mail Events (54)
|
||||
// Fix beaconong on KISSHF ports (55)
|
||||
// Fix MailAPI msgs endpoint
|
||||
// Attempt to fix NC going to wrong application. (57)
|
||||
// Improve ARDOP end of session code (58)
|
||||
// Run M0LTE Map reporting in a separate thread (59/60)
|
||||
// Add RHP support for WhatsPac (59)
|
||||
// Add timestamps to LIS monitor (60)
|
||||
// Fix problem with L4 frames being delivered out of sequence (60)
|
||||
// Add Compression of Netrom connections (62)
|
||||
// Improve handling of Locked Routes (62)
|
||||
// Add L4 RESET (Paula G8PZT's extension to NETROM)
|
||||
// Fix problem using SENDRAW from BPQMail (63)
|
||||
// Fix compatibility with latest ardopcf (64)
|
||||
// Fix bug in RHP socket timeout code (65)
|
||||
// Fix L4 RTT (66)
|
||||
// Fix RigConrol with Chanxx but no other settings (66)
|
||||
|
||||
|
||||
|
||||
#define CKernel
|
||||
|
@ -1349,7 +1310,6 @@ void * KISSHFExtInit(EXTPORTDATA * PortEntry);
|
|||
void * WinRPRExtInit(EXTPORTDATA * PortEntry);
|
||||
void * HSMODEMExtInit(EXTPORTDATA * PortEntry);
|
||||
void * FreeDataExtInit(EXTPORTDATA * PortEntry);
|
||||
void * SIXPACKExtInit(EXTPORTDATA * PortEntry);
|
||||
|
||||
extern char * ConfigBuffer; // Config Area
|
||||
VOID REMOVENODE(dest_list * DEST);
|
||||
|
@ -1397,9 +1357,6 @@ extern struct _LINKTABLE * LINKS;
|
|||
extern int LINK_TABLE_LEN;
|
||||
extern int MAXLINKS;
|
||||
|
||||
extern double LatFromLOC;
|
||||
extern double LonFromLOC;
|
||||
|
||||
|
||||
extern int BPQHOSTAPI();
|
||||
extern int INITIALISEPORTS();
|
||||
|
@ -1518,7 +1475,6 @@ VOID APRSClose();
|
|||
VOID CloseTNCEmulator();
|
||||
|
||||
VOID Poll_AGW();
|
||||
void RHPPoll();
|
||||
BOOL AGWAPIInit();
|
||||
int AGWAPITerminate();
|
||||
|
||||
|
@ -1537,9 +1493,7 @@ UINT Sem_edx = 0;
|
|||
UINT Sem_esi = 0;
|
||||
UINT Sem_edi = 0;
|
||||
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line);
|
||||
void GetSemaphore(struct SEM * Semaphore, int ID);
|
||||
void FreeSemaphore(struct SEM * Semaphore);
|
||||
|
||||
DllExport void * BPQHOSTAPIPTR = &BPQHOSTAPI;
|
||||
|
@ -1887,8 +1841,8 @@ VOID MonitorThread(int x)
|
|||
{
|
||||
// It is stuck - try to release
|
||||
|
||||
Debugprintf ("Semaphore locked - Process ID = %d, Held By %d from %s Line %d",
|
||||
Semaphore.SemProcessID, SemHeldByAPI, Semaphore.File, Semaphore.Line);
|
||||
Debugprintf ("Semaphore locked - Process ID = %d, Held By %d",
|
||||
Semaphore.SemProcessID, SemHeldByAPI);
|
||||
|
||||
// Write a minidump
|
||||
|
||||
|
@ -2309,7 +2263,6 @@ VOID TimerProcX()
|
|||
Poll_AGW();
|
||||
|
||||
DRATSPoll();
|
||||
RHPPoll();
|
||||
|
||||
CheckGuardZone();
|
||||
|
||||
|
@ -3098,7 +3051,7 @@ SkipInit:
|
|||
|
||||
if (AttachedProcesses < 2)
|
||||
{
|
||||
if (AUTOSAVE)
|
||||
if (AUTOSAVE == 1)
|
||||
SaveNodes();
|
||||
if (AUTOSAVEMH)
|
||||
SaveMH();
|
||||
|
@ -3994,9 +3947,6 @@ VOID * InitializeExtDriver(PEXTPORTDATA PORTVEC)
|
|||
if (strstr(Value, "FREEDATA"))
|
||||
return FreeDataExtInit;
|
||||
|
||||
if (strstr(Value, "6PACK"))
|
||||
return SIXPACKExtInit;
|
||||
|
||||
ExtDriver = LoadLibrary(Value);
|
||||
|
||||
if (ExtDriver == NULL)
|
||||
|
@ -6120,14 +6070,13 @@ DllExport BOOL APIENTRY SaveReg(char * KeyIn, HANDLE hFile)
|
|||
{
|
||||
if (len > 76)
|
||||
{
|
||||
len += sprintf(&RegLine[len], "\\\r\n", RegLine);
|
||||
strcat(RegLine, "\\\r\n");
|
||||
len = sprintf(RegLine, "%s\\\r\n", RegLine);
|
||||
WriteFile(hFile, RegLine, len, &written, NULL);
|
||||
strcpy(RegLine, " ");
|
||||
len = 2;
|
||||
}
|
||||
|
||||
len += sprintf(&RegLine[len], "%02x,", Value[k]);
|
||||
len = sprintf(RegLine, "%s%02x,", RegLine, Value[k]);
|
||||
}
|
||||
RegLine[--len] = 0x0d;
|
||||
RegLine[++len] = 0x0a;
|
||||
|
@ -6153,20 +6102,19 @@ DllExport BOOL APIENTRY SaveReg(char * KeyIn, HANDLE hFile)
|
|||
{
|
||||
if (len > 76)
|
||||
{
|
||||
len += sprintf(RegLine[len], "\\\r\n");
|
||||
len = sprintf(RegLine, "%s\\\r\n", RegLine);
|
||||
WriteFile(hFile, RegLine, len, &written, NULL);
|
||||
strcpy(RegLine, " ");
|
||||
len = 2;
|
||||
}
|
||||
|
||||
len += sprintf(&RegLine[len], "%02x,", Value[k]);
|
||||
len = sprintf(RegLine, "%s%02x,", RegLine, Value[k]);
|
||||
if (len > 76)
|
||||
{
|
||||
len += sprintf(RegLine[len], "\\\r\n");
|
||||
len = sprintf(RegLine, "%s\\\r\n", RegLine);
|
||||
WriteFile(hFile, RegLine, len, &written, NULL);
|
||||
strcpy(RegLine, " ");
|
||||
}
|
||||
len += sprintf(&RegLine[len], "00,");
|
||||
len = sprintf(RegLine, "%s00,", RegLine);
|
||||
}
|
||||
|
||||
RegLine[--len] = 0x0d;
|
||||
|
@ -6653,19 +6601,11 @@ int GetListeningPortsPID(int Port)
|
|||
return 0; // Not found
|
||||
}
|
||||
|
||||
DllExport char * APIENTRY GetLOC()
|
||||
DllExport char * APIENTRY GetLOC()
|
||||
{
|
||||
return LOC;
|
||||
}
|
||||
|
||||
DllExport void APIENTRY GetLatLon(double * lat, double * lon)
|
||||
{
|
||||
*lat = LatFromLOC;
|
||||
*lon = LonFromLOC;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// UZ7HO Dll PTT interface
|
||||
|
||||
// 1 ext_PTT_info
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,621 @@
|
|||
<?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="0"
|
||||
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=""C:\Program Files\7-Zip\7z.exe" a C:\DevProgs\BPQ32\bpq32.zip C:\DevProgs\BPQ32\bpq32.dll && myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll && 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 "MDIKERNEL""
|
||||
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=""C:\Program Files\7-Zip\7z.exe" a C:\DevProgs\BPQ32\bpq32.zip C:\DevProgs\BPQ32\bpq32.dll && myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll && 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="..\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>
|
|
@ -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="C:\Devprogs\BPQ32\bpq32.exe"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<DebugSettings
|
||||
Command=""
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="LAPTOP-Q6S4RP5Q"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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="C:\Devprogs\BPQ32\bpq32.exe"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<DebugSettings
|
||||
Command=""
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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="C:\Devprogs\BPQ32\bpq32.exe"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<DebugSettings
|
||||
Command="C:\Devprogs\BPQ32\bpq32.exe"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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="C:\DevProgs\BPQ32\bpq32.exe"
|
||||
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="C:\DevProgs\BPQ32\bpq32.exe"
|
||||
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>
|
|
@ -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="C:\DevProgs\BPQ32\bpq32.exe"
|
||||
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="C:\DevProgs\BPQ32\bpq32.exe"
|
||||
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>
|
|
@ -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 && myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll && 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 && myxcopy /y c:\DevProgs\BPQ32\bpq32.dll c:\windows\SysWOW64\bpq32.dll && 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>
|
|
@ -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>
|
|
@ -30,9 +30,6 @@ int IntDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, uint64_t Mask, BO
|
|||
int IntSetTraceOptionsEx(uint64_t mask, int mtxparam, int mcomparam, int monUIOnly);
|
||||
int CountBits64(uint64_t in);
|
||||
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
|
||||
#define GetBuff() _GetBuff(__FILE__, __LINE__)
|
||||
#define ReleaseBuffer(s) _ReleaseBuffer(s, __FILE__, __LINE__)
|
||||
#define CheckGuardZone() _CheckGuardZone(__FILE__, __LINE__)
|
||||
|
@ -67,13 +64,13 @@ DllExport int APIENTRY GetConnectionInfo(int stream, char * callsign,
|
|||
int * port, int * sesstype, int * paclen,
|
||||
int * maxframe, int * l4window);
|
||||
|
||||
#define LIBCONFIG_STATIC
|
||||
#include "libconfig.h"
|
||||
|
||||
int GetIntValue(config_setting_t * group, char * name);
|
||||
BOOL GetStringValue(config_setting_t * group, char * name, char * value, int maxlen);
|
||||
VOID SaveIntValue(config_setting_t * group, char * name, int value);
|
||||
VOID SaveStringValue(config_setting_t * group, char * name, char * value);
|
||||
struct config_setting_t;
|
||||
|
||||
int GetIntValue(struct config_setting_t * group, char * name);
|
||||
BOOL GetStringValue(struct config_setting_t * group, char * name, char * value);
|
||||
VOID SaveIntValue(struct config_setting_t * group, char * name, int value);
|
||||
VOID SaveStringValue(struct config_setting_t * group, char * name, char * value);
|
||||
|
||||
int EncryptPass(char * Pass, char * Encrypt);
|
||||
VOID DecryptPass(char * Encrypt, unsigned char * Pass, unsigned int len);
|
||||
|
@ -95,6 +92,7 @@ VOID InnerCommandHandler(TRANSPORTENTRY * Session, struct DATAMESSAGE * Buffer);
|
|||
VOID DoTheCommand(TRANSPORTENTRY * Session);
|
||||
char * MOVEANDCHECK(TRANSPORTENTRY * Session, char * Bufferptr, char * Source, int Len);
|
||||
VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer);
|
||||
char * FormatUptime(int Uptime);
|
||||
char * strlop(char * buf, char delim);
|
||||
BOOL CompareCalls(UCHAR * c1, UCHAR * c2);
|
||||
|
||||
|
@ -111,7 +109,7 @@ int cCOUNT_AT_L2(struct _LINKTABLE * LINK);
|
|||
VOID SENDL4CONNECT(TRANSPORTENTRY * Session);
|
||||
|
||||
VOID CloseSessionPartner(TRANSPORTENTRY * Session);
|
||||
int COUNTNODES(struct ROUTE * ROUTE);
|
||||
int COUNTNODES();
|
||||
int DecodeNodeName(char * NodeName, char * ptr);;
|
||||
VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer);
|
||||
int cCOUNT_AT_L2(struct _LINKTABLE * LINK);
|
||||
|
@ -155,10 +153,9 @@ int APIENTRY Reboot();
|
|||
int APIENTRY Reconfig();
|
||||
Dll int APIENTRY SaveNodes ();
|
||||
|
||||
|
||||
struct SEM;
|
||||
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line);
|
||||
void GetSemaphore(struct SEM * Semaphore, int ID);
|
||||
void FreeSemaphore(struct SEM * Semaphore);
|
||||
|
||||
void MySetWindowText(HWND hWnd, char * Msg);
|
||||
|
@ -254,7 +251,6 @@ extern UCHAR MYCALLWITHALIAS[13];
|
|||
extern APPLCALLS APPLCALLTABLE[NumberofAppls];
|
||||
|
||||
extern UCHAR MYNODECALL[]; // NODE CALLSIGN (ASCII)
|
||||
extern char NODECALLLOPPED[]; // NODE CALLSIGN (ASCII). Null terminated
|
||||
extern UCHAR MYNETROMCALL[]; // NETROM CALLSIGN (ASCII)
|
||||
|
||||
extern UCHAR NETROMCALL[]; // NETORM CALL (AX25)
|
||||
|
@ -361,7 +357,7 @@ extern char * ConfigBuffer;
|
|||
|
||||
extern char * WL2KReportLine[];
|
||||
|
||||
extern struct CMDX COMMANDS[];
|
||||
extern CMDX COMMANDS[];
|
||||
|
||||
extern int QCOUNT, MAXBUFFS, MAXCIRCUITS, L4DEFAULTWINDOW, L4T1, CMDXLEN;
|
||||
extern char CMDALIAS[ALIASLEN][NumberofAppls];
|
||||
|
@ -400,7 +396,6 @@ extern int REALTIMETICKS;
|
|||
|
||||
extern time_t CurrentSecs;
|
||||
extern time_t lastSlowSecs;
|
||||
extern time_t lastSaveSecs;
|
||||
|
||||
// SNMP Variables
|
||||
|
||||
|
@ -432,19 +427,4 @@ extern char Message[MaxBPQPortNo + 1][1000]; // Beacon Text
|
|||
extern int MinCounter[MaxBPQPortNo + 1]; // Interval Countdown
|
||||
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);
|
||||
|
||||
|
||||
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);
|
||||
DllExport uint64_t APIENTRY GetPortFrequency(int PortNo, char * FreqStringMhz);
|
|
@ -23,7 +23,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#ifdef LINBPQ
|
||||
|
||||
#include "compatbits.h"
|
||||
char * strlop(char * buf, char delim);
|
||||
|
||||
#define APIENTRY
|
||||
#define VOID void
|
||||
|
@ -32,6 +31,7 @@ char * strlop(char * buf, char delim);
|
|||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
char * strlop(char * buf, char delim);
|
||||
|
||||
VOID APIENTRY md5 (char *arg, unsigned char * checksum);
|
||||
|
||||
|
|
|
@ -39,8 +39,7 @@ VOID __cdecl Logprintf(int LogMode, ChatCIRCUIT * conn, int InOut, const char *
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line)
|
||||
void GetSemaphore(struct SEM * Semaphore, int ID)
|
||||
{
|
||||
//
|
||||
// Wait for it to be free
|
||||
|
@ -75,9 +74,6 @@ loop1:
|
|||
;
|
||||
}
|
||||
|
||||
Semaphore->Line = Line;
|
||||
strcpy(Semaphore->File, File);
|
||||
|
||||
return;
|
||||
}
|
||||
void FreeSemaphore(struct SEM * Semaphore)
|
||||
|
|
295
CommonCode.c
295
CommonCode.c
|
@ -18,6 +18,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
*/
|
||||
|
||||
|
||||
|
||||
// General C Routines common to bpq32 and linbpq. Mainly moved from BPQ32.c
|
||||
|
||||
#pragma data_seg("_BPQDATA")
|
||||
|
@ -27,11 +28,10 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include "mqtt.h"
|
||||
|
||||
#pragma data_seg("_BPQDATA")
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
#include "configstructs.h"
|
||||
|
||||
|
@ -68,12 +68,11 @@ VOID WriteMiniDump();
|
|||
void printStack(void);
|
||||
char * FormatMH(PMHSTRUC MH, char Format);
|
||||
void WriteConnectLog(char * fromCall, char * toCall, UCHAR * Mode);
|
||||
void SendDataToPktMap();
|
||||
void SendDataToPktMap(char *Msg);
|
||||
|
||||
extern BOOL LogAllConnects;
|
||||
extern BOOL M0LTEMap;
|
||||
|
||||
char * stristr (char *ch1, char *ch2);
|
||||
|
||||
extern VOID * ENDBUFFERPOOL;
|
||||
|
||||
|
@ -548,7 +547,6 @@ VOID * _GetBuff(char * File, int Line)
|
|||
|
||||
Msg->Process = (short)GetCurrentProcessId();
|
||||
Msg->Linkptr = NULL;
|
||||
Msg->Padding[0] = 0; // Used for modem status info
|
||||
}
|
||||
else
|
||||
Debugprintf("Warning - Getbuff returned NULL");
|
||||
|
@ -691,7 +689,7 @@ VOID DISPLAYCIRCUIT(TRANSPORTENTRY * L4, char * Buffer)
|
|||
}
|
||||
|
||||
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;
|
||||
|
||||
|
@ -721,6 +719,8 @@ VOID CheckForDetach(struct TNCINFO * TNC, int Stream, struct STREAMINFO * STREAM
|
|||
|
||||
if (STREAM->Connected || STREAM->Connecting)
|
||||
{
|
||||
char logmsg[120];
|
||||
time_t Duration;
|
||||
|
||||
// Need to do a tidy close
|
||||
|
||||
|
@ -733,7 +733,22 @@ VOID CheckForDetach(struct TNCINFO * TNC, int Stream, struct STREAMINFO * STREAM
|
|||
|
||||
// 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?
|
||||
return; // Will close when all acked
|
||||
|
@ -903,7 +918,6 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
|
|||
int Totallen = 0;
|
||||
UCHAR * ptr;
|
||||
struct PORTCONTROL * PORT = (struct PORTCONTROL *)TNC->PortRecord;
|
||||
struct STREAMINFO * STREAM = &TNC->Streams[Stream];
|
||||
|
||||
// Stop Scanner
|
||||
|
||||
|
@ -913,7 +927,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
|
|||
|
||||
sprintf(Msg, "%d SCANSTOP", TNC->Port);
|
||||
|
||||
Rig_Command((TRANSPORTENTRY *) -1, Msg);
|
||||
Rig_Command( (TRANSPORTENTRY *) -1, Msg);
|
||||
|
||||
UpdateMH(TNC, Call, '+', 'I');
|
||||
}
|
||||
|
@ -936,11 +950,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
|
|||
|
||||
memset(Session, 0, sizeof(TRANSPORTENTRY));
|
||||
|
||||
memcpy(STREAM->RemoteCall, Call, 9); // Save Text Callsign
|
||||
|
||||
// May be subsequently rejected but a good place to capture calls
|
||||
|
||||
hookL4SessionAccepted(STREAM, Call, TNC->TargetCall);
|
||||
memcpy(TNC->Streams[Stream].RemoteCall, Call, 9); // Save Text Callsign
|
||||
|
||||
if (AllowTR)
|
||||
ConvToAX25Ex(Call, Session->L4USER); // Allow -T and -R SSID's for MPS
|
||||
|
@ -953,7 +963,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
|
|||
if (NEXTID == 0) NEXTID++; // Keep non-zero
|
||||
|
||||
TNC->PortRecord->ATTACHEDSESSIONS[Stream] = Session;
|
||||
STREAM->Attached = TRUE;
|
||||
TNC->Streams[Stream].Attached = TRUE;
|
||||
|
||||
Session->L4TARGET.EXTPORT = TNC->PortRecord;
|
||||
|
||||
|
@ -964,7 +974,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
|
|||
Session->SESSPACLEN = TNC->PortRecord->PORTCONTROL.PORTPACLEN;
|
||||
Session->KAMSESSION = Stream;
|
||||
|
||||
STREAM->Connected = TRUE; // Subsequent data to data channel
|
||||
TNC->Streams[Stream].Connected = TRUE; // Subsequent data to data channel
|
||||
|
||||
if (LogAllConnects)
|
||||
{
|
||||
|
@ -1017,7 +1027,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO
|
|||
char * Config;
|
||||
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];
|
||||
|
||||
|
@ -1455,21 +1465,7 @@ DllExport int APIENTRY SessionStateNoAck(int stream, int * state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int SendMsgEx(int stream, char * msg, int len, int GetSem);
|
||||
|
||||
int SendMsgNoSem(int stream, char * msg, int len)
|
||||
{
|
||||
return SendMsgEx(stream, msg, len, 0);
|
||||
}
|
||||
|
||||
DllExport int APIENTRY SendMsg(int stream, char * msg, int len)
|
||||
{
|
||||
return SendMsgEx(stream, msg, len, 1);
|
||||
}
|
||||
|
||||
|
||||
int SendMsgEx(int stream, char * msg, int len, int GetSem)
|
||||
{
|
||||
// Send message to stream (BPQHOST Function 2)
|
||||
|
||||
|
@ -1492,13 +1488,11 @@ int SendMsgEx(int stream, char * msg, int len, int GetSem)
|
|||
if (QCOUNT < 50)
|
||||
return 0; // Dont want to run out
|
||||
|
||||
if (GetSem)
|
||||
GetSemaphore(&Semaphore, 10);
|
||||
GetSemaphore(&Semaphore, 10);
|
||||
|
||||
if ((MSG = GetBuff()) == 0)
|
||||
{
|
||||
if (GetSem)
|
||||
FreeSemaphore(&Semaphore);
|
||||
FreeSemaphore(&Semaphore);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1509,8 +1503,7 @@ int SendMsgEx(int stream, char * msg, int len, int GetSem)
|
|||
|
||||
SENDUIMESSAGE(MSG);
|
||||
ReleaseBuffer(MSG);
|
||||
if (GetSem)
|
||||
FreeSemaphore(&Semaphore);
|
||||
FreeSemaphore(&Semaphore);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1525,15 +1518,13 @@ int SendMsgEx(int stream, char * msg, int len, int GetSem)
|
|||
if (L4 == 0)
|
||||
return 0;
|
||||
|
||||
if (GetSem)
|
||||
GetSemaphore(&Semaphore, 22);
|
||||
GetSemaphore(&Semaphore, 22);
|
||||
|
||||
SESS->HOSTFLAGS |= 0x80; // SET ALLOCATED BIT
|
||||
|
||||
if (QCOUNT < 40) // PLENTY FREE?
|
||||
{
|
||||
if (GetSem)
|
||||
FreeSemaphore(&Semaphore);
|
||||
FreeSemaphore(&Semaphore);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1546,16 +1537,14 @@ int SendMsgEx(int stream, char * msg, int len, int GetSem)
|
|||
if (n > 100)
|
||||
{
|
||||
Debugprintf("Stream %d QCOUNT %d Q Len %d - discarding", stream, QCOUNT, n);
|
||||
if (GetSem)
|
||||
FreeSemaphore(&Semaphore);
|
||||
FreeSemaphore(&Semaphore);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ((MSG = GetBuff()) == 0)
|
||||
{
|
||||
if (GetSem)
|
||||
FreeSemaphore(&Semaphore);
|
||||
FreeSemaphore(&Semaphore);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1582,8 +1571,7 @@ int SendMsgEx(int stream, char * msg, int len, int GetSem)
|
|||
else
|
||||
C_Q_ADD(&L4->L4RX_Q, MSG);
|
||||
|
||||
if (GetSem)
|
||||
FreeSemaphore(&Semaphore);
|
||||
FreeSemaphore(&Semaphore);
|
||||
return 0;
|
||||
}
|
||||
DllExport int APIENTRY SendRaw(int port, char * msg, int len)
|
||||
|
@ -1622,9 +1610,9 @@ DllExport int APIENTRY SendRaw(int port, char * msg, int len)
|
|||
|
||||
MSG->LENGTH = len + MSGHDDRLEN;
|
||||
|
||||
if (PORT->PROTOCOL == 10 && PORT->HWType != H_KISSHF) // PACTOR/WINMOR Style
|
||||
if (PORT->PROTOCOL == 10) // PACTOR/WINMOR Style
|
||||
{
|
||||
// Pactor Style. Probably will only be used for Tracker unless we do APRS over V4 or WINMOR
|
||||
// Pactor Style. Probably will only be used for Tracker uneless we do APRS over V4 or WINMOR
|
||||
|
||||
EXTPORTDATA * EXTPORT = (EXTPORTDATA *) PORT;
|
||||
|
||||
|
@ -1681,7 +1669,7 @@ DllExport time_t APIENTRY GetRaw(int stream, char * msg, int * len, int * count)
|
|||
|
||||
Stamp = MSG->Timestamp;
|
||||
|
||||
memcpy(msg, MSG, BUFFLEN - sizeof(void *)); // To c
|
||||
memcpy(msg, MSG, Msglen);
|
||||
|
||||
*len = Msglen;
|
||||
|
||||
|
@ -2456,7 +2444,7 @@ static struct speed_struct
|
|||
HANDLE OpenCOMPort(VOID * pPort, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits)
|
||||
{
|
||||
char Port[256];
|
||||
char buf[512];
|
||||
char buf[100];
|
||||
|
||||
// Linux Version.
|
||||
|
||||
|
@ -2466,8 +2454,8 @@ HANDLE OpenCOMPort(VOID * pPort, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet
|
|||
struct termios term;
|
||||
struct speed_struct *s;
|
||||
|
||||
if ((uintptr_t)pPort < 256)
|
||||
sprintf(Port, "%s/com%d", BPQDirectory, (int)(uintptr_t)pPort);
|
||||
if ((UINT)pPort < 256)
|
||||
sprintf(Port, "%s/com%d", BPQDirectory, (int)pPort);
|
||||
else
|
||||
strcpy(Port, pPort);
|
||||
|
||||
|
@ -2686,14 +2674,6 @@ int DoRoutes()
|
|||
{
|
||||
if (Routes->NEIGHBOUR_CALL[0] != 0)
|
||||
{
|
||||
// Dont save routes from config file here or they are difficult to get rid of
|
||||
|
||||
if (Routes->NEIGHBOUR_FLAG & LOCKEDBYCONFIG)
|
||||
{
|
||||
Routes++;
|
||||
continue;
|
||||
}
|
||||
|
||||
len=ConvFromAX25(Routes->NEIGHBOUR_CALL,Normcall);
|
||||
Normcall[len]=0;
|
||||
|
||||
|
@ -2717,7 +2697,7 @@ int DoRoutes()
|
|||
digis[0] = 0;
|
||||
|
||||
len=sprintf(line,
|
||||
"ROUTE ADD %s %d %d %s %d %d %d %d %d %c\n",
|
||||
"ROUTE ADD %s %d %d %s %d %d %d %d %d\n",
|
||||
Normcall,
|
||||
Routes->NEIGHBOUR_PORT,
|
||||
Routes->NEIGHBOUR_QUAL, digis,
|
||||
|
@ -2725,8 +2705,7 @@ int DoRoutes()
|
|||
Routes->NBOUR_FRACK,
|
||||
Routes->NBOUR_PACLEN,
|
||||
Routes->INP3Node | (Routes->NoKeepAlive << 2),
|
||||
Routes->OtherendsRouteQual,
|
||||
(Routes->NEIGHBOUR_FLAG & LOCKEDBYSYSOP)?'!':' ');
|
||||
Routes->OtherendsRouteQual);
|
||||
|
||||
fputs(line, file);
|
||||
}
|
||||
|
@ -3037,7 +3016,19 @@ DllExport int APIENTRY ClearNodes ()
|
|||
|
||||
return (0);
|
||||
}
|
||||
char * FormatUptime(int Uptime)
|
||||
{
|
||||
struct tm * TM;
|
||||
static char UPTime[50];
|
||||
time_t szClock = Uptime * 60;
|
||||
|
||||
TM = gmtime(&szClock);
|
||||
|
||||
sprintf(UPTime, "Uptime (Days Hours Mins) %.2d:%.2d:%.2d\r",
|
||||
TM->tm_yday, TM->tm_hour, TM->tm_min);
|
||||
|
||||
return UPTime;
|
||||
}
|
||||
|
||||
static char *month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
||||
|
||||
|
@ -3348,7 +3339,7 @@ VOID SendLocation()
|
|||
SendReportMsg((char *)&AXMSG.DEST, Len + 16);
|
||||
|
||||
if (M0LTEMap)
|
||||
SendDataToPktMap();
|
||||
SendDataToPktMap("");
|
||||
|
||||
return;
|
||||
|
||||
|
@ -3356,6 +3347,7 @@ VOID SendLocation()
|
|||
|
||||
|
||||
|
||||
|
||||
VOID SendMH(struct TNCINFO * TNC, char * call, char * freq, char * LOC, char * Mode)
|
||||
{
|
||||
MESSAGE AXMSG;
|
||||
|
@ -3371,8 +3363,7 @@ VOID SendMH(struct TNCINFO * TNC, char * call, char * freq, char * LOC, char * M
|
|||
// Block includes the Msg Header (7 bytes), Len Does not!
|
||||
|
||||
memcpy(AXPTR->DEST, ReportDest, 7);
|
||||
|
||||
if (TNC && TNC->PortRecord->PORTCONTROL.PORTCALL[0])
|
||||
if (TNC->PortRecord->PORTCONTROL.PORTCALL[0])
|
||||
memcpy(AXPTR->ORIGIN, TNC->PortRecord->PORTCONTROL.PORTCALL, 7);
|
||||
else
|
||||
memcpy(AXPTR->ORIGIN, MYCALL, 7);
|
||||
|
@ -3532,10 +3523,8 @@ int __sync_lock_test_and_set(int * ptr, int val)
|
|||
#endif // MACBPQ
|
||||
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
|
||||
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line)
|
||||
void GetSemaphore(struct SEM * Semaphore, int ID)
|
||||
{
|
||||
//
|
||||
// Wait for it to be free
|
||||
|
@ -3579,8 +3568,6 @@ loop1:
|
|||
Semaphore->SemProcessID = GetCurrentProcessId();
|
||||
Semaphore->SemThreadID = GetCurrentThreadId();
|
||||
SemHeldByAPI = ID;
|
||||
Semaphore->Line = Line;
|
||||
strcpy(Semaphore->File, File);
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -3701,7 +3688,7 @@ VOID OpenReportingSockets()
|
|||
{
|
||||
// Enable Node Map Reports
|
||||
|
||||
ReportTimer = 1200; // 2 mins - Give Rigcontrol time to start
|
||||
ReportTimer = 60;
|
||||
|
||||
ReportSocket = socket(AF_INET,SOCK_DGRAM,0);
|
||||
|
||||
|
@ -3727,11 +3714,6 @@ VOID OpenReportingSockets()
|
|||
Chatreportdest.sin_port = htons(81);
|
||||
|
||||
_beginthread(ResolveUpdateThread, 0, NULL);
|
||||
|
||||
printf("MQTT Enabled %d\n", MQTT);
|
||||
|
||||
if (MQTT)
|
||||
MQTTConnect(MQTT_HOST, MQTT_PORT, MQTT_USER, MQTT_PASS);
|
||||
}
|
||||
|
||||
VOID WriteMiniDumpThread();
|
||||
|
@ -4205,10 +4187,10 @@ VOID GetUIConfig()
|
|||
|
||||
if (group)
|
||||
{
|
||||
GetStringValue(group, "UIDEST", &UIUIDEST[Port][0], 11);
|
||||
GetStringValue(group, "FileName", &FN[Port][0], 256);
|
||||
GetStringValue(group, "Message", &Message[Port][0], 1000);
|
||||
GetStringValue(group, "Digis", Digis, 100);
|
||||
GetStringValue(group, "UIDEST", &UIUIDEST[Port][0]);
|
||||
GetStringValue(group, "FileName", &FN[Port][0]);
|
||||
GetStringValue(group, "Message", &Message[Port][0]);
|
||||
GetStringValue(group, "Digis", Digis);
|
||||
UIUIDigi[Port] = _strdup(Digis);
|
||||
|
||||
Interval[Port] = GetIntValue(group, "Interval");
|
||||
|
@ -4239,21 +4221,15 @@ int GetIntValue(config_setting_t * group, char * name)
|
|||
return 0;
|
||||
}
|
||||
|
||||
BOOL GetStringValue(config_setting_t * group, char * name, char * value, int maxlen)
|
||||
BOOL GetStringValue(config_setting_t * group, char * name, char * value)
|
||||
{
|
||||
char * str;
|
||||
const char * str;
|
||||
config_setting_t *setting;
|
||||
|
||||
setting = config_setting_get_member (group, name);
|
||||
if (setting)
|
||||
{
|
||||
str = (char *)config_setting_get_string(setting);
|
||||
|
||||
if (strlen(str) > maxlen)
|
||||
{
|
||||
Debugprintf("Suspect config record %s", str);
|
||||
str[maxlen] = 0;
|
||||
}
|
||||
str = config_setting_get_string (setting);
|
||||
strcpy(value, str);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -4785,14 +4761,13 @@ LRESULT CALLBACK UIWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam
|
|||
extern struct DATAMESSAGE * REPLYBUFFER;
|
||||
char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...);
|
||||
|
||||
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
|
||||
void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
|
||||
{
|
||||
char FN[250];
|
||||
FILE *hFile;
|
||||
struct stat STAT;
|
||||
struct PORTCONTROL * PORT = PORTTABLE;
|
||||
char PortList[256] = "";
|
||||
int len = 0;
|
||||
|
||||
while (PORT)
|
||||
{
|
||||
|
@ -4834,7 +4809,7 @@ void GetPortCTEXT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, st
|
|||
*ptr = '\r';
|
||||
|
||||
|
||||
len += sprintf(&PortList[len], ",%d", PORT->PORTNUMBER);
|
||||
sprintf(PortList, "%s,%d", PortList, PORT->PORTNUMBER);
|
||||
}
|
||||
|
||||
PORT = PORT->PORTPOINTER;
|
||||
|
@ -4884,6 +4859,7 @@ DllExport uint64_t APIENTRY GetPortFrequency(int PortNo, char * FreqString)
|
|||
|
||||
struct TNCINFO * TNC;
|
||||
struct RIGINFO * RIG = 0;
|
||||
int RigPort;
|
||||
|
||||
if (PORT->RIGPort)
|
||||
TNC = TNCInfo[PORT->RIGPort];
|
||||
|
@ -4939,7 +4915,7 @@ SOCKET OpenHTTPSock(char * Host)
|
|||
{
|
||||
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
|
||||
}
|
||||
|
||||
|
@ -4972,7 +4948,7 @@ SOCKET OpenHTTPSock(char * Host)
|
|||
}
|
||||
|
||||
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"
|
||||
"Content-Type: application/json\r\n"
|
||||
"Host: %s:%d\r\n"
|
||||
|
@ -4982,24 +4958,14 @@ static char HeaderTemplate[] = "POST %s HTTP/1.1\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 inptr = 0;
|
||||
char Buffer[4096];
|
||||
char Header[256];
|
||||
char * ptr, * ptr1;
|
||||
int Sent;
|
||||
int Len = strlen(Params);
|
||||
|
||||
if (M0LTEMap == 0)
|
||||
return;
|
||||
|
||||
sock = OpenHTTPSock(Host);
|
||||
|
||||
if (sock == 0)
|
||||
return;
|
||||
|
||||
#ifdef LINBPQ
|
||||
sprintf(Header, HeaderTemplate, Request, Host, 80, Len, "linbpq/", VersionString, Params);
|
||||
|
@ -5013,22 +4979,23 @@ DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params,
|
|||
{
|
||||
int Err = WSAGetLastError();
|
||||
Debugprintf("Error %d from Web Update send()", Err);
|
||||
closesocket(sock);
|
||||
return;
|
||||
}
|
||||
|
||||
while (InputLen != -1)
|
||||
{
|
||||
InputLen = recv(sock, &Buffer[inptr], 4095 - inptr, 0);
|
||||
InputLen = recv(sock, &Buffer[inptr], 4096 - inptr, 0);
|
||||
|
||||
if (InputLen == -1 || InputLen == 0)
|
||||
{
|
||||
int Err = WSAGetLastError();
|
||||
Debugprintf("Error %d from Web Update recv()", Err);
|
||||
closesocket(sock);
|
||||
return;
|
||||
}
|
||||
|
||||
// As we are using a persistant connection, can't look for close. Check
|
||||
// for complete message
|
||||
|
||||
inptr += InputLen;
|
||||
|
||||
Buffer[inptr] = 0;
|
||||
|
@ -5067,9 +5034,10 @@ DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params,
|
|||
else
|
||||
{
|
||||
strlop(Buffer, 13);
|
||||
Debugprintf("Map Update Params - %s", Params);
|
||||
|
||||
Debugprintf("Map Update failed - %s", Buffer);
|
||||
}
|
||||
closesocket(sock);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -5080,8 +5048,7 @@ DllExport VOID WINAPI SendWebRequest(char * Host, char * Request, char * Params,
|
|||
if (ptr1)
|
||||
{
|
||||
// Just accept anything until I've sorted things with Lee
|
||||
|
||||
closesocket(sock);
|
||||
Debugprintf("%s", ptr1);
|
||||
Debugprintf("Web Database update ok");
|
||||
return;
|
||||
}
|
||||
|
@ -5122,8 +5089,6 @@ void BuildPortMH(char * MHJSON, struct PORTCONTROL * PORT)
|
|||
int len;
|
||||
char * ptr;
|
||||
char mhstr[400];
|
||||
int i;
|
||||
char c;
|
||||
|
||||
if (MH == NULL)
|
||||
return;
|
||||
|
@ -5145,16 +5110,7 @@ void BuildPortMH(char * MHJSON, struct PORTCONTROL * PORT)
|
|||
continue;
|
||||
}
|
||||
|
||||
// validate call to prevent corruption of json
|
||||
|
||||
for (i=0; i < len; i++)
|
||||
{
|
||||
c = Normcall[i];
|
||||
|
||||
if (!isalnum(c) && !(c == '#') && !(c == ' ') && !(c == '-'))
|
||||
goto skipit;
|
||||
}
|
||||
|
||||
Normcall[len++] = 0;
|
||||
|
||||
//format TIME
|
||||
|
||||
|
@ -5167,21 +5123,16 @@ void BuildPortMH(char * MHJSON, struct PORTCONTROL * PORT)
|
|||
Normcall, PORT->PORTNUMBER, MH->MHCOUNT, MHTIME);
|
||||
|
||||
strcat( MHJSON, mhstr );
|
||||
skipit:
|
||||
|
||||
MH++;
|
||||
}
|
||||
}
|
||||
|
||||
void SendDataToPktMapThread();
|
||||
|
||||
void SendDataToPktMap()
|
||||
void SendDataToPktMap(char *Msg)
|
||||
{
|
||||
_beginthread(SendDataToPktMapThread,2048000,0);
|
||||
}
|
||||
|
||||
void SendDataToPktMapThread()
|
||||
{
|
||||
char Return[256] = "";
|
||||
SOCKET sock;
|
||||
char Return[256];
|
||||
char Request[64];
|
||||
char Params[50000];
|
||||
|
||||
|
@ -5199,7 +5150,6 @@ void SendDataToPktMapThread()
|
|||
char * Use;
|
||||
char * Type;
|
||||
char * Modulation;
|
||||
char * Usage;
|
||||
|
||||
char locked[] = " ! ";
|
||||
int Percent = 0;
|
||||
|
@ -5304,10 +5254,6 @@ void SendDataToPktMapThread()
|
|||
Type = "RF";
|
||||
Bitrate = 0;
|
||||
Modulation = "FSK";
|
||||
Usage = "Access";
|
||||
|
||||
if (PORT->PortFreq)
|
||||
Freq = PORT->PortFreq;
|
||||
|
||||
if (PORT->PORTTYPE == 0)
|
||||
{
|
||||
|
@ -5365,7 +5311,7 @@ void SendDataToPktMapThread()
|
|||
continue;
|
||||
}
|
||||
|
||||
if (Freq == 0 && TNC->RIG)
|
||||
if (TNC->RIG)
|
||||
Freq = TNC->RIG->RigFreq * 1000000;
|
||||
|
||||
switch (TNC->Hardware) // Hardware Type
|
||||
|
@ -5431,15 +5377,6 @@ void SendDataToPktMapThread()
|
|||
|
||||
break;
|
||||
|
||||
case H_KISSHF:
|
||||
|
||||
// Try to get mode from ID then drop through
|
||||
|
||||
if (stristr(PORT->PORTDESCRIPTION, "BPSK"))
|
||||
{
|
||||
Modulation = "BPSK";
|
||||
}
|
||||
|
||||
case H_WINMOR:
|
||||
case H_V4:
|
||||
|
||||
|
@ -5448,7 +5385,7 @@ void SendDataToPktMapThread()
|
|||
case H_UIARQ:
|
||||
case H_ARDOP:
|
||||
case H_VARA:
|
||||
|
||||
case H_KISSHF:
|
||||
case H_FREEDATA:
|
||||
|
||||
// TCP
|
||||
|
@ -5484,58 +5421,12 @@ void SendDataToPktMapThread()
|
|||
while (*(ptr2) == ' ' && ptr2 != ID)
|
||||
*(ptr2--) = 0;
|
||||
|
||||
if (PORT->M0LTEMapInfo)
|
||||
{
|
||||
// Override with user configured values - RF,7.045,BPSK,300,300,Access
|
||||
|
||||
char param[256];
|
||||
char *p1, *p2, *p3, *p4, *p5;
|
||||
|
||||
strcpy(param, PORT->M0LTEMapInfo);
|
||||
|
||||
p1 = strlop(param, ',');
|
||||
p2 = strlop(p1, ',');
|
||||
p3 = strlop(p2, ',');
|
||||
p4 = strlop(p3, ',');
|
||||
p5 = strlop(p4, ',');
|
||||
|
||||
// int n = sscanf(PORT->M0LTEMapInfo, "%s,%s,%s,%s,%s,%s", &p1, &p2, &p3, &p4, &p5, &p6);
|
||||
|
||||
if (p5)
|
||||
{
|
||||
if (param[0]) Type = param;
|
||||
|
||||
if (p1[0])
|
||||
{
|
||||
// if set to DIAL+=n and frequency set from config or rigcontrol modify it
|
||||
|
||||
uint64_t offset = 0;
|
||||
|
||||
if (_memicmp(p1, "DIAL+", 5) == 0)
|
||||
offset = atoi(&p1[5]);
|
||||
else if (_memicmp(p1, "DIAL-", 5) == 0)
|
||||
offset = -atoi(&p1[5]);
|
||||
else
|
||||
Freq = atof(p1) * 1000000;
|
||||
|
||||
if (Freq != 0)
|
||||
Freq += offset;
|
||||
|
||||
}
|
||||
|
||||
if (p2[0]) Modulation = p2;
|
||||
if (p3[0]) Baud = atoi(p3);
|
||||
if (p4[0]) Bitrate = atoi(p4);
|
||||
if (p5[0]) Usage = p5;
|
||||
}
|
||||
}
|
||||
|
||||
ptr += sprintf(ptr, "{\"id\": \"%d\",\"linkType\": \"%s\","
|
||||
"\"freq\": \"%lld\",\"mode\": \"%s\",\"modulation\": \"%s\","
|
||||
"\"baud\": \"%d\",\"bitrate\": \"%d\",\"usage\": \"%s\",\"comment\": \"%s\"},\r\n",
|
||||
PortNo, Type,
|
||||
Freq, Mode, Modulation,
|
||||
Baud, Bitrate, Usage, ID);
|
||||
Baud, Bitrate, "Access", ID);
|
||||
|
||||
// G7TAJ //
|
||||
// make MH list to be added later
|
||||
|
@ -5625,11 +5516,19 @@ void SendDataToPktMapThread()
|
|||
}
|
||||
],
|
||||
|
||||
|
||||
|
||||
*/
|
||||
// "contact": "string",
|
||||
// "neighbours": [{"node": "G7TAJ","port": "30"}]
|
||||
|
||||
SendWebRequest("packetnodes.spots.radio", Request, Params, 0);
|
||||
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\"}]}";
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
</Project>
|
2
DOSAPI.c
2
DOSAPI.c
|
@ -32,7 +32,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#include "compatbits.h"
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
extern QCOUNT;
|
||||
extern BPQVECSTRUC BPQHOSTVECTOR[];
|
||||
|
|
6
DRATS.c
6
DRATS.c
|
@ -21,7 +21,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
#include "bpq32.h"
|
||||
#include "telnetserver.h"
|
||||
|
@ -168,7 +168,7 @@ int AllocateDRATSStream(struct DRATSSession * Sess)
|
|||
|
||||
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
|
||||
}
|
||||
|
@ -563,7 +563,7 @@ void DRATSConnectionLost(struct ConnectionInfo * sockptr)
|
|||
#define ZEXPORT __stdcall
|
||||
#endif
|
||||
|
||||
#include <zlib.h>
|
||||
#include "zlib.h"
|
||||
|
||||
|
||||
int doinflate(unsigned char * source, unsigned char * dest, int Len, int destlen, int * outLen)
|
||||
|
|
128
Events.c
128
Events.c
|
@ -23,8 +23,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#include "compatbits.h"
|
||||
#include <string.h>
|
||||
#include "asmstrucs.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
VOID __cdecl Debugprintf(const char * format, ...);
|
||||
|
||||
|
@ -39,11 +37,6 @@ VOID __cdecl Debugprintf(const char * format, ...);
|
|||
#endif
|
||||
|
||||
extern BOOL EventsEnabled;
|
||||
void MQTTReportSession(char * Msg);
|
||||
extern int MQTT;
|
||||
|
||||
|
||||
extern char Modenames[19][10];
|
||||
|
||||
// Runs use specified routine on certain event
|
||||
#ifndef WIN32
|
||||
|
@ -114,124 +107,3 @@ DllExport void APIENTRY RunEventProgram(char * Program, char * Param)
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -23,12 +23,8 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#include "bpqmail.h"
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line);
|
||||
|
||||
|
||||
int32_t Encode(char * in, char * out, int32_t inlen, BOOL B1Protocol, int Compress);
|
||||
void MQTTMessageEvent(void* message);
|
||||
|
||||
|
||||
int MaxRXSize = 99999;
|
||||
int MaxTXSize = 99999;
|
||||
|
@ -811,11 +807,6 @@ VOID FlagSentMessages(CIRCUIT * conn, struct UserInfo * user)
|
|||
FBBHeader->FwdMsg->datechanged=time(NULL);
|
||||
}
|
||||
|
||||
#ifndef NOMQTT
|
||||
if (MQTT)
|
||||
MQTTMessageEvent(FBBHeader->FwdMsg);
|
||||
#endif
|
||||
|
||||
FBBHeader->FwdMsg->Locked = 0; // Unlock
|
||||
conn->UserPointer->ForwardingInfo->MsgCount--;
|
||||
}
|
||||
|
|
76
FLDigi.c
76
FLDigi.c
|
@ -23,7 +23,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
extern int (WINAPI FAR *GetModuleFileNameExPtr)();
|
||||
extern int (WINAPI FAR *EnumProcessesPtr)();
|
||||
|
@ -65,12 +65,12 @@ extern int (WINAPI FAR *GetModuleFileNameExPtr)();
|
|||
;
|
||||
int SemHeldByAPI;
|
||||
|
||||
void ConnecttoFLDigiThread(void * portptr);
|
||||
static void ConnecttoFLDigiThread(void * portptr);
|
||||
|
||||
void CreateMHWindow();
|
||||
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 ProcessLine(char * buf, int Port);
|
||||
int KillTNC(struct TNCINFO * TNC);
|
||||
|
@ -93,7 +93,6 @@ VOID CheckFLDigiData(struct TNCINFO * TNC);
|
|||
VOID SendPacket(struct TNCINFO * TNC, UCHAR * Msg, int MsgLen);
|
||||
int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len);
|
||||
VOID SendXMLCommand(struct TNCINFO * TNC, char * Command, char * Value, char ParamType);
|
||||
VOID SendXMLCommandInt(struct TNCINFO * TNC, char * Command, int Value, char ParamType);
|
||||
VOID FLSlowTimer(struct TNCINFO * TNC);
|
||||
VOID SendKISSCommand(struct TNCINFO * TNC, char * Msg);
|
||||
|
||||
|
@ -102,6 +101,8 @@ VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
|
|||
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
|
||||
VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len);
|
||||
|
||||
char * strlop(char * buf, char delim);
|
||||
|
||||
extern UCHAR BPQDirectory[];
|
||||
|
||||
#define MAXMPSKPORTS 16
|
||||
|
@ -538,12 +539,8 @@ pollloop:
|
|||
|
||||
if (_memicmp(&buff->L2DATA[0], "RADIO ", 6) == 0)
|
||||
{
|
||||
char cmd[56];
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, &buff->L2DATA[6]);
|
||||
|
||||
strcpy(cmd, &buff->L2DATA[6]);
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, cmd);
|
||||
|
||||
|
||||
if (Rig_Command(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4CROSSLINK, &buff->L2DATA[0]))
|
||||
{
|
||||
}
|
||||
|
@ -595,7 +592,7 @@ pollloop:
|
|||
}
|
||||
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;
|
||||
|
@ -1184,6 +1181,7 @@ VOID * FLDigiExtInit(EXTPORTDATA * PortEntry)
|
|||
}
|
||||
|
||||
TNC->Port = port;
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
|
@ -1214,7 +1212,7 @@ VOID * FLDigiExtInit(EXTPORTDATA * PortEntry)
|
|||
ptr=strchr(TNC->NodeCall, ' ');
|
||||
if (ptr) *(ptr) = 0; // Null Terminate
|
||||
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_FLDIGI;
|
||||
TNC->Hardware = H_FLDIGI;
|
||||
|
||||
if (TNC->BusyWait == 0)
|
||||
TNC->BusyWait = 10;
|
||||
|
@ -1484,14 +1482,14 @@ static int ProcessLine(char * buf, int Port)
|
|||
return (TRUE);
|
||||
}
|
||||
|
||||
int ConnecttoFLDigi(int port)
|
||||
static int ConnecttoFLDigi(int port)
|
||||
{
|
||||
_beginthread(ConnecttoFLDigiThread, 0, (void *)(size_t)port);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
VOID ConnecttoFLDigiThread(void * portptr)
|
||||
static VOID ConnecttoFLDigiThread(void * portptr)
|
||||
{
|
||||
int port = (int)(size_t)portptr;
|
||||
char Msg[255];
|
||||
|
@ -1639,7 +1637,7 @@ VOID ConnecttoFLDigiThread(void * portptr)
|
|||
VOID UpdateStatsLine(struct TNCINFO * TNC, struct STREAMINFO * STREAM)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -2533,7 +2531,7 @@ VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, char Channe
|
|||
|
||||
strcpy(STREAM->MyCall, call2);
|
||||
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"))
|
||||
{
|
||||
|
@ -2582,7 +2580,7 @@ VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, char Channe
|
|||
{
|
||||
char AppName[13];
|
||||
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
|
||||
AppName[12] = 0;
|
||||
|
||||
// Make sure app is available
|
||||
|
@ -2692,7 +2690,7 @@ AckConnectRequest:
|
|||
goto SendKReply; // Repeated ACK
|
||||
|
||||
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;
|
||||
|
||||
ARQ->ARQTimerState = 0;
|
||||
|
@ -2953,7 +2951,22 @@ SendKReply:
|
|||
|
||||
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;
|
||||
|
@ -3016,7 +3029,7 @@ SendKReply:
|
|||
|
||||
buffptr->Len = Len;
|
||||
memcpy(buffptr->Data, &Input[1], Len);
|
||||
STREAM->bytesRXed += Len;
|
||||
STREAM->BytesRXed += Len;
|
||||
|
||||
UpdateStatsLine(TNC, STREAM);
|
||||
|
||||
|
@ -3133,7 +3146,7 @@ VOID SendARQData(struct TNCINFO * TNC, PMSGWITHLEN Buffer)
|
|||
|
||||
ARQ->TXHOLDQ[ARQ->TXSeq] = Buffer;
|
||||
|
||||
STREAM->bytesTXed += Origlen;
|
||||
STREAM->BytesTXed += Origlen;
|
||||
|
||||
UpdateStatsLine(TNC, STREAM);
|
||||
|
||||
|
@ -3199,7 +3212,7 @@ VOID FLReleaseTNC(struct TNCINFO * TNC)
|
|||
else
|
||||
{
|
||||
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
|
||||
|
@ -3897,27 +3910,6 @@ VOID SendXMLCommand(struct TNCINFO * TNC, char * Command, char * Value, char Par
|
|||
return;
|
||||
}
|
||||
|
||||
VOID SendXMLCommandInt(struct TNCINFO * TNC, char * Command, int Value, char ParamType)
|
||||
{
|
||||
int Len;
|
||||
char ReqBuf[512];
|
||||
char SendBuff[512];
|
||||
struct FLINFO * FL = TNC->FLInfo;
|
||||
struct ARQINFO * ARQ = TNC->ARQInfo;
|
||||
char ValueString[256] ="";
|
||||
|
||||
if (!TNC->CONNECTED || TNC->FLInfo->KISSMODE)
|
||||
return;
|
||||
|
||||
sprintf(ValueString, "<params><param><value><i4>%d</i4></value></param></params\r\n>", Value);
|
||||
|
||||
strcpy(FL->LastXML, Command);
|
||||
Len = sprintf(ReqBuf, Req, FL->LastXML, ValueString);
|
||||
Len = sprintf(SendBuff, MsgHddr, Len, ReqBuf);
|
||||
send(TNC->TCPSock, SendBuff, Len, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
VOID SendXMLPoll(struct TNCINFO * TNC)
|
||||
{
|
||||
int Len;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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>
|
145
FreeDATA.c
145
FreeDATA.c
|
@ -32,7 +32,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "bpq32.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
|
@ -347,6 +347,41 @@ loop:
|
|||
return 1;
|
||||
}
|
||||
|
||||
BOOL FreeDataReadConfigFile(int Port, int ProcLine())
|
||||
{
|
||||
char buf[256],errbuf[256];
|
||||
|
||||
Config = PortConfig[Port];
|
||||
|
||||
if (Config)
|
||||
{
|
||||
// Using config from bpq32.cfg
|
||||
|
||||
if (strlen(Config) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ptr1 = Config;
|
||||
ptr2 = strchr(ptr1, 13);
|
||||
|
||||
if (!ProcLine(buf, Port))
|
||||
{
|
||||
WritetoConsoleLocal("\n");
|
||||
WritetoConsoleLocal("Bad config record ");
|
||||
WritetoConsoleLocal(errbuf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(buf," ** Error - No Configuration info in bpq32.cfg");
|
||||
WritetoConsoleLocal(buf);
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
|
||||
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
|
||||
|
@ -651,7 +686,8 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
|
||||
if (buffptr == 0) return (0); // No buffers, so ignore
|
||||
|
||||
buffptr->Len = sprintf(&buffptr->Data[0], "No Connection to TNC\r");
|
||||
buffptr->Len = 36;
|
||||
memcpy(&buffptr->Data[0], "No Connection to TNC\r", 36);
|
||||
|
||||
C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr);
|
||||
|
||||
|
@ -740,10 +776,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
|
||||
if (_memicmp(&buff->L2DATA[0], "RADIO ", 6) == 0)
|
||||
{
|
||||
char cmd[56];
|
||||
|
||||
strcpy(cmd, &buff->L2DATA[6]);
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, cmd);
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, &buff->L2DATA[6]);
|
||||
|
||||
if (Rig_Command(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4CROSSLINK, &buff->L2DATA[0]))
|
||||
{
|
||||
|
@ -835,7 +868,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
char Message[256];
|
||||
int Len, ret;
|
||||
|
||||
Len = sprintf(Message, "%s", TXF);
|
||||
Len = sprintf(Message, TXF);
|
||||
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
|
||||
|
||||
if (buffptr)
|
||||
|
@ -939,7 +972,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
memset(STREAM->RemoteCall, 0, 10);
|
||||
strcpy(STREAM->RemoteCall, &buff->L2DATA[2]);
|
||||
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);
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
@ -1396,14 +1429,14 @@ VOID * FreeDataExtInit(EXTPORTDATA * PortEntry)
|
|||
Consoleprintf("FreeData Host %s %d", TNC->HostName, TNC->TCPPort);
|
||||
|
||||
TNC->Port = port;
|
||||
TNC->PortRecord = PortEntry;
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_FREEDATA;
|
||||
TNC->Hardware = H_FREEDATA;
|
||||
|
||||
TNC->WeStartedTNC = 1;
|
||||
|
||||
TNC->ARDOPDataBuffer = malloc(MAXRXSIZE);
|
||||
TNC->ARDOPBuffer = malloc(FREEDATABUFLEN);
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
memcpy(TNC->NodeCall, MYNODECALL, 10);
|
||||
|
@ -1849,7 +1882,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
|
|||
if (App < 32)
|
||||
{
|
||||
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
|
||||
AppName[12] = 0;
|
||||
|
||||
// if SendTandRtoRelay set and Appl is RMS change to RELAY
|
||||
|
@ -1918,7 +1951,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
|
|||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0;
|
||||
STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
|
||||
STREAM->Connected = TRUE;
|
||||
|
||||
// Send Connect ACK
|
||||
|
@ -1987,7 +2020,20 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
|
|||
{
|
||||
// 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
|
||||
|
@ -2017,7 +2063,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
|
|||
WritetoTrace(TNC, Msg, 256);
|
||||
Len -= 256;
|
||||
Msg += 256;
|
||||
STREAM->bytesRXed += 256;
|
||||
STREAM->BytesRXed += 256;
|
||||
|
||||
}
|
||||
|
||||
|
@ -2026,9 +2072,9 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char
|
|||
memcpy(buffptr->Data, Msg, Len);
|
||||
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
|
||||
WritetoTrace(TNC, Msg, Len);
|
||||
STREAM->bytesRXed += Len;
|
||||
STREAM->BytesRXed += Len;
|
||||
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);
|
||||
|
||||
return;
|
||||
|
@ -2210,7 +2256,7 @@ VOID FreeDataProcessNewConnect(struct TNCINFO * TNC, char * fromCall, char * toC
|
|||
if (App < 32)
|
||||
{
|
||||
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(struct CMDX)], 12);
|
||||
memcpy(AppName, &ApplPtr[App * sizeof(CMDX)], 12);
|
||||
AppName[12] = 0;
|
||||
|
||||
// if SendTandRtoRelay set and Appl is RMS change to RELAY
|
||||
|
@ -2281,7 +2327,7 @@ VOID FreeDataProcessNewConnect(struct TNCINFO * TNC, char * fromCall, char * toC
|
|||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0;
|
||||
STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0;
|
||||
STREAM->Connected = TRUE;
|
||||
|
||||
return;
|
||||
|
@ -2381,7 +2427,7 @@ void FlushData(struct TNCINFO * TNC)
|
|||
Info->toSendTimeout = 0;
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
@ -2404,10 +2450,10 @@ static int SendAsFile(struct TNCINFO * TNC, char * Call, char * Msg, int Len)
|
|||
Info->toSendCount += Len;
|
||||
Info->toSendTimeout = 10; // About a second
|
||||
|
||||
STREAM->bytesTXed += Len;
|
||||
STREAM->BytesTXed += Len;
|
||||
|
||||
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);
|
||||
|
||||
return Len;
|
||||
|
@ -2444,7 +2490,7 @@ static void SendCQ(struct TNCINFO * TNC)
|
|||
char Message[256];
|
||||
int Len, ret;
|
||||
|
||||
Len = sprintf(Message, "%s", CQ);
|
||||
Len = sprintf(Message, CQ);
|
||||
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
|
||||
}
|
||||
|
||||
|
@ -2459,7 +2505,7 @@ static void SendBeacon(struct TNCINFO * TNC, int Interval)
|
|||
if (Interval > 0)
|
||||
Len = sprintf(Message, Template1, Interval);
|
||||
else
|
||||
Len = sprintf(Message, "%s", Template2);
|
||||
Len = sprintf(Message, Template2);
|
||||
|
||||
ret = send(TNC->TCPDataSock, (char *)&Message, Len, 0);
|
||||
}
|
||||
|
@ -2674,7 +2720,7 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
|
|||
WritetoTrace(TNC, Line, 256);
|
||||
Len -= 256;
|
||||
Line += 256;
|
||||
STREAM->bytesRXed += 256;
|
||||
STREAM->BytesRXed += 256;
|
||||
}
|
||||
|
||||
buffptr = GetBuff();
|
||||
|
@ -2682,12 +2728,12 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
|
|||
memcpy(buffptr->Data, Line, Len);
|
||||
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
|
||||
WritetoTrace(TNC, Line, Len);
|
||||
STREAM->bytesRXed += Len;
|
||||
STREAM->BytesRXed += Len;
|
||||
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
return;
|
||||
|
@ -2766,7 +2812,7 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
|
|||
WritetoTrace(TNC, Line, 256);
|
||||
Len -= 256;
|
||||
TEXT += 256;
|
||||
STREAM->bytesRXed += 256;
|
||||
STREAM->BytesRXed += 256;
|
||||
}
|
||||
|
||||
buffptr = GetBuff();
|
||||
|
@ -2774,14 +2820,14 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This)
|
|||
memcpy(buffptr->Data, Line, Len);
|
||||
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
|
||||
WritetoTrace(TNC, Line, Len);
|
||||
STREAM->bytesRXed += Len;
|
||||
STREAM->BytesRXed += Len;
|
||||
|
||||
TEXT = rest;
|
||||
rest = strlop(TEXT, 10); // FreeData chat ues LF
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -3113,8 +3159,22 @@ void ProcessTNCJSON(struct TNCINFO * TNC, char * Msg, int Len)
|
|||
|
||||
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->Connected = FALSE; // Back to Command Mode
|
||||
STREAM->ReportDISC = TRUE; // Tell Node
|
||||
|
@ -3155,7 +3215,7 @@ void ProcessTNCJSON(struct TNCINFO * TNC, char * Msg, int Len)
|
|||
}
|
||||
}
|
||||
|
||||
else if (memcmp(ptr, "close", 5) == 0)
|
||||
else if (memcmp(ptr, "close", 12) == 0)
|
||||
{
|
||||
if (TNC->FreeDataInfo->arqstate != 4)
|
||||
{
|
||||
|
@ -3292,7 +3352,20 @@ void ProcessTNCJSON(struct TNCINFO * TNC, char * Msg, int Len)
|
|||
{
|
||||
// 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->ReportDISC = TRUE; // Tell Node
|
||||
|
@ -3650,7 +3723,7 @@ int FreeDataDisconnect(struct TNCINFO * TNC)
|
|||
|
||||
// return FreeDataSendCommand(TNC, "D");
|
||||
|
||||
Len = sprintf(Msg, "%s", Disconnect);
|
||||
Len = sprintf(Msg, Disconnect);
|
||||
|
||||
return send(TNC->TCPDataSock, Msg, Len, 0);
|
||||
}
|
||||
|
@ -3662,7 +3735,7 @@ int FreeGetData(struct TNCINFO * TNC)
|
|||
char Msg[128];
|
||||
int Len;
|
||||
|
||||
Len = sprintf(Msg, "%s", GetData);
|
||||
Len = sprintf(Msg, GetData);
|
||||
|
||||
return send(TNC->TCPDataSock, Msg, Len, 0);
|
||||
}
|
||||
|
@ -4142,7 +4215,7 @@ void buildParamString(struct TNCINFO * TNC, char * line)
|
|||
FDI->TuningRange * -1.0, FDI->TuningRange * 1.0, FDI->TXLevel);
|
||||
|
||||
if (FDI->hamlibHost)
|
||||
sprintf(&line[strlen(line)], " --rigctld_ip %s --rigctld_port %d", FDI->hamlibHost, FDI->hamlibPort);
|
||||
sprintf(line, "%s --rigctld_ip %s --rigctld_port %d", line, FDI->hamlibHost, FDI->hamlibPort);
|
||||
|
||||
if (FDI->LimitBandWidth)
|
||||
strcat(line, " --500hz");
|
||||
|
|
26
HALDriver.c
26
HALDriver.c
|
@ -28,7 +28,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#include "time.h"
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
#include "bpq32.h"
|
||||
|
@ -471,7 +471,7 @@ VOID * HALExtInit(EXTPORTDATA * PortEntry)
|
|||
int port;
|
||||
char * ptr;
|
||||
int len;
|
||||
char Msg[512];
|
||||
char Msg[80];
|
||||
#ifndef LINBPQ
|
||||
HWND x;
|
||||
#endif
|
||||
|
@ -499,15 +499,15 @@ VOID * HALExtInit(EXTPORTDATA * PortEntry)
|
|||
}
|
||||
|
||||
TNC->Port = port;
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_HAL;
|
||||
TNC->Hardware = H_HAL;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTINTERLOCK && TNC->RXRadio == 0 && TNC->TXRadio == 0)
|
||||
TNC->RXRadio = TNC->TXRadio = PortEntry->PORTCONTROL.PORTINTERLOCK;
|
||||
|
||||
PortEntry->MAXHOSTMODESESSIONS = 1; // Default
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
{
|
||||
|
@ -548,7 +548,7 @@ VOID * HALExtInit(EXTPORTDATA * PortEntry)
|
|||
TNC->WebWinX = 510;
|
||||
TNC->WebWinY = 280;
|
||||
|
||||
TNC->WEB_COMMSSTATE = zalloc(512);
|
||||
TNC->WEB_COMMSSTATE = zalloc(100);
|
||||
TNC->WEB_TNCSTATE = zalloc(100);
|
||||
strcpy(TNC->WEB_TNCSTATE, "Free");
|
||||
TNC->WEB_MODE = zalloc(100);
|
||||
|
@ -749,7 +749,7 @@ VOID HALPoll(int Port)
|
|||
|
||||
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);
|
||||
STREAM->MyCall[calllen] = 0;
|
||||
|
@ -829,7 +829,7 @@ VOID HALPoll(int Port)
|
|||
|
||||
//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;
|
||||
PMSGWITHLEN buffptr;
|
||||
|
@ -872,7 +872,7 @@ VOID HALPoll(int Port)
|
|||
ReleaseBuffer(buffptr);
|
||||
WriteLogLine(2, MsgPtr, datalen);
|
||||
|
||||
STREAM->bytesTXed += datalen;
|
||||
STREAM->BytesTXed += datalen;
|
||||
STREAM->FramesQueued--;
|
||||
|
||||
ShowTraffic(TNC);
|
||||
|
@ -1090,10 +1090,10 @@ VOID ProcessHALData(struct TNCINFO * TNC)
|
|||
STREAM->BytesAcked += Len;
|
||||
// Debugprintf("Acked %d", Len);
|
||||
|
||||
if (STREAM->BytesAcked > STREAM->bytesTXed)
|
||||
if (STREAM->BytesAcked > STREAM->BytesTXed)
|
||||
Debugprintf("Too Much Acked");
|
||||
|
||||
if ((STREAM->BPQtoPACTOR_Q == 0) && STREAM->BytesAcked >= STREAM->bytesTXed)
|
||||
if ((STREAM->BPQtoPACTOR_Q == 0) && STREAM->BytesAcked >= STREAM->BytesTXed)
|
||||
{
|
||||
// All sent
|
||||
|
||||
|
@ -1121,7 +1121,7 @@ VOID ProcessHALData(struct TNCINFO * TNC)
|
|||
|
||||
WriteLogLine(1, TNC->DataBuffer, Len);
|
||||
|
||||
STREAM->bytesRXed += Len;
|
||||
STREAM->BytesRXed += Len;
|
||||
|
||||
memcpy(buffptr->Data, TNC->DataBuffer, Len);
|
||||
|
||||
|
@ -1756,7 +1756,7 @@ BOOL HALConnected(struct TNCINFO * TNC, char * Call)
|
|||
strcpy(CallCopy, Call);
|
||||
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);
|
||||
|
||||
// Stop Scanner
|
||||
|
@ -1804,7 +1804,7 @@ BOOL HALConnected(struct TNCINFO * TNC, char * Call)
|
|||
EncodeAndSend(TNC, CTEXTMSG, CTEXTLEN);
|
||||
WriteLogLine(2, CTEXTMSG, CTEXTLEN);
|
||||
|
||||
STREAM->bytesTXed += CTEXTLEN;
|
||||
STREAM->BytesTXed += CTEXTLEN;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -30,7 +30,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
|
||||
#include "kernelresource.h"
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
#ifndef LINBPQ
|
||||
#include <commctrl.h>
|
||||
|
@ -336,8 +336,7 @@ LRESULT CALLBACK PacWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
|
|||
}
|
||||
#endif
|
||||
|
||||
BOOL CreatePactorWindow(struct TNCINFO * TNC, char * ClassName, char * WindowTitle, int RigControlRow, WNDPROC WndProc, int Width, int Height,
|
||||
VOID ForcedCloseProc(struct TNCINFO * TNC, int Stream))
|
||||
BOOL CreatePactorWindow(struct TNCINFO * TNC, char * ClassName, char * WindowTitle, int RigControlRow, WNDPROC WndProc, int Width, int Height, VOID ForcedCloseProc())
|
||||
{
|
||||
#ifdef LINBPQ
|
||||
return FALSE;
|
||||
|
@ -1603,7 +1602,7 @@ VOID ShowTraffic(struct TNCINFO * TNC)
|
|||
char Status[80];
|
||||
|
||||
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
|
||||
SetDlgItemText(TNC->hDlg, IDC_TRAFFIC, Status);
|
||||
#endif
|
||||
|
@ -1877,8 +1876,6 @@ int standardParams(struct TNCINFO * TNC, char * buf)
|
|||
TNC->WL2K = DecodeWL2KReportLine(buf);
|
||||
else if (_memicmp(buf, "SESSIONTIMELIMIT", 16) == 0)
|
||||
TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit = atoi(&buf[17]) * 60;
|
||||
else if (_memicmp(buf, "ATTACHTIMELIMIT", 15) == 0)
|
||||
TNC->AttachTimeLimit = atoi(&buf[16]) * 60;
|
||||
else if (_memicmp(buf, "BUSYHOLD", 8) == 0) // Hold Time for Busy Detect
|
||||
TNC->BusyHold = atoi(&buf[8]);
|
||||
else if (_memicmp(buf, "BUSYWAIT", 8) == 0) // Wait time before failing connect if busy
|
||||
|
|
53
HSMODEM.c
53
HSMODEM.c
|
@ -33,7 +33,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#endif
|
||||
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
|
@ -309,10 +309,47 @@ loop:
|
|||
return 1;
|
||||
}
|
||||
|
||||
BOOL HSMODEMReadConfigFile(int Port, int ProcLine())
|
||||
{
|
||||
char buf[256],errbuf[256];
|
||||
|
||||
Config = PortConfig[Port];
|
||||
|
||||
if (Config)
|
||||
{
|
||||
// Using config from bpq32.cfg
|
||||
|
||||
if (strlen(Config) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ptr1 = Config;
|
||||
ptr2 = strchr(ptr1, 13);
|
||||
|
||||
if (!ProcLine(buf, Port))
|
||||
{
|
||||
WritetoConsoleLocal("\n");
|
||||
WritetoConsoleLocal("Bad config record ");
|
||||
WritetoConsoleLocal(errbuf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(buf," ** Error - No Configuration info in bpq32.cfg");
|
||||
WritetoConsoleLocal(buf);
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
|
||||
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
|
||||
VOID WritetoTrace(struct TNCINFO * TNC, char * Msg, int Len);
|
||||
|
||||
|
||||
static time_t ltime;
|
||||
|
||||
|
||||
|
@ -552,7 +589,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
UCHAR * data = &buffptr->Data[0];
|
||||
STREAM->FramesQueued--;
|
||||
txlen = (int)buffptr->Len;
|
||||
STREAM->bytesTXed += txlen;
|
||||
STREAM->BytesTXed += txlen;
|
||||
|
||||
bytes=HSMODEMSendData(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);
|
||||
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);
|
||||
|
||||
return 1;
|
||||
|
@ -648,12 +685,8 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
|
||||
if (_memicmp(&buff->L2DATA[0], "RADIO ", 6) == 0)
|
||||
{
|
||||
char cmd[56];
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, &buff->L2DATA[6]);
|
||||
|
||||
strcpy(cmd, &buff->L2DATA[6]);
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, cmd);
|
||||
|
||||
|
||||
if (Rig_Command(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4CROSSLINK, &buff->L2DATA[0]))
|
||||
{
|
||||
}
|
||||
|
@ -1181,9 +1214,9 @@ VOID * HSMODEMExtInit(EXTPORTDATA * PortEntry)
|
|||
Consoleprintf("HSMODEM Host %s %d", TNC->HostName, TNC->TCPPort);
|
||||
|
||||
TNC->Port = port;
|
||||
TNC->PortRecord = PortEntry;
|
||||
TNC->Hardware = H_HSMODEM;
|
||||
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_HSMODEM;
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
memcpy(TNC->NodeCall, MYNODECALL, 10);
|
||||
|
|
|
@ -27,7 +27,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#pragma data_seg("_BPQDATA")
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
#include "templatedefs.c" // Inline definitions from HTLMPages
|
||||
|
||||
|
|
391
HTTPcode.c
391
HTTPcode.c
|
@ -24,7 +24,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define DllImport
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "tncinfo.h"
|
||||
|
@ -38,7 +38,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#define ZEXPORT __stdcall
|
||||
#endif
|
||||
|
||||
#include <zlib.h>
|
||||
#include "zlib.h"
|
||||
|
||||
#define CKernel
|
||||
#include "httpconnectioninfo.h"
|
||||
|
@ -70,9 +70,6 @@ char * GetStandardPage(char * FN, int * Len);
|
|||
BOOL SHA1PasswordHash(char * String, char * Hash);
|
||||
char * byte_base64_encode(char *str, int len);
|
||||
int APIProcessHTTPMessage(char * response, char * Method, char * URL, char * request, BOOL LOCAL, BOOL COOKIE);
|
||||
int RHPProcessHTTPMessage(struct ConnectionInfo * conn, char * response, char * Method, char * URL, char * request, BOOL LOCAL, BOOL COOKIE);
|
||||
unsigned char * Compressit(unsigned char * In, int Len, int * OutLen);
|
||||
int doinflate(unsigned char * source, unsigned char * dest, int Len, int destlen, int * outLen);
|
||||
|
||||
extern struct ROUTE * NEIGHBOURS;
|
||||
extern int ROUTE_LEN;
|
||||
|
@ -105,16 +102,16 @@ extern int NumberofPorts;
|
|||
|
||||
extern UCHAR ConfigDirectory[260];
|
||||
|
||||
char * strlop(char * buf, char delim);
|
||||
VOID sendandcheck(SOCKET sock, const char * Buffer, int Len);
|
||||
int CompareNode(const void *a, const void *b);
|
||||
int CompareAlias(const void *a, const void *b);
|
||||
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);
|
||||
struct PORTCONTROL * APIENTRY GetPortTableEntryFromSlot(int portslot);
|
||||
int SetupNodeMenu(char * Buff, int SYSOP);
|
||||
int StatusProc(char * Buff);
|
||||
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);
|
||||
VOID APRSProcessHTTPMessage(SOCKET sock, char * MsgPtr, BOOL LOCAL, BOOL COOKIE);
|
||||
|
||||
|
@ -145,7 +142,7 @@ char Tail[] = "</body></html>";
|
|||
char RouteHddr[] = "<h2 align=center>Routes</h2><table align=center border=2 style=font-family:monospace bgcolor=white>"
|
||||
"<tr><th>Port</th><th>Call</th><th>Quality</th><th>Node Count</th><th>Frame Count</th><th>Retries</th><th>Percent</th><th>Maxframe</th><th>Frack</th><th>Last Heard</th><th>Queued</th><th>Rem Qual</th></tr>";
|
||||
|
||||
char RouteLine[] = "<tr><td>%s%d</td><td>%s%s</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d%</td><td>%d</td><td>%d</td><td>%02d:%02d</td><td>%d</td><td>%d</td></tr>";
|
||||
char RouteLine[] = "<tr><td>%s%d</td><td>%s%c</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d%</td><td>%d</td><td>%d</td><td>%02d:%02d</td><td>%d</td><td>%d</td></tr>";
|
||||
char xNodeHddr[] = "<align=center><form align=center method=get action=/Node/Nodes.html>"
|
||||
"<table align=center bgcolor=white>"
|
||||
"<tr><td><input type=submit class='btn' name=a value=\"Nodes Sorted by Alias\"></td><td>"
|
||||
|
@ -603,8 +600,7 @@ VOID HTTPTimer()
|
|||
|
||||
for (n = Last;;)
|
||||
{
|
||||
if ((strlen(Session->ScreenLines[n]) + strlen(_REPLYBUFFER)) < 99999)
|
||||
strcat(_REPLYBUFFER, Session->ScreenLines[n]);
|
||||
strcat(_REPLYBUFFER, Session->ScreenLines[n]);
|
||||
|
||||
if (n == 99)
|
||||
n = -1;
|
||||
|
@ -684,15 +680,13 @@ struct HTTPConnectionInfo * FindSession(char * Key)
|
|||
|
||||
void ProcessTermInput(SOCKET sock, char * MsgPtr, int MsgLen, char * Key)
|
||||
{
|
||||
char _REPLYBUFFER[2048];
|
||||
char _REPLYBUFFER[1024];
|
||||
int ReplyLen;
|
||||
char Header[256];
|
||||
int HeaderLen;
|
||||
int State;
|
||||
struct HTTPConnectionInfo * Session = FindSession(Key);
|
||||
int Stream;
|
||||
int maxlen = 1000;
|
||||
|
||||
|
||||
if (Session == NULL)
|
||||
{
|
||||
|
@ -707,24 +701,12 @@ void ProcessTermInput(SOCKET sock, char * MsgPtr, int MsgLen, char * Key)
|
|||
char c;
|
||||
UCHAR hex;
|
||||
|
||||
int msglen = end - input;
|
||||
|
||||
struct TNCINFO * TNC = Session->TNC;
|
||||
struct TCPINFO * TCP = 0;
|
||||
|
||||
if (TNC)
|
||||
TCP = TNC->TCPInfo;
|
||||
|
||||
if (TCP && TCP->WebTermCSS)
|
||||
maxlen -= strlen(TCP->WebTermCSS);
|
||||
|
||||
if (MsgLen > maxlen)
|
||||
{
|
||||
Session->KillTimer = 99999; // close session
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (TCP && TCP->WebTermCSS)
|
||||
ReplyLen = sprintf(_REPLYBUFFER, InputLine, Key, TCP->WebTermCSS);
|
||||
else
|
||||
|
@ -1169,9 +1151,6 @@ int SendMessageFile(SOCKET sock, char * FN, BOOL OnlyifExists, int allowDeflate)
|
|||
|
||||
if (_stricmp(ptr, "js") == 0)
|
||||
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)
|
||||
strcpy(Type, "Content-Type: application/pdf\r\n");
|
||||
|
@ -1186,8 +1165,7 @@ int SendMessageFile(SOCKET sock, char * FN, BOOL OnlyifExists, int allowDeflate)
|
|||
Compressed = MsgBytes;
|
||||
}
|
||||
|
||||
if (_stricmp(ptr, "jpg") == 0 || _stricmp(ptr, "jpeg") == 0 || _stricmp(ptr, "png") == 0 ||
|
||||
_stricmp(ptr, "gif") == 0 || _stricmp(ptr, "bmp") == 0 || _stricmp(ptr, "ico") == 0)
|
||||
if (_stricmp(ptr, "jpg") == 0 || _stricmp(ptr, "jpeg") == 0 || _stricmp(ptr, "png") == 0 || _stricmp(ptr, "gif") == 0 || _stricmp(ptr, "ico") == 0)
|
||||
strcpy(Type, "Content-Type: image\r\n");
|
||||
|
||||
HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n"
|
||||
|
@ -1630,23 +1608,23 @@ int InnerProcessHTTPMessage(struct ConnectionInfo * conn)
|
|||
char * WebSock = 0;
|
||||
|
||||
char PortsHddr[] = "<h2 align=center>Ports</h2><table align=center border=2 bgcolor=white>"
|
||||
"<tr><th>Port</th><th>Driver</th><th>ID</th><th>Beacons</th><th>Driver Window</th><th>Stats Graph</th></tr>";
|
||||
"<tr><th>Port</th><th>Driver</th><th>ID</th><th>Beacons</th><th>Driver Window</th></tr>";
|
||||
|
||||
// char PortLine[] = "<tr><td>%d</td><td><a href=PortStats?%d&%s> %s</a></td><td>%s</td></tr>";
|
||||
char PortLine[] = "<tr><td>%d</td><td><a href=PortStats?%d&%s> %s</a></td><td>%s</td></tr>";
|
||||
|
||||
char PortLineWithBeacon[] = "<tr><td>%d</td><td><a href=PortStats?%d&%s> %s</a></td><td>%s</td>"
|
||||
"<td><a href=PortBeacons?%d> Beacons</a><td> </td></td><td>%s</td></tr>\r\n";
|
||||
"<td><a href=PortBeacons?%d> Beacons</a><td> </td></td></tr>\r\n";
|
||||
|
||||
char SessionPortLine[] = "<tr><td>%d</td><td>%s</td><td>%s</td><td> </td>"
|
||||
"<td> </td><td>%s</td></tr>\r\n";
|
||||
"<td> </td></tr>\r\n";
|
||||
|
||||
char PortLineWithDriver[] = "<tr><td>%d</td><td>%s</td><td>%s</td><td> </td>"
|
||||
"<td><a href=\"javascript:dev_win('/Node/Port?%d',%d,%d,%d,%d);\">Driver Window</a></td><td>%s</td></tr>\r\n";
|
||||
"<td><a href=\"javascript:dev_win('/Node/Port?%d',%d,%d,%d,%d);\">Driver Window</a></td></tr>\r\n";
|
||||
|
||||
|
||||
char PortLineWithBeaconAndDriver[] = "<tr><td>%d</td><td>%s</td><td>%s</td>"
|
||||
"<td><a href=PortBeacons?%d> Beacons</a></td>"
|
||||
"<td><a href=\"javascript:dev_win('/Node/Port?%d',%d,%d,%d,%d);\">Driver Window</a></td><td>%s</td></tr>\r\n";
|
||||
"<td><a href=\"javascript:dev_win('/Node/Port?%d',%d,%d,%d,%d);\">Driver Window</a></td></tr>\r\n";
|
||||
|
||||
char RigControlLine[] = "<tr><td>%d</td><td>%s</td><td>%s</td><td> </td>"
|
||||
"<td><a href=\"javascript:dev_win('/Node/RigControl.html',%d,%d,%d,%d);\">Rig Control</a></td></tr>\r\n";
|
||||
|
@ -1800,95 +1778,35 @@ int InnerProcessHTTPMessage(struct ConnectionInfo * conn)
|
|||
if (_memicmp(Context, "/api/", 5) == 0 || _stricmp(Context, "/api") == 0)
|
||||
{
|
||||
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)
|
||||
ReplyLen = APIProcessHTTPMessage(_REPLYBUFFER, Method, Context, MsgPtr, LOCAL, COOKIE);
|
||||
|
||||
if (memcmp(_REPLYBUFFER, "HTTP", 4) == 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);
|
||||
// Full Message - just send it
|
||||
|
||||
if (ReplyLen) // Error message
|
||||
goto Returnit;
|
||||
}
|
||||
sendandcheck(sock, _REPLYBUFFER, ReplyLen);
|
||||
|
||||
memcpy(Context, "/mail/api/v1/", 13);
|
||||
goto doHeader;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (allowDeflate)
|
||||
Compressed = Compressit(_REPLYBUFFER, ReplyLen, &ReplyLen);
|
||||
else
|
||||
{
|
||||
ReplyLen = APIProcessHTTPMessage(_REPLYBUFFER, Method, Context, MsgPtr, LOCAL, COOKIE);
|
||||
|
||||
if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0)
|
||||
{
|
||||
// Full Message - just send it
|
||||
Compressed = _REPLYBUFFER;
|
||||
|
||||
sendandcheck(sock, _REPLYBUFFER, ReplyLen);
|
||||
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);
|
||||
|
||||
return 0;
|
||||
}
|
||||
sendandcheck(sock, Header, HeaderLen);
|
||||
sendandcheck(sock, Compressed, ReplyLen);
|
||||
|
||||
if (allowDeflate)
|
||||
Compressed = Compressit(_REPLYBUFFER, ReplyLen, &ReplyLen);
|
||||
else
|
||||
Compressed = _REPLYBUFFER;
|
||||
if (allowDeflate)
|
||||
free (Compressed);
|
||||
|
||||
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"
|
||||
"Access-Control-Allow-Origin: *\r\n"
|
||||
"%s\r\n", ReplyLen, Encoding);
|
||||
|
||||
sendandcheck(sock, Header, HeaderLen);
|
||||
sendandcheck(sock, Compressed, ReplyLen);
|
||||
|
||||
if (allowDeflate)
|
||||
free (Compressed);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (_memicmp(Context, "/rhp/", 5) == 0 || _stricmp(Context, "/rhp") == 0)
|
||||
{
|
||||
{
|
||||
ReplyLen = RHPProcessHTTPMessage(conn, _REPLYBUFFER, Method, Context, MsgPtr, LOCAL, COOKIE);
|
||||
|
||||
if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0)
|
||||
{
|
||||
// Full Message - just send it
|
||||
|
||||
sendandcheck(sock, _REPLYBUFFER, ReplyLen);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (allowDeflate)
|
||||
Compressed = Compressit(_REPLYBUFFER, ReplyLen, &ReplyLen);
|
||||
else
|
||||
Compressed = _REPLYBUFFER;
|
||||
|
||||
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"
|
||||
"Access-Control-Allow-Origin: *\r\n"
|
||||
"%s\r\n", ReplyLen, Encoding);
|
||||
|
||||
sendandcheck(sock, Header, HeaderLen);
|
||||
sendandcheck(sock, Compressed, ReplyLen);
|
||||
|
||||
if (allowDeflate)
|
||||
free (Compressed);
|
||||
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2162,7 +2080,11 @@ Returnit:
|
|||
Compressed = Reply;
|
||||
|
||||
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
|
||||
HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nContent-Length: %d\r\nContent-Type: text/html\r\n%s\r\n", ReplyLen, Encoding);
|
||||
|
||||
|
@ -2185,82 +2107,15 @@ doHeader:
|
|||
char _REPLYBUFFER[250000];
|
||||
struct HTTPConnectionInfo Dummy = {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;
|
||||
|
||||
if (Session == 0)
|
||||
Session = &Dummy;
|
||||
|
||||
if (LOCAL)
|
||||
Session->TNC = (void *)1; // TNC only used for Web Terminal Sessions
|
||||
else
|
||||
Session->TNC = (void *)0;
|
||||
Session->TNC = (void *)LOCAL; // TNC only used for Web Terminal Sessions
|
||||
|
||||
ProcessMailHTTPMessage(Session, Method, Context, MsgPtr, _REPLYBUFFER, &ReplyLen, MsgLen, token);
|
||||
|
||||
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;
|
||||
}
|
||||
ProcessMailHTTPMessage(Session, Method, Context, MsgPtr, _REPLYBUFFER, &ReplyLen, MsgLen);
|
||||
|
||||
if (memcmp(_REPLYBUFFER, "HTTP", 4) == 0)
|
||||
{
|
||||
|
@ -2286,16 +2141,11 @@ doHeader:
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (Context && _memicmp(Context, "/mail/api/", 10) != 0)
|
||||
{
|
||||
|
||||
// Add tail
|
||||
|
||||
strcpy(&_REPLYBUFFER[ReplyLen], Tail);
|
||||
ReplyLen += strlen(Tail);
|
||||
|
||||
}
|
||||
|
||||
// compress if allowed
|
||||
|
||||
if (allowDeflate)
|
||||
|
@ -2385,8 +2235,6 @@ doHeader:
|
|||
|
||||
// Pass to MailChat if active
|
||||
|
||||
NodeURL = Context;
|
||||
|
||||
if ((_memicmp(Context, "/MAIL/", 6) == 0) || (_memicmp(Context, "/WebMail", 8) == 0))
|
||||
{
|
||||
// If for Mail, Pass to Mail Server via Named Pipe
|
||||
|
@ -2414,10 +2262,7 @@ doHeader:
|
|||
if (Session == 0)
|
||||
Session = &Dummy;
|
||||
|
||||
if (LOCAL)
|
||||
Session->TNC = (struct TNCINFO *)(uintptr_t)1; // TNC is only used on Web Terminal Sessions so can reuse as LOCAL flag
|
||||
else
|
||||
Session->TNC = 0;
|
||||
Session->TNC = LOCAL; // TNC is only used on Web Terminal Sessions so can reuse as LOCAL flag
|
||||
|
||||
WriteFile(hPipe, Session, sizeof (struct HTTPConnectionInfo), &InputLen, NULL);
|
||||
WriteFile(hPipe, MsgPtr, MsgLen, &InputLen, NULL);
|
||||
|
@ -2847,53 +2692,6 @@ doHeader:
|
|||
return 0;
|
||||
}
|
||||
|
||||
else if (_memicmp(NodeURL, "/portstats.txt", 15) == 0)
|
||||
{
|
||||
char * Compressed;
|
||||
char * ptr;
|
||||
int port;
|
||||
struct PORTCONTROL * PORT;
|
||||
|
||||
ptr = &NodeURL[15];
|
||||
|
||||
port = atoi(ptr);
|
||||
|
||||
PORT = GetPortTableEntryFromPortNum(port);
|
||||
|
||||
ReplyLen = 0;
|
||||
|
||||
if (PORT && PORT->TX)
|
||||
{
|
||||
// We send the last 24 hours worth of data. Buffer is cyclic so oldest byte is at StatsPointer
|
||||
|
||||
int first = PORT->StatsPointer;
|
||||
int firstlen = 1440 - first;
|
||||
|
||||
memcpy(&_REPLYBUFFER[0], &PORT->TX[first], firstlen);
|
||||
memcpy(&_REPLYBUFFER[firstlen], PORT->TX, first);
|
||||
|
||||
memcpy(&_REPLYBUFFER[1440], &PORT->BUSY[first], firstlen);
|
||||
memcpy(&_REPLYBUFFER[1440 + firstlen], PORT->BUSY, first);
|
||||
|
||||
ReplyLen = 2880;
|
||||
}
|
||||
|
||||
if (allowDeflate)
|
||||
Compressed = Compressit(_REPLYBUFFER, ReplyLen, &ReplyLen);
|
||||
else
|
||||
Compressed = _REPLYBUFFER;
|
||||
|
||||
HeaderLen = sprintf(Header, "HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nContent-Length: %d\r\nContent-Type: Text\r\n%s\r\n", ReplyLen, Encoding);
|
||||
sendandcheck(sock, Header, HeaderLen);
|
||||
sendandcheck(sock, Compressed, ReplyLen);
|
||||
|
||||
if (allowDeflate)
|
||||
free (Compressed);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
else if (_memicmp(NodeURL, "/Icon", 5) == 0 && _memicmp(&NodeURL[10], ".png", 4) == 0)
|
||||
{
|
||||
// APRS internal Icon
|
||||
|
@ -3067,7 +2865,7 @@ doHeader:
|
|||
" {"
|
||||
" // The browser doesn't support WebSocket\r\n"
|
||||
" const div = document.getElementById('div');\r\n"
|
||||
" div.innerHTML = 'WebSocket not supported by your Browser - RigControl Page not availible'\r\n"
|
||||
" div.innerHTML = 'WebSocket not supported by your Browser - RigControl Page not availble'\r\n"
|
||||
" }"
|
||||
"}"
|
||||
"function PTT(p)"
|
||||
|
@ -3422,7 +3220,6 @@ doHeader:
|
|||
|
||||
int count;
|
||||
char DLL[20];
|
||||
char StatsURL[64];
|
||||
|
||||
ReplyLen += sprintf(&_REPLYBUFFER[ReplyLen], "%s", PortsHddr);
|
||||
|
||||
|
@ -3431,13 +3228,6 @@ doHeader:
|
|||
Port = GetPortTableEntryFromSlot(count);
|
||||
ExtPort = (struct _EXTPORTDATA *)Port;
|
||||
|
||||
// see if has a stats page
|
||||
|
||||
if (Port->AVACTIVE)
|
||||
sprintf(StatsURL, "<a href=/PortStats.html?%d> Stats Graph</a>", Port->PORTNUMBER);
|
||||
else
|
||||
StatsURL[0] = 0;
|
||||
|
||||
if (Port->PORTTYPE == 0x10)
|
||||
{
|
||||
strcpy(DLL, ExtPort->PORT_DLL_NAME);
|
||||
|
@ -3460,20 +3250,20 @@ doHeader:
|
|||
{
|
||||
if (Port->UICAPABLE)
|
||||
ReplyLen += sprintf(&_REPLYBUFFER[ReplyLen], PortLineWithBeaconAndDriver, Port->PORTNUMBER, DLL,
|
||||
Port->PORTDESCRIPTION, Port->PORTNUMBER, Port->PORTNUMBER, Port->TNC->WebWinX, Port->TNC->WebWinY, 200, 200, StatsURL);
|
||||
Port->PORTDESCRIPTION, Port->PORTNUMBER, Port->PORTNUMBER, Port->TNC->WebWinX, Port->TNC->WebWinY, 200, 200);
|
||||
else
|
||||
ReplyLen += sprintf(&_REPLYBUFFER[ReplyLen], PortLineWithDriver, Port->PORTNUMBER, DLL,
|
||||
Port->PORTDESCRIPTION, Port->PORTNUMBER, Port->TNC->WebWinX, Port->TNC->WebWinY, 200, 200, StatsURL);
|
||||
Port->PORTDESCRIPTION, Port->PORTNUMBER, Port->TNC->WebWinX, Port->TNC->WebWinY, 200, 200);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Port->PORTTYPE == 16 && Port->PROTOCOL == 10 && Port->UICAPABLE == 0) // EXTERNAL, Pactor/WINMO
|
||||
ReplyLen += sprintf(&_REPLYBUFFER[ReplyLen], SessionPortLine, Port->PORTNUMBER, DLL,
|
||||
Port->PORTDESCRIPTION, Port->PORTNUMBER, StatsURL);
|
||||
Port->PORTDESCRIPTION, Port->PORTNUMBER);
|
||||
else
|
||||
ReplyLen += sprintf(&_REPLYBUFFER[ReplyLen], PortLineWithBeacon, Port->PORTNUMBER, Port->PORTNUMBER,
|
||||
DLL, DLL, Port->PORTDESCRIPTION, Port->PORTNUMBER, StatsURL);
|
||||
DLL, DLL, Port->PORTDESCRIPTION, Port->PORTNUMBER);
|
||||
}
|
||||
|
||||
if (RigActive)
|
||||
|
@ -3801,7 +3591,7 @@ doHeader:
|
|||
int MaxRoutes = MAXNEIGHBOURS;
|
||||
int count;
|
||||
char Normcall[10];
|
||||
char locked[4] = " ";
|
||||
char locked;
|
||||
int NodeCount;
|
||||
int Percent = 0;
|
||||
int Iframes, Retries;
|
||||
|
@ -3817,14 +3607,10 @@ doHeader:
|
|||
int len = ConvFromAX25(Routes->NEIGHBOUR_CALL, Normcall);
|
||||
Normcall[len]=0;
|
||||
|
||||
if (Routes->NEIGHBOUR_FLAG == LOCKEDBYCONFIG)
|
||||
strcpy(locked, "!");
|
||||
else if (Routes->NEIGHBOUR_FLAG == LOCKEDBYSYSOP)
|
||||
strcpy(locked, "!!");
|
||||
else if (Routes->NEIGHBOUR_FLAG == LOCKEDBYSYSOP + LOCKEDBYCONFIG)
|
||||
strcpy(locked, "!!!");
|
||||
if ((Routes->NEIGHBOUR_FLAG & 1) == 1)
|
||||
locked = '!';
|
||||
else
|
||||
strcpy(locked, " ");
|
||||
locked = ' ';
|
||||
|
||||
NodeCount = COUNTNODES(Routes);
|
||||
|
||||
|
@ -4327,78 +4113,6 @@ int ProcessNodeSignon(SOCKET sock, struct TCPINFO * TCP, char * MsgPtr, char * A
|
|||
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;
|
||||
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[strlen(MsgPtr)], "?%s&%s", 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -5182,3 +4896,6 @@ void SHA1PadMessage(SHA1Context *context)
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
42
HanksRT.c
42
HanksRT.c
|
@ -27,7 +27,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
|
||||
#ifdef LINBPQ
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#endif
|
||||
|
||||
#include "bpqchat.h"
|
||||
|
@ -1186,7 +1186,7 @@ static BOOL CheckforDups(ChatCIRCUIT * circuit, char * Call, char * Msg)
|
|||
// Duplicate, so discard, but save time
|
||||
|
||||
DupInfo[i].DupTime = Now;
|
||||
Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s suppressed", Call, Msg);
|
||||
Logprintf(LOG_CHAT, circuit, '?', "Duplicate Message From %s %s supressed", Call, Msg);
|
||||
|
||||
return TRUE; // Duplicate
|
||||
}
|
||||
|
@ -1860,7 +1860,7 @@ static void cn_dec(ChatCIRCUIT *circuit, CHATNODE *node)
|
|||
__try
|
||||
{
|
||||
#endif
|
||||
len += sprintf(&line[len], " %p %s", cn->node, cn->node->alias);
|
||||
len = sprintf(line, "%s %p %s", line, cn->node, cn->node->alias);
|
||||
if (len > 80)
|
||||
{
|
||||
Debugprintf("%s", line);
|
||||
|
@ -2821,7 +2821,7 @@ static void show_circuits(ChatCIRCUIT *conn, char Flag)
|
|||
CHATNODE *node;
|
||||
LINK *link;
|
||||
char line[1000];
|
||||
int len = 0;
|
||||
int len;
|
||||
CN *cn;
|
||||
|
||||
int i = 0;
|
||||
|
@ -2836,16 +2836,16 @@ static void show_circuits(ChatCIRCUIT *conn, char Flag)
|
|||
nprintf(conn, "%d Node(s)\r", i);
|
||||
|
||||
if (Flag == 'c')
|
||||
len = sprintf(line, "Here %-6.6s <-", OurNode);
|
||||
sprintf(line, "Here %-6.6s <-", OurNode);
|
||||
else
|
||||
len = sprintf(line, "Here %-6.6s <-", OurAlias);
|
||||
sprintf(line, "Here %-6.6s <-", OurAlias);
|
||||
|
||||
for (node = node_hd; node; node = node->next) if (node->refcnt)
|
||||
{
|
||||
if (Flag == 'c')
|
||||
len += sprintf(&line[len], " %s", node->call);
|
||||
len = sprintf(line, "%s %s", line, node->call);
|
||||
else
|
||||
len += sprintf(&line[len], " %s", node->alias);
|
||||
len = sprintf(line, "%s %s", line, node->alias);
|
||||
if (len > 80)
|
||||
{
|
||||
nprintf(conn, "%s\r", line);
|
||||
|
@ -2873,9 +2873,9 @@ static void show_circuits(ChatCIRCUIT *conn, char Flag)
|
|||
__try
|
||||
{
|
||||
if (Flag == 'c')
|
||||
len += sprintf(&line[len], " %s", cn->node->call);
|
||||
len = sprintf(line, "%s %s", line, cn->node->call);
|
||||
else
|
||||
len += sprintf(&line[len], " %s", cn->node->alias);
|
||||
len = sprintf(line, "%s %s", line, cn->node->alias);
|
||||
if (len > 80)
|
||||
{
|
||||
nprintf(conn, "%s\r", line);
|
||||
|
@ -2883,23 +2883,23 @@ static void show_circuits(ChatCIRCUIT *conn, char Flag)
|
|||
}
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{len += sprintf(&line[len], " *PE* Corrupt Rec %x %x", cn, cn->node);}
|
||||
{len = sprintf(line, "%s *PE* Corrupt Rec %x %x", line, cn, cn->node);}
|
||||
}
|
||||
else
|
||||
len = sprintf(&line[len], " Corrupt Rec %x %x ", cn, cn->node);
|
||||
len = sprintf(line, "%s Corrupt Rec %x %x ", line, cn, cn->node);
|
||||
}
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{len += sprintf(&line[len], " *PE* Corrupt Rec %x %x ", cn, cn->node);}
|
||||
{len = sprintf(line, "%s *PE* Corrupt Rec %x %x ", line, cn, cn->node);}
|
||||
#else
|
||||
for (cn = circuit->hnode; cn; cn = cn->next)
|
||||
{
|
||||
if (cn->node && cn->node->alias)
|
||||
{
|
||||
if (Flag == 'c')
|
||||
len += sprintf(&line[len], " %s", cn->node->call);
|
||||
len = sprintf(line, "%s %s", line, cn->node->call);
|
||||
else
|
||||
len += sprintf(&line[len], " %s", cn->node->alias);
|
||||
len = sprintf(line, "%s %s", line, cn->node->alias);
|
||||
if (len > 80)
|
||||
{
|
||||
nprintf(conn, "%s\r", line);
|
||||
|
@ -2907,7 +2907,7 @@ static void show_circuits(ChatCIRCUIT *conn, char Flag)
|
|||
}
|
||||
}
|
||||
else
|
||||
len += sprintf(&line[len], " Corrupt Rec %p %p ", cn, cn->node);
|
||||
len = sprintf(line, "%s Corrupt Rec %p %p ", line, cn, cn->node);
|
||||
}
|
||||
#endif
|
||||
nprintf(conn, "%s\r", line);
|
||||
|
@ -3682,7 +3682,7 @@ VOID SendChatLinkStatus()
|
|||
}
|
||||
}
|
||||
|
||||
len += sprintf(&Msg[len], "%s %c ", link->call, '0' + link->flags);
|
||||
len = sprintf(Msg, "%s%s %c ", Msg, link->call, '0' + link->flags);
|
||||
|
||||
if (len > 240)
|
||||
break;
|
||||
|
@ -4178,10 +4178,10 @@ BOOL GetChatConfig(char * ConfigName)
|
|||
MaxChatStreams = GetIntValue(group, "MaxStreams");
|
||||
reportChatEvents = GetIntValue(group, "reportChatEvents");
|
||||
chatPaclen = GetIntValue(group, "chatPaclen");
|
||||
GetStringValue(group, "OtherChatNodes", OtherNodesList, 1000);
|
||||
GetStringValue(group, "ChatWelcomeMsg", ChatWelcomeMsg, 1000);
|
||||
GetStringValue(group, "MapPosition", Position, 81);
|
||||
GetStringValue(group, "MapPopup", PopupText, 260);
|
||||
GetStringValue(group, "OtherChatNodes", OtherNodesList);
|
||||
GetStringValue(group, "ChatWelcomeMsg", ChatWelcomeMsg);
|
||||
GetStringValue(group, "MapPosition", Position);
|
||||
GetStringValue(group, "MapPopup", PopupText);
|
||||
PopupMode = GetIntValue(group, "PopupMode");
|
||||
|
||||
if (chatPaclen == 0)
|
||||
|
|
|
@ -21,11 +21,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
//
|
||||
// Housekeeping Module
|
||||
|
||||
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
|
||||
|
||||
#include "bpqmail.h"
|
||||
|
||||
char * APIENTRY GetBPQDirectory();
|
||||
|
@ -348,12 +343,12 @@ VOID ExpireMessages()
|
|||
|
||||
Killed = 0;
|
||||
|
||||
PRLimit = now - (time_t)PR*86400;
|
||||
PURLimit = now -(time_t)PUR*86400;
|
||||
PFLimit = now - (time_t)PF*86400;
|
||||
PNFLimit = now - (time_t)PNF*86400;
|
||||
BFLimit = now - (time_t)BF*86400;
|
||||
BNFLimit = now -(time_t) BNF*86400;
|
||||
PRLimit = now - PR*86400;
|
||||
PURLimit = now - PUR*86400;
|
||||
PFLimit = now - PF*86400;
|
||||
PNFLimit = now - PNF*86400;
|
||||
BFLimit = now - BF*86400;
|
||||
BNFLimit = now - BNF*86400;
|
||||
|
||||
if (NTSU == 0)
|
||||
{
|
||||
|
@ -396,7 +391,7 @@ VOID ExpireMessages()
|
|||
if (Msg->datecreated < PURLimit)
|
||||
{
|
||||
if (SendNonDeliveryMsgs)
|
||||
SendNonDeliveryMessage(Msg, TRUE, (int)PUR);
|
||||
SendNonDeliveryMessage(Msg, TRUE, PUR);
|
||||
|
||||
KillMsg(Msg);
|
||||
}
|
||||
|
@ -406,7 +401,7 @@ VOID ExpireMessages()
|
|||
if (Msg->datecreated < PNFLimit)
|
||||
{
|
||||
if (SendNonDeliveryMsgs)
|
||||
SendNonDeliveryMessage(Msg, FALSE, (int)PNF);
|
||||
SendNonDeliveryMessage(Msg, FALSE, PNF);
|
||||
|
||||
KillMsg(Msg);
|
||||
}
|
||||
|
|
23
IPCode.c
23
IPCode.c
|
@ -81,7 +81,7 @@ TODo ?Multiple Adapters
|
|||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
#include "ipcode.h"
|
||||
|
||||
|
@ -95,13 +95,9 @@ TODo ?Multiple Adapters
|
|||
#pragma comment(lib, "IPHLPAPI.lib")
|
||||
#endif
|
||||
|
||||
#include <pcap.h>
|
||||
#include "pcap.h"
|
||||
|
||||
#ifdef WIN32
|
||||
int pcap_sendpacket(pcap_t *p, u_char *buf, int size);
|
||||
#else
|
||||
PCAP_API int pcap_sendpacket(pcap_t *, const u_char *, int);
|
||||
#endif
|
||||
|
||||
#ifndef LINBPQ
|
||||
#include "kernelresource.h"
|
||||
|
@ -4735,7 +4731,7 @@ void OpenTAP()
|
|||
extern struct DATAMESSAGE * REPLYBUFFER;
|
||||
char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...);
|
||||
|
||||
VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD)
|
||||
VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, CMDX * CMD)
|
||||
{
|
||||
// Send ICMP Echo Request
|
||||
|
||||
|
@ -4793,7 +4789,7 @@ VOID PING(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMD
|
|||
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
|
||||
|
||||
|
@ -4888,7 +4884,7 @@ VOID SHOWARP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct
|
|||
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
|
||||
|
||||
|
@ -4947,7 +4943,7 @@ int CountBits(uint32_t in)
|
|||
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
|
||||
|
||||
|
@ -5338,7 +5334,7 @@ int ProcessSNMPPayload(UCHAR * Msg, int Len, UCHAR * Reply, int * OffPtr)
|
|||
// Should be nothing left
|
||||
}
|
||||
|
||||
if (RequestType == 160)
|
||||
if (RequestType = 160)
|
||||
{
|
||||
int Offset = 255;
|
||||
int PDULen = 0;
|
||||
|
@ -5413,8 +5409,11 @@ VOID ProcessSNMPMessage(PIPMSG IPptr)
|
|||
int Len;
|
||||
PUDPMSG UDPptr = (PUDPMSG)&IPptr->Data;
|
||||
UCHAR * Msg;
|
||||
int Type;
|
||||
int Length, ComLen;
|
||||
int IntVal;
|
||||
UCHAR Reply[256];
|
||||
int SendLen;
|
||||
int PDULen, SendLen;
|
||||
int Offset = 0;
|
||||
|
||||
Len = ntohs(IPptr->IPLENGTH);
|
||||
|
|
28
KAMPactor.c
28
KAMPactor.c
|
@ -53,7 +53,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#include <stdlib.h>
|
||||
#include "time.h"
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
#include "bpq32.h"
|
||||
|
@ -567,15 +567,15 @@ void * KAMExtInit(EXTPORTDATA * PortEntry)
|
|||
return ExtProc;
|
||||
}
|
||||
TNC->Port = port;
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_KAM;
|
||||
TNC->Hardware = H_KAM;
|
||||
|
||||
if (TNC->BusyWait == 0)
|
||||
TNC->BusyWait = 10;
|
||||
|
||||
PortEntry->MAXHOSTMODESESSIONS = 11; // Default
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
memcpy(TNC->NodeCall, MYNODECALL, 10);
|
||||
|
@ -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
|
||||
|
||||
if (TNC->Streams[0].bytesTXed - TNC->Streams[0].BytesAcked > 200)
|
||||
if (TNC->Streams[0].BytesTXed - TNC->Streams[0].BytesAcked > 200)
|
||||
continue;
|
||||
|
||||
// Dont send if IRS State
|
||||
|
@ -1132,7 +1132,7 @@ VOID KAMPoll(int Port)
|
|||
}
|
||||
|
||||
Next = 0;
|
||||
STREAM->bytesTXed += datalen;
|
||||
STREAM->BytesTXed += datalen;
|
||||
|
||||
if (Stream == 0)
|
||||
{
|
||||
|
@ -1157,7 +1157,7 @@ VOID KAMPoll(int Port)
|
|||
if (Stream == 0)
|
||||
{
|
||||
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);
|
||||
|
||||
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 (TNC->Streams[0].bytesTXed)
|
||||
if (TNC->Streams[0].BytesTXed)
|
||||
TNC->Streams[0].BytesAcked += Len - 3; // We get an ack before the first send
|
||||
|
||||
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);
|
||||
|
||||
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;
|
||||
}
|
||||
return;
|
||||
|
@ -1555,7 +1555,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
|
|||
Len-=3; // Remove Header
|
||||
|
||||
buffptr->Len = Len; // Length
|
||||
STREAM->bytesRXed += Len;
|
||||
STREAM->BytesRXed += Len;
|
||||
memcpy(buffptr->Data, Buffer, Len);
|
||||
|
||||
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
|
||||
|
@ -1563,7 +1563,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
|
|||
if (Stream == 0)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -1762,7 +1762,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
|
|||
Buffer[Len-4] = 0;
|
||||
}
|
||||
|
||||
STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = 0;
|
||||
STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = 0;
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
|
||||
if (Stream == 0)
|
||||
|
@ -1776,7 +1776,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
|
|||
Rig_Command( (TRANSPORTENTRY *) -1, Msg);
|
||||
|
||||
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);
|
||||
}
|
||||
|
@ -1874,7 +1874,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len)
|
|||
memcpy(&CTBuff[3], &CTEXTMSG[Next], Len);
|
||||
EncodeAndSend(TNC, CTBuff, Len + 3);
|
||||
EncodeAndSend(TNC, "E", 1); // Changeover when all sent
|
||||
TNC->Streams[0].bytesTXed += CTEXTLEN;
|
||||
TNC->Streams[0].BytesTXed += CTEXTLEN;
|
||||
}
|
||||
return;
|
||||
|
||||
|
|
132
KISSHF.c
132
KISSHF.c
|
@ -27,7 +27,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
|
||||
|
||||
extern int (WINAPI FAR *GetModuleFileNameExPtr)();
|
||||
|
@ -50,8 +50,8 @@ int DoScanLine(struct TNCINFO * TNC, char * Buff, int Len);
|
|||
VOID SendInitScript(struct TNCINFO * TNC);
|
||||
int KISSHFGetLine(char * buf);
|
||||
int ProcessEscape(UCHAR * TXMsg);
|
||||
VOID KISSHFProcessReceivedPacket(struct TNCINFO * TNC, int Channel);
|
||||
static int KissEncode(struct TNCINFO * TNC, UCHAR * inbuff, UCHAR * outbuff, int len, int Channel);
|
||||
VOID KISSHFProcessReceivedPacket(struct TNCINFO * TNC);
|
||||
static int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len);
|
||||
int ConnecttoKISS(int port);
|
||||
TRANSPORTENTRY * SetupNewSession(TRANSPORTENTRY * Session, char * Bufferptr);
|
||||
BOOL DecodeCallString(char * Calls, BOOL * Stay, BOOL * Spy, UCHAR * AXCalls);
|
||||
|
@ -265,7 +265,6 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
struct TNCINFO * TNC = TNCInfo[port];
|
||||
struct STREAMINFO * STREAM = &TNC->Streams[0];
|
||||
struct ScanEntry * Scan;
|
||||
int Channel = ((TNC->PortRecord->PORTCONTROL.CHANNELNUM - 1) & 15) << 4;
|
||||
|
||||
if (TNC == NULL)
|
||||
return 0; // Port not defined
|
||||
|
@ -350,7 +349,6 @@ ok:
|
|||
|
||||
// See if any frames for this port
|
||||
|
||||
|
||||
STREAM = &TNC->Streams[0];
|
||||
|
||||
if (STREAM->BPQtoPACTOR_Q)
|
||||
|
@ -359,7 +357,7 @@ ok:
|
|||
UCHAR * data = &buffptr->Data[0];
|
||||
STREAM->FramesQueued--;
|
||||
txlen = (int)buffptr->Len;
|
||||
STREAM->bytesTXed += txlen;
|
||||
STREAM->BytesTXed += txlen;
|
||||
|
||||
bytes=SerialSendData(TNC, data, txlen);
|
||||
WritetoTrace(TNC, data, txlen);
|
||||
|
@ -419,10 +417,7 @@ ok:
|
|||
|
||||
if (buff->PID != 240) // ax.25 address
|
||||
{
|
||||
txlen = KissEncode(TNC, &buff->PID, txbuff, txlen, Channel);
|
||||
|
||||
// We need to che check for ackmode
|
||||
|
||||
txlen = KissEncode(&buff->PID, txbuff, txlen);
|
||||
txlen = send(TNC->TCPSock, txbuff, txlen, 0);
|
||||
return 1;
|
||||
}
|
||||
|
@ -458,12 +453,8 @@ ok:
|
|||
|
||||
if (_memicmp(txbuff, "RADIO ", 6) == 0)
|
||||
{
|
||||
char cmd[56];
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, &txbuff[6]);
|
||||
|
||||
strcpy(cmd, &buff->L2DATA[6]);
|
||||
sprintf(&buff->L2DATA[0], "%d %s", TNC->Port, cmd);
|
||||
|
||||
|
||||
if (Rig_Command(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4CROSSLINK, &buff->L2DATA[0]))
|
||||
{
|
||||
}
|
||||
|
@ -513,8 +504,7 @@ ok:
|
|||
}
|
||||
}
|
||||
|
||||
if ((toupper(buff->L2DATA[0]) == 'C' && buff->L2DATA[1] == ' ' && txlen > 2) // Connect
|
||||
|| (toupper(buff->L2DATA[0]) == 'N' && buff->L2DATA[1] == ' ' && txlen > 2)) // Connect
|
||||
if (toupper(buff->L2DATA[0]) == 'C' && buff->L2DATA[1] == ' ' && txlen > 2) // Connect
|
||||
{
|
||||
// Connect Command. Pass to L2 code to start session
|
||||
|
||||
|
@ -626,9 +616,9 @@ noFlip3:
|
|||
|
||||
RESET2(LINK); // RESET ALL FLAGS
|
||||
|
||||
if (toupper(buff->L2DATA[0]) == 'N' && SUPPORT2point2)
|
||||
LINK->L2STATE = 1; // New (2.2) send XID
|
||||
else
|
||||
// if (CMD->String[0] == 'N' && SUPPORT2point2)
|
||||
// LINK->L2STATE = 1; // New (2.2) send XID
|
||||
// else
|
||||
LINK->L2STATE = 2; // Send SABM
|
||||
|
||||
LINK->CIRCUITPOINTER = NewSess;
|
||||
|
@ -730,18 +720,12 @@ VOID KISSHFReleaseTNC(struct TNCINFO * TNC)
|
|||
ReleaseOtherPorts(TNC);
|
||||
}
|
||||
|
||||
VOID KISSHFSuspendPort(struct TNCINFO * TNC, struct TNCINFO * THISTNC)
|
||||
VOID KISSHFSuspendPort(struct TNCINFO * TNC, struct TNCINFO * ThisTNC)
|
||||
{
|
||||
TNC->PortRecord->PORTCONTROL.PortSuspended = 1;
|
||||
strcpy(TNC->WEB_TNCSTATE, "Interlocked");
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
}
|
||||
|
||||
VOID KISSHFReleasePort(struct TNCINFO * TNC)
|
||||
{
|
||||
TNC->PortRecord->PORTCONTROL.PortSuspended = 0;
|
||||
strcpy(TNC->WEB_TNCSTATE, "Free");
|
||||
MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE);
|
||||
}
|
||||
|
||||
static int WebProc(struct TNCINFO * TNC, char * Buff, BOOL LOCAL)
|
||||
|
@ -751,9 +735,9 @@ static int WebProc(struct TNCINFO * TNC, char * Buff, BOOL LOCAL)
|
|||
"function ScrollOutput()\r\n"
|
||||
"{var textarea = document.getElementById('textarea');"
|
||||
"textarea.scrollTop = textarea.scrollHeight;}</script>"
|
||||
"</head><title>KISSHF Status</title></head><body id=Text onload=\"ScrollOutput()\">"
|
||||
"</head><title>VARA Status</title></head><body id=Text onload=\"ScrollOutput()\">"
|
||||
"<h2><form method=post target=\"POPUPW\" onsubmit=\"POPUPW = window.open('about:blank','POPUPW',"
|
||||
"'width=440,height=50');\" action=ARDOPAbort?%d>KISSHF Status"
|
||||
"'width=440,height=150');\" action=ARDOPAbort?%d>KISSHF Status"
|
||||
"<input name=Save value=\"Abort Session\" type=submit style=\"position: absolute; right: 20;\"></form></h2>",
|
||||
TNC->Port);
|
||||
|
||||
|
@ -762,14 +746,14 @@ static int WebProc(struct TNCINFO * TNC, char * Buff, BOOL LOCAL)
|
|||
|
||||
Len += sprintf(&Buff[Len], "<tr><td width=110px>Comms State</td><td>%s</td></tr>", TNC->WEB_COMMSSTATE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>TNC State</td><td>%s</td></tr>", TNC->WEB_TNCSTATE);
|
||||
// Len += sprintf(&Buff[Len], "<tr><td>Mode</td><td>%s</td></tr>", TNC->WEB_MODE);
|
||||
// Len += sprintf(&Buff[Len], "<tr><td>Channel State</td><td>%s</td></tr>", TNC->WEB_CHANSTATE);
|
||||
// Len += sprintf(&Buff[Len], "<tr><td>Proto State</td><td>%s</td></tr>", TNC->WEB_PROTOSTATE);
|
||||
// Len += sprintf(&Buff[Len], "<tr><td>Traffic</td><td>%s</td></tr>", TNC->WEB_TRAFFIC);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Mode</td><td>%s</td></tr>", TNC->WEB_MODE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Channel State</td><td>%s</td></tr>", TNC->WEB_CHANSTATE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Proto State</td><td>%s</td></tr>", TNC->WEB_PROTOSTATE);
|
||||
Len += sprintf(&Buff[Len], "<tr><td>Traffic</td><td>%s</td></tr>", TNC->WEB_TRAFFIC);
|
||||
// Len += sprintf(&Buff[Len], "<tr><td>TNC Restarts</td><td></td></tr>", TNC->WEB_RESTARTS);
|
||||
Len += sprintf(&Buff[Len], "</table>");
|
||||
|
||||
Len += sprintf(&Buff[Len], "<textarea rows=2 style=\"width:500px; height:50px;\" id=textarea >%s</textarea>", TNC->WebBuffer);
|
||||
Len += sprintf(&Buff[Len], "<textarea rows=10 style=\"width:500px; height:250px;\" id=textarea >%s</textarea>", TNC->WebBuffer);
|
||||
Len = DoScanLine(TNC, Buff, Len);
|
||||
|
||||
return Len;
|
||||
|
@ -813,10 +797,10 @@ VOID * KISSHFExtInit(EXTPORTDATA * PortEntry)
|
|||
}
|
||||
|
||||
TNC->Port = port;
|
||||
TNC->PortRecord = PortEntry;
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_KISSHF;
|
||||
TNC->Hardware = H_KISSHF;
|
||||
TNC->ARDOPBuffer = malloc(8192);
|
||||
|
||||
TNC->PortRecord = PortEntry;
|
||||
|
||||
if (PortEntry->PORTCONTROL.PORTCALL[0] == 0)
|
||||
memcpy(TNC->NodeCall, MYNODECALL, 10);
|
||||
|
@ -992,7 +976,6 @@ VOID KISSThread(void * portptr)
|
|||
char * ptr1;
|
||||
char * ptr2;
|
||||
UINT * buffptr;
|
||||
int Channel = ((TNC->PortRecord->PORTCONTROL.CHANNELNUM - 1) & 15) << 4;
|
||||
|
||||
if (TNC->HostName == NULL)
|
||||
return;
|
||||
|
@ -1201,7 +1184,7 @@ VOID KISSThread(void * portptr)
|
|||
if (FD_ISSET(TNC->TCPSock, &readfs))
|
||||
{
|
||||
GetSemaphore(&Semaphore, 52);
|
||||
KISSHFProcessReceivedPacket(TNC, Channel);
|
||||
KISSHFProcessReceivedPacket(TNC);
|
||||
FreeSemaphore(&Semaphore);
|
||||
}
|
||||
|
||||
|
@ -1260,43 +1243,16 @@ static int KissDecode(UCHAR * inbuff, UCHAR * outbuff, int len)
|
|||
|
||||
}
|
||||
|
||||
#define ACKMODE 4 // CAN USE ACK REQURED FRAMES
|
||||
#define MSGHDDRLEN (USHORT)(sizeof(VOID *) + sizeof(UCHAR) + sizeof(USHORT))
|
||||
#define ONEMINUTE 60*3
|
||||
|
||||
static int KissEncode(struct TNCINFO * TNC, UCHAR * inbuff, UCHAR * outbuff, int len, int Channel)
|
||||
static int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len)
|
||||
{
|
||||
int i,txptr=0;
|
||||
UCHAR c;
|
||||
|
||||
outbuff[0] = FEND;
|
||||
outbuff[1] = Channel;
|
||||
outbuff[0]=FEND;
|
||||
outbuff[1]=0;
|
||||
txptr=2;
|
||||
|
||||
// See if we need ackmode
|
||||
|
||||
if (TNC->PortRecord->PORTCONTROL.KISSFLAGS & ACKMODE)
|
||||
{
|
||||
UCHAR * ptr = inbuff - MSGHDDRLEN;
|
||||
PMESSAGE Buffer = (PMESSAGE)ptr;
|
||||
|
||||
if (Buffer->Linkptr) // Frame Needs ACK
|
||||
{
|
||||
UINT ACKWORD = (UINT)(Buffer->Linkptr - LINKS);
|
||||
outbuff[1] |= 0x0c; // ACK OPCODE
|
||||
outbuff[2] = ACKWORD & 0xff;
|
||||
outbuff[3] = (ACKWORD >> 8) &0xff;
|
||||
|
||||
Buffer->Linkptr->L2TIMER = ONEMINUTE; // Extend timeout
|
||||
|
||||
txptr = 4;
|
||||
|
||||
// have to reset flag so trace doesnt clear it
|
||||
|
||||
Buffer->Linkptr = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (i=0;i<len;i++)
|
||||
{
|
||||
c=inbuff[i];
|
||||
|
@ -1327,7 +1283,7 @@ static int KissEncode(struct TNCINFO * TNC, UCHAR * inbuff, UCHAR * outbuff, int
|
|||
}
|
||||
|
||||
|
||||
VOID KISSHFProcessReceivedPacket(struct TNCINFO * TNC, int Channel)
|
||||
VOID KISSHFProcessReceivedPacket(struct TNCINFO * TNC)
|
||||
{
|
||||
int InputLen, MsgLen;
|
||||
unsigned char * ptr;
|
||||
|
@ -1379,42 +1335,10 @@ VOID KISSHFProcessReceivedPacket(struct TNCINFO * TNC, int Channel)
|
|||
|
||||
if (MsgLen > 1)
|
||||
{
|
||||
PMESSAGE Buff;
|
||||
|
||||
if ((TNC->ARDOPBuffer[1] & 0xf0) != Channel)
|
||||
goto ignoreit;
|
||||
|
||||
Buff = GetBuff();
|
||||
PMESSAGE Buff = GetBuff();
|
||||
|
||||
MsgLen = KissDecode(TNC->ARDOPBuffer, Buffer, MsgLen);
|
||||
|
||||
// See if ACKMODE ACK
|
||||
|
||||
if ((Buffer[1] & 0xf) == 12)
|
||||
{
|
||||
//Ackmode
|
||||
|
||||
struct _LINKTABLE * LINK;
|
||||
int ACKWORD = Buffer[2] | Buffer[3] << 8;
|
||||
|
||||
if (ACKWORD < MAXLINKS)
|
||||
{
|
||||
LINK = LINKS + ACKWORD;
|
||||
|
||||
if (LINK->L2TIMER)
|
||||
LINK->L2TIMER = LINK->L2TIME;
|
||||
}
|
||||
|
||||
ReleaseBuffer(Buff);
|
||||
goto ignoreit;
|
||||
}
|
||||
|
||||
if ((Buffer[1] & 0xf) != 0)
|
||||
{
|
||||
ReleaseBuffer(Buff);
|
||||
goto ignoreit; // Not data
|
||||
}
|
||||
|
||||
// we dont need the FENDS or control byte
|
||||
|
||||
MsgLen -= 3;
|
||||
|
@ -1430,8 +1354,6 @@ VOID KISSHFProcessReceivedPacket(struct TNCINFO * TNC, int Channel)
|
|||
}
|
||||
}
|
||||
|
||||
ignoreit:
|
||||
|
||||
if (TNC->InputLen == 0)
|
||||
return;
|
||||
|
||||
|
@ -1541,7 +1463,7 @@ void DetachKISSHF(struct PORTCONTROL * PORT)
|
|||
struct STREAMINFO * STREAM = &TNC->Streams[0];
|
||||
|
||||
if (STREAM->Attached)
|
||||
STREAM->ReportDISC = 10; // Tell Node but give time for error message to display
|
||||
STREAM->ReportDISC = TRUE; // Tell Node
|
||||
|
||||
STREAM->Connecting = FALSE;
|
||||
STREAM->Connected = FALSE;
|
||||
|
|
545
L2Code.c
545
L2Code.c
|
@ -30,7 +30,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#include "time.h"
|
||||
#include "stdio.h"
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
#define PFBIT 0x10 // POLL/FINAL BIT IN CONTROL BYTE
|
||||
|
@ -47,7 +47,8 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#define THREESECS 3*3
|
||||
|
||||
|
||||
VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer);
|
||||
VOID L2SENDCOMMAND();
|
||||
VOID L2ROUTINE();
|
||||
MESSAGE * SETUPL2MESSAGE(struct _LINKTABLE * LINK, UCHAR CMD);
|
||||
VOID SendSupervisCmd(struct _LINKTABLE * LINK);
|
||||
void SEND_RR_RESP(struct _LINKTABLE * LINK, UCHAR PF);
|
||||
|
@ -105,13 +106,6 @@ void AttachKISSHF(struct PORTCONTROL * PORT, MESSAGE * Buffer);
|
|||
void DetachKISSHF(struct PORTCONTROL * PORT);
|
||||
void KISSHFConnected(struct PORTCONTROL * PORT, struct _LINKTABLE * LINK);
|
||||
void WriteConnectLog(char * fromcall, char * tocall, UCHAR * Mode);
|
||||
int seeifInterlockneeded(struct PORTCONTROL * PORT);
|
||||
int seeifUnlockneeded(struct _LINKTABLE * LINK);
|
||||
int CheckKissInterlock(struct PORTCONTROL * MYPORT, int Exclusive);
|
||||
void hookL2SessionAccepted(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK);
|
||||
void hookL2SessionDeleted(struct _LINKTABLE * LINK);
|
||||
void hookL2SessionAttempt(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK);
|
||||
|
||||
|
||||
extern int REALTIMETICKS;
|
||||
|
||||
|
@ -130,7 +124,7 @@ extern int REALTIMETICKS;
|
|||
|
||||
UCHAR NO_CTEXT = 0;
|
||||
UCHAR ALIASMSG = 0;
|
||||
|
||||
extern UINT APPLMASK;
|
||||
static UCHAR ISNETROMMSG = 0;
|
||||
UCHAR MSGFLAG = 0;
|
||||
extern char * ALIASPTR;
|
||||
|
@ -142,30 +136,6 @@ extern BOOL LogAllConnects;
|
|||
|
||||
APPLCALLS * APPL;
|
||||
|
||||
|
||||
void SendL2ToMonMap(struct PORTCONTROL * PORT, char * ReportCall, char Mode, char Direction)
|
||||
{
|
||||
// if Port Freq < 30Mhz send to Node Map
|
||||
|
||||
if (PORT->PortFreq && PORT->PortFreq < 30000000)
|
||||
{
|
||||
char ReportMode[16];
|
||||
char ReportFreq[350] = "";
|
||||
|
||||
ReportMode[0] = '@';
|
||||
ReportMode[1] = Mode;
|
||||
ReportMode[2] = '?';
|
||||
ReportMode[3] = Direction;
|
||||
ReportMode[4] = 0;
|
||||
|
||||
// If no position see if we have an APRS posn
|
||||
|
||||
_gcvt(PORT->PortFreq, 9, ReportFreq);
|
||||
|
||||
SendMH(0, ReportCall, ReportFreq, 0, ReportMode);
|
||||
}
|
||||
}
|
||||
|
||||
VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer)
|
||||
{
|
||||
// LEVEL 2 PROCESSING
|
||||
|
@ -177,7 +147,6 @@ VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer)
|
|||
UCHAR CTL;
|
||||
uintptr_t Work;
|
||||
UCHAR c;
|
||||
unsigned int APPLMASK = 0;
|
||||
|
||||
// Check for invalid length (< 22 7Header + 7Addr + 7Addr + CTL
|
||||
|
||||
|
@ -191,6 +160,7 @@ VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer)
|
|||
PORT->L2FRAMES++;
|
||||
|
||||
ALIASMSG = 0;
|
||||
APPLMASK = 0;
|
||||
ISNETROMMSG = 0;
|
||||
|
||||
MSGFLAG = 0; // CMD/RESP UNDEFINED
|
||||
|
@ -262,7 +232,6 @@ VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer)
|
|||
if (PORT->PORTMHEARD)
|
||||
MHPROC(PORT, Buffer);
|
||||
|
||||
|
||||
/// TAJ added 07/12/2020 for 'all RX traffic as IfinOctects
|
||||
|
||||
InOctets[PORT->PORTNUMBER] += Buffer->LENGTH - MSGHDDRLEN;
|
||||
|
@ -491,8 +460,6 @@ FORUS:
|
|||
if (PORT->UIHook && CTL == 3)
|
||||
PORT->UIHook(LINK, PORT, Buffer, ADJBUFFER, CTL, MSGFLAG);
|
||||
|
||||
LINK->APPLMASK = APPLMASK;
|
||||
|
||||
L2FORUS(LINK, PORT, Buffer, ADJBUFFER, CTL, MSGFLAG);
|
||||
}
|
||||
|
||||
|
@ -759,7 +726,7 @@ VOID L2FORUS(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buff
|
|||
|
||||
NO_CTEXT = 1;
|
||||
|
||||
if (ROUTE->NEIGHBOUR_FLAG && ROUTE->NEIGHBOUR_QUAL == 0) // Locked, qual 0
|
||||
if (ROUTE->NEIGHBOUR_FLAG == 1 && ROUTE->NEIGHBOUR_QUAL == 0) // Locked, qual 0
|
||||
{
|
||||
ReleaseBuffer(Buffer);
|
||||
return;
|
||||
|
@ -806,171 +773,163 @@ VOID L2FORUS(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buff
|
|||
|
||||
VOID ProcessXIDCommand(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffer, MESSAGE * ADJBUFFER, UCHAR CTL, UCHAR MSGFLAG)
|
||||
{
|
||||
// I think it is fairly safe to accept XID as soon as we
|
||||
// can process SREJ, but only accept Mod 8 and 256 Byte frames
|
||||
// I think it is fairly safe to accept XID as soon as we
|
||||
// can process SREJ, but only accept Mod 8 and 256 Byte frames
|
||||
|
||||
// I think the only way to run 2.2 Mod 8 is to preceed a
|
||||
// SABM with XID, but others don't seem to agree!
|
||||
// I think the only way to run 2.2 Mod 8 is to preceed a
|
||||
// SABM with XID, but others don't seem to agree!
|
||||
|
||||
// Run through XID fields, changing any we don't like,
|
||||
// then return an XID response
|
||||
// Run through XID fields, changing any we don't like,
|
||||
// then return an XID response
|
||||
|
||||
// Decode and process XID
|
||||
// Decode and process XID
|
||||
|
||||
UCHAR * ptr = &ADJBUFFER->PID;
|
||||
UCHAR * ptr1, * ptr2;
|
||||
UCHAR TEMPDIGI[57];
|
||||
int n;
|
||||
UCHAR * ptr = &ADJBUFFER->PID;
|
||||
UCHAR * ptr1, * ptr2;
|
||||
UCHAR TEMPDIGI[57];
|
||||
int n;
|
||||
|
||||
// Check Interlock - should we also check exclude etc?. No, checked in L2FORUS
|
||||
|
||||
if (CheckKissInterlock(PORT, TRUE)) // Interlock with ARDOP/VARA etc
|
||||
{
|
||||
L2SENDDM(PORT, Buffer, ADJBUFFER);
|
||||
return;
|
||||
}
|
||||
|
||||
if (*ptr++ == 0x82 && *ptr++ == 0x80)
|
||||
{
|
||||
int Type;
|
||||
int Len;
|
||||
unsigned int value;
|
||||
int xidlen = *(ptr++) << 8;
|
||||
xidlen += *ptr++;
|
||||
|
||||
// XID is set of Type, Len, Value n-tuples
|
||||
|
||||
while (xidlen > 0)
|
||||
if (*ptr++ == 0x82 && *ptr++ == 0x80)
|
||||
{
|
||||
Type = *ptr++;
|
||||
Len = *ptr++;
|
||||
int Type;
|
||||
int Len;
|
||||
unsigned int value;
|
||||
int xidlen = *(ptr++) << 8;
|
||||
xidlen += *ptr++;
|
||||
|
||||
// XID is set of Type, Len, Value n-tuples
|
||||
|
||||
value = 0;
|
||||
xidlen -= (Len + 2);
|
||||
|
||||
while (Len--)
|
||||
while (xidlen > 0)
|
||||
{
|
||||
value <<=8;
|
||||
value += *ptr++;
|
||||
}
|
||||
switch(Type)
|
||||
{
|
||||
case 2: //Bin fields
|
||||
Type = *ptr++;
|
||||
Len = *ptr++;
|
||||
|
||||
value = 0;
|
||||
xidlen -= (Len + 2);
|
||||
|
||||
break;
|
||||
|
||||
case 3:
|
||||
|
||||
if ((value & OPMustHave) != OPMustHave)
|
||||
goto BadXID;
|
||||
|
||||
if ((value & OPMod8) == 0)
|
||||
goto BadXID;
|
||||
|
||||
if ((value & OPSREJMult) == 0)
|
||||
goto BadXID;
|
||||
|
||||
|
||||
// Reply Mod 8 SREJMULTI
|
||||
|
||||
value = OPMustHave | OPSREJMult | OPMod8;
|
||||
ptr -=3;
|
||||
*ptr++ = value >> 16;
|
||||
*ptr++ = value >> 8;
|
||||
*ptr++ = value;
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case 6: //RX Size
|
||||
|
||||
break;
|
||||
|
||||
case 8: //RX Window
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Send back as XID response
|
||||
|
||||
LINK->L2STATE = 1; // XID received
|
||||
LINK->Ver2point2 = TRUE; // Must support 2.2 if sent XID
|
||||
LINK->L2TIME = PORT->PORTT1;
|
||||
|
||||
LINK->LINKPORT = PORT;
|
||||
|
||||
// save calls so we can match up SABM when it comes
|
||||
|
||||
memcpy(LINK->LINKCALL, Buffer->ORIGIN, 7);
|
||||
LINK->LINKCALL[6] &= 0x1e; // Mask SSID
|
||||
|
||||
memcpy(LINK->OURCALL, Buffer->DEST, 7);
|
||||
|
||||
LINK->OURCALL[6] &= 0x1e; // Mask SSID
|
||||
|
||||
memset(LINK->DIGIS, 0, 56); // CLEAR DIGI FIELD IN CASE RECONNECT
|
||||
|
||||
if ((Buffer->ORIGIN[6] & 1) == 0) // End of Address
|
||||
{
|
||||
// THERE ARE DIGIS TO PROCESS - COPY TO WORK AREA reversed, THEN COPY BACK
|
||||
|
||||
memset(TEMPDIGI, 0, 57); // CLEAR DIGI FIELD IN CASE RECONNECT
|
||||
|
||||
ptr1 = &Buffer->ORIGIN[6]; // End of add
|
||||
ptr2 = &TEMPDIGI[7 * 7]; // Last Temp Digi
|
||||
|
||||
while((*ptr1 & 1) == 0) // End of address bit
|
||||
{
|
||||
ptr1++;
|
||||
memcpy(ptr2, ptr1, 7);
|
||||
ptr2[6] &= 0x1e; // Mask Repeated and Last bits
|
||||
ptr2 -= 7;
|
||||
ptr1 += 6;
|
||||
}
|
||||
|
||||
// LIST OF DIGI CALLS COMPLETE - COPY TO LINK CONTROL ENTRY
|
||||
|
||||
n = PORT->PORTMAXDIGIS;
|
||||
|
||||
ptr1 = ptr2 + 7; // First in TEMPDIGIS
|
||||
ptr2 = &LINK->DIGIS[0];
|
||||
|
||||
while (*ptr1)
|
||||
{
|
||||
if (n == 0)
|
||||
while (Len--)
|
||||
{
|
||||
// Too many for us
|
||||
|
||||
CLEAROUTLINK(LINK);
|
||||
ReleaseBuffer(Buffer);
|
||||
return;
|
||||
value <<=8;
|
||||
value += *ptr++;
|
||||
}
|
||||
switch(Type)
|
||||
{
|
||||
case 2: //Bin fields
|
||||
|
||||
memcpy(ptr2, ptr1, 7);
|
||||
ptr1 += 7;
|
||||
ptr2 += 7;
|
||||
n--;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
|
||||
if ((value & OPMustHave) != OPMustHave)
|
||||
goto BadXID;
|
||||
|
||||
if ((value & OPMod8) == 0)
|
||||
goto BadXID;
|
||||
|
||||
if ((value & OPSREJMult) == 0)
|
||||
goto BadXID;
|
||||
|
||||
|
||||
// Reply Mod 8 SREJMULTI
|
||||
|
||||
value = OPMustHave | OPSREJMult | OPMod8;
|
||||
ptr -=3;
|
||||
*ptr++ = value >> 16;
|
||||
*ptr++ = value >> 8;
|
||||
*ptr++ = value;
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case 6: //RX Size
|
||||
|
||||
break;
|
||||
|
||||
case 8: //RX Window
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Send back as XID response
|
||||
|
||||
LINK->L2STATE = 1; // XID received
|
||||
LINK->Ver2point2 = TRUE; // Must support 2.2 if sent XID
|
||||
LINK->L2TIME = PORT->PORTT1;
|
||||
|
||||
LINK->LINKPORT = PORT;
|
||||
|
||||
// save calls so we can match up SABM when it comes
|
||||
|
||||
memcpy(LINK->LINKCALL, Buffer->ORIGIN, 7);
|
||||
LINK->LINKCALL[6] &= 0x1e; // Mask SSID
|
||||
|
||||
memcpy(LINK->OURCALL, Buffer->DEST, 7);
|
||||
|
||||
LINK->OURCALL[6] &= 0x1e; // Mask SSID
|
||||
|
||||
memset(LINK->DIGIS, 0, 56); // CLEAR DIGI FIELD IN CASE RECONNECT
|
||||
|
||||
if ((Buffer->ORIGIN[6] & 1) == 0) // End of Address
|
||||
{
|
||||
// THERE ARE DIGIS TO PROCESS - COPY TO WORK AREA reversed, THEN COPY BACK
|
||||
|
||||
memset(TEMPDIGI, 0, 57); // CLEAR DIGI FIELD IN CASE RECONNECT
|
||||
|
||||
ptr1 = &Buffer->ORIGIN[6]; // End of add
|
||||
ptr2 = &TEMPDIGI[7 * 7]; // Last Temp Digi
|
||||
|
||||
while((*ptr1 & 1) == 0) // End of address bit
|
||||
{
|
||||
ptr1++;
|
||||
memcpy(ptr2, ptr1, 7);
|
||||
ptr2[6] &= 0x1e; // Mask Repeated and Last bits
|
||||
ptr2 -= 7;
|
||||
ptr1 += 6;
|
||||
}
|
||||
|
||||
// LIST OF DIGI CALLS COMPLETE - COPY TO LINK CONTROL ENTRY
|
||||
|
||||
n = PORT->PORTMAXDIGIS;
|
||||
|
||||
ptr1 = ptr2 + 7; // First in TEMPDIGIS
|
||||
ptr2 = &LINK->DIGIS[0];
|
||||
|
||||
while (*ptr1)
|
||||
{
|
||||
if (n == 0)
|
||||
{
|
||||
// Too many for us
|
||||
|
||||
CLEAROUTLINK(LINK);
|
||||
ReleaseBuffer(Buffer);
|
||||
return;
|
||||
}
|
||||
|
||||
memcpy(ptr2, ptr1, 7);
|
||||
ptr1 += 7;
|
||||
ptr2 += 7;
|
||||
n--;
|
||||
}
|
||||
}
|
||||
|
||||
ADJBUFFER->CTL = CTL | PFBIT;
|
||||
|
||||
// Buffer->LENGTH = (UCHAR *)ADJBUFFER - (UCHAR *)Buffer + MSGHDDRLEN + 15; // SET UP BYTE COUNT
|
||||
|
||||
L2SWAPADDRESSES(Buffer); // SWAP ADDRESSES AND SET RESP BITS
|
||||
|
||||
// We need to save APPLMASK and ALIASPTR so following SABM connects to application
|
||||
|
||||
LINK->APPLMASK = APPLMASK;
|
||||
LINK->ALIASPTR = ALIASPTR;
|
||||
|
||||
PUT_ON_PORT_Q(PORT, Buffer);
|
||||
return;
|
||||
}
|
||||
|
||||
ADJBUFFER->CTL = CTL | PFBIT;
|
||||
|
||||
// Buffer->LENGTH = (UCHAR *)ADJBUFFER - (UCHAR *)Buffer + MSGHDDRLEN + 15; // SET UP BYTE COUNT
|
||||
|
||||
L2SWAPADDRESSES(Buffer); // SWAP ADDRESSES AND SET RESP BITS
|
||||
|
||||
// We need to save APPLMASK and ALIASPTR so following SABM connects to application
|
||||
|
||||
// LINK->APPLMASK now set in L2FORUS
|
||||
LINK->ALIASPTR = ALIASPTR;
|
||||
|
||||
PUT_ON_PORT_Q(PORT, Buffer);
|
||||
return;
|
||||
}
|
||||
BadXID:
|
||||
L2SENDINVALIDCTRL(PORT, Buffer, ADJBUFFER, CTL);
|
||||
return;
|
||||
L2SENDINVALIDCTRL(PORT, Buffer, ADJBUFFER, CTL);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1089,7 +1048,7 @@ VOID L2LINKACTIVE(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE *
|
|||
|
||||
if (LINK->L2STATE == 1) // Sent XID?
|
||||
{
|
||||
LINK->APPLMASK;
|
||||
APPLMASK = LINK->APPLMASK;
|
||||
ALIASPTR = LINK->ALIASPTR;
|
||||
|
||||
L2SABM(LINK, PORT, Buffer, ADJBUFFER, MSGFLAG); // Process the SABM
|
||||
|
@ -1141,25 +1100,13 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
|
|||
|
||||
TRANSPORTENTRY * Session;
|
||||
int CONERROR;
|
||||
|
||||
char toCall[12], fromCall[12];
|
||||
|
||||
|
||||
|
||||
if (LINK == 0) // NO LINK ENTRIES - SEND DM RESPONSE
|
||||
{
|
||||
L2SENDDM(PORT, Buffer, ADJBUFFER);
|
||||
return;
|
||||
}
|
||||
|
||||
if (CheckKissInterlock(PORT, TRUE)) // Interlock with ARDOP/VARA etc
|
||||
{
|
||||
L2SENDDM(PORT, Buffer, ADJBUFFER);
|
||||
return;
|
||||
}
|
||||
|
||||
toCall[ConvFromAX25(ADJBUFFER->DEST, toCall)] = 0;
|
||||
fromCall[ConvFromAX25(ADJBUFFER->ORIGIN, fromCall)] = 0;
|
||||
|
||||
SETUPNEWL2SESSION(LINK, PORT, Buffer, MSGFLAG);
|
||||
|
||||
if (LINK->L2STATE != 5) // Setup OK?
|
||||
|
@ -1168,13 +1115,9 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
|
|||
return;
|
||||
}
|
||||
|
||||
// See if need to Interlock non-sharable modes, eg ARDOP and VARA
|
||||
|
||||
seeifInterlockneeded(PORT);
|
||||
|
||||
// IF CONNECT TO APPL ADDRESS, SET UP APPL SESSION
|
||||
|
||||
if (LINK->APPLMASK == 0)
|
||||
if (APPLMASK == 0)
|
||||
{
|
||||
// Not ATTACH TO APPL
|
||||
|
||||
|
@ -1186,13 +1129,14 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
|
|||
int Paclen= PORT->PORTPACLEN;
|
||||
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");
|
||||
|
||||
hookL2SessionAccepted(PORT->PORTNUMBER, fromCall, toCall, LINK);
|
||||
|
||||
SendL2ToMonMap(PORT, fromCall, '+', 'I');
|
||||
|
||||
}
|
||||
|
||||
L2SENDUA(PORT, Buffer, ADJBUFFER);
|
||||
|
||||
if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
|
||||
|
@ -1306,10 +1250,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
|
|||
// ACCEPT THE CONNECT, THEN INVOKE THE ALIAS
|
||||
|
||||
L2SENDUA(PORT, Buffer, ADJBUFFER);
|
||||
|
||||
hookL2SessionAccepted(PORT->PORTNUMBER, fromCall, toCall, LINK);
|
||||
|
||||
SendL2ToMonMap(PORT, fromCall, '+', 'I');
|
||||
|
||||
if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
|
||||
{
|
||||
|
@ -1384,7 +1324,7 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
|
|||
return;
|
||||
}
|
||||
|
||||
if (cATTACHTOBBS(Session, LINK->APPLMASK, PORT->PORTPACLEN, &CONERROR) == 0)
|
||||
if (cATTACHTOBBS(Session, APPLMASK, PORT->PORTPACLEN, &CONERROR) == 0)
|
||||
{
|
||||
// NO BBS AVAILABLE
|
||||
|
||||
|
@ -1409,10 +1349,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
|
|||
|
||||
L2SENDUA(PORT, Buffer, ADJBUFFER);
|
||||
|
||||
hookL2SessionAccepted(PORT->PORTNUMBER, fromCall, toCall, LINK);
|
||||
|
||||
SendL2ToMonMap(PORT, fromCall, '+', 'I');
|
||||
|
||||
if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
|
||||
{
|
||||
struct DATAMESSAGE * Msg;
|
||||
|
@ -1880,14 +1816,8 @@ VOID L2_PROCESS(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * B
|
|||
{
|
||||
// RESPONSE TO SABM - SET LINK UP
|
||||
|
||||
char fromCall[12];
|
||||
|
||||
fromCall[ConvFromAX25(Buffer->ORIGIN, fromCall)] = 0;
|
||||
|
||||
RESET2X(LINK); // LEAVE QUEUED STUFF
|
||||
|
||||
SendL2ToMonMap(PORT, fromCall, '+', 'O');
|
||||
|
||||
LINK->L2STATE = 5;
|
||||
LINK->L2TIMER = 0; // CANCEL TIMER
|
||||
LINK->L2RETRIES = 0;
|
||||
|
@ -2478,8 +2408,6 @@ VOID PROC_I_FRAME(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE *
|
|||
Length = Buffer->LENGTH - (MSGHDDRLEN + 15); // Buffer Header + addrs + CTL
|
||||
Info = &Buffer->PID;
|
||||
|
||||
LINK->bytesRXed += Length;
|
||||
|
||||
// Adjust for DIGIS
|
||||
|
||||
EOA = &Buffer->ORIGIN[6]; // End of address Bit
|
||||
|
@ -2685,13 +2613,6 @@ VOID RESET2(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);
|
||||
}
|
||||
|
||||
|
@ -3135,7 +3056,7 @@ VOID ACKMSG(struct _LINKTABLE * LINK)
|
|||
}
|
||||
}
|
||||
|
||||
VOID CONNECTFAILED(struct _LINKTABLE * LINK);
|
||||
VOID CONNECTFAILED();
|
||||
|
||||
VOID L2TIMEOUT(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT)
|
||||
{
|
||||
|
@ -3305,10 +3226,6 @@ VOID SENDFRMR(struct _LINKTABLE * LINK)
|
|||
|
||||
VOID CLEAROUTLINK(struct _LINKTABLE * LINK)
|
||||
{
|
||||
hookL2SessionDeleted(LINK);
|
||||
|
||||
seeifUnlockneeded(LINK);
|
||||
|
||||
CLEARL2QUEUES(LINK); // TO RELEASE ANY BUFFERS
|
||||
|
||||
memset(LINK, 0, sizeof(struct _LINKTABLE));
|
||||
|
@ -3636,7 +3553,7 @@ VOID CONNECTREFUSED(struct _LINKTABLE * LINK)
|
|||
ConnectFailedOrRefused(LINK, "Busy from");
|
||||
}
|
||||
|
||||
VOID L3CONNECTFAILED(struct _LINKTABLE * LINK);
|
||||
VOID L3CONNECTFAILED();
|
||||
|
||||
VOID ConnectFailedOrRefused(struct _LINKTABLE * LINK, char * Msg)
|
||||
{
|
||||
|
@ -3676,7 +3593,7 @@ VOID ConnectFailedOrRefused(struct _LINKTABLE * LINK, char * Msg)
|
|||
Buffer->LENGTH = (int)(ptr1 - (UCHAR *)Buffer);
|
||||
|
||||
Session = LINK->CIRCUITPOINTER; // GET CIRCUIT TABLE ENTRY
|
||||
InSession = Session->L4CROSSLINK; // TO INCOMMING SESSION
|
||||
InSession = Session->L4CROSSLINK; // TO INCOMMONG SESSION
|
||||
|
||||
CLEARSESSIONENTRY(Session);
|
||||
|
||||
|
@ -4043,141 +3960,3 @@ BOOL CheckForListeningSession(struct PORTCONTROL * PORT, MESSAGE * Msg)
|
|||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
int COUNTLINKS(int Port);
|
||||
VOID SuspendOtherPorts(struct TNCINFO * ThisTNC);
|
||||
VOID ReleaseOtherPorts(struct TNCINFO * ThisTNC);
|
||||
|
||||
|
||||
int CheckKissInterlock(struct PORTCONTROL * PORT, int Exclusive)
|
||||
{
|
||||
// This checks for interlocked kiss and other ports. Returns 1 if attach/connect not allowed
|
||||
|
||||
// If Exclusive is not set allow connects on specified port up to l2limit,
|
||||
|
||||
// If Exclusive is set also don't allow any connects on specified port.
|
||||
|
||||
// Generally use Exclusive if locking a port that doesn't allow shared access, eg ARDOP, VARAus
|
||||
|
||||
// Maybe only Exclusive is needed, and just check session mode ports. Sharing of KISS ports is controlled by USERS
|
||||
|
||||
int Interlock = PORT->PORTINTERLOCK;
|
||||
|
||||
if (Interlock == 0)
|
||||
return 0; // No locking
|
||||
|
||||
PORT = PORTTABLE;
|
||||
|
||||
if (Exclusive)
|
||||
{
|
||||
while(PORT)
|
||||
{
|
||||
if (PORT->TNC)
|
||||
{
|
||||
struct TNCINFO * TNC = PORT->TNC;
|
||||
|
||||
if (Interlock == TNC->RXRadio || Interlock == TNC->TXRadio) // Same Group
|
||||
{
|
||||
// See if port in use
|
||||
|
||||
int n;
|
||||
|
||||
for (n = 0; n <= 26; n++)
|
||||
{
|
||||
if (TNC->PortRecord->ATTACHEDSESSIONS[n])
|
||||
{
|
||||
return TNC->Port; ; // Refuse Connect
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PORT = PORT->PORTPOINTER;
|
||||
}
|
||||
}
|
||||
return 0; // ok to connect
|
||||
}
|
||||
|
||||
int seeifInterlockneeded(struct PORTCONTROL * PORT)
|
||||
{
|
||||
// Can we just call SuspendOtherPorts - it won't do any harm if already suspended
|
||||
// No, at that needs a TNC Record, so duplicate code here
|
||||
|
||||
int i;
|
||||
int Interlock = PORT->PORTINTERLOCK;
|
||||
struct TNCINFO * TNC;
|
||||
|
||||
if (Interlock == 0)
|
||||
return 0; // No locking
|
||||
|
||||
for (i = 1; i <= MAXBPQPORTS; i++)
|
||||
{
|
||||
TNC = TNCInfo[i];
|
||||
|
||||
if (TNC)
|
||||
if (Interlock == TNC->RXRadio || Interlock == TNC->TXRadio) // Same Group
|
||||
if (TNC->SuspendPortProc && TNC->PortRecord->PORTCONTROL.PortSuspended == FALSE)
|
||||
TNC->SuspendPortProc(TNC, TNC);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int seeifUnlockneeded(struct _LINKTABLE * LINK)
|
||||
{
|
||||
// We need to see if any other links are active on any interlocked KISS ports. If not, release the lock
|
||||
|
||||
int i;
|
||||
int links = 0;
|
||||
|
||||
int Interlock;
|
||||
struct TNCINFO * TNC;
|
||||
struct PORTCONTROL * PORT = LINK->LINKPORT;
|
||||
|
||||
if (PORT == NULL)
|
||||
return 0;
|
||||
|
||||
// Should only be called for KISS links, but just in case
|
||||
|
||||
if (PORT->PORTTYPE > 12) // INTERNAL or EXTERNAL?
|
||||
return 0; // Not KISS Port
|
||||
|
||||
Interlock = PORT->PORTINTERLOCK;
|
||||
|
||||
if (Interlock == 0)
|
||||
return 0; // No locking
|
||||
|
||||
|
||||
// Count all L2 links on interlocked KISS ports
|
||||
|
||||
PORT = PORTTABLE;
|
||||
|
||||
while(PORT)
|
||||
{
|
||||
if (PORT->PORTTYPE <= 12) // INTERNAL or EXTERNAL?
|
||||
if (Interlock == PORT->PORTINTERLOCK)
|
||||
links += COUNTLINKS(PORT->PORTNUMBER);
|
||||
|
||||
PORT = PORT->PORTPOINTER;
|
||||
}
|
||||
|
||||
if (links > 1) // must be the one we are closing
|
||||
return 0; // Keep lock
|
||||
|
||||
|
||||
for (i = 1; i <= MAXBPQPORTS; i++)
|
||||
{
|
||||
TNC = TNCInfo[i];
|
||||
|
||||
if (TNC)
|
||||
if (Interlock == TNC->RXRadio || Interlock == TNC->TXRadio) // Same Group
|
||||
if (TNC->ReleasePortProc && TNC->PortRecord->PORTCONTROL.PortSuspended == TRUE)
|
||||
TNC->ReleasePortProc(TNC);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
10
L3Code.c
10
L3Code.c
|
@ -49,7 +49,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#include "stdio.h"
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
VOID UPDATEDESTLIST();
|
||||
|
@ -319,13 +319,13 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT)
|
|||
|
||||
// if locked route with quality zero ignore
|
||||
|
||||
if ((ROUTE->NEIGHBOUR_FLAG)) // LOCKED ROUTE
|
||||
if ((ROUTE->NEIGHBOUR_FLAG & 1)) // LOCKED ROUTE
|
||||
if (ROUTE->NEIGHBOUR_QUAL == 0)
|
||||
return;
|
||||
|
||||
// If Ignoreunlocked set, ignore it not locked
|
||||
|
||||
if ((ROUTE->NEIGHBOUR_FLAG) == 0) // LOCKED ROUTE
|
||||
if ((ROUTE->NEIGHBOUR_FLAG & 1) == 0) // LOCKED ROUTE
|
||||
if (PORT->IgnoreUnlocked)
|
||||
return;
|
||||
|
||||
|
@ -333,7 +333,7 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT)
|
|||
|
||||
// if not locked, update route quality from port quality (may have changed config and not cleared SAVENODES
|
||||
|
||||
if (ROUTE->NEIGHBOUR_FLAG == 0) // Not LOCKED ROUTE
|
||||
if ((ROUTE->NEIGHBOUR_FLAG & 1) == 0) // Not LOCKED ROUTE
|
||||
ROUTE->NEIGHBOUR_QUAL = PORT->PORTQUALITY;
|
||||
|
||||
// GET TIME FROM BIOS DATA AREA OR RTC
|
||||
|
@ -1038,7 +1038,7 @@ VOID L3TimerProc()
|
|||
{
|
||||
ROUTE++;
|
||||
|
||||
if (ROUTE->NEIGHBOUR_FLAG) // Locked?
|
||||
if (ROUTE->NEIGHBOUR_FLAG & 1) // Locked?
|
||||
continue;
|
||||
|
||||
if (ROUTE->NEIGHBOUR_LINK) // Has an active Session
|
||||
|
|
585
L4Code.c
585
L4Code.c
|
@ -31,32 +31,32 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
#include "stdio.h"
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
extern BPQVECSTRUC BPQHOSTVECTOR[];
|
||||
#define BPQHOSTSTREAMS 64
|
||||
#define IPHOSTVECTOR BPQHOSTVECTOR[BPQHOSTSTREAMS + 3]
|
||||
|
||||
void CLOSECURRENTSESSION(TRANSPORTENTRY * Session);
|
||||
void SENDL4DISC(TRANSPORTENTRY * Session);
|
||||
int C_Q_COUNT(void * Q);
|
||||
VOID CLOSECURRENTSESSION(TRANSPORTENTRY * Session);
|
||||
VOID SENDL4DISC(TRANSPORTENTRY * Session);
|
||||
int C_Q_COUNT(VOID * Q);
|
||||
TRANSPORTENTRY * SetupSessionForL2(struct _LINKTABLE * LINK);
|
||||
void InformPartner(struct _LINKTABLE * LINK, int Reason);
|
||||
void IFRM150(TRANSPORTENTRY * Session, PDATAMESSAGE Buffer);
|
||||
void SendConNAK(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG);
|
||||
VOID InformPartner(struct _LINKTABLE * LINK, int Reason);
|
||||
VOID IFRM150(TRANSPORTENTRY * Session, PDATAMESSAGE Buffer);
|
||||
VOID SendConNAK(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG);
|
||||
BOOL FINDCIRCUIT(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY ** REQL4, int * NewIndex);
|
||||
int GETBUSYBIT(TRANSPORTENTRY * L4);
|
||||
BOOL cATTACHTOBBS(TRANSPORTENTRY * Session, UINT Mask, int Paclen, int * AnySessions);
|
||||
VOID SETUPNEWCIRCUIT(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG,
|
||||
TRANSPORTENTRY * L4, char * BPQPARAMS, int ApplMask, int * BPQNODE);
|
||||
extern char * ALIASPTR;
|
||||
void SendConACK(struct _LINKTABLE * LINK, TRANSPORTENTRY * L4, L3MESSAGEBUFFER * L3MSG, BOOL BPQNODE, UINT Applmask, UCHAR * ApplCall);
|
||||
void L3SWAPADDRESSES(L3MESSAGEBUFFER * L3MSG);
|
||||
void L4TIMEOUT(TRANSPORTENTRY * L4);
|
||||
VOID SendConACK(struct _LINKTABLE * LINK, TRANSPORTENTRY * L4, L3MESSAGEBUFFER * L3MSG, BOOL BPQNODE, UINT Applmask, UCHAR * ApplCall);
|
||||
VOID L3SWAPADDRESSES(L3MESSAGEBUFFER * L3MSG);
|
||||
VOID L4TIMEOUT(TRANSPORTENTRY * L4);
|
||||
struct DEST_LIST * CHECKL3TABLES(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * Msg);
|
||||
int CHECKIFBUSYL4(TRANSPORTENTRY * L4);
|
||||
VOID AUTOTIMER(TRANSPORTENTRY * L4);
|
||||
VOID AUTOTIMER();
|
||||
VOID NRRecordRoute(UCHAR * Buff, int Len);
|
||||
VOID REFRESHROUTE(TRANSPORTENTRY * Session);
|
||||
VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR);
|
||||
|
@ -67,18 +67,12 @@ VOID ProcessRTTMsg(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Buff, int Len
|
|||
VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask, UCHAR * ApplCall);
|
||||
void WriteConnectLog(char * fromCall, char * toCall, UCHAR * Mode);
|
||||
void SendVARANetromMsg(struct TNCINFO * TNC, PL3MESSAGEBUFFER MSG);
|
||||
unsigned char * Compressit(unsigned char * In, int Len, int * OutLen);
|
||||
int doinflate(unsigned char * source, unsigned char * dest, int Len, int destlen, int * outLen);
|
||||
|
||||
static UINT APPLMASK;
|
||||
extern UINT APPLMASK;
|
||||
|
||||
extern BOOL LogL4Connects;
|
||||
extern BOOL LogAllConnects;
|
||||
|
||||
extern int L4Compress;
|
||||
extern int L4CompMaxframe;
|
||||
extern int L4CompPaclen;
|
||||
|
||||
// L4 Flags Values
|
||||
|
||||
#define DISCPENDING 8 // SEND DISC WHEN ALL DATA ACK'ED
|
||||
|
@ -347,17 +341,6 @@ VOID SENDL4MESSAGE(TRANSPORTENTRY * L4, struct DATAMESSAGE * Msg)
|
|||
|
||||
L3MSG->L4FLAGS = L4INFO | L4->NAKBITS;
|
||||
|
||||
if (Msg->PID == 0xF1) // Compressed Message
|
||||
{
|
||||
L3MSG->L4FLAGS |= L4COMP;
|
||||
Msg->PID = 0xF0;
|
||||
}
|
||||
else if (Msg->PID == 0xF2) // Compressed Message - More to come
|
||||
{
|
||||
L3MSG->L4FLAGS |= (L4COMP | L4MORE);
|
||||
Msg->PID = 0xF0;
|
||||
}
|
||||
|
||||
L4->L4TIMER = L4->SESSIONT1; // SET TIMER
|
||||
L4->L4ACKREQ = 0; // CANCEL ACK NEEDED
|
||||
|
||||
|
@ -487,9 +470,6 @@ VOID SENDL4CONNECT(TRANSPORTENTRY * Session)
|
|||
|
||||
MSG->LENGTH = (int)(&MSG->L4DATA[17] - (UCHAR *)MSG);
|
||||
|
||||
if (L4Compress)
|
||||
MSG->L4DATA[16] |= 0x40; // Set Compression Supported
|
||||
|
||||
if (Session->SPYFLAG)
|
||||
{
|
||||
MSG->L4DATA[17] = 'Z'; // ADD SPY ON BBS FLAG
|
||||
|
@ -520,53 +500,6 @@ void RETURNEDTONODE(TRANSPORTENTRY * Session)
|
|||
|
||||
extern void * BUFFER;
|
||||
|
||||
void sendChunk(TRANSPORTENTRY * L4, unsigned char * Compressed, int complen, int savePort)
|
||||
{
|
||||
unsigned char * compdata;
|
||||
struct DATAMESSAGE * Msg;
|
||||
int sendLen = complen;
|
||||
int fragments;
|
||||
|
||||
L4->SentAfterCompression += complen;
|
||||
|
||||
if (complen > L4CompPaclen)
|
||||
{
|
||||
fragments = (complen / L4CompPaclen); // Split to roughly equal sized fraagments
|
||||
|
||||
if (fragments * L4CompPaclen != complen)
|
||||
fragments++;
|
||||
|
||||
sendLen = (complen / fragments) + 1;
|
||||
}
|
||||
|
||||
compdata = Compressed;
|
||||
|
||||
while (complen > 0)
|
||||
{
|
||||
int PID = 0xF1;
|
||||
|
||||
if (complen > sendLen)
|
||||
PID = 0xF2; // More to come
|
||||
|
||||
Msg = GetBuff();
|
||||
|
||||
if (!Msg)
|
||||
return;
|
||||
|
||||
Msg->PORT = savePort;
|
||||
|
||||
memcpy(Msg->L2DATA, compdata, sendLen);
|
||||
Msg->LENGTH = sendLen + MSGHDDRLEN + 1; // 1 for pid field
|
||||
Msg->PID = PID; // Not sent so use as a flag for compressed msg
|
||||
|
||||
compdata += sendLen;
|
||||
complen -= sendLen;
|
||||
|
||||
SENDL4MESSAGE(L4, Msg);
|
||||
ReleaseBuffer(Msg);
|
||||
}
|
||||
}
|
||||
|
||||
VOID L4BG()
|
||||
{
|
||||
// PROCESS DATA QUEUED ON SESSIONS
|
||||
|
@ -660,151 +593,8 @@ VOID L4BG()
|
|||
|
||||
if (L4->L4CIRCUITTYPE & SESSION)
|
||||
{
|
||||
// Now support compressing NetRom Sessions.
|
||||
// We collect as much data as possible before compressing and re-packetizing
|
||||
|
||||
if (L4->AllowCompress)
|
||||
{
|
||||
int complen = 0;
|
||||
unsigned char * Compressed;
|
||||
int dataLen;
|
||||
int savePort = Msg->PORT;
|
||||
int maxCompSendLen;
|
||||
|
||||
// Save first packet, then see if more on TX_Q
|
||||
|
||||
L4->toCompress = malloc(8192);
|
||||
L4->toCompressLen = 0;
|
||||
|
||||
dataLen = Msg->LENGTH - MSGHDDRLEN - 1; // No header or pid
|
||||
|
||||
L4->Sent += dataLen;
|
||||
|
||||
memcpy(&L4->toCompress[L4->toCompressLen], Msg->L2DATA, dataLen);
|
||||
L4->toCompressLen += dataLen;
|
||||
|
||||
// See if first will compress. If not assume too short or already compressed data and just send
|
||||
|
||||
Compressed = Compressit(L4->toCompress, L4->toCompressLen, &complen);
|
||||
|
||||
if (complen >= dataLen)
|
||||
{
|
||||
free(Compressed);
|
||||
L4->SentAfterCompression += dataLen;
|
||||
SENDL4MESSAGE(L4, Msg);
|
||||
ReleaseBuffer(Msg);
|
||||
free(L4->toCompress);
|
||||
L4->toCompress = 0;
|
||||
L4->toCompressLen = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Worth compressing. Try to collect several packets
|
||||
|
||||
if (L4->L4TX_Q == 0)
|
||||
{
|
||||
// no more, so just send the stuff we've just compressed. Compressed data will fit in input packet
|
||||
|
||||
// Debugprintf("%d %d %d%%", L4->toCompressLen, complen, ((L4->toCompressLen - complen) * 100) / L4->toCompressLen);
|
||||
|
||||
memcpy(Msg->L2DATA, Compressed, complen);
|
||||
|
||||
Msg->PID = 0xF1; // Compressed
|
||||
Msg->LENGTH = complen + MSGHDDRLEN + 1; // 1 for pid field
|
||||
|
||||
L4->SentAfterCompression += complen;
|
||||
SENDL4MESSAGE(L4, Msg);
|
||||
ReleaseBuffer(Msg);
|
||||
|
||||
free(L4->toCompress);
|
||||
L4->toCompressLen = 0;
|
||||
L4->toCompress = 0;
|
||||
free(Compressed);
|
||||
continue;
|
||||
}
|
||||
|
||||
free(Compressed);
|
||||
ReleaseBuffer(Msg); // Not going to use it
|
||||
|
||||
while (L4->L4TX_Q && L4->toCompressLen < (8192 - 256)) // Make sure can't overrin buffer
|
||||
{
|
||||
// Collect the data from L4TX_Q
|
||||
|
||||
Msg = Q_REM((void *)&L4->L4TX_Q);
|
||||
dataLen = Msg->LENGTH - MSGHDDRLEN - 1; // No header or pid
|
||||
L4->Sent += dataLen;
|
||||
|
||||
memcpy(&L4->toCompress[L4->toCompressLen], Msg->L2DATA, dataLen);
|
||||
L4->toCompressLen += dataLen;
|
||||
|
||||
ReleaseBuffer(Msg);
|
||||
}
|
||||
|
||||
L4->toCompress[L4->toCompressLen] = 0;
|
||||
|
||||
Compressed = Compressit(L4->toCompress, L4->toCompressLen, &complen);
|
||||
// Debugprintf("%d %d %d%%", L4->toCompressLen, complen, ((L4->toCompressLen - complen) * 100) / L4->toCompressLen);
|
||||
|
||||
// Send compressed
|
||||
|
||||
// Fragment if more than L4CompPaclen
|
||||
|
||||
// Entered with original first fragment in saveMsg;
|
||||
|
||||
// Check for too big a compressed frame size. Bigger compresses better but adds latency to link
|
||||
|
||||
maxCompSendLen = L4CompPaclen * L4CompMaxframe;
|
||||
|
||||
if (complen > maxCompSendLen)
|
||||
{
|
||||
// Too Much Data. Needs to recompress less. To avoid too many recompresses be a bit conservative in calulating max size
|
||||
// to allow for a bit less compression of part of data. Getting it wrong isn't fatal as sending more than optimum isn't fatal
|
||||
|
||||
int Fragments;
|
||||
int ChunkSize;
|
||||
unsigned char * CompressPtr = L4->toCompress;
|
||||
int bytesleft = L4->toCompressLen;
|
||||
|
||||
// Assume 10% worse compression on smaller input
|
||||
|
||||
int j = (complen * 11) / 10; // New Comp size
|
||||
|
||||
Fragments = j / maxCompSendLen;
|
||||
Fragments++;
|
||||
ChunkSize = (L4->toCompressLen / Fragments) + 1; // 1 for rounding
|
||||
|
||||
while (bytesleft > 0)
|
||||
{
|
||||
int Len = bytesleft;
|
||||
if (Len > ChunkSize)
|
||||
Len = ChunkSize;
|
||||
|
||||
free (Compressed);
|
||||
Compressed = Compressit(CompressPtr, Len, &complen);
|
||||
// Debugprintf("Chunked %d %d %d%%", Len, complen, ((Len - complen) * 100) / Len);
|
||||
|
||||
sendChunk(L4, Compressed, complen, savePort);
|
||||
|
||||
CompressPtr += Len;
|
||||
bytesleft -= Len;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
sendChunk(L4, Compressed, complen,savePort);
|
||||
|
||||
free(L4->toCompress);
|
||||
L4->toCompressLen = 0;
|
||||
L4->toCompress = 0;
|
||||
free(Compressed);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Compression Disabled
|
||||
|
||||
SENDL4MESSAGE(L4, Msg);
|
||||
ReleaseBuffer(Msg);
|
||||
}
|
||||
SENDL4MESSAGE(L4, Msg);
|
||||
ReleaseBuffer(Msg);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -813,9 +603,6 @@ VOID L4BG()
|
|||
// If we want to enforce PACLEN this may be a good place to do it
|
||||
|
||||
Msglen = Msg->LENGTH - (MSGHDDRLEN + 1); //Dont include PID
|
||||
|
||||
LINK->bytesTXed += Msglen;
|
||||
|
||||
Paclen = L4->SESSPACLEN;
|
||||
|
||||
if (Paclen == 0)
|
||||
|
@ -913,35 +700,12 @@ VOID CLEARSESSIONENTRY(TRANSPORTENTRY * Session)
|
|||
Session->L4RESEQ_Q = 0;
|
||||
}
|
||||
|
||||
// if compressed session display stats
|
||||
|
||||
if (Session->Sent && Session->Received)
|
||||
{
|
||||
char SRCE[10];
|
||||
char TO[10];
|
||||
|
||||
struct DEST_LIST * DEST = Session->L4TARGET.DEST;
|
||||
|
||||
SRCE[ConvFromAX25(Session->L4MYCALL, SRCE)] = 0;
|
||||
TO[ConvFromAX25(DEST->DEST_CALL, TO)] = 0;
|
||||
|
||||
Debugprintf("L4 Compression Stats %s %s TX %d %d %d%% RX %d %d %d%%", SRCE, TO,
|
||||
Session->Sent, Session->SentAfterCompression, ((Session->Sent - Session->SentAfterCompression) * 100) / Session->Sent,
|
||||
Session->Received, Session->ReceivedAfterExpansion, ((Session->ReceivedAfterExpansion - Session->Received) * 100) / Session->Received);
|
||||
}
|
||||
|
||||
while (Session->L4RESEQ_Q)
|
||||
ReleaseBuffer(Q_REM((void *)&Session->L4RESEQ_Q));
|
||||
|
||||
if (Session->PARTCMDBUFFER)
|
||||
ReleaseBuffer(Session->PARTCMDBUFFER);
|
||||
|
||||
if (Session->toCompress)
|
||||
free(Session->toCompress);
|
||||
|
||||
if (Session->unCompress)
|
||||
free(Session->unCompress);
|
||||
|
||||
memset(Session, 0, sizeof(TRANSPORTENTRY));
|
||||
}
|
||||
|
||||
|
@ -1133,14 +897,10 @@ VOID L4TimerProc()
|
|||
L4->STAYFLAG = 0;
|
||||
|
||||
Partner = L4->L4CROSSLINK;
|
||||
|
||||
CLOSECURRENTSESSION(L4);
|
||||
|
||||
if (Partner)
|
||||
{
|
||||
// if compressed session display stats
|
||||
|
||||
|
||||
Partner->L4KILLTIMER = 0; //ITS TIMES IS ALSO ABOUT TO EXPIRE
|
||||
CLOSECURRENTSESSION(Partner); // CLOSE THIS ONE
|
||||
}
|
||||
|
@ -1215,8 +975,6 @@ VOID L4TIMEOUT(TRANSPORTENTRY * L4)
|
|||
{
|
||||
// RETRIED N2 TIMES - FAIL LINK
|
||||
|
||||
// if compressed session display stats
|
||||
|
||||
CloseSessionPartner(L4); // SEND CLOSE TO PARTNER (IF PRESENT)
|
||||
return;
|
||||
}
|
||||
|
@ -1489,7 +1247,6 @@ VOID SENDL4DISC(TRANSPORTENTRY * Session)
|
|||
MSG->LENGTH = (int)(&MSG->L4DATA[0] - (UCHAR *)MSG);
|
||||
|
||||
C_Q_ADD(&DEST->DEST_Q, (UINT *)MSG);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1698,9 +1455,6 @@ VOID SendConACK(struct _LINKTABLE * LINK, TRANSPORTENTRY * L4, L3MESSAGEBUFFER *
|
|||
if (BPQNODE)
|
||||
{
|
||||
L3MSG->L4DATA[1] = L3LIVES; // Our TTL
|
||||
if (L4->AllowCompress)
|
||||
L3MSG->L4DATA[1] |= 0x80;
|
||||
|
||||
L3MSG->LENGTH++;
|
||||
}
|
||||
|
||||
|
@ -1776,7 +1530,7 @@ int FINDCIRCUIT(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY ** REQL4, int * NewIndex
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
void L3SWAPADDRESSES(L3MESSAGEBUFFER * L3MSG)
|
||||
VOID L3SWAPADDRESSES(L3MESSAGEBUFFER * L3MSG)
|
||||
{
|
||||
// EXCHANGE ORIGIN AND DEST
|
||||
|
||||
|
@ -1791,7 +1545,7 @@ void L3SWAPADDRESSES(L3MESSAGEBUFFER * L3MSG)
|
|||
L3MSG->L3SRCE[6] |= 1; // Set Last Call
|
||||
}
|
||||
|
||||
void SendConNAK(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG)
|
||||
VOID SendConNAK(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG)
|
||||
{
|
||||
L3MSG->L4FLAGS = L4CACK | L4BUSY; // REJECT
|
||||
L3MSG->L4DATA[0] = 0; // WINDOW
|
||||
|
@ -1802,25 +1556,6 @@ void SendConNAK(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG)
|
|||
C_Q_ADD(&LINK->TX_Q, L3MSG);
|
||||
}
|
||||
|
||||
VOID SendL4RESET(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG)
|
||||
{
|
||||
// Paula's extension
|
||||
|
||||
L3MSG->L4FLAGS = L4RESET;
|
||||
|
||||
L3SWAPADDRESSES(L3MSG);
|
||||
L3MSG->L3TTL = L3LIVES;
|
||||
|
||||
L3MSG->LENGTH = (int)(&L3MSG->L4DATA[0] - (UCHAR *)L3MSG);
|
||||
C_Q_ADD(&LINK->TX_Q, L3MSG);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
VOID SETUPNEWCIRCUIT(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG,
|
||||
TRANSPORTENTRY * L4, char * BPQPARAMS, int ApplMask, int * BPQNODE)
|
||||
{
|
||||
|
@ -1835,9 +1570,8 @@ VOID SETUPNEWCIRCUIT(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG,
|
|||
L4->CIRCUITID = NEXTID;
|
||||
|
||||
NEXTID++;
|
||||
|
||||
if (NEXTID == 0)
|
||||
NEXTID++; // kEEP nON-ZERO
|
||||
if (NEXTID == 0)
|
||||
NEXTID++; // kEEP nON-ZERO
|
||||
|
||||
L4->SESSIONT1 = L4T1;
|
||||
|
||||
|
@ -1860,18 +1594,10 @@ VOID SETUPNEWCIRCUIT(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG,
|
|||
|
||||
// GET BPQ EXTENDED CONNECT PARAMS IF PRESENT
|
||||
|
||||
if (L3MSG->LENGTH == MSGHDDRLEN + 38 || L3MSG->LENGTH == MSGHDDRLEN + 39)
|
||||
if (L3MSG->LENGTH == MSGHDDRLEN + 38 || L3MSG->LENGTH == MSGHDDRLEN + 39)
|
||||
{
|
||||
*BPQNODE = 1;
|
||||
|
||||
memcpy(BPQPARAMS, &L3MSG->L4DATA[15],L3MSG->LENGTH - (MSGHDDRLEN + 36));
|
||||
|
||||
// 40 bit of 2nd byte is Compress Flag
|
||||
|
||||
if (BPQPARAMS[1] & 0x40 && L4Compress)
|
||||
L4->AllowCompress = 1;
|
||||
|
||||
BPQPARAMS[1] &= 0xf; // Only bottom bit is significant in Timeeout field
|
||||
}
|
||||
|
||||
L4->L4CIRCUITTYPE = SESSION | UPLINK;
|
||||
|
@ -1929,7 +1655,7 @@ TryAgain:
|
|||
{
|
||||
SHORT T1;
|
||||
|
||||
DEST->DEST_STATE |= 0x40; // SET BPQ NODE BIT
|
||||
DEST->DEST_STATE |= 0x40; // SET BPQ _NODE BIT
|
||||
memcpy((char *)&T1, BPQPARAMS, 2);
|
||||
|
||||
if (T1 > 300)
|
||||
|
@ -2012,48 +1738,22 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask,
|
|||
CONNECTREQUEST(LINK, L3MSG, ApplMask, ApplCall);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// OTHERS NEED A SESSION
|
||||
|
||||
if (Opcode == L4RESET)
|
||||
L4 = &L4TABLE[L3MSG->L4INDEX];
|
||||
|
||||
if (L4->CIRCUITID!= L3MSG->L4ID)
|
||||
{
|
||||
// Paula's extension - other end dosn't know about session so disconnect
|
||||
|
||||
// A reset has our far index and id, not our index and id so have to search table for L4 entry
|
||||
|
||||
int n = MAXCIRCUITS;
|
||||
L4 = L4TABLE;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (L4->L4USER[0] && L4->FARID == L3MSG->L4ID && L4->FARINDEX == L3MSG->L4INDEX)
|
||||
{
|
||||
// Check L3 source call to be sure (should that be L4 source call??
|
||||
|
||||
L3MSG->L3SRCE[6] &= 0xfe; // mask end of call
|
||||
|
||||
if (memcmp(L3MSG->L3SRCE, L4->L4TARGET.DEST->DEST_CALL, 7) == 0)
|
||||
{
|
||||
CloseSessionPartner(L4); // SEND CLOSE TO PARTNER (IF PRESENT)
|
||||
}
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
}
|
||||
L4++;
|
||||
}
|
||||
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
}
|
||||
|
||||
if (L3MSG->L4INDEX < MAXCIRCUITS)
|
||||
L4 = &L4TABLE[L3MSG->L4INDEX];
|
||||
|
||||
// If wrong ID or not an L4 session we must have restarted or cleared session
|
||||
|
||||
if (L4 == 0 || L4->CIRCUITID != L3MSG->L4ID || (L4->L4CIRCUITTYPE & SESSION) == 0)
|
||||
if ((L4->L4CIRCUITTYPE & SESSION) == 0)
|
||||
{
|
||||
SendL4RESET(LINK, L3MSG); // Paula's extension
|
||||
// Not an L4 Session - must be an old connection
|
||||
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2064,19 +1764,13 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask,
|
|||
case L4CACK:
|
||||
|
||||
// CONNECT ACK
|
||||
|
||||
|
||||
DEST = L4->L4TARGET.DEST;
|
||||
|
||||
|
||||
// EXTRACT EXTENDED PARAMS IF PRESENT
|
||||
|
||||
if (L3MSG->LENGTH > MSGHDDRLEN + 22) // Standard Msg
|
||||
{
|
||||
if (L3MSG->L4DATA[1] & 0x80) // Compress Flag
|
||||
{
|
||||
L4->AllowCompress = 1;
|
||||
L3MSG->L4DATA[1] &= 0x7f;
|
||||
}
|
||||
|
||||
DEST->DEST_STATE &= 0x80;
|
||||
DEST->DEST_STATE |= (L3MSG->L4DATA[1] - L3MSG->L3TTL) + 0x41; // Hops to dest + x40
|
||||
}
|
||||
|
@ -2143,13 +1837,13 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask,
|
|||
|
||||
// DISCONNECT REQUEST
|
||||
|
||||
L3MSG->L4INDEX = L4->FARINDEX;
|
||||
L3MSG->L4ID = L4->FARID;
|
||||
L3MSG->L4INDEX = L4->FARINDEX;
|
||||
L3MSG->L4ID = L4->FARID;
|
||||
|
||||
L3MSG->L4FLAGS = L4DACK;
|
||||
|
||||
L3MSG->L4FLAGS = L4DACK;
|
||||
|
||||
L3SWAPADDRESSES(L3MSG); // EXCHANGE SOURCE AND DEST
|
||||
L3MSG->L3TTL = L3LIVES;
|
||||
L3SWAPADDRESSES(L3MSG); // EXCHANGE SOURCE AND DEST
|
||||
L3MSG->L3TTL = L3LIVES;
|
||||
|
||||
TNC = LINK->LINKPORT->TNC;
|
||||
|
||||
|
@ -2158,11 +1852,11 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask,
|
|||
else
|
||||
C_Q_ADD(&LINK->TX_Q, L3MSG);
|
||||
|
||||
CloseSessionPartner(L4); // SEND CLOSE TO PARTNER (IF PRESENT)
|
||||
return;
|
||||
|
||||
CloseSessionPartner(L4); // SEND CLOSE TO PARTNER (IF PRESENT)
|
||||
return;
|
||||
|
||||
case L4DACK:
|
||||
|
||||
|
||||
CLEARSESSIONENTRY(L4);
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
|
@ -2177,19 +1871,6 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask,
|
|||
return;
|
||||
}
|
||||
|
||||
// Randomly drop packets
|
||||
|
||||
/*
|
||||
Debugprintf("L4 Test Received packet %d ", L3MSG->L4TXNO);
|
||||
|
||||
if ((rand() % 7) > 5)
|
||||
{
|
||||
Debugprintf("L4 Test Drop packet %d ", L3MSG->L4TXNO);
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
ACKFRAMES(L3MSG, L4, L3MSG->L4RXNO);
|
||||
|
||||
// If DISCPENDING or STATE IS 4, THEN SESSION IS CLOSING - IGNORE ANY I FRAMES
|
||||
|
@ -2214,35 +1895,36 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask,
|
|||
// FRAME IS A REPEAT
|
||||
|
||||
Call[ConvFromAX25(L3MSG->L3SRCE, Call)] = 0;
|
||||
Debugprintf("L4 Discarding repeated frame seq %d from %s", L3MSG->L4TXNO, Call);
|
||||
Debugprintf("Discarding repeated frame seq %d from %s", L3MSG->L4TXNO, Call);
|
||||
|
||||
L4->L4ACKREQ = 1;
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (FramesMissing > 0)
|
||||
{
|
||||
// EXPECTED FRAME HAS BEEN MISSED - ASK FOR IT AGAIN,
|
||||
// AND KEEP THIS FRAME UNTIL MISSING ONE ARRIVES
|
||||
|
||||
L4->NAKBITS |= L4NAK; // SET NAK REQUIRED
|
||||
|
||||
SENDL4IACK(L4); // SEND DATA ACK COMMAND TO ACK OUTSTANDING FRAMES
|
||||
|
||||
|
||||
// SEE IF WE ALREADY HAVE A COPY OF THIS ONE
|
||||
|
||||
/*
|
||||
Saved = L4->L4RESEQ_Q;
|
||||
|
||||
Call[ConvFromAX25(L3MSG->L3SRCE, Call)] = 0;
|
||||
Debugprintf("L4 Out Of Seq saving seq %d from %s", L3MSG->L4TXNO, Call);
|
||||
Debugprintf("saving seq %d from %s", L3MSG->L4TXNO, Call);
|
||||
|
||||
while (Saved)
|
||||
{
|
||||
if (Saved->L4TXNO == L3MSG->L4TXNO)
|
||||
{
|
||||
// ALREADY HAVE A COPY - DISCARD IT
|
||||
|
||||
Debugprintf("L4 Already have seq %d - discarding", L3MSG->L4TXNO);
|
||||
|
||||
Debugprintf("Already have seq %d - discarding", L3MSG->L4TXNO);
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
}
|
||||
|
@ -2252,6 +1934,7 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask,
|
|||
|
||||
C_Q_ADD(&L4->L4RESEQ_Q, L3MSG); // ADD TO CHAIN
|
||||
return;
|
||||
*/
|
||||
}
|
||||
|
||||
// Frame is OK
|
||||
|
@ -2267,7 +1950,7 @@ L4INFO_OK:
|
|||
L4->NAKBITS &= ~L4NAK; // CLEAR MESSAGE LOST STATE
|
||||
|
||||
L4->RXSEQNO++;
|
||||
|
||||
|
||||
// REMOVE HEADERS, AND QUEUE INFO
|
||||
|
||||
L3MSG->LENGTH -= 20; // L3/L4 Header
|
||||
|
@ -2280,122 +1963,15 @@ L4INFO_OK:
|
|||
|
||||
L3MSG->L3PID = 0xF0; // Normal Data PID
|
||||
|
||||
// if compressed, expand
|
||||
memmove(L3MSG->L3SRCE, L3MSG->L4DATA, L3MSG->LENGTH - (4 + sizeof(void *)));
|
||||
|
||||
if ((L3MSG->L4FLAGS & L4COMP) == 0)
|
||||
{
|
||||
// Not Compressed
|
||||
|
||||
L4->Received += L3MSG->LENGTH - MSGHDDRLEN - 1;
|
||||
L4->ReceivedAfterExpansion += L3MSG->LENGTH - MSGHDDRLEN - 1;
|
||||
|
||||
memmove(L3MSG->L3SRCE, L3MSG->L4DATA, L3MSG->LENGTH - (4 + sizeof(void *)));
|
||||
IFRM150(L4, (PDATAMESSAGE)L3MSG); // CHECK IF SETTING UP AND PASS ON
|
||||
}
|
||||
else
|
||||
{
|
||||
char Buffer[8192];
|
||||
int Len;
|
||||
int outLen;
|
||||
int sendLen;
|
||||
char * sendptr;
|
||||
int savePort = L3MSG->Port;
|
||||
|
||||
// May be more thsn one packet
|
||||
|
||||
Len = L3MSG->LENGTH - MSGHDDRLEN - 1;
|
||||
|
||||
L4->Received += Len;
|
||||
|
||||
if (L3MSG->L4FLAGS & L4MORE)
|
||||
{
|
||||
if (L4->unCompressLen == 0)
|
||||
{
|
||||
// New packet
|
||||
|
||||
L4->unCompress = malloc(8192);
|
||||
}
|
||||
|
||||
// Save data
|
||||
|
||||
memcpy(&L4->unCompress[L4->unCompressLen], L3MSG->L4DATA, Len);
|
||||
L4->unCompressLen += Len;
|
||||
|
||||
ReleaseBuffer(L3MSG);
|
||||
goto checkReseq;
|
||||
}
|
||||
|
||||
if (L4->unCompressLen)
|
||||
{
|
||||
// Already have some data - add this to it
|
||||
|
||||
memcpy(&L4->unCompress[L4->unCompressLen], L3MSG->L4DATA, Len);
|
||||
L4->unCompressLen += Len;
|
||||
|
||||
Len = doinflate(L4->unCompress, Buffer, L4->unCompressLen, 8192, &outLen);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// Just inflate this bit
|
||||
|
||||
Len = doinflate(L3MSG->L4DATA, Buffer, L3MSG->LENGTH - MSGHDDRLEN - 1, 8192, &outLen);
|
||||
}
|
||||
|
||||
free(L4->unCompress);
|
||||
L4->unCompress = 0;
|
||||
L4->unCompressLen = 0;
|
||||
|
||||
sendLen = outLen;
|
||||
sendptr = Buffer;
|
||||
|
||||
L4->ReceivedAfterExpansion += outLen;
|
||||
|
||||
// Send first bit in input buffer. If still some left get new buffers for it
|
||||
|
||||
if (sendLen > 236)
|
||||
sendLen = 236;
|
||||
|
||||
memcpy(L3MSG->L3SRCE, sendptr, sendLen); // Converting to DATAMESSAGE format
|
||||
L3MSG->LENGTH = sendLen + MSGHDDRLEN + 1;
|
||||
|
||||
IFRM150(L4, (PDATAMESSAGE)L3MSG); // CHECK IF SETTING UP AND PASS ON
|
||||
|
||||
outLen -= sendLen;
|
||||
sendptr += sendLen;
|
||||
|
||||
while (outLen > 0)
|
||||
{
|
||||
sendLen = outLen;
|
||||
|
||||
if (sendLen > 236)
|
||||
sendLen = 236;
|
||||
|
||||
Msg = GetBuff();
|
||||
|
||||
if (Msg)
|
||||
{
|
||||
// Just ignore if no buffers - shouldn't happen
|
||||
|
||||
Msg->PID = 240;
|
||||
Msg->PORT = savePort;
|
||||
memcpy(Msg->L2DATA, sendptr, sendLen);
|
||||
Msg->LENGTH = sendLen + MSGHDDRLEN + 1;
|
||||
|
||||
IFRM150(L4, Msg); // CHECK IF SETTING UP AND PASS ON
|
||||
}
|
||||
|
||||
outLen -= sendLen;
|
||||
sendptr += sendLen;
|
||||
}
|
||||
}
|
||||
|
||||
L4->L4ACKREQ = L4DELAY; // SEND INFO ACK AFTER L4DELAY (UNLESS I FRAME SENT)
|
||||
REFRESHROUTE(L4);
|
||||
|
||||
L4->L4ACKREQ = L4DELAY; // SEND INFO ACK AFTER L4DELAY (UNLESS I FRAME SENT)
|
||||
|
||||
IFRM150(L4, (PDATAMESSAGE)L3MSG); // CHECK IF SETTING UP AND PASS ON
|
||||
|
||||
// See if anything on reseq Q to process
|
||||
checkReseq:
|
||||
|
||||
if (L4->L4RESEQ_Q == 0)
|
||||
return;
|
||||
|
@ -2412,13 +1988,13 @@ checkReseq:
|
|||
*Prev = Saved->Next; // CHAIN NEXT IN CHAIN TO PREVIOUS
|
||||
|
||||
OLDFRAMES++; // COUNT FOR STATS
|
||||
|
||||
|
||||
L3MSG = Saved;
|
||||
Debugprintf("L4 Processing Saved Message %d Address %x", L4->RXSEQNO, L3MSG);
|
||||
Debugprintf("Processing Saved Message %d Address %x", L4->RXSEQNO, L3MSG);
|
||||
goto L4INFO_OK;
|
||||
}
|
||||
|
||||
Debugprintf("L4 Message %d %x still on Reseq Queue", Saved->L4TXNO, Saved);
|
||||
Debugprintf("Message %d %x still on Reseq Queue", Saved->L4TXNO, Saved);
|
||||
|
||||
Prev = &Saved;
|
||||
Saved = Saved->Next;
|
||||
|
@ -2431,9 +2007,7 @@ checkReseq:
|
|||
ACKFRAMES(L3MSG, L4, L3MSG->L4RXNO);
|
||||
REFRESHROUTE(L4);
|
||||
|
||||
ReleaseBuffer(L3MSG);
|
||||
return;
|
||||
|
||||
// Drop Through
|
||||
}
|
||||
|
||||
// Unrecognised - Ignore
|
||||
|
@ -2484,19 +2058,15 @@ VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR)
|
|||
if (L4->RTT_TIMER)
|
||||
{
|
||||
// FRAME BEING TIMED HAS BEEN ACKED - UPDATE DEST RTT TIMER
|
||||
|
||||
|
||||
DEST = L4->L4TARGET.DEST;
|
||||
|
||||
|
||||
RTT = GetTickCount() - L4->RTT_TIMER;
|
||||
|
||||
if (RTT < 180000) // Sanity Check
|
||||
{
|
||||
if (DEST->DEST_RTT == 0)
|
||||
DEST->DEST_RTT = RTT;
|
||||
else
|
||||
DEST->DEST_RTT = ((DEST->DEST_RTT * 9) + RTT) /10; // 90% Old + New
|
||||
}
|
||||
L4->RTT_TIMER = 0;
|
||||
if (DEST->DEST_RTT == 0)
|
||||
DEST->DEST_RTT = RTT;
|
||||
else
|
||||
DEST->DEST_RTT = ((DEST->DEST_RTT * 9) + RTT) /10; // 90% Old + New
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2518,7 +2088,7 @@ VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR)
|
|||
if ((L4->FLAGS & DISCPENDING) && L4->L4TX_Q == 0)
|
||||
{
|
||||
// All Acked and DISC Pending, so send it
|
||||
|
||||
|
||||
SENDL4DISC(L4);
|
||||
return;
|
||||
}
|
||||
|
@ -2527,13 +2097,13 @@ VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR)
|
|||
// SEE IF CHOKE SET
|
||||
|
||||
L4->FLAGS &= ~L4BUSY;
|
||||
|
||||
|
||||
if (L3MSG->L4FLAGS & L4BUSY)
|
||||
{
|
||||
L4->FLAGS |= L3MSG->L4FLAGS & L4BUSY; // Get Busy flag from message
|
||||
|
||||
if ((L3MSG->L4FLAGS & L4NAK) == 0)
|
||||
return; // Dont send while busy unless NAK received
|
||||
return; // Dont send while biust unless NAC received
|
||||
}
|
||||
|
||||
if (L3MSG->L4FLAGS & L4NAK)
|
||||
|
@ -2541,10 +2111,10 @@ VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR)
|
|||
// RETRANSMIT REQUESTED MESSAGE - WILL BE FIRST ON HOLD QUEUE
|
||||
|
||||
Msg = L4->L4HOLD_Q;
|
||||
|
||||
|
||||
if (Msg == 0)
|
||||
return;
|
||||
|
||||
|
||||
Copy = GetBuff();
|
||||
|
||||
if (Copy == 0)
|
||||
|
@ -2561,6 +2131,17 @@ VOID ACKFRAMES(L3MESSAGEBUFFER * L3MSG, TRANSPORTENTRY * L4, int NR)
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
VOID SENDL4IACK(TRANSPORTENTRY * Session)
|
||||
{
|
||||
// SEND INFO ACK
|
||||
|
@ -2583,8 +2164,7 @@ VOID SENDL4IACK(TRANSPORTENTRY * Session)
|
|||
|
||||
MSG->L4TXNO = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
MSG->L4RXNO = Session->RXSEQNO;
|
||||
Session->L4LASTACKED = Session->RXSEQNO; // SAVE LAST NUMBER ACKED
|
||||
|
||||
|
@ -2592,10 +2172,7 @@ VOID SENDL4IACK(TRANSPORTENTRY * Session)
|
|||
|
||||
MSG->LENGTH = MSGHDDRLEN + 22;
|
||||
|
||||
// Debugprintf("Sending L4 IACK %d %x", MSG->L4RXNO, MSG->L4FLAGS);
|
||||
|
||||
C_Q_ADD(&DEST->DEST_Q, (UINT *)MSG);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
431
LinBPQ.c
431
LinBPQ.c
|
@ -21,7 +21,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "bpqmail.h"
|
||||
#ifdef WIN32
|
||||
#include <Iphlpapi.h>
|
||||
|
@ -45,11 +45,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
BOOL APIENTRY Rig_Init();
|
||||
|
||||
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line);
|
||||
void GetSemaphore(struct SEM * Semaphore, int ID);
|
||||
void FreeSemaphore(struct SEM * Semaphore);
|
||||
VOID CopyConfigFile(char * ConfigName);
|
||||
VOID SendMailForThread(VOID * Param);
|
||||
|
@ -79,10 +75,7 @@ int upnpClose();
|
|||
void SaveAIS();
|
||||
void initAIS();
|
||||
void DRATSPoll();
|
||||
void RHPPoll();
|
||||
|
||||
VOID GetPGConfig();
|
||||
void SendBBSDataToPktMap();
|
||||
|
||||
extern uint64_t timeLoadedMS;
|
||||
|
||||
|
@ -377,45 +370,8 @@ BOOL CtrlHandler(DWORD fdwCtrlType)
|
|||
|
||||
#else
|
||||
|
||||
#include <execinfo.h>
|
||||
#include <signal.h>
|
||||
|
||||
// Linux Signal Handlers
|
||||
|
||||
static void segvhandler(int sig)
|
||||
{
|
||||
void *array[10];
|
||||
size_t size;
|
||||
char msg[] = "SIGSEGV Received\n";
|
||||
|
||||
write(STDERR_FILENO, msg, strlen(msg));
|
||||
|
||||
// get void*'s for all entries on the stack
|
||||
size = backtrace(array, 10);
|
||||
|
||||
// print out all the frames to stderr
|
||||
|
||||
backtrace_symbols_fd(array, size, STDERR_FILENO);
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void abrthandler(int sig)
|
||||
{
|
||||
void *array[10];
|
||||
size_t size;
|
||||
char msg[] = "SIGABRT Received\n";
|
||||
|
||||
write(STDERR_FILENO, msg, strlen(msg));
|
||||
|
||||
// get void*'s for all entries on the stack
|
||||
|
||||
size = backtrace(array, 10);
|
||||
backtrace_symbols_fd(array, size, STDERR_FILENO);
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void sigterm_handler(int sig)
|
||||
{
|
||||
syslog(LOG_INFO, "terminating on SIGTERM\n");
|
||||
|
@ -504,10 +460,9 @@ VOID MonitorThread(void * x)
|
|||
{
|
||||
// It is stuck - try to release
|
||||
|
||||
Debugprintf ("Semaphore locked - Process ID = %d, Held By %d from %s Line %d",
|
||||
Semaphore.SemProcessID, SemHeldByAPI, Semaphore.File, Semaphore.Line);
|
||||
|
||||
|
||||
Debugprintf ("Semaphore locked - Process ID = %d, Held By %d",
|
||||
Semaphore.SemProcessID, SemHeldByAPI);
|
||||
|
||||
Semaphore.Flag = 0;
|
||||
}
|
||||
|
||||
|
@ -598,8 +553,6 @@ extern int POP3Timer;
|
|||
|
||||
#ifndef WIN32
|
||||
|
||||
|
||||
|
||||
#define _getch getchar
|
||||
|
||||
/**
|
||||
|
@ -713,7 +666,7 @@ void ConTermPoll()
|
|||
|
||||
// Replace CR with CRLF
|
||||
|
||||
printf("%s", ptr);
|
||||
printf(ptr);
|
||||
|
||||
if (ptr2)
|
||||
printf("\r\n");
|
||||
|
@ -763,7 +716,7 @@ void ConTermPoll()
|
|||
|
||||
}
|
||||
|
||||
#include <getopt.h>
|
||||
#include "getopt.h"
|
||||
|
||||
static struct option long_options[] =
|
||||
{
|
||||
|
@ -784,10 +737,6 @@ char HelpScreen[] =
|
|||
|
||||
int Redirected = 0;
|
||||
|
||||
static void segvhandler(int sig);
|
||||
static void abrthandler(int sig);
|
||||
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
int i;
|
||||
|
@ -817,10 +766,6 @@ int main(int argc, char * argv[])
|
|||
}
|
||||
|
||||
#else
|
||||
|
||||
signal(SIGSEGV, segvhandler);
|
||||
signal(SIGABRT, abrthandler);
|
||||
|
||||
setlinebuf(stdout);
|
||||
struct sigaction act;
|
||||
openlog("LINBPQ", LOG_PID, LOG_DAEMON);
|
||||
|
@ -870,7 +815,7 @@ int main(int argc, char * argv[])
|
|||
{
|
||||
case 'h':
|
||||
|
||||
printf("%s", HelpScreen);
|
||||
printf(HelpScreen);
|
||||
exit (0);
|
||||
|
||||
case 'l':
|
||||
|
@ -1132,226 +1077,222 @@ int main(int argc, char * argv[])
|
|||
|
||||
BBSApplMask = 1<<(BBSApplNum-1);
|
||||
|
||||
// See if we need to warn of possible problem with BaseDir moved by installer
|
||||
// See if we need to warn of possible problem with BaseDir moved by installer
|
||||
|
||||
sprintf(BaseDir, "%s", BPQDirectory);
|
||||
sprintf(BaseDir, "%s", BPQDirectory);
|
||||
|
||||
|
||||
// Set up file and directory names
|
||||
// Set up file and directory names
|
||||
|
||||
strcpy(UserDatabasePath, BaseDir);
|
||||
strcat(UserDatabasePath, "/");
|
||||
strcat(UserDatabasePath, UserDatabaseName);
|
||||
strcpy(UserDatabasePath, BaseDir);
|
||||
strcat(UserDatabasePath, "/");
|
||||
strcat(UserDatabasePath, UserDatabaseName);
|
||||
|
||||
strcpy(MsgDatabasePath, BaseDir);
|
||||
strcat(MsgDatabasePath, "/");
|
||||
strcat(MsgDatabasePath, MsgDatabaseName);
|
||||
strcpy(MsgDatabasePath, BaseDir);
|
||||
strcat(MsgDatabasePath, "/");
|
||||
strcat(MsgDatabasePath, MsgDatabaseName);
|
||||
|
||||
strcpy(BIDDatabasePath, BaseDir);
|
||||
strcat(BIDDatabasePath, "/");
|
||||
strcat(BIDDatabasePath, BIDDatabaseName);
|
||||
strcpy(BIDDatabasePath, BaseDir);
|
||||
strcat(BIDDatabasePath, "/");
|
||||
strcat(BIDDatabasePath, BIDDatabaseName);
|
||||
|
||||
strcpy(WPDatabasePath, BaseDir);
|
||||
strcat(WPDatabasePath, "/");
|
||||
strcat(WPDatabasePath, WPDatabaseName);
|
||||
strcpy(WPDatabasePath, BaseDir);
|
||||
strcat(WPDatabasePath, "/");
|
||||
strcat(WPDatabasePath, WPDatabaseName);
|
||||
|
||||
strcpy(BadWordsPath, BaseDir);
|
||||
strcat(BadWordsPath, "/");
|
||||
strcat(BadWordsPath, BadWordsName);
|
||||
strcpy(BadWordsPath, BaseDir);
|
||||
strcat(BadWordsPath, "/");
|
||||
strcat(BadWordsPath, BadWordsName);
|
||||
|
||||
strcpy(NTSAliasesPath, BaseDir);
|
||||
strcat(NTSAliasesPath, "/");
|
||||
strcat(NTSAliasesPath, NTSAliasesName);
|
||||
strcpy(NTSAliasesPath, BaseDir);
|
||||
strcat(NTSAliasesPath, "/");
|
||||
strcat(NTSAliasesPath, NTSAliasesName);
|
||||
|
||||
strcpy(MailDir, BaseDir);
|
||||
strcat(MailDir, "/");
|
||||
strcat(MailDir, "Mail");
|
||||
strcpy(MailDir, BaseDir);
|
||||
strcat(MailDir, "/");
|
||||
strcat(MailDir, "Mail");
|
||||
|
||||
#ifdef WIN32
|
||||
CreateDirectory(MailDir, NULL); // Just in case
|
||||
CreateDirectory(MailDir, NULL); // Just in case
|
||||
#else
|
||||
mkdir(MailDir, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||
chmod(MailDir, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||
mkdir(MailDir, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||
chmod(MailDir, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||
#endif
|
||||
|
||||
// Make backup copies of Databases
|
||||
// Make backup copies of Databases
|
||||
|
||||
// CopyConfigFile(ConfigName);
|
||||
// CopyConfigFile(ConfigName);
|
||||
|
||||
CopyBIDDatabase();
|
||||
CopyMessageDatabase();
|
||||
CopyUserDatabase();
|
||||
CopyWPDatabase();
|
||||
CopyBIDDatabase();
|
||||
CopyMessageDatabase();
|
||||
CopyUserDatabase();
|
||||
CopyWPDatabase();
|
||||
|
||||
SetupMyHA();
|
||||
SetupFwdAliases();
|
||||
SetupNTSAliases(NTSAliasesPath);
|
||||
SetupMyHA();
|
||||
SetupFwdAliases();
|
||||
SetupNTSAliases(NTSAliasesPath);
|
||||
|
||||
GetWPDatabase();
|
||||
GetWPDatabase();
|
||||
|
||||
GetMessageDatabase();
|
||||
GetUserDatabase();
|
||||
GetBIDDatabase();
|
||||
GetBadWordFile();
|
||||
GetHTMLForms();
|
||||
GetPGConfig();
|
||||
GetMessageDatabase();
|
||||
GetUserDatabase();
|
||||
GetBIDDatabase();
|
||||
GetBadWordFile();
|
||||
GetHTMLForms();
|
||||
GetPGConfig();
|
||||
|
||||
// Make sure there is a user record for the BBS, with BBS bit set.
|
||||
// Make sure there is a user record for the BBS, with BBS bit set.
|
||||
|
||||
user = LookupCall(BBSName);
|
||||
user = LookupCall(BBSName);
|
||||
|
||||
if (user == NULL)
|
||||
{
|
||||
user = AllocateUserRecord(BBSName);
|
||||
user->Temp = zalloc(sizeof (struct TempUserInfo));
|
||||
}
|
||||
|
||||
if ((user->flags & F_BBS) == 0)
|
||||
{
|
||||
// Not Defined as a BBS
|
||||
|
||||
if(SetupNewBBS(user))
|
||||
user->flags |= F_BBS;
|
||||
}
|
||||
|
||||
// if forwarding AMPR mail make sure User/BBS AMPR exists
|
||||
|
||||
if (SendAMPRDirect)
|
||||
{
|
||||
BOOL NeedSave = FALSE;
|
||||
|
||||
user = LookupCall("AMPR");
|
||||
|
||||
if (user == NULL)
|
||||
{
|
||||
user = AllocateUserRecord(BBSName);
|
||||
user = AllocateUserRecord("AMPR");
|
||||
user->Temp = zalloc(sizeof (struct TempUserInfo));
|
||||
NeedSave = TRUE;
|
||||
}
|
||||
|
||||
if ((user->flags & F_BBS) == 0)
|
||||
{
|
||||
// Not Defined as a BBS
|
||||
|
||||
if(SetupNewBBS(user))
|
||||
if (SetupNewBBS(user))
|
||||
user->flags |= F_BBS;
|
||||
NeedSave = TRUE;
|
||||
}
|
||||
|
||||
// if forwarding AMPR mail make sure User/BBS AMPR exists
|
||||
|
||||
if (SendAMPRDirect)
|
||||
{
|
||||
BOOL NeedSave = FALSE;
|
||||
|
||||
user = LookupCall("AMPR");
|
||||
|
||||
if (user == NULL)
|
||||
{
|
||||
user = AllocateUserRecord("AMPR");
|
||||
user->Temp = zalloc(sizeof (struct TempUserInfo));
|
||||
NeedSave = TRUE;
|
||||
}
|
||||
|
||||
if ((user->flags & F_BBS) == 0)
|
||||
{
|
||||
// Not Defined as a BBS
|
||||
|
||||
if (SetupNewBBS(user))
|
||||
user->flags |= F_BBS;
|
||||
NeedSave = TRUE;
|
||||
}
|
||||
|
||||
if (NeedSave)
|
||||
SaveUserDatabase();
|
||||
}
|
||||
|
||||
|
||||
// Make sure SYSOPCALL is set
|
||||
|
||||
if (SYSOPCall[0] == 0)
|
||||
strcpy(SYSOPCall, BBSName);
|
||||
|
||||
// See if just want to add user (mainly for setup scripts)
|
||||
|
||||
if (argc == 5 && _stricmp(argv[1], "--adduser") == 0)
|
||||
{
|
||||
BOOL isBBS = FALSE;
|
||||
char * response;
|
||||
|
||||
if (_stricmp(argv[4], "TRUE") == 0)
|
||||
isBBS = TRUE;
|
||||
|
||||
printf("Adding User %s\r\n", argv[2]);
|
||||
response = AddUser(argv[2], argv[3], isBBS);
|
||||
printf("%s", response);
|
||||
exit(0);
|
||||
}
|
||||
// Allocate Streams
|
||||
|
||||
strcpy(pgm, "BBS");
|
||||
|
||||
for (i=0; i < MaxStreams; i++)
|
||||
{
|
||||
conn = &Connections[i];
|
||||
conn->BPQStream = FindFreeStream();
|
||||
|
||||
if (conn->BPQStream == 255) break;
|
||||
|
||||
NumberofStreams++;
|
||||
|
||||
// BPQSetHandle(conn->BPQStream, hWnd);
|
||||
|
||||
SetAppl(conn->BPQStream, (i == 0 && EnableUI) ? 0x82 : 2, BBSApplMask);
|
||||
Disconnect(conn->BPQStream);
|
||||
}
|
||||
|
||||
strcpy(pgm, "LINBPQ");
|
||||
|
||||
InitialiseTCP();
|
||||
InitialiseNNTP();
|
||||
|
||||
SetupListenSet(); // Master set of listening sockets
|
||||
|
||||
if (EnableUI || MailForInterval)
|
||||
SetupUIInterface();
|
||||
|
||||
if (MailForInterval)
|
||||
_beginthread(SendMailForThread, 0, 0);
|
||||
|
||||
|
||||
// Calulate time to run Housekeeping
|
||||
{
|
||||
struct tm *tm;
|
||||
time_t now;
|
||||
|
||||
now = time(NULL);
|
||||
|
||||
tm = gmtime(&now);
|
||||
|
||||
tm->tm_hour = MaintTime / 100;
|
||||
tm->tm_min = MaintTime % 100;
|
||||
tm->tm_sec = 0;
|
||||
|
||||
MaintClock = mktime(tm) - (time_t)_MYTIMEZONE;
|
||||
|
||||
while (MaintClock < now)
|
||||
MaintClock += MaintInterval * 3600;
|
||||
|
||||
Debugprintf("Maint Clock %lld NOW %lld Time to HouseKeeping %lld", (long long)MaintClock, (long long)now, (long long)(MaintClock - now));
|
||||
|
||||
if (LastHouseKeepingTime)
|
||||
{
|
||||
if ((now - LastHouseKeepingTime) > MaintInterval * 3600)
|
||||
{
|
||||
DoHouseKeeping(FALSE);
|
||||
}
|
||||
}
|
||||
for (i = optind; i < argc; i++)
|
||||
|
||||
{
|
||||
if (_stricmp(argv[i], "tidymail") == 0)
|
||||
DeleteRedundantMessages();
|
||||
|
||||
if (_stricmp(argv[i], "nohomebbs") == 0)
|
||||
DontNeedHomeBBS = TRUE;
|
||||
}
|
||||
|
||||
printf("Mail Started\n");
|
||||
Logprintf(LOG_BBS, NULL, '!', "Mail Starting");
|
||||
|
||||
APIClock = 0;
|
||||
|
||||
SendBBSDataToPktMap();
|
||||
|
||||
}
|
||||
if (NeedSave)
|
||||
SaveUserDatabase();
|
||||
}
|
||||
|
||||
|
||||
// Make sure SYSOPCALL is set
|
||||
|
||||
if (SYSOPCall[0] == 0)
|
||||
strcpy(SYSOPCall, BBSName);
|
||||
|
||||
// See if just want to add user (mainly for setup scripts)
|
||||
|
||||
if (argc == 5 && _stricmp(argv[1], "--adduser") == 0)
|
||||
{
|
||||
BOOL isBBS = FALSE;
|
||||
char * response;
|
||||
|
||||
if (_stricmp(argv[4], "TRUE") == 0)
|
||||
isBBS = TRUE;
|
||||
|
||||
printf("Adding User %s\r\n", argv[2]);
|
||||
response = AddUser(argv[2], argv[3], isBBS);
|
||||
printf("%s", response);
|
||||
exit(0);
|
||||
}
|
||||
// Allocate Streams
|
||||
|
||||
strcpy(pgm, "BBS");
|
||||
|
||||
for (i=0; i < MaxStreams; i++)
|
||||
{
|
||||
conn = &Connections[i];
|
||||
conn->BPQStream = FindFreeStream();
|
||||
|
||||
if (conn->BPQStream == 255) break;
|
||||
|
||||
NumberofStreams++;
|
||||
|
||||
// BPQSetHandle(conn->BPQStream, hWnd);
|
||||
|
||||
SetAppl(conn->BPQStream, (i == 0 && EnableUI) ? 0x82 : 2, BBSApplMask);
|
||||
Disconnect(conn->BPQStream);
|
||||
}
|
||||
|
||||
strcpy(pgm, "LINBPQ");
|
||||
|
||||
Debugprintf("POP3 Debug Before Init TCP Timer = %d", POP3Timer);
|
||||
|
||||
InitialiseTCP();
|
||||
Debugprintf("POP3 Debug Before Init NNTP Timer = %d", POP3Timer);
|
||||
InitialiseNNTP();
|
||||
|
||||
SetupListenSet(); // Master set of listening sockets
|
||||
|
||||
if (EnableUI || MailForInterval)
|
||||
SetupUIInterface();
|
||||
|
||||
if (MailForInterval)
|
||||
_beginthread(SendMailForThread, 0, 0);
|
||||
|
||||
|
||||
// Calulate time to run Housekeeping
|
||||
{
|
||||
struct tm *tm;
|
||||
time_t now;
|
||||
|
||||
now = time(NULL);
|
||||
|
||||
tm = gmtime(&now);
|
||||
|
||||
tm->tm_hour = MaintTime / 100;
|
||||
tm->tm_min = MaintTime % 100;
|
||||
tm->tm_sec = 0;
|
||||
|
||||
MaintClock = mktime(tm) - (time_t)_MYTIMEZONE;
|
||||
|
||||
while (MaintClock < now)
|
||||
MaintClock += MaintInterval * 3600;
|
||||
|
||||
Debugprintf("Maint Clock %lld NOW %lld Time to HouseKeeping %lld", (long long)MaintClock, (long long)now, (long long)(MaintClock - now));
|
||||
|
||||
if (LastHouseKeepingTime)
|
||||
{
|
||||
if ((now - LastHouseKeepingTime) > MaintInterval * 3600)
|
||||
{
|
||||
DoHouseKeeping(FALSE);
|
||||
}
|
||||
}
|
||||
for (i = optind; i < argc; i++)
|
||||
{
|
||||
if (_stricmp(argv[i], "tidymail") == 0)
|
||||
DeleteRedundantMessages();
|
||||
|
||||
if (_stricmp(argv[i], "nohomebbs") == 0)
|
||||
DontNeedHomeBBS = TRUE;
|
||||
}
|
||||
|
||||
printf("Mail Started\n");
|
||||
Logprintf(LOG_BBS, NULL, '!', "Mail Starting");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Debugprintf("POP3 Debug After Mail Init Timer = %d", POP3Timer);
|
||||
|
||||
if (NUMBEROFTNCPORTS)
|
||||
InitializeTNCEmulator();
|
||||
|
||||
AGWActive = AGWAPIInit();
|
||||
|
||||
if (Redirected == 0)
|
||||
ConTerm.BPQStream = FindFreeStream();
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
|
@ -1587,7 +1528,6 @@ int main(int argc, char * argv[])
|
|||
Poll_AGW();
|
||||
|
||||
DRATSPoll();
|
||||
RHPPoll();
|
||||
|
||||
HTTPTimer();
|
||||
|
||||
|
@ -1639,13 +1579,6 @@ int main(int argc, char * argv[])
|
|||
DoHouseKeeping(FALSE);
|
||||
}
|
||||
|
||||
if (APIClock < NOW)
|
||||
{
|
||||
SendBBSDataToPktMap();
|
||||
APIClock = NOW + 7200; // Every 2 hours
|
||||
}
|
||||
|
||||
|
||||
tm = gmtime(&NOW);
|
||||
|
||||
if (tm->tm_wday == 0) // Sunday
|
||||
|
|
|
@ -23,8 +23,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#include "bpqmail.h"
|
||||
|
||||
void SendMessageReadEvent(char * call, struct MsgInfo * Msg);
|
||||
void MQTTMessageEvent(void* message);
|
||||
void SendMessageReadEvent(struct UserInfo * user, struct MsgInfo * Msg);
|
||||
|
||||
|
||||
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
|
||||
|
||||
#ifndef NOMQTT
|
||||
if (MQTT)
|
||||
MQTTMessageEvent(conn->FwdMsg);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -289,7 +282,7 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l
|
|||
{
|
||||
// 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)
|
||||
{
|
||||
|
@ -307,11 +300,6 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l
|
|||
|
||||
conn->FwdMsg->Locked = 0; // Unlock
|
||||
|
||||
#ifndef NOMQTT
|
||||
if (MQTT)
|
||||
MQTTMessageEvent(conn->FwdMsg);
|
||||
#endif
|
||||
|
||||
conn->UserPointer->ForwardingInfo->MsgCount--;
|
||||
}
|
||||
|
||||
|
@ -366,11 +354,6 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l
|
|||
conn->FwdMsg->datechanged=time(NULL);
|
||||
}
|
||||
|
||||
#ifndef NOMQTT
|
||||
if (MQTT)
|
||||
MQTTMessageEvent(conn->FwdMsg);
|
||||
#endif
|
||||
|
||||
conn->UserPointer->ForwardingInfo->MsgCount--;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
23
MULTIPSK.c
23
MULTIPSK.c
|
@ -28,7 +28,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define _CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
|
@ -60,7 +60,7 @@ static void ConnecttoMPSKThread(void * portptr);
|
|||
void CreateMHWindow();
|
||||
int Update_MH_List(struct in_addr ipad, char * call, char proto);
|
||||
|
||||
static int ConnecttoMPSK(int port);
|
||||
static int ConnecttoMPSK();
|
||||
static int ProcessReceivedData(int bpqport);
|
||||
static int ProcessLine(char * buf, int Port);
|
||||
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);
|
||||
VOID SendRPBeacon(struct TNCINFO * TNC);
|
||||
|
||||
char * strlop(char * buf, char delim);
|
||||
|
||||
extern UCHAR BPQDirectory[];
|
||||
|
||||
#define MAXMPSKPORTS 16
|
||||
|
@ -407,10 +409,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff)
|
|||
|
||||
if (_memicmp(buff->L2DATA, "RADIO ", 6) == 0)
|
||||
{
|
||||
char cmd[56];
|
||||
|
||||
strcpy(cmd, &buff->L2DATA[6]);
|
||||
sprintf(buff->L2DATA, "%d %s", TNC->Port, cmd);
|
||||
sprintf(buff->L2DATA, "%d %s", TNC->Port, &buff->L2DATA[6]);
|
||||
|
||||
if (Rig_Command(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4CROSSLINK, buff->L2DATA))
|
||||
{
|
||||
|
@ -713,7 +712,7 @@ void * MPSKExtInit(EXTPORTDATA * PortEntry)
|
|||
ptr=strchr(TNC->NodeCall, ' ');
|
||||
if (ptr) *(ptr) = 0; // Null Terminate
|
||||
|
||||
TNC->PortRecord->PORTCONTROL.HWType = TNC->Hardware = H_MPSK;
|
||||
TNC->Hardware = H_MPSK;
|
||||
|
||||
MPSKChannel[port] = PortEntry->PORTCONTROL.CHANNELNUM-65;
|
||||
|
||||
|
@ -1318,7 +1317,7 @@ VOID ProcessMSPKData(struct TNCINFO * TNC)
|
|||
|
||||
C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr);
|
||||
|
||||
STREAM->bytesRXed += TNC->DataLen;
|
||||
STREAM->BytesRXed += TNC->DataLen;
|
||||
}
|
||||
|
||||
TNC->DataLen = 0;
|
||||
|
@ -1388,7 +1387,7 @@ DataLoop:
|
|||
STREAM->Connected = TRUE;
|
||||
STREAM->Connecting = FALSE;
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
STREAM->bytesRXed = STREAM->bytesTXed = 0;
|
||||
STREAM->BytesRXed = STREAM->BytesTXed = 0;
|
||||
|
||||
buffptr = GetBuff();
|
||||
if (buffptr)
|
||||
|
@ -1403,7 +1402,7 @@ DataLoop:
|
|||
|
||||
STREAM->Connected = TRUE;
|
||||
STREAM->ConnectTime = time(NULL);
|
||||
STREAM->bytesRXed = STREAM->bytesTXed = 0;
|
||||
STREAM->BytesRXed = STREAM->BytesTXed = 0;
|
||||
|
||||
UpdateMH(TNC, CallFrom, '+', 'I');
|
||||
|
||||
|
@ -1484,7 +1483,7 @@ VOID SendData(struct TNCINFO * TNC, char * Msg, int MsgLen)
|
|||
char * inptr = Msg;
|
||||
SOCKET sock = TNCInfo[MasterPort[TNC->Port]]->TCPSock;
|
||||
|
||||
TNC->Streams[0].bytesTXed += MsgLen;
|
||||
TNC->Streams[0].BytesTXed += MsgLen;
|
||||
|
||||
for (n = 0; n < MsgLen; n++)
|
||||
{
|
||||
|
@ -1542,7 +1541,7 @@ VOID CloseComplete(struct TNCINFO * TNC, int Stream)
|
|||
sprintf(Cmd, "%cDIGITAL MODE %s\x1b", '\x1a', TNC->MPSKInfo->DefaultMode);
|
||||
|
||||
if (TNC->MPSKInfo->Beacon)
|
||||
sprintf(&Cmd[strlen(Cmd)], "%cBEACON_ARQ_FAE\x1b", '\x1a');
|
||||
sprintf(Cmd, "%s%cBEACON_ARQ_FAE\x1b", Cmd, '\x1a');
|
||||
|
||||
Len = strlen(Cmd);
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -43,7 +43,6 @@ struct SEM AllocSemaphore = {0, 0};
|
|||
struct SEM ConSemaphore = {0, 0};
|
||||
struct SEM Semaphore = {0, 0};
|
||||
struct SEM OutputSEM = {0, 0};
|
||||
struct SEM ConfigSEM = {0, 0};
|
||||
|
||||
struct UserInfo ** UserRecPtr=NULL;
|
||||
int NumberofUsers=0;
|
||||
|
@ -133,7 +132,7 @@ char HRoute[100];
|
|||
char AMPRDomain[100];
|
||||
BOOL SendAMPRDirect = 0;
|
||||
|
||||
char SignoffMsg[120];
|
||||
char SignoffMsg[100];
|
||||
|
||||
char AbortedMsg[100]="\rOutput aborted\r";
|
||||
|
||||
|
@ -205,7 +204,6 @@ int MailForInterval = 0;
|
|||
char zeros[NBMASK]; // For forward bitmask tests
|
||||
|
||||
time_t MaintClock; // Time to run housekeeping
|
||||
time_t APIClock; // Time to sent to MOLTE's Database
|
||||
|
||||
struct MsgInfo * MsgnotoMsg[100000]; // Message Number to Message Slot List.
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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="c:\linbpq"
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor="0"
|
||||
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="NOTTSDESKTOP"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LocalDebuggerCommand>c:\linbpq\linbpq.exe</LocalDebuggerCommand>
|
||||
<LocalDebuggerWorkingDirectory>c:\linbpq</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
</Project>
|
1207
MailRouting.c
1207
MailRouting.c
File diff suppressed because it is too large
Load Diff
10
MailTCP.c
10
MailTCP.c
|
@ -1570,12 +1570,12 @@ VOID ProcessSMTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
|||
if (CheckifLocalRMSUser(Addr)) // if local RMS - Leave Here
|
||||
continue;
|
||||
|
||||
ToLen = sprintf(&ToString[strlen(ToString)], "To: %s\r\n", &Addr[4]);
|
||||
ToLen = sprintf(ToString, "%sTo: %s\r\n", ToString, &Addr[4]);
|
||||
*sockptr->RecpTo[i] = 0; // So we dont create individual one later
|
||||
continue;
|
||||
}
|
||||
|
||||
ToLen = sprintf(&ToString[strlen(ToString)], "To: %s@%s\r\n", &Addr[4], Via);
|
||||
ToLen = sprintf(ToString, "%sTo: %s@%s\r\n", ToString, &Addr[4], Via);
|
||||
*sockptr->RecpTo[i] = 0; // So we dont create individual one later
|
||||
continue;
|
||||
}
|
||||
|
@ -1591,7 +1591,7 @@ VOID ProcessSMTPServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
|||
if (CheckifLocalRMSUser(Addr)) // if local RMS - Leave Here
|
||||
continue;
|
||||
|
||||
ToLen = sprintf(&ToString[strlen(ToString)], "To: %s\r\n", Addr);
|
||||
ToLen = sprintf(ToString, "%sTo: %s\r\n", ToString, Addr);
|
||||
*sockptr->RecpTo[i] = 0; // So we dont create individual one later
|
||||
|
||||
continue;
|
||||
|
@ -2656,7 +2656,6 @@ VOID ProcessPOP3ServerMessage(SocketConn * sockptr, char * Buffer, int Len)
|
|||
// Must be some other coding
|
||||
|
||||
int code = TrytoGuessCode(msgbytes, Len);
|
||||
|
||||
UCHAR * UTF = malloc(Len * 3);
|
||||
|
||||
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_port = 0;
|
||||
|
||||
sockptr->Timeout = 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++)
|
||||
{
|
||||
sockprintf(sockptr, "RETR %d", sockptr->POP3MsgNum);
|
||||
|
||||
sockptr->State = WaitingForRETRResponse;
|
||||
}
|
||||
else
|
||||
|
|
28
Moncode.c
28
Moncode.c
|
@ -31,7 +31,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#pragma data_seg("_BPQDATA")
|
||||
|
||||
#include "cheaders.h"
|
||||
#include "CHeaders.h"
|
||||
#include "tncinfo.h"
|
||||
|
||||
// MSGFLAG contains CMD/RESPONSE BITS
|
||||
|
@ -59,6 +59,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
#define NODES_SIG 0xFF
|
||||
|
||||
char * strlop(char * buf, char delim);
|
||||
UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, unsigned int msglen);
|
||||
|
||||
char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen);
|
||||
|
@ -194,9 +195,6 @@ KC6OAR*>ID:
|
|||
// Check Port
|
||||
|
||||
Port = msg->PORT;
|
||||
|
||||
if (Port == 40)
|
||||
Port = Port;
|
||||
|
||||
if (Port & 0x80)
|
||||
{
|
||||
|
@ -209,12 +207,7 @@ KC6OAR*>ID:
|
|||
Port &= 0x7F;
|
||||
|
||||
if ((((uint64_t)1 << (Port - 1)) & Mask) == 0) // Check MMASK
|
||||
{
|
||||
if (msg->Padding[0] == '[')
|
||||
msg->Padding[0] = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// We now pass Text format monitoring from non-ax25 drivers through this code
|
||||
|
@ -257,8 +250,10 @@ KC6OAR*>ID:
|
|||
ptr += 7;
|
||||
n--;
|
||||
|
||||
if (n < 0)
|
||||
if (n == 0)
|
||||
{
|
||||
return 0; // Corrupt - no end of address bit
|
||||
}
|
||||
}
|
||||
|
||||
// Reached End of digis
|
||||
|
@ -539,12 +534,6 @@ KC6OAR*>ID:
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (msg->Padding[0] == '[')
|
||||
Output += sprintf((char *)Output, " %s", msg->Padding);
|
||||
|
||||
msg->Padding[0] = 0;
|
||||
|
||||
if (Info)
|
||||
{
|
||||
// We have an info frame
|
||||
|
@ -728,10 +717,6 @@ char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen)
|
|||
|
||||
return Output + sprintf((char *)Output, " <DISC ACK>");
|
||||
|
||||
case L4RESET:
|
||||
|
||||
return Output + sprintf((char *)Output, " <RESET>");
|
||||
|
||||
case L4INFO:
|
||||
{
|
||||
char Infofield[257];
|
||||
|
@ -750,9 +735,6 @@ char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen)
|
|||
if (Flags & L4MORE)
|
||||
*(Output++) = 'M';
|
||||
|
||||
if (Flags & L4COMP)
|
||||
*(Output++) = 'C';
|
||||
|
||||
MsgLen = MsgLen - (19 + sizeof(void *));
|
||||
|
||||
if (MsgLen < 0 || MsgLen > 257)
|
||||
|
|
16
Multicast.c
16
Multicast.c
|
@ -612,16 +612,16 @@ struct MSESSION * FindMSession(unsigned int Key)
|
|||
|
||||
#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 inprops[LZMA_PROPS_SIZE];
|
||||
size_t inlen;
|
||||
int r;
|
||||
|
||||
size_t rlen = 0;
|
||||
size_t outlen;
|
||||
|
||||
UINT rlen;
|
||||
UINT outlen;
|
||||
|
||||
memcpy(&rlen, &Decoded[5], 4);
|
||||
|
||||
outlen = ntohl(rlen);
|
||||
|
@ -668,8 +668,8 @@ void SaveMulticastMessage(struct MSESSION * MSession)
|
|||
{
|
||||
UCHAR * Decoded = NULL; // Output from Basexxx decode
|
||||
UCHAR * Uncompressed = NULL;
|
||||
size_t DecodedLen; // Length of decoded message
|
||||
size_t UncompressedLen; // Length of decompressed message
|
||||
int DecodedLen; // Length of decoded message
|
||||
int UncompressedLen; // Length of decompressed message
|
||||
int ExpectedLen; // From front of Base128 or Base256 message
|
||||
int HddrLen; // Length of Expected Len Header
|
||||
|
||||
|
@ -1612,7 +1612,7 @@ int MulticastStatusHTML(char * Reply)
|
|||
if (Sess ==NULL)
|
||||
return 0;
|
||||
|
||||
Len = sprintf(Reply, "%s", StatusPage);
|
||||
Len = sprintf(Reply, StatusPage);
|
||||
|
||||
while (Sess)
|
||||
{
|
||||
|
@ -1670,7 +1670,7 @@ int MulticastStatusHTML(char * Reply)
|
|||
Sess = Sess->Next;
|
||||
}
|
||||
|
||||
Len += sprintf(&Reply[Len], "%s", StatusTail);
|
||||
Len += sprintf(&Reply[Len], StatusTail);
|
||||
|
||||
return Len;
|
||||
}
|
||||
|
|
|
@ -25,10 +25,6 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
|
|||
|
||||
VOID __cdecl Debugprintf(const char * format, ...);
|
||||
VOID ReleaseSock(SOCKET sock);
|
||||
void MQTTMessageEvent(void* message);
|
||||
|
||||
#define GetSemaphore(Semaphore,ID) _GetSemaphore(Semaphore, ID, __FILE__, __LINE__)
|
||||
void _GetSemaphore(struct SEM * Semaphore, int ID, char * File, int Line);
|
||||
|
||||
struct NNTPRec * FirstNNTPRec = NULL;
|
||||
|
||||
|
@ -356,12 +352,6 @@ int CreateNNTPMessage(char * From, char * To, char * MsgTitle, time_t Date, char
|
|||
|
||||
BuildNNTPList(Msg); // Build NNTP Groups list
|
||||
|
||||
#ifndef NOMQTT
|
||||
if (MQTT)
|
||||
MQTTMessageEvent(Msg);
|
||||
#endif
|
||||
|
||||
|
||||
return CreateSMTPMessageFile(MsgBody, Msg);
|
||||
|
||||
}
|
||||
|
|
|
@ -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>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue