Update upstream source from tag 'upstream/6.0.24.30'

Update to upstream version '6.0.24.30'
with Debian dir 4f7e13431e
This commit is contained in:
Hibby 2024-02-23 21:36:42 +00:00
commit 5b1c61bd78
9 changed files with 382 additions and 167 deletions

View File

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

View File

@ -1127,6 +1127,8 @@
// Start adding json api (25) // Start adding json api (25)
// Fix reading nested directories when loading Standard Templates and other template bugs (25) // Fix reading nested directories when loading Standard Templates and other template bugs (25)
// Add TO and AT to "Message has nowhere to go" message (28) // Add TO and AT to "Message has nowhere to go" message (28)
// Add My Sent and My Received filter options to Webmail (30)
// Add Send P to multiple BBS's when routing on HR (30)
#include "bpqmail.h" #include "bpqmail.h"
#include "winstdint.h" #include "winstdint.h"

View File

@ -37,7 +37,7 @@
Name="Release|Win32" Name="Release|Win32"
> >
<DebugSettings <DebugSettings
Command="" Command="C:\Devprogs\BPQ32\bpq32.exe"
WorkingDirectory="" WorkingDirectory=""
CommandArguments="" CommandArguments=""
Attach="false" Attach="false"

View File

@ -1398,6 +1398,7 @@ NOHA:
int bestmatch = 0; int bestmatch = 0;
int depth; int depth;
int Matched = 0; int Matched = 0;
int MultiPDepth = 0;
for (bbs = BBSChain; bbs; bbs = bbs->BBSNext) for (bbs = BBSChain; bbs; bbs = bbs->BBSNext)
{ {
@ -1467,7 +1468,49 @@ NOHA:
} }
// We should choose the BBS with most matching elements (ie match on #23.GBR better that GBR) // We should choose the BBS with most matching elements (ie match on #23.GBR better that GBR)
// If SendPtoMultiple is set I think we send to any with same mtch level // If SendPtoMultiple is set I think we send to any with same match level
// So if SendPtoMultiple is set I think I need to find the best depth then send to all with the same depth
if (SendPtoMultiple && Msg->type == 'P')
{
Logprintf(LOG_BBS, conn, '?', "SendPtoMultiple is set. Checking for best match level");
for (bbs = BBSChain; bbs; bbs = bbs->BBSNext)
{
ForwardingInfo = bbs->ForwardingInfo;
depth = CheckBBSHElements(Msg, bbs, ForwardingInfo, ATBBS, &HElements[0]);
if (depth)
{
if (depth > MultiPDepth)
{
MultiPDepth = depth;
bestbbs = bbs;
}
}
if (MultiPDepth)
{
for (bbs = BBSChain; bbs; bbs = bbs->BBSNext)
{
ForwardingInfo = bbs->ForwardingInfo;
depth = CheckBBSHElements(Msg, bbs, ForwardingInfo, ATBBS, &HElements[0]);
if (depth == MultiPDepth)
{
Logprintf(LOG_BBS, conn, '?', "Routing Trace HR Matches BBS %s Depth %d", bbs->Call, depth);
CheckAndSend(Msg, conn, bbs);
}
}
return 1;
}
}
}
for (bbs = BBSChain; bbs; bbs = bbs->BBSNext) for (bbs = BBSChain; bbs; bbs = bbs->BBSNext)
{ {
@ -1500,8 +1543,8 @@ NOHA:
// Check for wildcarded AT address // Check for wildcarded AT address
// if (ATBBS[0] == 0) // if (ATBBS[0] == 0)
// return FALSE; // no AT // return FALSE; // no AT
CheckWildCardedAT: CheckWildCardedAT:
@ -1601,10 +1644,10 @@ CheckWildCardedAT:
Logprintf(LOG_BBS, conn, '?', "Routing Trace - No Match"); Logprintf(LOG_BBS, conn, '?', "Routing Trace - No Match");
return Count; return Count;
} }
BOOL CheckBBSToList(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSForwardingInfo * ForwardingInfo) BOOL CheckBBSToList(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSForwardingInfo * ForwardingInfo)
{ {
char ** Calls; char ** Calls;
// Check TO distributions // Check TO distributions
@ -1622,16 +1665,16 @@ BOOL CheckBBSToList(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSForwa
} }
} }
return FALSE; return FALSE;
} }
BOOL CheckBBSAtList(struct MsgInfo * Msg, struct BBSForwardingInfo * ForwardingInfo, char * ATBBS) BOOL CheckBBSAtList(struct MsgInfo * Msg, struct BBSForwardingInfo * ForwardingInfo, char * ATBBS)
{ {
char ** Calls; char ** Calls;
// Check AT distributions // Check AT distributions
// if (strcmp(ATBBS, bbs->Call) == 0) // @BBS = BBS // if (strcmp(ATBBS, bbs->Call) == 0) // @BBS = BBS
// return TRUE; // return TRUE;
if (ForwardingInfo->ATCalls) if (ForwardingInfo->ATCalls)
{ {
@ -1646,10 +1689,10 @@ BOOL CheckBBSAtList(struct MsgInfo * Msg, struct BBSForwardingInfo * ForwardingI
} }
} }
return FALSE; return FALSE;
} }
int CheckBBSHElements(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSForwardingInfo * ForwardingInfo, char * ATBBS, char ** HElements) int CheckBBSHElements(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSForwardingInfo * ForwardingInfo, char * ATBBS, char ** HElements)
{ {
// Used for Personal Messages, and Bulls not yot at their target area // Used for Personal Messages, and Bulls not yot at their target area
char *** HRoutes; char *** HRoutes;
@ -1686,11 +1729,11 @@ int CheckBBSHElements(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSFor
} }
} }
return bestmatch; return bestmatch;
} }
int CheckBBSHElementsFlood(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSForwardingInfo * ForwardingInfo, char * ATBBS, char ** HElements) int CheckBBSHElementsFlood(struct MsgInfo * Msg, struct UserInfo * bbs, struct BBSForwardingInfo * ForwardingInfo, char * ATBBS, char ** HElements)
{ {
char *** HRoutes; char *** HRoutes;
char ** BBSHA; char ** BBSHA;

View File

@ -10,8 +10,8 @@
#endif #endif
#define KVers 6,0,24,29 #define KVers 6,0,24,30
#define KVerstring "6.0.24.29\0" #define KVerstring "6.0.24.30\0"
#ifdef CKernel #ifdef CKernel

105
WebMail.c
View File

@ -928,6 +928,22 @@ int SendWebMailHeaderEx(char * Reply, char * Key, struct HTTPConnectionInfo * Se
continue; continue;
} }
if (Session->WebMailMyTX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->from) != 0)
continue;
}
if (Session->WebMailMyRX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->to)!= 0)
continue;
}
if (Count++ < Session->WebMailSkip) if (Count++ < Session->WebMailSkip)
continue; continue;
@ -959,7 +975,7 @@ int SendWebMailHeaderEx(char * Reply, char * Key, struct HTTPConnectionInfo * Se
if (WebMailTemplate == NULL) if (WebMailTemplate == NULL)
WebMailTemplate = GetTemplateFromFile(6, "WebMailPage.txt"); WebMailTemplate = GetTemplateFromFile(6, "WebMailPage.txt");
return sprintf(Reply, WebMailTemplate, BBSName, User->Call, Key, Key, Key, Key, Key, Key, Key, Key, Messages); return sprintf(Reply, WebMailTemplate, BBSName, User->Call, Key, Key, Key, Key, Key, Key, Key, Key, Key, Key, Messages);
} }
int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Number, BOOL DisplayHTML) int ViewWebMailMessage(struct HTTPConnectionInfo * Session, char * Reply, int Number, BOOL DisplayHTML)
@ -1617,6 +1633,8 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
Session->WebMailLastUsed = time(NULL); Session->WebMailLastUsed = time(NULL);
Session->WebMailSkip = 0; Session->WebMailSkip = 0;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = FALSE;
Session->WebMailMine = FALSE; Session->WebMailMine = FALSE;
if (WebMailTemplate) if (WebMailTemplate)
@ -1759,6 +1777,8 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
Session->WebMailSkip = 0; Session->WebMailSkip = 0;
Session->WebMailMine = FALSE; Session->WebMailMine = FALSE;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = FALSE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session); *RLen = SendWebMailHeader(Reply, Session->Key, Session);
return; return;
@ -1769,6 +1789,8 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
Session->WebMailSkip = 0; Session->WebMailSkip = 0;
Session->WebMailTypes[0] = 0; Session->WebMailTypes[0] = 0;
Session->WebMailMine = FALSE; Session->WebMailMine = FALSE;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = FALSE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session); *RLen = SendWebMailHeader(Reply, Session->Key, Session);
return; return;
@ -1779,6 +1801,8 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
Session->WebMailSkip = 0; Session->WebMailSkip = 0;
strcpy(Session->WebMailTypes, "B"); strcpy(Session->WebMailTypes, "B");
Session->WebMailMine = FALSE; Session->WebMailMine = FALSE;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = FALSE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session); *RLen = SendWebMailHeader(Reply, Session->Key, Session);
return; return;
@ -1789,6 +1813,8 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
Session->WebMailSkip = 0; Session->WebMailSkip = 0;
strcpy(Session->WebMailTypes, "P"); strcpy(Session->WebMailTypes, "P");
Session->WebMailMine = FALSE; Session->WebMailMine = FALSE;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = FALSE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session); *RLen = SendWebMailHeader(Reply, Session->Key, Session);
return; return;
@ -1799,6 +1825,8 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
Session->WebMailSkip = 0; Session->WebMailSkip = 0;
strcpy(Session->WebMailTypes, "T"); strcpy(Session->WebMailTypes, "T");
Session->WebMailMine = FALSE; Session->WebMailMine = FALSE;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = FALSE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session); *RLen = SendWebMailHeader(Reply, Session->Key, Session);
return; return;
@ -1809,6 +1837,32 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
Session->WebMailSkip = 0; Session->WebMailSkip = 0;
Session->WebMailTypes[0] = 0; Session->WebMailTypes[0] = 0;
Session->WebMailMine = TRUE; Session->WebMailMine = TRUE;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = FALSE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session);
return;
}
if (_stricmp(NodeURL, "/WebMail/WMtoMe") == 0)
{
Session->WebMailSkip = 0;
Session->WebMailTypes[0] = 0;
Session->WebMailMine = FALSE;
Session->WebMailMyTX = FALSE;
Session->WebMailMyRX = TRUE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session);
return;
}
if (_stricmp(NodeURL, "/WebMail/WMfromMe") == 0)
{
Session->WebMailSkip = 0;
Session->WebMailTypes[0] = 0;
Session->WebMailMine = TRUE;
Session->WebMailMyTX = TRUE;
Session->WebMailMyRX = FALSE;
*RLen = SendWebMailHeader(Reply, Session->Key, Session); *RLen = SendWebMailHeader(Reply, Session->Key, Session);
return; return;
@ -1897,6 +1951,8 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
"<td><a href=/WebMail/WMT?%s>NTS</a></td>\r\n" "<td><a href=/WebMail/WMT?%s>NTS</a></td>\r\n"
"<td><a href=/WebMail/WMALL?%s>All Types</a></td>\r\n" "<td><a href=/WebMail/WMALL?%s>All Types</a></td>\r\n"
"<td><a href=/WebMail/WMMine?%s>Mine</a></td>\r\n" "<td><a href=/WebMail/WMMine?%s>Mine</a></td>\r\n"
"<td><a href=/WebMail/WMfromMe?%s>My Sent</a></td>\r\n"
"<td><a href=/WebMail/WMtoMe?%s>My Rxed</a></td>\r\n"
"<td><a href=/WebMail/WMAuto?%s>Auto Refresh</a></td>\r\n" "<td><a href=/WebMail/WMAuto?%s>Auto Refresh</a></td>\r\n"
"<td><a href=\"#\" onclick=\"newmsg('%s'); return false;\">Send Message</a></td>\r\n" "<td><a href=\"#\" onclick=\"newmsg('%s'); return false;\">Send Message</a></td>\r\n"
"<td><a href=/WebMail/WMLogout?%s>Logout</a></td>\r\n" "<td><a href=/WebMail/WMLogout?%s>Logout</a></td>\r\n"
@ -1906,7 +1962,7 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
"<div align=left id=main style=overflow:scroll;>Waiting for data...</div>\r\n" "<div align=left id=main style=overflow:scroll;>Waiting for data...</div>\r\n"
"</body></html>\r\n"; "</body></html>\r\n";
sprintf(Page, WebSockPage, Key, Key ,BBSName, Session->User->Call, Key, Key, Key, Key, Key, Key, Key, Key); sprintf(Page, WebSockPage, Key, Key ,BBSName, Session->User->Call, Key, Key, Key, Key, Key, Key, Key, Key, Key, Key);
*RLen = sprintf(Reply, "%s", Page); *RLen = sprintf(Reply, "%s", Page);
return; return;
@ -2099,6 +2155,21 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
continue; continue;
} }
if (Session->WebMailMyTX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->from) != 0)
continue;
}
if (Session->WebMailMyRX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->to) != 0)
continue;
}
*RLen = ViewWebMailMessage(Session, Reply, m, TRUE); *RLen = ViewWebMailMessage(Session, Reply, m, TRUE);
return; return;
@ -2144,6 +2215,21 @@ void ProcessWebMailMessage(struct HTTPConnectionInfo * Session, char * Key, BOOL
continue; continue;
} }
if (Session->WebMailMyTX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->from) != 0)
continue;
}
if (Session->WebMailMyRX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->to) != 0)
continue;
}
*RLen = ViewWebMailMessage(Session, Reply, m, TRUE); *RLen = ViewWebMailMessage(Session, Reply, m, TRUE);
return; return;
@ -6181,6 +6267,21 @@ int ProcessWebmailWebSock(char * MsgPtr, char * OutBuffer)
continue; continue;
} }
if (Session->WebMailMyTX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->from) != 0)
continue;
}
if (Session->WebMailMyRX)
{
// Only list if to or from me
if (strcmp(User->Call, Msg->to) != 0)
continue;
}
if (Count++ < Session->WebMailSkip) if (Count++ < Session->WebMailSkip)
continue; continue;

View File

@ -38,6 +38,8 @@ struct HTTPConnectionInfo // Used for Web Server for thread-specific stuff
int WebMailSkip; // Number to skip at start of list (for paging) int WebMailSkip; // Number to skip at start of list (for paging)
char WebMailTypes[4]; // Types To List char WebMailTypes[4]; // Types To List
BOOL WebMailMine; // List all meessage to or from me BOOL WebMailMine; // List all meessage to or from me
BOOL WebMailMyTX; // List all meessage from me
BOOL WebMailMyRX; // List all meessage to me
time_t WebMailLastUsed; time_t WebMailLastUsed;
struct TNCINFO * TNC; // Session -> TNC link struct TNCINFO * TNC; // Session -> TNC link
}; };

View File

@ -395,6 +395,8 @@ char * WebMailPagetxt()
"<td><a href=/WebMail/WMT?%s>NTS</a></td>\r\n" "<td><a href=/WebMail/WMT?%s>NTS</a></td>\r\n"
"<td><a href=/WebMail/WMALL?%s>All Types</a></td>\r\n" "<td><a href=/WebMail/WMALL?%s>All Types</a></td>\r\n"
"<td><a href=/WebMail/WMMine?%s>Mine</a></td>\r\n" "<td><a href=/WebMail/WMMine?%s>Mine</a></td>\r\n"
"<td><a href=/WebMail/WMfromMe?%s>My Sent</a></td>\r\n"
"<td><a href=/WebMail/WMtoMe?%s>My Rxed</a></td>\r\n"
"<td><a href=/WebMail/WMAuto?%s>Auto Refresh</a></td>\r\n" "<td><a href=/WebMail/WMAuto?%s>Auto Refresh</a></td>\r\n"
"<td><a href=\"#\" onclick=\"newmsg('%s'); return false;\">Send Message</a></td>\r\n" "<td><a href=\"#\" onclick=\"newmsg('%s'); return false;\">Send Message</a></td>\r\n"
"<td><a href=/WebMail/WMLogout?%s>Logout</a></td>\r\n" "<td><a href=/WebMail/WMLogout?%s>Logout</a></td>\r\n"