From 34f44ed4af6062100e27ff21285a5d4fe27d4d0e Mon Sep 17 00:00:00 2001 From: John Wiseman Date: Mon, 2 Mar 2026 13:32:52 +0000 Subject: [PATCH] 6.0.25.22 --- AGWAPI.c | 24 +- BBSUtilities.c | 72 ++- BPQINP3.c | 303 +++++++------ BPQMail.aps | Bin 70556 -> 92748 bytes BPQMail.c | 6 +- BPQMail.rc | 1090 ++++++++++++++++++++++++++++---------------- BPQMail.rc.bak | 1183 ++++++++++++++++++++++++++++++++++++++++++++++++ Bpq32.c | 15 +- Cmd.c | 273 ++++++++++- CommonCode.c | 44 +- DOSAPI.c | 4 +- Events.c | 30 +- HTTPcode.c | 2 +- L2Code.c | 5 +- L3Code.c | 16 +- MBLRoutines.c | 2 +- Moncode.c | 22 +- NETROMTCP.c | 16 +- RHP.c | 64 ++- TelnetV6.c | 7 +- Versions.h | 22 +- asmstrucs.h | 7 +- cMain.c | 9 + nodeapi.c | 8 +- 24 files changed, 2627 insertions(+), 597 deletions(-) create mode 100644 BPQMail.rc.bak diff --git a/AGWAPI.c b/AGWAPI.c index 126a72a..f40ba4c 100644 --- a/AGWAPI.c +++ b/AGWAPI.c @@ -1329,18 +1329,18 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr) return 0; - case 'g': - - // Port capabilities. Currently hard-coded. - - AGWTXHeader.Port = sockptr->AGWRXHeader.Port; - AGWTXHeader.DataKind = 'g'; - AGWTXHeader.DataLength = 12; - - SendtoSocket(sockptr->socket, (char *)&AGWPortCaps[0]); - - return 0; - + case 'g': + + // Port capabilities. Currently hard-coded. + + AGWTXHeader.Port = sockptr->AGWRXHeader.Port; + AGWTXHeader.DataKind = 'g'; + AGWTXHeader.DataLength = 12; + + SendtoSocket(sockptr->socket, (char *)&AGWPortCaps[0]); + + return 0; + case 'k': diff --git a/BBSUtilities.c b/BBSUtilities.c index a6684d4..9fb8b58 100644 --- a/BBSUtilities.c +++ b/BBSUtilities.c @@ -5797,11 +5797,17 @@ VOID ProcessMsgTitle(ConnectionInfo * conn, struct UserInfo * user, char* Buffer VOID ProcessMsgLine(CIRCUIT * conn, struct UserInfo * user, char* Buffer, int msglen) { char * ptr2 = NULL; + int Index = 0; + int MsgHasCtrlZ = 0; + char * ptr; + + // AEA TNC sends 2f 45 1a 3e 0d (/ E > ) if the original message was input using /ex as terminator - if (((msglen < 3) && (Buffer[0] == 0x1a)) || ((msglen == 4) && (_memicmp(Buffer, "/ex", 3) == 0))) + + + if (((msglen < 4) && (Buffer[0] == 0x1a)) || ((msglen == 4) && (_memicmp(Buffer, "/ex", 3)) == 0) || memcmp(Buffer, "/E\0x1a>\0x0d", 5) || memcmp(Buffer, "/e\0x1a>\0x0d", 5)) { - int Index = 0; - +gotCtrlZ: if (conn->TempMsg->type == 'P') Index = PMSG; else if (conn->TempMsg->type == 'B') @@ -6112,6 +6118,19 @@ VOID ProcessMsgLine(CIRCUIT * conn, struct UserInfo * user, char* Buffer, int ms } + // AEA TNC dosn't always send ctrl/z at start of packet. + + Buffer[msglen] = 0; + + ptr = strchr(Buffer, 26); //Ctrl/Z + + if (ptr) + { + MsgHasCtrlZ =1; + *(ptr) = 13; // replace with CR + } + + Buffer[msglen++] = 0x0a; if ((conn->TempMsg->length + msglen) > conn->MailBufferSize) @@ -6131,6 +6150,10 @@ VOID ProcessMsgLine(CIRCUIT * conn, struct UserInfo * user, char* Buffer, int ms memcpy(&conn->MailBuffer[conn->TempMsg->length], Buffer, msglen); conn->TempMsg->length += msglen; + + if (MsgHasCtrlZ) + goto gotCtrlZ; + } VOID CreateMessageFromBuffer(CIRCUIT * conn) @@ -8134,7 +8157,7 @@ BOOL ConnecttoBBS (struct UserInfo * user) ConnectUsingAppl(conn->BPQStream, BBSApplMask); FreeSemaphore(&ConSemaphore); - // If we are sending to a dump pms we may need to connect using the message sender's callsign. + // If we are sending to a dumb pms we may need to connect using the message sender's callsign. // But we wont know until we run the connect script, which is a bit late to change call. Could add // flag to forwarding config, but easier to look for SETCALLTOSENDER in the connect script. @@ -8868,6 +8891,41 @@ CheckForSID: return FALSE; } +/* if (memcmp(Buffer, "[AEA-", 4) == 0 || memcmp(Buffer, "[AEA PK", 7) == 0 || (conn->BBSFlags & TEXTFORWARDING)) + { + // PK232. Don't send a SID, and switch to Text Mode + + conn->BBSFlags |= (BBS | TEXTFORWARDING); + conn->Flags |= SENDTITLE; + + // Send Message. There is no mechanism for reverse forwarding + + if (FindMessagestoForward(conn) && conn->FwdMsg) + { + struct MsgInfo * Msg; + + // Send S line and wait for response - SB WANT @ USA < W8AAA $1029_N0XYZ + + Msg = conn->FwdMsg; + + if ((conn->BBSFlags & SETCALLTOSENDER)) + nodeprintf(conn, "S%c %s @ %s \r", Msg->type, Msg->to, + (Msg->via[0]) ? Msg->via : conn->UserPointer->Call); + else + nodeprintf(conn, "S%c %s @ %s < %s $%s\r", Msg->type, Msg->to, + (Msg->via[0]) ? Msg->via : conn->UserPointer->Call, + Msg->from, Msg->bid); + } + else + { + conn->BBSFlags &= ~RunningConnectScript; // so it doesn't get reentered + Disconnect(conn->BPQStream); + return FALSE; + } + + return TRUE; + } +*/ if (Buffer[0] == '[' && Buffer[len-2] == ']') // SID { @@ -8910,7 +8968,9 @@ CheckForSID: conn->BBSFlags &= ~RunningConnectScript; ForwardingInfo->LastReverseForward = time(NULL); - if (memcmp(Buffer, "[AEA PK", 7) == 0 || (conn->BBSFlags & TEXTFORWARDING)) + + // I don't think this is needed any more but will leave in for now +/* if (memcmp(Buffer, "[AEA-", 4) == 0 || memcmp(Buffer, "(AEA PK", 7) == 0 || (conn->BBSFlags & TEXTFORWARDING)) { // PK232. Don't send a SID, and switch to Text Mode @@ -8944,7 +9004,7 @@ CheckForSID: return TRUE; } - +*/ if (strcmp(conn->Callsign, "RMS") == 0 || conn->SendWL2KFW) { // Build a ;FW: line with all calls with PollRMS Set diff --git a/BPQINP3.c b/BPQINP3.c index 3fcf1ae..59ec9b3 100644 --- a/BPQINP3.c +++ b/BPQINP3.c @@ -199,8 +199,8 @@ VOID DeleteINP3Routes(struct ROUTE * Route) if (Dest->INP3ROUTE[0].ROUT_NEIGHBOUR == Route) { // We are deleting the best INP3 route, so need to tell other nodes - // If this is the only one, we need to keep the entry with at 60000 rtt so - // we can send it. Remove when all gone + // We need to keep the entry with a 60000 rtt so + // we can send it. Remove when all gone // How do we indicate is is dead - Maybe the 60000 is enough! @@ -208,26 +208,12 @@ VOID DeleteINP3Routes(struct ROUTE * Route) if (DEBUGINP3) Debugprintf("Deleting First INP3 Route to %s", Call2); - if (Dest->INP3ROUTE[1].ROUT_NEIGHBOUR == 0) - { - - // Only entry - - Dest->INP3ROUTE[0].STT = 60000; - Dest->INP3ROUTE[0].Hops = 255; - - if (DEBUGINP3) Debugprintf("Was the only INP3 route"); + Dest->INP3ROUTE[0].STT = 60000; // leave hops so we can check if we need to send - if (Dest->DEST_ROUTE == 4) // we were using it - Dest->DEST_ROUTE = 0; + if (DEBUGINP3) Debugprintf("Was the only INP3 route"); - continue; - } - - Dest->INP3ROUTE[1].RouteLastTT[Dest->INP3ROUTE[1].ROUT_NEIGHBOUR->recNum] = Dest->INP3ROUTE[0].STT; // So next scan will check if rtt has increaced enough to need a RIF - memcpy(&Dest->INP3ROUTE[0], &Dest->INP3ROUTE[1], sizeof(struct INP3_DEST_ROUTE_ENTRY)); - memcpy(&Dest->INP3ROUTE[1], &Dest->INP3ROUTE[2], sizeof(struct INP3_DEST_ROUTE_ENTRY)); - memset(&Dest->INP3ROUTE[2], 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); + if (Dest->DEST_ROUTE == 4) // we were using it + Dest->DEST_ROUTE = 0; continue; } @@ -253,6 +239,7 @@ VOID DeleteINP3Routes(struct ROUTE * Route) // I think we should send Negative info immediately + NegTimerCount = NegativeDelay; SendNegativeInfo(); } @@ -374,8 +361,10 @@ VOID ProcessRTTReply(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Buff) if (RTT > 60000 || RTT < 0) return; // Ignore if more than 60 secs (why ??) - if (DEBUGINP3) Debugprintf("INP3 RTT reply from %s - SRTT was %d, Current RTT %d", Normcall, Route->SRTT, RTT); + if (RTT == 0) + RTT = 1; // Don't allow a Node TT of zero + if (DEBUGINP3) Debugprintf("INP3 RTT reply from %s - SRTT was %d, Current RTT %d", Normcall, Route->SRTT, RTT); Route->RTT = RTT; @@ -386,6 +375,9 @@ VOID ProcessRTTReply(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Buff) Route->RTTIncrement = Route->SRTT / 2; // Half for one way time. + if (Route->RTTIncrement == 0) + Route->RTTIncrement = 1; + if ((Route->Status & GotRTTResponse) == 0) { // Link is just starting @@ -492,7 +484,7 @@ VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port) UpdateNode(Route, axcall, alias, hops, rtt); } - + return; } @@ -509,9 +501,6 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, char call[11]=""; APPLCALLS * APPL; int App; - char Normcall[10]; - Normcall[ConvFromAX25(axcall, Normcall)] = 0; - // SEE IF any of OUR CALLs - DONT WANT TO PUT IT IN LIST! @@ -538,27 +527,64 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, } } + ConvFromAX25(axcall, call); + + // We need to detect unreachable here - if (hops > MaxHops && hops < 255) + if (rtt >= 60000 || hops > 30) // I use 255, Paula uses 31 hops for unreachable { - ConvFromAX25(axcall, call); - if (DEBUGINP3) Debugprintf("INP3 Node %s Hops %d RTT %d Ignored - Hop Count too high", call, hops, rtt); + // node is unreachable. I need propagate it to other neighbours. + + if (DEBUGINP3) Debugprintf("INP3 Node %s is unreachable via", call); + + if (FindDestination(axcall, &Dest)) + { + if (Dest->INP3ROUTE[0].ROUT_NEIGHBOUR == Route) // Best route + { + Dest->INP3ROUTE[0].STT = 60000; // Will be removed once reported. leave hops so we can check if we need to send + + if (Dest->DEST_ROUTE == 4) // we were using it + Dest->DEST_ROUTE = 0; + + NegTimerCount = 0; // Send negative info asap + return; + } + + if (Dest->INP3ROUTE[1].ROUT_NEIGHBOUR == Route) + { + if (DEBUGINP3) Debugprintf("Deleting 2nd INP3 Route to %s", call); + memcpy(&Dest->INP3ROUTE[1], &Dest->INP3ROUTE[2], sizeof(struct INP3_DEST_ROUTE_ENTRY)); + memset(&Dest->INP3ROUTE[2], 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); + + return; + } + + if (Dest->INP3ROUTE[2].ROUT_NEIGHBOUR == Route) + { + if (DEBUGINP3) Debugprintf("Deleting 3rd INP3 Route to %s", call); + memset(&Dest->INP3ROUTE[2], 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); + return; + } + } + + // Not found or not in table - ignore + return; } - if (rtt > MAXRTT && rtt < 60000) + if (hops > MaxHops) { - ConvFromAX25(axcall, call); - if (DEBUGINP3) Debugprintf("INP3 Node %s Hops %d RTT %d Ignored - rtt too high", call, hops, rtt); + if (DEBUGINP3) Debugprintf("INP3 Node %s Hops %d RTT %d Ignored - Hop Count too high", call, hops, rtt); return; } - if (rtt >= 60000) + if (rtt > MAXRTT) { - if (DEBUGINP3) Debugprintf("INP3 RTT > 60000 - discarding"); - return; + if (DEBUGINP3) Debugprintf("INP3 Node %s Hops %d RTT %d Ignored - rtt too high", call, hops, rtt); + return; } + if (FindDestination(axcall, &Dest)) goto Found; @@ -568,22 +594,23 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, return; // Table Full } - // Adding New Node + if (Dest->RouteLastTT) + free(Dest->RouteLastTT); + memset(Dest, 0, sizeof(struct DEST_LIST)); + memcpy(Dest->DEST_CALL, axcall, 7); memcpy(Dest->DEST_ALIAS, alias, 6); // Set up First Route + Dest->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); Dest->INP3ROUTE[0].Hops = hops; Dest->INP3ROUTE[0].STT = rtt; - if (Dest->INP3ROUTE[0].RouteLastTT == 0) - Dest->INP3ROUTE[0].RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); - - Dest->INP3ROUTE[0].RouteLastTT[Route->recNum] = 0; + Dest->RouteLastTT[Route->recNum] = 0; Dest->INP3FLAGS = NewNode; @@ -654,6 +681,8 @@ Found: if (DEBUGINP3) Debugprintf("INP3 adding as route[%d]", i); AddHere(ROUTEPTR, Route, hops, rtt); + if (i == 0) + Dest->RouteLastTT[Route->recNum] = 0; SortRoutes(Dest); return; } @@ -708,10 +737,6 @@ Found: VOID AddHere(struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR,struct ROUTE * Route , int hops, int rtt) { ROUTEPTR->Hops = hops; - if (ROUTEPTR->RouteLastTT == 0) - ROUTEPTR->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); - - ROUTEPTR->RouteLastTT[Route->recNum] = 0; ROUTEPTR->STT = rtt; ROUTEPTR->ROUT_NEIGHBOUR = Route; @@ -1055,7 +1080,7 @@ VOID SendKeepAlive(struct ROUTE * Route) SendNetFrame(Route, Msg); } -int BuildRIF(UCHAR * RIF, UCHAR * Call, UCHAR * Alias, int Hops, int RTT) +int BuildRIF(UCHAR * RIF, UCHAR * Call, UCHAR * Alias, int Hops, int RTT, char * Dest) { int AliasLen; int RIFLen; @@ -1090,13 +1115,13 @@ int BuildRIF(UCHAR * RIF, UCHAR * Call, UCHAR * Alias, int Hops, int RTT) RIF[12+AliasLen] = 0; RIFLen = 13 + AliasLen; - if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s:%s %d %d", AliasCopy, Normcall, Hops, RTT); + if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s:%s %d %d to %s", AliasCopy, Normcall, Hops, RTT, Dest); return RIFLen; } RIF[10] = 0; - if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s %d %d", Normcall, Hops, RTT); + if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s %d %d to %s", Normcall, Hops, RTT, Dest); return (11); } @@ -1109,6 +1134,15 @@ VOID SendOurRIF(struct ROUTE * Route) int totLen = 1; int App; APPLCALLS * APPL; + int sendTT = Route->RTTIncrement; + char Normcall[10]; + + Normcall[ConvFromAX25(Route->NEIGHBOUR_CALL, Normcall)] = 0; + + if (DEBUGINP3) Debugprintf("INP3 Sending Our Call and Applcalls to %s ", Normcall); + + if (Route->OldBPQ) // old bpq bug - send mS not 10 mS units + sendTT *= 10; Msg = GetBuff(); if (Msg == 0) @@ -1118,11 +1152,7 @@ VOID SendOurRIF(struct ROUTE * Route) // send a RIF for our Node and all our APPLCalls - if (Route->OldBPQ) - RIFLen = BuildRIF(&Msg->L3SRCE[totLen], MYCALL, MYALIASTEXT, 1, Route->RTTIncrement * 10); - else - RIFLen = BuildRIF(&Msg->L3SRCE[totLen], MYCALL, MYALIASTEXT, 1, Route->RTTIncrement); - + RIFLen = BuildRIF(&Msg->L3SRCE[totLen], MYCALL, MYALIASTEXT, 1, sendTT, Normcall); totLen += RIFLen; for (App = 0; App < NumberofAppls; App++) @@ -1131,11 +1161,7 @@ VOID SendOurRIF(struct ROUTE * Route) if (APPL->APPLQUAL > 0) { - if (Route->OldBPQ) - RIFLen = BuildRIF(&Msg->L3SRCE[totLen], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->RTTIncrement * 10); - else - RIFLen = BuildRIF(&Msg->L3SRCE[totLen], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->RTTIncrement); - + RIFLen = BuildRIF(&Msg->L3SRCE[totLen], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, sendTT, Normcall); totLen += RIFLen; } } @@ -1185,6 +1211,12 @@ int SendRIPTimer() } } + if (Route->Stopped) + { + Route++; + continue; + } + // Delay more if Locked - they could be retrying for a long time if (Route->ConnectionAttempts < 5) @@ -1352,8 +1384,9 @@ VOID SendRIF(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Msg) SendNetFrame(Route, Msg); } -VOID SendRIFToOtherNeighbours(UCHAR * axcall, UCHAR * alias, struct INP3_DEST_ROUTE_ENTRY * Entry, int Negative, int portNum) +VOID SendRIFToOtherNeighbours(struct DEST_LIST * Dest, UCHAR * alias, struct INP3_DEST_ROUTE_ENTRY * Entry, int Negative, int portNum) { + UCHAR * axcall = Dest->DEST_CALL; struct ROUTE * Routes = NEIGHBOURS; struct _L3MESSAGEBUFFER * Msg; int count, MaxRoutes = MAXNEIGHBOURS; @@ -1368,17 +1401,19 @@ VOID SendRIFToOtherNeighbours(UCHAR * axcall, UCHAR * alias, struct INP3_DEST_RO for (count = 0; count < MaxRoutes; count++) { - if ((Entry->ROUT_NEIGHBOUR && Routes->INP3Node) && - (Routes->Status) && - // (memcmp(Routes->NEIGHBOUR_CALL - (Routes != Entry->ROUT_NEIGHBOUR)) // Dont send to originator of route - { - + if (Routes->INP3Node && Routes->Status && Routes != Entry->ROUT_NEIGHBOUR) + { // as the value sent will be different for each link, we need to check if change is enough here sendHops = Entry->Hops + 1; - sendTT = Entry->STT + Entry->ROUT_NEIGHBOUR->RTTIncrement; - lastTT = Entry->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum]; + if (Entry->STT < 60000) + sendTT = Entry->STT + Routes->RTTIncrement; + else + sendTT = 60000; + + lastTT = Dest->RouteLastTT[Routes->recNum]; + + destCall[ConvFromAX25(Routes->NEIGHBOUR_CALL, destCall)] = 0; if (!portNum) { @@ -1405,11 +1440,14 @@ VOID SendRIFToOtherNeighbours(UCHAR * axcall, UCHAR * alias, struct INP3_DEST_RO } - // Don't send if Node is the Neighbour we are sending to + if (DEBUGINP3) Debugprintf("INP3 SendRIFToOtherNeighbours need to send %s to %s", NodeCall, destCall); + + // Don't send if Node is the Neighbour we are sending to if (memcmp(Routes->NEIGHBOUR_CALL, axcall, 7) == 0) { if (DEBUGINP3) Debugprintf("INP3 SendRIFToOtherNeighbours Don't send %s to itself", NodeCall); + Dest->RouteLastTT[Routes->recNum] = sendTT; // But update or we will keep re-entering Routes+=1; continue; } @@ -1423,13 +1461,19 @@ VOID SendRIFToOtherNeighbours(UCHAR * axcall, UCHAR * alias, struct INP3_DEST_RO if (portNum) Routes->Status &= ~SentOurRIF; - Entry->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum] = sendTT; + Dest->RouteLastTT[Routes->recNum] = sendTT; // send, but only if within their constraints - if ((Routes->RemoteMAXHOPS == 0 || Routes->RemoteMAXHOPS >= Entry->Hops) && + // Does it make any sense to send a node with hopcount of say 2 which was received from a node with + // maxhops 2. The next hop (with hopcount of 3 or above) will get it but won't be able to reply. + + if ((Routes->RemoteMAXHOPS == 0 || Routes->RemoteMAXHOPS >= sendHops) && (Routes->RemoteMAXRTT == 0 || Routes->RemoteMAXRTT >= sendTT || sendTT == 60000)) { + if (sendTT == 60000) + sendHops = 31; + if (DEBUGINP3) { if (portNum) @@ -1442,26 +1486,18 @@ VOID SendRIFToOtherNeighbours(UCHAR * axcall, UCHAR * alias, struct INP3_DEST_RO if (Msg == NULL) { - if (DEBUGINP3) - { - destCall[ConvFromAX25(Entry->ROUT_NEIGHBOUR->NEIGHBOUR_CALL, destCall)] = 0; - Debugprintf("INP3 Building RIF to send to %s", destCall); - } + if (DEBUGINP3) Debugprintf("INP3 Building RIF to send to %s", destCall); Msg = Routes->Msg = CreateRIFHeader(Routes); } if (Msg) { - if (Routes->OldBPQ) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], - axcall, alias, sendHops, sendTT + 10); - else - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], - axcall, alias, sendHops, sendTT); + if (Routes->OldBPQ) // old bpq bug - send mS not 10 mS units + sendTT *= 10; + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], axcall, alias, sendHops, sendTT, destCall); if (Msg->LENGTH > 250 - 15) - // if (Msg->LENGTH > Routes->NBOUR_PACLEN - 11) { SendRIF(Routes, Msg); Routes->Msg = NULL; @@ -1469,8 +1505,6 @@ VOID SendRIFToOtherNeighbours(UCHAR * axcall, UCHAR * alias, struct INP3_DEST_RO } } } - - Routes+=1; } } @@ -1482,9 +1516,11 @@ VOID SendRIFToNewNeighbour(struct ROUTE * Route) struct INP3_DEST_ROUTE_ENTRY * Entry; struct _L3MESSAGEBUFFER * Msg; int sendHops, sendTT; - char Normcall[10]; + if (Route->NEIGHBOUR_LINK == 0) // shouldn't happen but to be safe.. + return; + Normcall[ConvFromAX25(Route->NEIGHBOUR_LINK->LINKCALL, Normcall)] = 0; if (DEBUGINP3) Debugprintf("INP3 Sending Our Table to %s ", Normcall); @@ -1498,7 +1534,6 @@ VOID SendRIFToNewNeighbour(struct ROUTE * Route) Entry = &Dest->INP3ROUTE[0]; - if (Entry->ROUT_NEIGHBOUR && Entry->Hops && Route != Entry->ROUT_NEIGHBOUR) { // Best Route not via this neighbour - send, but only if within their constraints @@ -1506,9 +1541,9 @@ VOID SendRIFToNewNeighbour(struct ROUTE * Route) sendHops = Entry->Hops + 1; sendTT = Entry->STT + Entry->ROUT_NEIGHBOUR->RTTIncrement; - Entry->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum] = sendTT; + Dest->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum] = sendTT; - if ((Route->RemoteMAXHOPS == 0 || Route->RemoteMAXHOPS >= Entry->Hops) && + if ((Route->RemoteMAXHOPS == 0 || Route->RemoteMAXHOPS >= Entry->Hops || Entry->Hops > 30) && (Route->RemoteMAXRTT == 0 || Route->RemoteMAXRTT >= Entry->STT || Entry->STT == 60000)) { Msg = Route->Msg; @@ -1519,10 +1554,10 @@ VOID SendRIFToNewNeighbour(struct ROUTE * Route) if (Msg == NULL) return; - if (Route->OldBPQ) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT * 10); // old bpq bug - send mS not 10 mS units - else - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT); + if (Route->OldBPQ) // old bpq bug - send mS not 10 mS units + sendTT *= 10; + + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT, Normcall); if (Msg->LENGTH > 250 - 15) { @@ -1541,30 +1576,30 @@ VOID SendRIFToNewNeighbour(struct ROUTE * Route) VOID FlushRIFs() { - struct ROUTE * Routes = NEIGHBOURS; + struct ROUTE * Route = NEIGHBOURS; int count, MaxRoutes = MAXNEIGHBOURS; for (count=0; countStatus & GotRTTRequest) && (Routes->Status & GotRTTResponse) && ((Routes->Status & SentOurRIF) == 0)) + if ((Route->Status & GotRTTRequest) && (Route->Status & GotRTTResponse) && ((Route->Status & SentOurRIF) == 0)) { - Routes->Status |= SentOurRIF; - SendOurRIF(Routes); - SendRIFToNewNeighbour(Routes); + Route->Status |= SentOurRIF; + SendOurRIF(Route); + SendRIFToNewNeighbour(Route); } - if (Routes->Msg) + if (Route->Msg) { char Normcall[10]; - Normcall[ConvFromAX25(Routes->NEIGHBOUR_CALL, Normcall)] = 0; - SendRIF(Routes, Routes->Msg); - Routes->Msg = NULL; + Normcall[ConvFromAX25(Route->NEIGHBOUR_CALL, Normcall)] = 0; if (DEBUGINP3) Debugprintf("INP3 Flushing RIF to %s", Normcall); + SendRIF(Route, Route->Msg); + Route->Msg = NULL; } - Routes+=1; + Route+=1; } } @@ -1575,7 +1610,6 @@ VOID SendNegativeInfo() struct INP3_DEST_ROUTE_ENTRY * Entry; char call[11]=""; - Dest--; // Send RIF for any Dests that have got worse @@ -1590,38 +1624,48 @@ VOID SendNegativeInfo() { Dest++; + if (Dest->DEST_CALL[0] == 0) // unused entry + continue; + Entry = &Dest->INP3ROUTE[0]; if (Entry->ROUT_NEIGHBOUR == 0) continue; - - if (Entry->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum] == 0) // if zero haven't yet reported +ve info. Shouldn't really be reporting negative without positive but just in case - SendRIFToOtherNeighbours(Dest->DEST_CALL, Dest->DEST_ALIAS, Entry, TRUE, FALSE); - else - SendRIFToOtherNeighbours(Dest->DEST_CALL, 0, Entry, TRUE, FALSE); + SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, TRUE, FALSE); if (Entry->STT >= 60000) { // It is dead, and we have reported it if necessary, so remove if no NETROM Routes - if (Dest->NRROUTE[0].ROUT_NEIGHBOUR == 0) // No more Netrom Routes - { - char call[11]=""; - ConvFromAX25(Dest->DEST_CALL, call); - if (DEBUGINP3) Debugprintf("INP3 Deleting Node %s", call); - REMOVENODE(Dest); // Clear buffers, Remove from Sorted Nodes chain, and zap entry + // Wrong. We may have other INP3 routes. Move them up. This will delete first if only one + + // I think I need to set lastTT on all routes. + + if (Dest->INP3ROUTE[1].ROUT_NEIGHBOUR == 0) // No other INP3 routes + { + if (DEBUGINP3) Debugprintf("Was the only INP3 route"); + memset(&Dest->INP3ROUTE[0], 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); } else { - // Have a NETROM route, so zap the INP3 one + memset(Dest->RouteLastTT, 0, MAXNEIGHBOURS * sizeof(uint16_t)); // So next scan will check if rtt has increaced enough to need a RIF + memcpy(&Dest->INP3ROUTE[0], &Dest->INP3ROUTE[1], sizeof(struct INP3_DEST_ROUTE_ENTRY)); + memcpy(&Dest->INP3ROUTE[1], &Dest->INP3ROUTE[2], sizeof(struct INP3_DEST_ROUTE_ENTRY)); + memset(&Dest->INP3ROUTE[2], 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); + NegTimerCount = 0; // Send negative info again asap to send new best + } - memset(Entry, 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); + if (Dest->INP3ROUTE[0].ROUT_NEIGHBOUR == 0 && Dest->NRROUTE[0].ROUT_NEIGHBOUR == 0) // No INP3 and no Netrom Routes + { + char call[11]=""; + ConvFromAX25(Dest->DEST_CALL, call); + if (DEBUGINP3) Debugprintf("INP3 No INP3 and no Netrom Routes left - Deleting Node %s", call); + REMOVENODE(Dest); // Clear buffers, Remove from Sorted Nodes chain, and zap entry } if (Dest->DEST_ROUTE == 4) // we were using it - Dest->DEST_ROUTE = 0; - + Dest->DEST_ROUTE = 0; } } } @@ -1644,7 +1688,9 @@ VOID SendPositiveInfo() continue; Entry = &Dest->INP3ROUTE[0]; - SendRIFToOtherNeighbours(Dest->DEST_CALL, 0, Entry, FALSE, FALSE); + + if (Entry->ROUT_NEIGHBOUR) + SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, FALSE, FALSE); } } @@ -1664,11 +1710,14 @@ VOID SendNewInfo() if (Dest->INP3FLAGS & NewNode) { + char call[10]; + ConvFromAX25(Dest->DEST_CALL, call); + if (DEBUGINP3) Debugprintf("INP3 Sending New Node %s", call); Dest->INP3FLAGS &= ~NewNode; Entry = &Dest->INP3ROUTE[0]; - SendRIFToOtherNeighbours(Dest->DEST_CALL, Dest->DEST_ALIAS, Entry, FALSE, FALSE); + SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, TRUE, FALSE); // Send as negative so will always be worse than zero } } } @@ -1705,9 +1754,9 @@ VOID sendAlltoOneNeigbour(struct ROUTE * Route) return; if (Route->OldBPQ) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, Route->RTTIncrement * 10); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, Route->RTTIncrement * 10, Call); else - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, Route->RTTIncrement); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, Route->RTTIncrement, Call); for (App = 0; App < NumberofAppls; App++) { @@ -1716,9 +1765,9 @@ VOID sendAlltoOneNeigbour(struct ROUTE * Route) if (APPL->APPLQUAL > 0) { if (Route->OldBPQ) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->RTTIncrement * 10); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->RTTIncrement * 10, Call); else - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->RTTIncrement); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->RTTIncrement, Call); } } @@ -1751,9 +1800,9 @@ VOID sendAlltoOneNeigbour(struct ROUTE * Route) sendHops = Entry->Hops + 1; sendTT = Entry->STT + Entry->ROUT_NEIGHBOUR->RTTIncrement; - lastTT = Entry->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum]; + lastTT = Dest->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum]; - Entry->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum] = sendTT; + Dest->RouteLastTT[Entry->ROUT_NEIGHBOUR->recNum] = sendTT; // send, but only if within their constraints @@ -1769,7 +1818,7 @@ VOID sendAlltoOneNeigbour(struct ROUTE * Route) if (Route->OldBPQ) sendTT *= 10; - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT, Call); if (Msg->LENGTH > 250 - 15) { @@ -1853,6 +1902,8 @@ VOID INP3TIMER() #endif + SendNewInfo(); // Need to send to set up last sent time + if (NegTimerCount == 0) { NegTimerCount = NegativeDelay; @@ -1864,7 +1915,7 @@ VOID INP3TIMER() if (RIPTimerCount == 0) { RIPTimerCount = 10; - SendNewInfo(); // Not quite so urgent + SendRIPTimer(); SendAllInfo(); // Timer Driven refresh } diff --git a/BPQMail.aps b/BPQMail.aps index b3373cdbbb32e6acabbb475ee5df34f24c71b602..668d7a768974d43061177eb08abed18ade570b01 100644 GIT binary patch delta 16625 zcmaJ|37AyXm42_AeUZIapu2%~2fKP<(HMPI^{Tt2U=QDOdb&V5y{pud5y`qewz zJ@=e*&pmgkU)()x`|HEkH=4;Cn`TdHUv3)boqBf9r7JGE^z5_NT(G)uaJ1QG&QjLR z^@Wzn=BUB*Z~i!6AL}s28)kPesMcPxa`m^3S@Y+$%xmqK7wb@~{;Ot`Vf?nqFyyM(9vb}WZ|7DHg;}fi|EW>^=3wpMu7lev zhM+iUuW8`lV^iiBhYxoctu3uaI++YIUZ-ng ziRp~WBgM|uV%4FKW)E~2@!aB!m39oH!$`PU&vop+bT;Ys5rA-Rw){O&_L{WgJ)I>; z41q*^aW8>LZCL$E3H*mfB3Ra zE&i%bWe?5xrcgjr43n;Wm+gd1^BF{P(4KEE@gWQb&HB`KD((1o9t}gOTu&}(`8It= zV=?JWKI6rE94F~?8ijqs&1(5`Xt-H5&>s3DV`qB|quroq0Q>51ZN+af!&n3@5`k|! zS=)zwdhNVnkTU6P!s$uc21uf>kP>}`sOT$*tyH0RwAoa6Vzk*@IB|?wUvTheV7{>c zG4&`qR357HilJH|k!pNakxmAlowM?m@8*pb0~Ebp0L8qtn+?+0lnbQ*OefuL`ZfYD zlkk~>&s2P-;Zu#zbnaQEpS&_)KyhM8SlNW_;Ema$ELC8s(QKZbP5N%e${FaOiT~5U z>aAF{;=Hw~m8(`<8iK0;w&HHy2Y@xo+kUP`#**t$fQ=(4h%a2B8-3#^(3zEd#!q>N3d*!WH@Aa)TtdePaOc8Y0QO|$p9Vd(T$?_WVDRHAimu&DnQtPzjGL2 zFG1FiwR8w!GQfbz<*ZISaI8El1h2E{|auB;7=oxyz1i~`jbt3d9}^`|gxz-BO7j12+*k1GaK z3d+zh!3YRPHAY6uJ#D0@>tlkY=WI#QwG#*&8JX~z*pZEWG| z%CEU>?Fy2o!J}B5lkVk)btLLGXf&~BK&~-D?z=vM98evPLQl&21GdeDjv#p!3F4R! zN<9hVQkZ(uIZO%UErJVu7CzUV3yGy&66Dw^N}^#Lixex9LvAA=na(tX+|F8Y$L>iJ zMyDJ>Adus&1l7(RrHV zdefGMiuZ^v?X!}4vZ*kt)RjN4{*HDpH|^)GR4SbyPCbUDZE(ZO1lAtYjZ>|cbumaN zR8cmR2#Akr5CUm`R;mB~d5u_|rE(nu$wUH&8B}t|Ez}a>JN3`l@W5=-6Z9CduI+i0pkpm< z+8#C3FN?=zo3;gkGCU7TXWF17O~4cInaDT_TuRfxpFy&qFL@<{3a3xQ35?(>=L3D% zmhQ_0HQ^VqVU!FpVC8bIm-bOyk{I1ND)=&iMd)eBHE?Wz7LSPIrDL05Uqli`JtyAlO zqd+IKKqsQtz8a%Wy0vZqXttPeYR|AjDX?|9Suz1}X%q|qSe%S9Uu)DvAPRMYad6<> zPtbsyuiI*3UlI+?V9YE|9KgDV!je(0)xgjR>?OH8#v_k3l38?6)(x-> zr@Hg}HEZ2GC6xI^pHSJ;7tlhJn=3kjBzj&tNhx(fOJ19b8zL}GL<>R#7NKnf4ecgz z+3)!-SGamkUZ4#$N-e*wY>v?zBEBnDTcGz^iWIp zOu&>?^4;kH$02Vl(2*oKy)c&~wop5-j(bB%A)ij#JtzrLhsRnLY7@vbfOwW^AOs7S zo_&d2+hz(&>v9L2q-M|vVW5ctI}f1O#;Rv}QLHZ)CyXB4g6Yfo{W(g*3$@jXV4C|D zYFmXsoii6Mz@nALmB4uggi%Wj+E&MKvxqBN{{pPdMBogq18L(#%(O_GiSl_O&^s4k zAvgwI+#`eQ*k7b=)@TIkI~%8;27<7%O(3-MLENz@t)du%a!26$y3*Ju0ge}FH@#VX z>QN+}dD})pL8d>NJZ7=A=8j{LZ}K z%U1Q$k))OH#-bG5s0bnWrrk5Ry~f?s`FX}}Sw}A0-7xE@c8NLBZ&6QBmyx=6?5<|E zO}p!+N62ZVAwjN}t?JS0li1vg7mxV0O*<*j@n?Aup3&lG0$8o#>`T z6|KFCjZ>UCZf7U$lD1MjXby@b)-(#Fjl$05Ygc@K`4xe!_T4egG}PbjsG+S+Y8z-; ze`J?mxPms>^ne?y8tz09T_mC9PDp|wrm}ZdPcLDu^Uhmy+3K|+0mhZO=FYmaH39MZ zD=%De3CYJ0f>5YLjRsba-$hV8g2oyQwK2`P0EZnOTU3-rRU3C$eSGIMntiAXl;GNn z%SS1fIjsVy`y)V~*7Hc{fFpy1yB)G!7S1ie=^RqV(@IPlAq-vl)44PxgibGI9BmPV za9}-;O%I#kWTM;uL+?Hb7Rz^9F0ghw(TF@C*s1LiPwV|ufOOUv$IEYo9qk|kT-I;e zt}O=QWVRUvuhB8UP_bg4j1~}TkwVBrs05S(cWF9@)mhQHLYcEXug}fX)<)R8P%rko zm|ACTp@s-lzIHyA7vjmRd3jGIiS z(nyWK>M;>A@uqYXAzVDcA^+&yps9H!Sb_>EvIDkCNkq8bo}A)X=yIK8$f12N99sWy zy)D9XuH#@PBQZM2#whbHU9$*Z4?CBa+ftyCLD)>FX#*#7IWc3*h~tTxtXhI3G9Cq! zhLuEExx7bJ79k>jNm6a6*4;Hx%sC#N0tn}g_W3K$_cjA!W6j({`# ze7!G3d#O^>1X!a3s^h8%rA0cx#cG5%X-LEXfs56MmO+)&{9=Ge?SguS17|+#Mv3qk ze2QBGo=*!;16b{0;Uev+5&~S0Qe6pQi-8wsabWatEOGcQ6tRg(XGub3c=H*1&jD=~ zE+{6a1~uuPDdI+{`6xDFg#|5P;adV@#Q?C50|BGbWK#mJjaGz<5N)#}RAgwAg`$sj zk|d=S;;GIR*FiKQSc51e>(qvOszp`Vt;ep_qGIx-$`{3855u$-H7rGB+JG9AWtcXd zz~T(jCet7x(>-R`K!9*&O5IWeLBk!6dFtteWY8o!LWqFWziA4LI_AFow9jv47kuZYWsgiw|V$D!w-ofra@|T zJEH<3Hj;CNC^BL!M#f{tqJ?45$o!hOaW+azM8{R`y`y{K+wcgXh{`WP;sm2Ms4(&x z5yz%E!f2Zch7SmsBU~trQ@7r$b7W~l+_&O%^5f@S$7s2{jdtTupW+k{J2Or{4o&(5 ztWRCATwNNcH2~A)my zK%0dq76`80LOCDFG~DPUjP~&q_4j+HFJ)s<;wYZ+5{Y&RZJ~)!N;sq>A+<|r{|l1& zgqI3eK6C_H2l6zv?7mvr#-%krHfeE|8zTWU*BR>i`>N>t6Q`Z3d1E7v><#tgYqh)( zc;_`)5d6<;Gkc5meiBm;Y96ekX>$c~7GPH}f|c2k`pG!9n5-1|&=8fIF!4dA`tIxX zxd=1aO%AX~Ze&S>LpCHoz0x3DWI2S>_#UsHTEp%kgsEMxH}pk>ibftbH4>V9ig_CMaXwWRvLMo*>s9zFG9$YZ0C)-MG=B7FXyEFI2Jk}L5xOFy=5p4J$2g~ zwNY;D_a?ftw0I)!GPML{dwqlRH=N;kc5i0VOOx*W;>@+e)oke(41a#)vXhap;64t53?^ z8m`lolyp+92qs!dW&*yfLV{=}kS-$oh6^s8BcwZkA4}VIL>%^p^#p>(HzSb84WqCH zcY%&0I^7>_j|4XU_+Xn*I!iRD$_;aHLqeUfp?)5Cv3p6q$lF-ufC}B9{ZbFN8<1ky zl;M#^gIc|zPEtgJ`qvFJ#j4U&I>UQ6kPx0S5Io2rE2a~u!$~$DE~w6p4dF5~X{Rg@ zAS=tRAuY2)H_H|o^TPswYt!fz9F5^FD^Ix|r-BG8BGE<)rvs0&ejukUEtlKyosQbm zaUlYm!AZx~5rdo#G>=RfI$l6&0E>rm3O)i=2L@+zRvh!7jFb}|Y?6~tPEB-{K=P=7 zlaDcNG#^^CZ@~iEDuS$5f-;)!p zY~}2Gus*6A@4X40hbUaca`mkQsmWP557BZoc71!(VdpsQhIoCeh#9SDuSs9^gNG)v zy?**o?P(E|JdfBQK8%v1aE={|;MD$yWH$P0C^?SZF0^I#k~SQ>LvU;{wfJF? zbK%27=;PQ6g|^H-p`1m6ll=AM!?LTlS3kdaxNhlCeP|P=#E>1-S|^7@YPD@bsx^;D zbJsmm(;&^zB#8*3-8C{H6+4vYW*chrBemU88k_(L34%;W;5uPPB4p;!ZVW}KlN7L+ ztl`mV{SkRsOZvE%gN=S6;z=izC`d17C(<|uXW5}GS$5ve;RHz#V#uF9s;>@+N*<1L z6F#qFm^+Lp=Eh9`S9s&vWLjtl4$UkV0*j+jDgx-J;Z{D+_nfE&oGG3zz0*i!tb~Od zYm5xXrN;R*Y`fh2Qo*v>)Uw~p#_m5R+SO)#Nr_>Nc3!VL=& zh%+qFjK(}tO9&1X#N=q8q=8InK0}$i2-}OlufW(OZuqXCdtriHc5@Mev`OqqkeAJ z_`htDT4?MaX3msGVROt|xKaRbajarR%_4XHPLjvpepf>$0tl!Qsh7xez%Rf|bR^F0 zWfv~Ma-K9hW3Wa$sl?uGWi9I20u=PZPU#j~7Oq2eB`^z%a|&Z*S0N}OL+@Z`1-phN zb6|n01!@fKj2W{b5DUz5j9&NvA#Ql!4^vvQFLV8fP=zBal%ZAmDFvIi$gX&UPmb^6qJGgy3)87 zMk>Wp)XNZsi*wypB7tJj#Z?KyCppE0c$%tdRs;&Y6t~ZNg54dGV4(^MT&ootwpEDh zK}muO9@H|}B|lvKgaqPkPe`C`eqwrEM58Vo^)We$LV(q0Pt4*Ovu^Wo{7i0^_m!I) z`Te@h63-hp*O%4-IGE1jt}AXyP{Wd2LY@3Rw}cVT9^Nb}&D_$!GS4hNr;Zf~9EIwd zEiz_q+amN&==VLE{?Hb&f8CSPwNsz0k9G|Q5|pn~bdX40Tk~X9=}gI^eY&Mw7=b|A zyW>fb_qcxUezLxFW`zil3Wyi4BA0!qs-9}1SuyM|<=6-fPYSB{DKXpkpW@sS(k9bL z9h}faU|F!lai`kKMe#Ulq>k)*s)_CP_ou`zwNHy3PkXxl>k&oreyWU_I~lf2>&-GO zXJd8q)8ghw^z*H!=WtWzGXkIUjD$m4KUY5^F53KjO$%KurEch>M`;QA)2xL|qA$}j zfmDdEKhw;@uiREMF`O5`Et<@ER$ABo*mHD2v!kGlB1A4bnleZ!xb(v^ZMt+XTR0YSDzDg|Nfk4(zsPLOl%dK zT(DK(*KZY@UB9(Py|i^ack!LA5~5#i744d~iQUfFR>SzE+eFrt`g!{{q2Hq4-`^%} zjC%gK<06Wua7zqVqkWgQp7cDHiY?^&MD;!|ZT&z$Z+%|+v-$bPV~>`BP)lPs&f??| z(~&m(1ySpG{p^0BwlpHNYdh_%oyUbSvYaJJWZetW(%mmeFSfoQ+W%EQC%q_|b-XAR z`^Jkx_YeB{?=MPVKc=6%_4D%=XVA$5KGxpDE3ip6EzxZ6eS z>h03p_1i_w2lR7?hJT`;6JHX1>?Lu0|4Wg536Ez-KTQKv;-(eFTv0pRQORNhDrra1 zWw{#n6w?u$BC4=|m2TrkADV^vfsk`(-Z+{%0=>{#lLx+shJiQ(rlj=}vz| z=$5@A@E^S*{DZFu-@aGG@FRA}^W+`kklc=wnSWr1@ZGgT_+H&{62WiUIcs*YhdB0K z>;yP>53v86pv}ot>mo^{_D=ElcXl4n;{I)C3qQB*JRurBNy`nA_>Djug$T3j@R{j(5L1Jvv2-$8tGZLZocjV^!UKAAx_>=UIA?wc|}?~$Zz z*#T7t_cb&ZTgnBxC8~${7a^oJ?jcdvJNC=a>EAEGdCh*Amu}rJtv<0|Ot62yXfxtH zp+E7x=47M=*$kl3Of?_e}@Ay0>2HY#4o#s;TKrL zaWY$ngSPSbTY+n7!|@BRNyeBPe{!+9-F(_K2hXoKx!yci-8kctlMTG9Xb)NmsFCw1f8YL#tj2Ql7^#fEQmsitG6sN0)P)D#y_t5zR2Jwt5w z&zet<1GBE8$N978(c|XX-=oKwbEc}sIWy%ePV+< zFIZukcd6%>onhWJIC^>I>>I!QRmEe&)G^n_Crt#!;lso6`IbSy9=%*$bM5TYe-4+? zuCrjaF=iWJHAUF-4BJ;mw`mGVI7aQic8b}eKD&1Iz`0ONYO_Xd_+dkBYFM;ar!nPPz*6dq zANDoV0-FAf1f)fO$FD+-XCm;p3f9d~jq8S~jq7HOFGMiIikL&|*4AFBF~cEiG)on^ zpR1ienmhRDkN#zx`Dx*$F=q96LZb8hFIhM^#+*HVmS-6E1HeD;Ei_Fwt4GjJz(4i) zC*T7&0k!?I|Nqy&^i$qzzZazmf66<0RM;B*H1ne?qBKYUG?NC(mY2df_%3N#IBu*t ze#AG?v9G;cxN59<;>b5&Wde2Mh#7_LW6h}*x4)(ijc6Tl5vZ5EUZ@*qwpI*#qmUhE zo?7wf8*1L@x)Bw}z{a}@_Y&%Y1BJcg%z4M2JH{{?{~WfpjoLDzzi3_$KR)=W`txz~ z3d<1c73Y7YHn!9iuEzJueWOiv(&@E@+v(+^F{avtmo4;?Yckar*Vd~M$4?&F3ae~y zHVa>jH)EBJCzyp(jxlFcesYpoaOn%YURXn4cErrW4fJJut66w}zO3&s3$M_ZnuTWJ zWBT$szD$^aFUF~mGr?@G%%x0q!xhaVX-uy=%T#w?dBSmDqQ(0iQ;(z5;I;BTos0Ls z=FGxrW6je?J_ehvU(7G<>M!d@7bZ?b2Uhi(D)@12p@m+CEj0@ZCPI7TY_ss)iRKBF z`|zbeUoJlfbnBZ((t!Tx9B4VwJiYSdbD`WM(62hzR1+LxJyGbZE9wfHhH*-TfyjxRtp7e1M6&Z+!-nW_GwYX1)!0!EDh delta 2314 zcmb7GYfMyE5T3dFViC;hDlZG=-HNy_D+*FIDoQoB2<$?AtO~NbJVZqC)x;JwHnuTE z*khcg@eyOF#!!M?6B65`#HNilNH9`uOr!LX+7eM}P17IN?VP(5rM+p|bF=r%`M#OC zGjq!|DcXF{3ABid}NoL z&Wk**#|#?I#kB6ua6A@?6S`N%V7v9G9m7o1K#rE~;0*MlxgB!gCPcs?`Zg1%(*Bv4 z%vgbnwWwJ4rJ49+vSKvIaxKZ4#Kys(0hT}!6vL~qm?L_HF>@Hedk7FU$_Il!73-u^ z#h9|7pDEiIby=mJjKi*|SSD}JQ@xL^((PKp60{ojN{W(_Fuutgc8(XxWB#&sO1)mj z3dS&picQu%i_KQC)#I>i6+6LL-k9wi75jRe-dq(+(6hgoQN>X9h2Y|~48TKIOYr$v zKkGcr;U(3sN7_+VF~%AUEY6}P7sgYD6CIJMTn0HzjK|PEC*wU%)JJ~u44x3S8DNGF%x>oD8m|KCnt2gMhm>hwnR*_g1>#vIpeCqC1w3K#>-i`5EL{lK6{EXHY z!&WIPmabX}DE7IY_t!bZV7*?{dp#OXluAWR@ddS*w-ixY<<(;Rig;XAqQx9n#Q8d_ zI9+{Ci|tax;hKIe=5s}ysr22X+8(7)msI{eTIBs;GdjWny5ec55)+h|7b)C>4&}0) z7J4v2w{!u}Mi0j823Tm4!UY%5Ne^Zz_BC`O4Q)rgsMj5E1DU+cx;6s6AO%k)(92TD z_5xK&!R`Y(D1}GWKxbG`_HL#pIT%NS>_W+{ql>v1chtwSXA9k)hsmaU+@vqO4m8V$ z({=rC0Il=kOr50}=#UR%O-2Ji(E*?bK3tr<=N*}&o_||7d9|{#7D>oDC|%ly5=bkU9JCfU^wv;y6!!s*JRR_a`jdBz9^bKB_2dbF8ZS>Dse zWvJ%t=ldo29Q9RWl+vXxY&2NIz90K(VL7JLq8f}*7KzZJSuR@DML|eyP*6)b78vKV pSN##XUCw_#WHa|1X=_P{lx_O#-O)Bp@#Pq8lzk=aXK}-s@F#;_qXPf{ diff --git a/BPQMail.c b/BPQMail.c index 6b70ad9..6ef392b 100644 --- a/BPQMail.c +++ b/BPQMail.c @@ -1118,7 +1118,7 @@ // Fix recently introduced crash when "Don't allow new users" is set (81) // Skip comments before TIMES at start of Connect Script (83) -// 6.0.25.1 ?? +// 6.0.25.1 Sept 2025 // Add FBB reject.sys style filters (3) // Improve Webmail on 64 bit builds @@ -1157,6 +1157,10 @@ // Fix sending + in Webmail (80) // Fix forwarding problem when using Web interface to change message routing (73) +// 6.0.26.x + +// Fix forwarding to/from AEA TNC mailbox (22) + #include "bpqmail.h" #include "winstdint.h" #define MAIL diff --git a/BPQMail.rc b/BPQMail.rc index a220ae3..88d1116 100644 --- a/BPQMail.rc +++ b/BPQMail.rc @@ -1,4 +1,4 @@ -// Microsoft Visual C++ generated resource script. +//Microsoft Developer Studio generated resource script. // #include "BPQMailrc.h" @@ -22,19 +22,21 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// English (United States) resources +// English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) +#endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // -IDD_PROPPAGE_LARGE DIALOG 0, 0, 235, 156 -STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION +IDD_PROPPAGE_LARGE DIALOG DISCARDABLE 0, 0, 235, 156 +STYLE WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Property Page" FONT 8, "MS Sans Serif" BEGIN @@ -47,7 +49,7 @@ END // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO +GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_PROPPAGE_LARGE, DIALOG BEGIN @@ -59,52 +61,57 @@ BEGIN END #endif // APSTUDIO_INVOKED -#endif // English (United States) resources +#endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -// English (United Kingdom) resources +// English (U.K.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +#ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK #pragma code_page(1252) +#endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // -BPQMAIL DIALOGEX 120, 50, 341, 165 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +BPQMAIL DIALOG DISCARDABLE 120, 50, 294, 165 +STYLE DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | + WS_THICKFRAME CAPTION "G8BPQ Mail and Chat Server 1.0.0.10 Beta July 2009" CLASS "BPQMail" -FONT 8, "FixedSys", 0, 0, 0x0 +FONT 8, "FixedSys" BEGIN - LTEXT " User Callsign Stream Conf Queue Sent Rxed",101,3,4,228,10 - LTEXT "UTC",IDC_STATIC,236,5,15,10 - LTEXT "Local",IDC_STATIC,280,5,21,10 - LTEXT "",IDC_UTC,254,5,25,10 - LTEXT "",IDC_LOCAL,307,5,25,10 - LISTBOX 100,2,16,231,130,WS_VSCROLL - LTEXT "Msgs",IDC_STATIC,236,25,40,10 - LTEXT "",IDC_MSGS,282,25,20,8 - LTEXT "Sysop Msgs",IDC_STATIC,236,36,40,10 - LTEXT "Held Msgs",IDC_STATIC,236,47,40,10 - LTEXT "",IDC_SYSOPMSGS,282,36,20,8 - LTEXT "",IDC_HELD,282,47,20,8 - LTEXT "SMTP Msgs",IDC_STATIC,236,61,40,10 - LTEXT "",IDC_SMTP,282,58,20,8 - LTEXT "Msg SEM Clashes",IDC_STATIC,236,77,63,10 - LTEXT "Alloc SEM Clashes",IDC_STATIC,236,88,68,10 - LTEXT "0",IDC_MSGSEM,321,77,20,10 - LTEXT "0",IDC_ALLOCSEM,321,88,20,10 - LTEXT "Con SEM Clashes",IDC_STATIC,236,99,68,10 - LTEXT "0",IDC_CONSEM,321,99,20,10 + LTEXT " User Callsign Stream Conf Queue",101,3,4,184, + 10 + LTEXT "UTC",IDC_STATIC,197,3,15,10 + LTEXT "Local",IDC_STATIC,241,3,21,10 + LTEXT "",IDC_UTC,215,3,25,10 + LTEXT "",IDC_LOCAL,269,3,25,10 + LISTBOX 100,2,16,190,130,WS_VSCROLL + LTEXT "Msgs",IDC_STATIC,197,21,40,10 + LTEXT "",IDC_MSGS,243,21,20,8 + LTEXT "Sysop Msgs",IDC_STATIC,197,32,40,10 + LTEXT "Held Msgs",IDC_STATIC,197,43,40,10 + LTEXT "",IDC_SYSOPMSGS,243,32,20,8 + LTEXT "",IDC_HELD,243,43,20,8 + LTEXT "SMTP Msgs",IDC_STATIC,197,54,40,10 + LTEXT "",IDC_SMTP,243,54,20,8 + LTEXT "Msg SEM Clashes",IDC_STATIC,197,70,63,10 + LTEXT "Alloc SEM Clashes",IDC_STATIC,197,81,68,10 + LTEXT "0",IDC_MSGSEM,274,70,20,10 + LTEXT "0",IDC_ALLOCSEM,274,81,20,10 + LTEXT "Con SEM Clashes",IDC_STATIC,197,92,68,10 + LTEXT "0",IDC_CONSEM,274,92,20,10 END -CONSOLEWINDOW DIALOG 17, 25, 400, 301 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CONSOLEWINDOW DIALOG DISCARDABLE 17, 25, 400, 301 +STYLE DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | + WS_THICKFRAME CAPTION "Mail Console" MENU CONSOLEMENU CLASS "CONSOLEWINDOW" @@ -113,18 +120,21 @@ BEGIN EDITTEXT 118,24,228,348,15,ES_AUTOHSCROLL | ES_NOHIDESEL END -BPQMONWINDOW DIALOG 17, 25, 400, 300 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +BPQMONWINDOW DIALOG DISCARDABLE 17, 25, 400, 300 +STYLE DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | + WS_THICKFRAME CAPTION "Mail Monitor" MENU MENU_2 CLASS "BPQMONWINDOW" FONT 8, "FixedSys" BEGIN - LISTBOX 121,6,25,290,109,LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL + LISTBOX 121,6,25,290,109,LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT | + WS_VSCROLL | WS_HSCROLL END -BPQMCWINDOW DIALOG 17, 25, 500, 300 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +BPQMCWINDOW DIALOG DISCARDABLE 17, 25, 500, 300 +STYLE DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | + WS_THICKFRAME CAPTION "Multicast Monitor" MENU MENU_1 CLASS "BPQMCWINDOW" @@ -132,45 +142,55 @@ FONT 8, "FixedSys" BEGIN END -BPQDEBUGWINDOW DIALOG 17, 25, 400, 300 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +BPQDEBUGWINDOW DIALOG DISCARDABLE 17, 25, 400, 300 +STYLE DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | + WS_THICKFRAME CAPTION "Mail Debug Window" MENU MENU_3 CLASS "BPQDEBUGWINDOW" FONT 8, "FixedSys" BEGIN - LISTBOX 122,5,156,290,109,LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL + LISTBOX 122,5,156,290,109,LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT | + WS_VSCROLL | WS_HSCROLL END -102 DIALOG 0, 0, 385, 301 -STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | WS_THICKFRAME +102 DIALOG DISCARDABLE 0, 0, 385, 301 +STYLE WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | + WS_THICKFRAME CAPTION "Configuration" FONT 8, "System" BEGIN END -BBS_CONFIG DIALOG 0, 0, 381, 306 -STYLE DS_SETFONT | WS_CHILD +BBS_CONFIG DIALOG DISCARDABLE 0, 0, 381, 306 +STYLE WS_CHILD FONT 8, "System" BEGIN - LTEXT "BBS Call is the base callsign, without SSID. This is not necessarily the same as the Application Callsign defined in the BPQ32 configuration. SYSOP Call is the callsign used by the local console.",IDC_STATIC,10,4,354,23 - LTEXT "The Application Number defines which BPQ32 Application gives access to the BBS. Note this is the APPLNumber (1-32) not an Application Mask, as used in many BPQ32 programs.",IDC_STATIC,10,27,353,18 - LTEXT "The eMail Server Params configure the NNTP, SMTP and POP3 Servers, which allow normal Internet email and News clients to get messages from, and post mesages to the BBS. If you don't want to use this, set them to zero.. ",IDC_STATIC,8,52,357,27 - LTEXT "Enable UI System activates FBB compatible UI broadcasting of Message Headers",IDC_STATIC,8,80,357,15 + LTEXT "BBS Call is the base callsign, without SSID. This is not necessarily the same as the Application Callsign defined in the BPQ32 configuration. SYSOP Call is the callsign used by the local console.", + IDC_STATIC,10,4,354,23 + LTEXT "The Application Number defines which BPQ32 Application gives access to the BBS. Note this is the APPLNumber (1-32) not an Application Mask, as used in many BPQ32 programs.", + IDC_STATIC,10,27,353,18 + LTEXT "The eMail Server Params configure the NNTP, SMTP and POP3 Servers, which allow normal Internet email and News clients to get messages from, and post mesages to the BBS. If you don't want to use this, set them to zero.. ", + IDC_STATIC,8,52,357,27 + LTEXT "Enable UI System activates FBB compatible UI broadcasting of Message Headers", + IDC_STATIC,8,80,357,15 LTEXT "BBS Call",IDC_STATIC,7,105,37,12 EDITTEXT IDC_BBSCall,83,103,47,14,ES_UPPERCASE LTEXT "SYSOP Call",IDC_STATIC,138,105,42,12 EDITTEXT IDC_SYSOPCALL,184,103,42,14,ES_UPPERCASE CONTROL "Send SYSTEM Msgs to SYSOP call",IDC_SYSTOSYSOPCALL, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,231,104,129,12 + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,231, + 104,129,12 LTEXT "H Route",IDC_STATIC,7,122,37,12 EDITTEXT IDC_HRoute,83,120,119,13,ES_UPPERCASE LTEXT "BBS Appl Number",IDC_STATIC,7,138,61,10 EDITTEXT IDC_BBSAppl,83,136,29,12 LTEXT "Streams",IDC_STATIC,130,138,32,10 EDITTEXT IDC_BBSStreams,168,136,29,12 - CONTROL "Refuse Bulls",IDC_REFUSEBULLS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,211,138,53,10 - CONTROL "Enable FBB UI System",IDC_ENABLEUI,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,6,157,87,10 + CONTROL "Refuse Bulls",IDC_REFUSEBULLS,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,211,138,53,10 + CONTROL "Enable FBB UI System",IDC_ENABLEUI,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,6,157,87,10 LTEXT "Send Mail For Beacons Every",IDC_STATIC,102,157,100,12 EDITTEXT MAILFOR_MINS,205,156,22,12,ES_UPPERCASE LTEXT "Minutes",IDC_STATIC,232,157,30,12 @@ -182,58 +202,86 @@ BEGIN EDITTEXT IDC_POP3Port,130,241,29,14 LTEXT "SMTP Port",IDC_STATIC,170,243,37,12 EDITTEXT IDC_SMTPPort,210,241,29,14 - CONTROL "Enable Remote Access",1009,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,249,240,91,14 + CONTROL "Enable Remote Access",1009,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,249,240,91,14 PUSHBUTTON "Save",IDC_BBSSAVE,159,281,50,14,BS_CENTER | BS_VCENTER CONTROL "Don't hold messages from new users",IDC_DONTHOLDNEW, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5,189,134,12 - CONTROL "Forward Messages to BBS Call",IDC_FORWARDTOBBS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,145,189,114,12 - CONTROL "Redirect msgs to BBS Call to SYSOP Call",IDC_BBSTOSYSOPCALL, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,213,120,146,12 - CONTROL "Don't Request Home BBS",IDC_NOHOMEBBS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,260,174,99,12 - CONTROL "Don't Request Name",IDC_NONAME,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,176,174,79,12 + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5, + 189,134,12 + CONTROL "Forward Messages to BBS Call",IDC_FORWARDTOBBS,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,145,189,114, + 12 + CONTROL "Redirect msgs to BBS Call to SYSOP Call", + IDC_BBSTOSYSOPCALL,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,213,120,146,12 + CONTROL "Don't Request Home BBS",IDC_NOHOMEBBS,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,260,174,99,12 + CONTROL "Don't Request Name",IDC_NONAME,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,176,174,79,12 EDITTEXT IDC_AMPR,72,258,119,13 LTEXT "AMPR Address",IDC_STATIC,6,260,60,12 - CONTROL "Send ampr.org mail to AMPR host",IDC_FORWARDAMPR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,201,258,124,14 - CONTROL "Allow users to kill T msgs",IDC_USERRKILLT,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,264,189,95,12 - CONTROL "Set Don't add WINLINK.ORG flag on new users",IDC_DEFAULTNOWINLINK, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5,174,162,12 - CONTROL "Don't allow unknown users",IDC_KNOWNUSERS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,277,138,98,10 - CONTROL "Don't Check From Calls",IDC_DONTCHECKFROM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5,204,95,12 + CONTROL "Send ampr.org mail to AMPR host",IDC_FORWARDAMPR, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,201,258,124,14 + CONTROL "Allow users to kill T msgs",IDC_USERRKILLT,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,264,189,95,12 + CONTROL "Set Don't add WINLINK.ORG flag on new users", + IDC_DEFAULTNOWINLINK,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,5,174,162,12 + CONTROL "Don't allow unknown users",IDC_KNOWNUSERS,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,277,138,98,10 + CONTROL "Don't Check From Calls",IDC_DONTCHECKFROM,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5,204,95,12 END -CHAT_CONFIG DIALOG 0, 0, 381, 266 -STYLE DS_SETFONT | WS_CHILD +CHAT_CONFIG DIALOG DISCARDABLE 0, 0, 381, 266 +STYLE WS_CHILD FONT 8, "System" BEGIN LTEXT "Chat Appl Number",-1,115,109,61,8 EDITTEXT 2001,185,106,29,14 LTEXT "Nodes to link to",-1,115,129,53,8 - EDITTEXT 2002,185,125,87,88,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT 2002,185,125,87,88,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN DEFPUSHBUTTON "Save",2100,172,226,50,14,BS_CENTER | BS_VCENTER - LTEXT "The Application Number defines which BPQ32 Application gives access to the Chat Server. Note this is the APPLNumber (1-32) not an Application Mask, as uses in many BPQ32 programs.",-1,10,10,353,18 - LTEXT "The Nodes to link to box defines which other Chat Nodes should be connected to, or from which connections may be accepted. The format is ALIAS:CALL, eg BPQCHT:G8BPQ-4. Note these must be directly connectable - ie in your NODES table.",-1,10,30,355,25 - LTEXT "The Callsign of the Chat Node is not defined here - It is obtained from the BPQ32 APPLCALL parameter corresponding to the Chat Appl Number.",-1,10,60,360,25 + LTEXT "The Application Number defines which BPQ32 Application gives access to the Chat Server. Note this is the APPLNumber (1-32) not an Application Mask, as uses in many BPQ32 programs.", + -1,10,10,353,18 + LTEXT "The Nodes to link to box defines which other Chat Nodes should be connected to, or from which connections may be accepted. The format is ALIAS:CALL, eg BPQCHT:G8BPQ-4. Note these must be directly connectable - ie in your NODES table.", + -1,10,30,355,25 + LTEXT "The Callsign of the Chat Node is not defined here - It is obtained from the BPQ32 APPLCALL parameter corresponding to the Chat Appl Number.", + -1,10,60,360,25 END IDD_USEREDIT DIALOGEX 20, 20, 293, 281 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Edit User" FONT 8, "System", 0, 0, 0x1 BEGIN - COMBOBOX 5000,7,10,57,123,CBS_SIMPLE | CBS_SORT | CBS_UPPERCASE | WS_VSCROLL | WS_TABSTOP - CONTROL "BBS",IDC_BBSFLAG,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,9,57,10 - CONTROL "PMS",IDC_PMSFLAG,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,22,57,10 - CONTROL "Sysop",IDC_SYSOP,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,35,57,10 - CONTROL "Expert",IDC_EXPERT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,48,57,10 - CONTROL "Excluded",IDC_EXCLUDED,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,61,57,10 - CONTROL "Hold Messages",IDC_HOLDMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,74,65,10 - CONTROL "NTS MPS",IDC_NTSMPS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,87,69,10 - CONTROL "Permit Email",IDC_EMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,9,57,10 - CONTROL "Poll RMS for SSID's",IDC_POLLRMS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,23,78,8,0,HIDC_POLLRMS + COMBOBOX 5000,7,10,57,123,CBS_SIMPLE | CBS_SORT | CBS_UPPERCASE | + WS_VSCROLL | WS_TABSTOP + CONTROL "BBS",IDC_BBSFLAG,"Button",BS_AUTOCHECKBOX | BS_LEFT | + WS_TABSTOP,72,9,57,10 + CONTROL "PMS",IDC_PMSFLAG,"Button",BS_AUTOCHECKBOX | BS_LEFT | + WS_TABSTOP,72,22,57,10 + CONTROL "Sysop",IDC_SYSOP,"Button",BS_AUTOCHECKBOX | BS_LEFT | + WS_TABSTOP,72,35,57,10 + CONTROL "Expert",IDC_EXPERT,"Button",BS_AUTOCHECKBOX | BS_LEFT | + WS_TABSTOP,72,48,57,10 + CONTROL "Excluded",IDC_EXCLUDED,"Button",BS_AUTOCHECKBOX | + BS_LEFT | WS_TABSTOP,72,61,57,10 + CONTROL "Hold Messages",IDC_HOLDMAIL,"Button",BS_AUTOCHECKBOX | + BS_LEFT | WS_TABSTOP,72,74,65,10 + CONTROL "NTS MPS",IDC_NTSMPS,"Button",BS_AUTOCHECKBOX | BS_LEFT | + WS_TABSTOP,72,87,69,10 + CONTROL "Permit Email",IDC_EMAIL,"Button",BS_AUTOCHECKBOX | + BS_LEFT | WS_TABSTOP,163,9,57,10 + CONTROL "Poll RMS for SSID's",IDC_POLLRMS,"Button", + BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,23,78,8,0, + HIDC_POLLRMS EDITTEXT RMS_SSID1,244,21,13,12,ES_AUTOHSCROLL EDITTEXT RMS_SSID2,258,21,13,12,ES_AUTOHSCROLL EDITTEXT RMS_SSID3,272,21,13,12,ES_AUTOHSCROLL - CONTROL "RMS Express User",RMS_EXPRESS_USER,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,35,77,10 + CONTROL "RMS Express User",RMS_EXPRESS_USER,"Button", + BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,35,77,10 LTEXT "Last Listed",IDC_STATIC,163,87,38,12 EDITTEXT IDC_LASTLISTED,248,85,29,12,ES_AUTOHSCROLL LTEXT "Name",IDC_STATIC,7,184,35,14 @@ -244,7 +292,8 @@ BEGIN EDITTEXT IDC_QTH,55,218,130,14,ES_AUTOHSCROLL LTEXT "Home BBS",IDC_STATIC,7,238,40,14 EDITTEXT IDC_HOMEBBS,55,236,162,14,ES_UPPERCASE | ES_AUTOHSCROLL - PUSHBUTTON "Add user",IDC_ADDUSER,79,257,42,14,BS_CENTER | BS_VCENTER + PUSHBUTTON "Add user",IDC_ADDUSER,79,257,42,14,BS_CENTER | + BS_VCENTER PUSHBUTTON "Delete user",5101,124,257,42,14,BS_CENTER | BS_VCENTER PUSHBUTTON "Save",5102,169,257,42,14,BS_CENTER | BS_VCENTER LTEXT "Connects in",IDC_STATIC,10,131,45,10 @@ -265,25 +314,33 @@ BEGIN LTEXT "0",BYTES_IN,45,153,38,10,0,WS_EX_RIGHT LTEXT "Last Connect",IDC_STATIC,87,153,45,10 LTEXT "Never",LASTCONNECT,134,153,93,10 - CONTROL "Don't add @winlink.org",NO_WINLINKdotORG,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,47,100,10 + CONTROL "Don't add @winlink.org",NO_WINLINKdotORG,"Button", + BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,47,100,10 LTEXT "ZIP",IDC_STATIC,189,221,12,11 EDITTEXT IDC_UZIP,207,219,38,12,ES_AUTOHSCROLL - CONTROL "Allow sending Bulls",ALLOW_BULLS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,61,100,10 - CONTROL "Include SYSOP msgs in LM",IDC_SYSOP_IN_LM,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_DISABLED | WS_TABSTOP,163,74,100,10 + CONTROL "Allow sending Bulls",ALLOW_BULLS,"Button", + BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,61,100,10 + CONTROL "Include SYSOP msgs in LM",IDC_SYSOP_IN_LM,"Button", + BS_AUTOCHECKBOX | BS_LEFT | WS_DISABLED | WS_TABSTOP,163, + 74,100,10 EDITTEXT IDC_CMSPASS,187,201,88,14,ES_PASSWORD - CONTROL "CMS Pass",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,149,203,34,14 - CONTROL "Send Mail For to APRS ssid",IDC_APRSMFOR,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,113,108,10 + CONTROL "CMS Pass",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | + WS_GROUP,149,203,34,14 + CONTROL "Send Mail For to APRS ssid",IDC_APRSMFOR,"Button", + BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,113,108,10 EDITTEXT IDC_APRSSSID,182,112,16,12,ES_AUTOHSCROLL - CONTROL "Redirect to RMS",IDC_RMSREDIRECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,100,69,10 + CONTROL "Redirect to RMS",IDC_RMSREDIRECT,"Button", + BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,100,69,10 END -ISP_CONFIG DIALOG 26, 5, 381, 284 -STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +ISP_CONFIG DIALOG DISCARDABLE 26, 5, 381, 284 +STYLE WS_CHILD | WS_VISIBLE FONT 8, "System" BEGIN EDITTEXT 3001,95,110,100,15 LTEXT "SMTP Server",-1,10,130,53,13 - LTEXT "The system relies on having an email domain which supports forwarding of all email addresses to a fixed mailbox. For example, I could register domain mycall.org.uk, and have any mail sent to anyone@mycall.org.uk forwarded to mymailbox@myisp.com",1,10,34,349,25 + LTEXT "The system relies on having an email domain which supports forwarding of all email addresses to a fixed mailbox. For example, I could register domain mycall.org.uk, and have any mail sent to anyone@mycall.org.uk forwarded to mymailbox@myisp.com", + 1,10,34,349,25 LTEXT "POP3 Server",-1,10,146,61,13 LTEXT "ISP Account Name",-1,10,163,63,13 EDITTEXT IDC_ISPSMTPName,95,127,148,15 @@ -293,87 +350,134 @@ BEGIN LTEXT "Port",-1,250,130,19,13 EDITTEXT 3005,275,144,29,15 EDITTEXT 3003,275,127,29,15 - LTEXT "This page configures the BBS <> Internet Mail Gateway. The Gateway allows local users to send messages to Internet email addresses, and get replies from those messages",-1,10,10,353,20 + LTEXT "This page configures the BBS <> Internet Mail Gateway. The Gateway allows local users to send messages to Internet email addresses, and get replies from those messages", + -1,10,10,353,20 LTEXT "My Domain",-1,10,112,51,8 LTEXT "ISP Account Password",-1,10,180,80,13 EDITTEXT 3007,95,178,147,15,ES_PASSWORD LTEXT "POP3 Poll Interval (Seconds)",-1,10,216,80,18 EDITTEXT 3008,95,219,29,12 - LTEXT "WARNING This feature my be illegal in some administrations. Make sure your authorities permit forwarding mail from the Amateur Service before enabling it",-1,10,64,348,15 - CONTROL "Enable Internet Gateway",3000,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,10,90,90,15 + LTEXT "WARNING This feature my be illegal in some administrations. Make sure your authorities permit forwarding mail from the Amateur Service before enabling it", + -1,10,64,348,15 + CONTROL "Enable Internet Gateway",3000,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,10,90,90,15 DEFPUSHBUTTON "Save",3100,165,261,57,17,BS_CENTER | BS_VCENTER CONTROL "SMTP Server Requires Authentication",ISP_SMTP_AUTH, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | BS_MULTILINE | WS_TABSTOP,250,159,69,32 + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | + BS_MULTILINE | WS_TABSTOP,250,159,69,32 EDITTEXT SMTP_EHELO,95,196,100,15 LTEXT "SMTP ""EHELO"" Domain",-1,10,198,80,8 END -IDD_FORWARDING DIALOG 20, 20, 457, 327 -STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | WS_THICKFRAME +IDD_FORWARDING DIALOG DISCARDABLE 20, 20, 457, 327 +STYLE WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | + WS_THICKFRAME CAPTION "Manage Forwarding" FONT 8, "System" BEGIN - LTEXT "Forwarding Rules are define here. BBS Records are created by setting the BBS flag on a User Record.",IDC_STATIC,5,7,368,10 - LTEXT "The Enable Forwarding flag allows you to disable forwarding without losing the messages to be forwarded. ",IDC_STATIC,5,20,373,8 + LTEXT "Forwarding Rules are define here. BBS Records are created by setting the BBS flag on a User Record.", + IDC_STATIC,5,7,368,10 + LTEXT "The Enable Forwarding flag allows you to disable forwarding without losing the messages to be forwarded. ", + IDC_STATIC,5,20,373,8 GROUPBOX "Global Params",IDC_STATIC,2,33,114,263 LTEXT "Max Size to Send",IDC_STATIC,5,50,58,12 EDITTEXT IDC_MAXSEND,66,49,26,12,ES_AUTOHSCROLL LTEXT "Max Size to Recv",IDC_STATIC,5,68,58,12 EDITTEXT IDC_MAXRECV,66,66,26,12,ES_AUTOHSCROLL - CONTROL "Warn if no route for P or T",IDC_WARNNOROUTE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,101,103,8 + 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 | 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 - CONTROL "Readdress Received",IDC_READDRESSRXED,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,4,281,97,8 + EDITTEXT IDC_ALIAS,4,183,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 + CONTROL "Readdress Received",IDC_READDRESSRXED,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_DISABLED | WS_TABSTOP,4,281,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 | CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL + COMBOBOX IDC_BBS,122,59,50,60,CBS_SIMPLE | CBS_OEMCONVERT | + CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL LTEXT "To Calls:",IDC_STATIC,186,46,40,10 - EDITTEXT IDC_TOCALLS,177,59,50,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_TOCALLS,177,59,50,60,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL LTEXT "AT Calls:",IDC_STATIC,242,46,43,10 - EDITTEXT IDC_ATCALLS,233,59,50,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_ATCALLS,233,59,50,60,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL LTEXT "Times",IDC_STATIC,299,46,30,13 - EDITTEXT IDC_FWDTIMES,288,59,50,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_FWDTIMES,288,59,50,60,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL LTEXT "Connect Script",IDC_STATIC,348,46,57,13 - EDITTEXT IDC_CALL,343,59,92,60,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL - LTEXT "Hierarchical Routes (Flood Bulls)",IDC_STATIC,141,126,114,12 - EDITTEXT IDC_HROUTES,122,140,148,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL - LTEXT "HR (Personals and Directed Bulls)",IDC_STATIC,281,126,125,12 - EDITTEXT IDC_HROUTESP,280,141,151,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL + EDITTEXT IDC_CALL,343,59,92,60,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + LTEXT "Hierarchical Routes (Flood Bulls)",IDC_STATIC,141,126, + 114,12 + EDITTEXT IDC_HROUTES,122,140,148,60,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL | WS_HSCROLL + LTEXT "HR (Personals and Directed Bulls)",IDC_STATIC,281,126, + 125,12 + EDITTEXT IDC_HROUTESP,280,141,151,60,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL | WS_HSCROLL LTEXT "Interval (Secs)",IDC_STATIC,359,205,48,8 EDITTEXT IDC_FWDINT,253,204,22,12,ES_AUTOHSCROLL - CONTROL "Enable Forwarding",4000,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,122,206,72,8 - CONTROL "Request Reverse",4006,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,286,206,67,8 - CONTROL "Send new messages without waiting for poll timer",IDC_SENDNEW, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,122,221,182,8 + CONTROL "Enable Forwarding",4000,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,122,206,72,8 + CONTROL "Request Reverse",4006,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,286,206,67,8 + CONTROL "Send new messages without waiting for poll timer", + IDC_SENDNEW,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | + BS_MULTILINE | WS_TABSTOP,122,221,182,8 LTEXT "BBS HA",IDC_STATIC,125,242,30,12 EDITTEXT IDC_BBSHA,162,240,134,12,ES_UPPERCASE | ES_AUTOHSCROLL LTEXT "Max Block",IDC_STATIC,368,241,37,12 EDITTEXT IDC_MAXBLOCK,407,240,26,12,ES_AUTOHSCROLL - CONTROL "Send Personal Mail Only",IDC_PERSONALONLY,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,321,221,108,8 - CONTROL "Allow Binary",IDC_ALLOWCOMP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,125,260,58,8 - CONTROL "Use B1 Protocol",IDC_USEB1,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,185,260,72,8 - CONTROL "Use B2 Protocol",IDC_USEB2,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,261,260,67,8 - DEFPUSHBUTTON "? Help",IDC_HRHELP,381,6,33,11,BS_CENTER | BS_VCENTER | NOT WS_TABSTOP + CONTROL "Send Personal Mail Only",IDC_PERSONALONLY,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_TABSTOP,321,221,108,8 + CONTROL "Allow Binary",IDC_ALLOWCOMP,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,125,260,58,8 + CONTROL "Use B1 Protocol",IDC_USEB1,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,185,260,72,8 + CONTROL "Use B2 Protocol",IDC_USEB2,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,261,260,67,8 + DEFPUSHBUTTON "? Help",IDC_HRHELP,381,6,33,11,BS_CENTER | BS_VCENTER | + NOT WS_TABSTOP DEFPUSHBUTTON "Save",4100,352,303,57,17,BS_CENTER | BS_VCENTER LTEXT "Interval (Secs)",IDC_STATIC,198,206,48,8 EDITTEXT IDC_REVFWDINT,407,205,23,12,ES_AUTOHSCROLL - CONTROL "Use Local Time ",IDC_USELOCALTIME,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,116,103,8 - CONTROL "Send ctrl/Z instead of /ex",IDC_CTRLZ,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,333,260,100,8 + CONTROL "Use Local Time ",IDC_USELOCALTIME,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_TABSTOP,5,116,103,8 + CONTROL "Send ctrl/Z instead of /ex",IDC_CTRLZ,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_TABSTOP,333,260,100,8 LTEXT "Max Bull Age",IDC_STATIC,5,86,58,12 EDITTEXT IDC_MAXAGE,66,84,26,12,ES_AUTOHSCROLL - CONTROL "FBB Blocked",IDC_BLOCKED,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,301,241,61,8 - PUSHBUTTON "Copy From BBS",COPYCONFIG,160,303,57,17,BS_CENTER | BS_VCENTER + CONTROL "FBB Blocked",IDC_BLOCKED,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,301,241,61,8 + PUSHBUTTON "Copy From BBS",COPYCONFIG,160,303,57,17,BS_CENTER | + BS_VCENTER EDITTEXT COPYFROMCALL,227,303,35,17,ES_UPPERCASE | ES_AUTOHSCROLL - CONTROL "Send P to more than 1 BBS",IDC_MULTIP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,130,103,8 + CONTROL "Send P to more than 1 BBS",IDC_MULTIP,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + 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 + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_TABSTOP,6,146,103,8 END -IDD_USERADDED_BOX DIALOG 176, 132, 129, 68 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME +IDD_USERADDED_BOX DIALOG DISCARDABLE 176, 132, 129, 68 +STYLE DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME FONT 8, "System" BEGIN DEFPUSHBUTTON "Ok",0,47,48,36,17,BS_CENTER | BS_VCENTER @@ -381,14 +485,17 @@ BEGIN END IDD_MSGEDIT DIALOGEX 20, 20, 421, 298 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Edit Message" FONT 8, "System", 0, 0, 0x1 BEGIN RTEXT "Msg",IDC_STATIC,7,7,19,8 - LISTBOX 0,33,7,65,81,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_MSGTYPE,125,9,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_MSGSTATUS,185,9,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LISTBOX 0,33,7,65,81,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | + WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_MSGTYPE,125,9,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + COMBOBOX IDC_MSGSTATUS,185,9,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP RTEXT "From",IDC_STATIC,7,98,19,8 EDITTEXT 6001,33,95,65,14,ES_UPPERCASE | ES_AUTOHSCROLL RTEXT "BID",IDC_STATIC,7,114,19,8 @@ -409,187 +516,333 @@ BEGIN RTEXT "Size",IDC_STATIC,116,147,32,8 EDITTEXT 6020,153,145,55,14,ES_AUTOHSCROLL LTEXT "Type",IDC_STATIC,105,10,17,8 - CONTROL "",25,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,7,35,10 - CONTROL "",26,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,17,35,10 - CONTROL "",27,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,27,35,10 - CONTROL "",28,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,37,35,10 - CONTROL "",29,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,47,35,10 - CONTROL "",30,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,57,35,10 - CONTROL "",31,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,67,35,10 - CONTROL "",32,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,77,35,10 - CONTROL "",33,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,87,35,10 - CONTROL "",34,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,97,35,10 - CONTROL "",35,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,107,35,10 - CONTROL "",36,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,117,35,10 - CONTROL "",37,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,127,35,10 - CONTROL "",38,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,137,35,10 - CONTROL "",39,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,147,35,10 - CONTROL "",40,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,157,35,10 - CONTROL "",41,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,167,35,10 - CONTROL "",42,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,177,35,10 - CONTROL "",43,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,187,35,10 - CONTROL "",44,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,197,35,10 - CONTROL "",45,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,208,35,10 - CONTROL "",46,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,218,35,10 - CONTROL "",47,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,228,35,10 - CONTROL "",48,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,238,35,10 - CONTROL "",49,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,248,35,10 - CONTROL "",50,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,7,35,10 - CONTROL "",51,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,17,35,10 - CONTROL "",52,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,27,35,10 - CONTROL "",53,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,37,35,10 - CONTROL "",54,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,47,35,10 - CONTROL "",55,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,57,35,10 - CONTROL "",56,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,67,35,10 - CONTROL "",57,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,77,35,10 - CONTROL "",58,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,87,35,10 - CONTROL "",59,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,97,35,10 - CONTROL "",60,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,107,35,10 - CONTROL "",61,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,117,35,10 - CONTROL "",62,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,127,35,10 - CONTROL "",63,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,137,35,10 - CONTROL "",64,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,147,35,10 - CONTROL "",65,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,157,35,10 - CONTROL "",66,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,167,35,10 - CONTROL "",67,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,177,35,10 - CONTROL "",68,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,187,35,10 - CONTROL "",69,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,197,35,10 - CONTROL "",70,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,207,35,10 - CONTROL "",71,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,217,35,10 - CONTROL "",72,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,227,35,10 - CONTROL "",73,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,237,35,10 - CONTROL "",74,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,247,35,10 - CONTROL "",75,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,7,35,10 - CONTROL "",76,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,17,35,10 - CONTROL "",77,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,27,35,10 - CONTROL "",78,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,37,35,10 - CONTROL "",79,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,47,35,10 - CONTROL "",80,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,57,35,10 - CONTROL "",81,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,67,35,10 - CONTROL "",82,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,77,35,10 - CONTROL "",83,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,87,35,10 - CONTROL "",84,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,97,35,10 - CONTROL "",85,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,107,35,10 - CONTROL "",86,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,117,35,10 - CONTROL "",87,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,127,35,10 - CONTROL "",88,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,137,35,10 - CONTROL "",89,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,147,35,10 - CONTROL "",90,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,157,35,10 - CONTROL "",91,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,167,35,10 - CONTROL "",92,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,177,35,10 - CONTROL "",93,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,187,35,10 - CONTROL "",94,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,197,35,10 - CONTROL "",95,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,207,35,10 - CONTROL "",96,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,217,35,10 - CONTROL "",97,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,227,35,10 - CONTROL "",98,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,237,35,10 - CONTROL "",99,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,247,35,10 - CONTROL "",100,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,7,35,10 - CONTROL "",101,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,18,35,10 - CONTROL "",102,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,27,35,10 - CONTROL "",103,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,37,35,10 - CONTROL "",104,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,47,35,10 + CONTROL "",25,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,7,35,10 + CONTROL "",26,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,17,35,10 + CONTROL "",27,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,27,35,10 + CONTROL "",28,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,37,35,10 + CONTROL "",29,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,47,35,10 + CONTROL "",30,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,57,35,10 + CONTROL "",31,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,67,35,10 + CONTROL "",32,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,77,35,10 + CONTROL "",33,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,87,35,10 + CONTROL "",34,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,97,35,10 + CONTROL "",35,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,107,35,10 + CONTROL "",36,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,117,35,10 + CONTROL "",37,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,127,35,10 + CONTROL "",38,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,137,35,10 + CONTROL "",39,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,147,35,10 + CONTROL "",40,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,157,35,10 + CONTROL "",41,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,167,35,10 + CONTROL "",42,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,177,35,10 + CONTROL "",43,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,187,35,10 + CONTROL "",44,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,197,35,10 + CONTROL "",45,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,208,35,10 + CONTROL "",46,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,218,35,10 + CONTROL "",47,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,228,35,10 + CONTROL "",48,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,238,35,10 + CONTROL "",49,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,221,248,35,10 + CONTROL "",50,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,7,35,10 + CONTROL "",51,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,17,35,10 + CONTROL "",52,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,27,35,10 + CONTROL "",53,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,37,35,10 + CONTROL "",54,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,47,35,10 + CONTROL "",55,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,57,35,10 + CONTROL "",56,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,67,35,10 + CONTROL "",57,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,77,35,10 + CONTROL "",58,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,87,35,10 + CONTROL "",59,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,97,35,10 + CONTROL "",60,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,107,35,10 + CONTROL "",61,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,117,35,10 + CONTROL "",62,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,127,35,10 + CONTROL "",63,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,137,35,10 + CONTROL "",64,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,147,35,10 + CONTROL "",65,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,157,35,10 + CONTROL "",66,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,167,35,10 + CONTROL "",67,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,177,35,10 + CONTROL "",68,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,187,35,10 + CONTROL "",69,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,197,35,10 + CONTROL "",70,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,207,35,10 + CONTROL "",71,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,217,35,10 + CONTROL "",72,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,227,35,10 + CONTROL "",73,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,237,35,10 + CONTROL "",74,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,260,247,35,10 + CONTROL "",75,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,7,35,10 + CONTROL "",76,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,17,35,10 + CONTROL "",77,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,27,35,10 + CONTROL "",78,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,37,35,10 + CONTROL "",79,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,47,35,10 + CONTROL "",80,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,57,35,10 + CONTROL "",81,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,67,35,10 + CONTROL "",82,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,77,35,10 + CONTROL "",83,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,87,35,10 + CONTROL "",84,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,97,35,10 + CONTROL "",85,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,107,35,10 + CONTROL "",86,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,117,35,10 + CONTROL "",87,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,127,35,10 + CONTROL "",88,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,137,35,10 + CONTROL "",89,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,147,35,10 + CONTROL "",90,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,157,35,10 + CONTROL "",91,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,167,35,10 + CONTROL "",92,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,177,35,10 + CONTROL "",93,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,187,35,10 + CONTROL "",94,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,197,35,10 + CONTROL "",95,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,207,35,10 + CONTROL "",96,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,217,35,10 + CONTROL "",97,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,227,35,10 + CONTROL "",98,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,237,35,10 + CONTROL "",99,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,299,247,35,10 + CONTROL "",100,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,7,35,10 + CONTROL "",101,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,18,35,10 + CONTROL "",102,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,27,35,10 + CONTROL "",103,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,37,35,10 + CONTROL "",104,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,47,35,10 LTEXT "Key",IDC_STATIC,317,267,35,9 - CONTROL "Dont Send",205,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE,262,281,43,10 - CONTROL "Send",206,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE,311,280,35,10 - CONTROL "Sent",207,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE,353,280,35,10 - DEFPUSHBUTTON "Edit Text",IDC_EDITTEXT,24,275,38,15,BS_CENTER | BS_VCENTER - DEFPUSHBUTTON "Print",IDC_PRINTMSG,150,275,24,15,BS_CENTER | BS_VCENTER + CONTROL "Dont Send",205,"Button",BS_3STATE | BS_CENTER | + BS_PUSHLIKE,262,281,43,10 + CONTROL "Send",206,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE, + 311,280,35,10 + CONTROL "Sent",207,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE, + 353,280,35,10 + DEFPUSHBUTTON "Edit Text",IDC_EDITTEXT,24,275,38,15,BS_CENTER | + BS_VCENTER + DEFPUSHBUTTON "Print",IDC_PRINTMSG,150,275,24,15,BS_CENTER | + BS_VCENTER RTEXT "Filter From",IDC_STATIC,104,30,38,8 EDITTEXT FILTER_FROM,147,28,62,14,ES_UPPERCASE | ES_AUTOHSCROLL EDITTEXT FILTER_TO,147,44,62,14,ES_UPPERCASE | ES_AUTOHSCROLL - EDITTEXT FILTER_VIA,147,60,62,14,ES_UPPERCASE | ES_AUTOHSCROLL,0,HFILTER_VIA + EDITTEXT FILTER_VIA,147,60,62,14,ES_UPPERCASE | ES_AUTOHSCROLL,0, + HFILTER_VIA RTEXT "Filter To",IDC_STATIC,104,46,38,8 RTEXT "Filter Via",IDC_STATIC,104,62,38,8 DEFPUSHBUTTON "Save",IDC_SAVEMSG,67,275,24,15,BS_CENTER | BS_VCENTER - DEFPUSHBUTTON "Save to File",IDC_SAVETOFILE,96,275,49,15,BS_CENTER | BS_VCENTER + DEFPUSHBUTTON "Save to File",IDC_SAVETOFILE,96,275,49,15,BS_CENTER | + BS_VCENTER DEFPUSHBUTTON "Export",IDC_EXPORT,179,275,32,15,BS_CENTER | BS_VCENTER EDITTEXT EMAILFROM,33,169,177,14,ES_UPPERCASE | ES_AUTOHSCROLL RTEXT "Email From",IDC_STATIC,4,168,25,17 - CONTROL "",105,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,57,35,10 - CONTROL "",106,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,67,35,10 - CONTROL "",107,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,77,35,10 - CONTROL "",108,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,87,35,10 - CONTROL "",109,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,97,35,10 - CONTROL "",110,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,107,35,10 - CONTROL "",111,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,118,35,10 - CONTROL "",112,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,127,35,10 - CONTROL "",113,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,137,35,10 - CONTROL "",114,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,147,35,10 - CONTROL "",115,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,157,35,10 - CONTROL "",116,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,167,35,10 - CONTROL "",117,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,177,35,10 - CONTROL "",118,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,187,35,10 - CONTROL "",119,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,197,35,10 - CONTROL "",120,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,207,35,10 - CONTROL "",121,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,217,35,10 - CONTROL "",122,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,227,35,10 - CONTROL "",123,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,237,35,10 - CONTROL "",124,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,247,35,10 - CONTROL "",148,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,237,35,10 - CONTROL "",125,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,8,35,10 - CONTROL "",126,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,17,35,10 - CONTROL "",127,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,27,35,10 - CONTROL "",128,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,37,35,10 - CONTROL "",129,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,47,35,10 - CONTROL "",130,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,57,35,10 - CONTROL "",131,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,67,35,10 - CONTROL "",132,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,77,35,10 - CONTROL "",133,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,87,35,10 - CONTROL "",134,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,97,35,10 - CONTROL "",135,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,108,35,10 - CONTROL "",136,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,117,35,10 - CONTROL "",137,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,127,35,10 - CONTROL "",138,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,137,35,10 - CONTROL "",139,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,147,35,10 - CONTROL "",140,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,157,35,10 - CONTROL "",141,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,167,35,10 - CONTROL "",150,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,247,35,10 - CONTROL "",142,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,177,35,10 - CONTROL "",143,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,187,35,10 - CONTROL "",144,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,197,35,10 - CONTROL "",145,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,207,35,10 - CONTROL "",146,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,217,35,10 - CONTROL "",147,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,227,35,10 - EDITTEXT FILTER_BID,147,76,62,14,ES_UPPERCASE | ES_AUTOHSCROLL,0,HFILTER_BID + CONTROL "",105,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,57,35,10 + CONTROL "",106,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,67,35,10 + CONTROL "",107,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,77,35,10 + CONTROL "",108,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,87,35,10 + CONTROL "",109,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,97,35,10 + CONTROL "",110,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,107,35,10 + CONTROL "",111,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,118,35,10 + CONTROL "",112,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,127,35,10 + CONTROL "",113,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,137,35,10 + CONTROL "",114,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,147,35,10 + CONTROL "",115,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,157,35,10 + CONTROL "",116,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,167,35,10 + CONTROL "",117,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,177,35,10 + CONTROL "",118,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,187,35,10 + CONTROL "",119,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,197,35,10 + CONTROL "",120,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,207,35,10 + CONTROL "",121,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,217,35,10 + CONTROL "",122,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,227,35,10 + CONTROL "",123,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,237,35,10 + CONTROL "",124,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,337,247,35,10 + CONTROL "",148,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,237,35,10 + CONTROL "",125,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,8,35,10 + CONTROL "",126,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,17,35,10 + CONTROL "",127,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,27,35,10 + CONTROL "",128,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,37,35,10 + CONTROL "",129,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,47,35,10 + CONTROL "",130,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,57,35,10 + CONTROL "",131,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,67,35,10 + CONTROL "",132,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,77,35,10 + CONTROL "",133,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,87,35,10 + CONTROL "",134,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,97,35,10 + CONTROL "",135,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,108,35,10 + CONTROL "",136,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,117,35,10 + CONTROL "",137,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,127,35,10 + CONTROL "",138,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,137,35,10 + CONTROL "",139,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,147,35,10 + CONTROL "",140,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,157,35,10 + CONTROL "",141,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,167,35,10 + CONTROL "",150,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,247,35,10 + CONTROL "",142,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,177,35,10 + CONTROL "",143,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,187,35,10 + CONTROL "",144,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,197,35,10 + CONTROL "",145,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,207,35,10 + CONTROL "",146,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,217,35,10 + CONTROL "",147,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | + WS_TABSTOP,377,227,35,10 + EDITTEXT FILTER_BID,147,76,62,14,ES_UPPERCASE | ES_AUTOHSCROLL,0, + HFILTER_BID RTEXT "Filter BID",IDC_STATIC,104,78,38,8 END -WELCOMEMSG DIALOG 26, 5, 365, 281 -STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +WELCOMEMSG DIALOG DISCARDABLE 26, 5, 365, 281 +STYLE WS_CHILD | WS_VISIBLE FONT 8, "System" BEGIN LTEXT "Normal User Welcome Message",IDC_STATIC,5,7,130,8 - EDITTEXT IDM_USERMSG,5,20,340,50,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + EDITTEXT IDM_USERMSG,5,20,340,50,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN LTEXT "New User Welcome Message",IDC_STATIC,5,75,130,8 - EDITTEXT IDM_NEWUSERMSG,5,89,340,65,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + EDITTEXT IDM_NEWUSERMSG,5,89,340,65,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN LTEXT "Expert User Welcome Message",IDC_STATIC,5,159,130,8 - EDITTEXT IDM_EXPERTUSERMSG,5,172,340,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + EDITTEXT IDM_EXPERTUSERMSG,5,172,340,12,ES_MULTILINE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN DEFPUSHBUTTON "Save",IDM_MSGSAVE,166,264,50,14,BS_CENTER | BS_VCENTER - LTEXT "$U : Callsign of the user $I : First name of the user $X Messages for user $x Unread messages",IDC_STATIC,0,222,365,8 - LTEXT "$L : Number of the latest message $N : Number of active messages. $Z : Last message read by user",IDC_STATIC,0,234,365,10 + LTEXT "$U : Callsign of the user $I : First name of the user $X Messages for user $x Unread messages", + IDC_STATIC,0,222,365,8 + LTEXT "$L : Number of the latest message $N : Number of active messages. $Z : Last message read by user", + IDC_STATIC,0,234,365,10 LTEXT "Signoff Message",IDC_STATIC,5,190,130,8 - EDITTEXT IDM_SIGNOFF,5,202,340,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - LTEXT "$F : Number of mesages to be forwarded to user (if a BBS)",IDC_STATIC,0,246,365,10 + EDITTEXT IDM_SIGNOFF,5,202,340,12,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "$F : Number of mesages to be forwarded to user (if a BBS)", + IDC_STATIC,0,246,365,10 END -BBSPROMPTS DIALOG 26, 5, 381, 266 -STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +BBSPROMPTS DIALOG DISCARDABLE 26, 5, 381, 266 +STYLE WS_CHILD | WS_VISIBLE FONT 8, "System" BEGIN LTEXT "Normal User Prompt",IDC_STATIC,5,7,130,8 - EDITTEXT IDM_USERMSG,5,20,340,35,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + EDITTEXT IDM_USERMSG,5,20,340,35,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN LTEXT "New User Prompt",IDC_STATIC,5,59,130,8 - EDITTEXT IDM_NEWUSERMSG,5,70,340,35,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + EDITTEXT IDM_NEWUSERMSG,5,70,340,35,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN LTEXT "Expert User Prompt",IDC_STATIC,5,110,130,8 - EDITTEXT IDM_EXPERTUSERMSG,5,120,340,35,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - DEFPUSHBUTTON "Save",IDM_PROMPTSAVE,166,250,50,14,BS_CENTER | BS_VCENTER - LTEXT "$U : Callsign of the user $I : First name of the user $X Messages for user $x Unread messages",IDC_STATIC,2,165,353,8 - LTEXT "$L : Number of the latest message $N : Number of active messages. $Z : Last message read by user",IDC_STATIC,3,175,347,10 + EDITTEXT IDM_EXPERTUSERMSG,5,120,340,35,ES_MULTILINE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",IDM_PROMPTSAVE,166,250,50,14,BS_CENTER | + BS_VCENTER + LTEXT "$U : Callsign of the user $I : First name of the user $X Messages for user $x Unread messages", + IDC_STATIC,2,165,353,8 + LTEXT "$L : Number of the latest message $N : Number of active messages. $Z : Last message read by user", + IDC_STATIC,3,175,347,10 END -IDD_MAINTRESULTS DIALOG 0, 0, 181, 114 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME +IDD_MAINTRESULTS DIALOG DISCARDABLE 0, 0, 181, 114 +STYLE DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME CAPTION "Maintenance Results" FONT 8, "System" BEGIN @@ -608,12 +861,13 @@ BEGIN LTEXT "Static",IDC_BIDSLEFT,146,69,30,10 END -IDD_EDITWP DIALOG 0, 0, 398, 265 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_EDITWP DIALOG DISCARDABLE 0, 0, 398, 265 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "EDIT WP Record" FONT 8, "MS Sans Serif" BEGIN - COMBOBOX IDC_WP,9,9,76,190,CBS_SIMPLE | CBS_SORT | CBS_UPPERCASE | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_WP,9,9,76,190,CBS_SIMPLE | CBS_SORT | CBS_UPPERCASE | + WS_VSCROLL | WS_TABSTOP LTEXT "Name",-1,100,11,47,10 EDITTEXT IDC_WPNAME,165,10,128,12,ES_AUTOHSCROLL LTEXT "Home BBS 1",-1,100,26,53,10 @@ -638,12 +892,13 @@ BEGIN LTEXT "Seen",-1,100,186,47,12 EDITTEXT IDC_CHANGED,165,170,59,12,ES_AUTOHSCROLL EDITTEXT IDC_SEEN,165,185,59,12,ES_AUTOHSCROLL - PUSHBUTTON "Delete",IDC_DELETEWP,106,215,56,17,BS_CENTER | BS_VCENTER + PUSHBUTTON "Delete",IDC_DELETEWP,106,215,56,17,BS_CENTER | + BS_VCENTER PUSHBUTTON "Save",IDC_SAVEWP,171,216,56,17,BS_CENTER | BS_VCENTER END -IDD_UICONFIG DIALOG 0, 0, 400, 151 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_UICONFIG DIALOG DISCARDABLE 0, 0, 400, 151 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "UI Configuration" FONT 8, "System" BEGIN @@ -651,48 +906,58 @@ BEGIN PUSHBUTTON "Cancel",IDCANCEL,342,98,50,14 LTEXT "Mailfor Header",IDC_STATIC,5,5,50,10 EDITTEXT IDC_MAILFOR,61,3,331,12,ES_AUTOHSCROLL - LTEXT "Send: Mail For Headers Null Mailfor",IDC_STATIC,242,25,127,10 - LTEXT "(use \\r to insert newline in message)",IDC_STATIC,62,16,125,10 + LTEXT "Send: Mail For Headers Null Mailfor",IDC_STATIC,242, + 25,127,10 + LTEXT "(use \\r to insert newline in message)",IDC_STATIC,62, + 16,125,10 END -IDD_CHATCOLCONFIG DIALOG 0, 0, 224, 120 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_CHATCOLCONFIG DIALOG DISCARDABLE 0, 0, 224, 120 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Chat Colour Configuration" FONT 8, "System" BEGIN DEFPUSHBUTTON "Save",IDOK,50,95,50,14 PUSHBUTTON "Close",IDCANCEL,120,95,50,14 - COMBOBOX IDC_CHATCALLS,10,5,100,60,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_CHATCOLOURS,115,5,100,60,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CHATCALLS,10,5,100,60,CBS_DROPDOWNLIST | CBS_SORT | + WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CHATCOLOURS,115,5,100,60,CBS_DROPDOWNLIST | + CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP END -IDD_UPDATECHATMAP DIALOG 0, 0, 274, 146 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_UPDATECHATMAP DIALOG DISCARDABLE 0, 0, 274, 146 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Update Chat Map" FONT 8, "System" BEGIN - LTEXT "Click Help for full information about the Chat Network Map",IDC_STATIC,5,10,195,15 + LTEXT "Click Help for full information about the Chat Network Map", + IDC_STATIC,5,10,195,15 DEFPUSHBUTTON "? Help",IDC_MAPHELP,220,10,33,11,BS_CENTER | BS_VCENTER LTEXT "Position",IDC_STATIC,5,30,35,10 EDITTEXT IDC_MAPPOSITION,5,45,145,15,ES_AUTOHSCROLL LTEXT "Popup Box Text. ",IDC_STATIC,5,65,70,9 - EDITTEXT IDC_POPUPTEXT,5,80,200,35,ES_MULTILINE | ES_AUTOHSCROLL | WS_HSCROLL + EDITTEXT IDC_POPUPTEXT,5,80,200,35,ES_MULTILINE | ES_AUTOHSCROLL | + WS_HSCROLL LTEXT "Popup Mode",IDC_STATIC,215,80,49,10 - CONTROL "Hover",IDC_HOVER,"Button",BS_AUTORADIOBUTTON,219,92,45,10 - CONTROL "Click",IDC_CLICK,"Button",BS_AUTORADIOBUTTON,219,104,45,10 + CONTROL "Hover",IDC_HOVER,"Button",BS_AUTORADIOBUTTON,219,92,45, + 10 + CONTROL "Click",IDC_CLICK,"Button",BS_AUTORADIOBUTTON,219,104,45, + 10 DEFPUSHBUTTON "Send to Map System",IDSENDTOMAP,5,125,90,14 DEFPUSHBUTTON "Save",IDOK,100,125,35,14 PUSHBUTTON "Cancel",IDCANCEL,140,125,40,14 END IDD_MSGFROMCLIPBOARD DIALOGEX 0, 0, 442, 306 -STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Send Message" FONT 8, "System", 0, 0, 0x1 BEGIN PUSHBUTTON "Send",IDSEND,333,5,50,14 PUSHBUTTON "Cancel",IDCANCEL,333,25,50,14 - EDITTEXT IDC_EDIT1,4,57,431,245,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL,WS_EX_ACCEPTFILES + EDITTEXT IDC_EDIT1,4,57,431,245,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL, + WS_EX_ACCEPTFILES LTEXT "To:",IDC_STATIC,66,8,12,8 EDITTEXT IDC_MSGTO,83,7,147,12,ES_UPPERCASE | ES_AUTOHSCROLL LTEXT "Title:",IDC_STATIC,8,26,22,8 @@ -700,37 +965,43 @@ BEGIN LTEXT "BID:",IDC_STATIC,240,8,20,8 EDITTEXT IDC_MSGBID,262,7,65,12,ES_UPPERCASE | ES_AUTOHSCROLL LTEXT "Type",IDC_STATIC,8,8,20,8 - COMBOBOX IDC_MSGTYPE,34,7,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_MSGTYPE,34,7,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP PUSHBUTTON "Select",IDSelectFiles,333,42,50,14 LTEXT "Attachments",IDC_STATIC,8,43,42,8 EDITTEXT IDC_ATTACHMENTS,50,41,277,12,ES_AUTOHSCROLL END -IDD_HRHELP DIALOG 0, 0, 415, 182 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_HRHELP DIALOG DISCARDABLE 0, 0, 415, 182 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Hierarchical Forwarding Help" FONT 8, "System" BEGIN DEFPUSHBUTTON "OK",IDOK,182,158,50,14 - EDITTEXT IDC_HRTEXT,4,4,405,150,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL + EDITTEXT IDC_HRTEXT,4,4,405,150,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL END IDD_EDITMSGTEXT DIALOGEX 0, 0, 492, 356 -STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Edit Message" FONT 8, "Fixedsys", 0, 0, 0x1 BEGIN - EDITTEXT IDC_MESSAGE,4,25,480,327,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL,WS_EX_ACCEPTFILES + EDITTEXT IDC_MESSAGE,4,25,480,327,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL, + WS_EX_ACCEPTFILES PUSHBUTTON "Save",IDSAVE,5,5,40,17 PUSHBUTTON "Cancel",IDCANCEL,125,5,40,17 - PUSHBUTTON "Save Attachments",IDC_SAVEATTACHMENTS,50,5,70,17,WS_DISABLED + PUSHBUTTON "Save Attachments",IDC_SAVEATTACHMENTS,50,5,70,17, + WS_DISABLED END -MAINT DIALOG 26, 5, 382, 298 -STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +MAINT DIALOG DISCARDABLE 26, 5, 382, 298 +STYLE WS_CHILD | WS_VISIBLE FONT 8, "System" BEGIN - LTEXT "This sets the parameters for deleting old messages. Specify length of time (in days) for messages to be kept before being deleted",IDC_STATIC,149,13,226,22 + LTEXT "This sets the parameters for deleting old messages. Specify length of time (in days) for messages to be kept before being deleted", + IDC_STATIC,149,13,226,22 LTEXT "Read",IDC_STATIC,159,46,46,10 EDITTEXT IDM_PR,224,46,20,12,ES_CENTER | ES_AUTOHSCROLL LTEXT "Unread",IDC_STATIC,159,61,46,10 @@ -745,36 +1016,50 @@ BEGIN EDITTEXT IDM_BNF,324,61,20,12,ES_CENTER | ES_AUTOHSCROLL GROUPBOX "Personals",IDC_STATIC,149,36,108,107 GROUPBOX "Bulletins",IDC_STATIC,259,36,103,44 - LTEXT "The following boxes allow you to specify different values for different Bulletin origins and destinations. Normally these apply to Sent Messages, to apply to unsent, check box below",IDC_STATIC,151,148,214,27 - LTEXT "Specify Call, Lifetime, eg ALL, 10",IDC_STATIC,151,176,154,8 + LTEXT "The following boxes allow you to specify different values for different Bulletin origins and destinations. Normally these apply to Sent Messages, to apply to unsent, check box below", + IDC_STATIC,151,148,214,27 + LTEXT "Specify Call, Lifetime, eg ALL, 10",IDC_STATIC,151,176, + 154,8 LTEXT "From",IDC_STATIC,176,189,28,9 - EDITTEXT IDM_LTFROM,151,202,64,55,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDM_LTFROM,151,202,64,55,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "To",IDC_STATIC,247,189,27,10 - EDITTEXT IDM_LTTO,221,202,64,55,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDM_LTTO,221,202,64,55,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "At",IDC_STATIC,316,189,15,8 - EDITTEXT IDM_LTAT,289,202,64,55,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN - DEFPUSHBUTTON "Save",IDM_MAINTSAVE,166,279,50,14,BS_CENTER | BS_VCENTER + EDITTEXT IDM_LTAT,289,202,64,55,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",IDM_MAINTSAVE,166,279,50,14,BS_CENTER | + BS_VCENTER GROUPBOX "Lifetimes",IDC_STATIC,144,0,231,275 GROUPBOX "Parameters",IDC_STATIC,3,3,133,275 LTEXT "Max Message Number",IDC_STATIC,7,68,77,10 LTEXT "BID Lifetime (Days)",IDC_STATIC,7,87,77,10 - LTEXT "Maintenance Time (UTC) Enter as HHMM",IDC_STATIC,7,21,83,25 + LTEXT "Maintenance Time (UTC) Enter as HHMM",IDC_STATIC,7,21, + 83,25 EDITTEXT IDC_MAXMSG,102,67,25,12,ES_CENTER EDITTEXT IDC_BIDLIFETIME,102,86,25,12,ES_CENTER | ES_AUTOHSCROLL EDITTEXT IDC_MAINTTIME,102,23,25,12,ES_CENTER | ES_AUTOHSCROLL LTEXT "Log File Lifetime (Days)",IDC_STATIC,7,107,80,10 EDITTEXT IDC_LOGLIFETIME,102,105,25,12,ES_CENTER | ES_AUTOHSCROLL - 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",IDC_MAINTNOMAIL, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,182,115,20 - CONTROL "Generate Traffic Report",IDC_MAINTTRAFFIC,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,204,115,10 - CONTROL "Send Non-delivery Notifications for P and T messages",IDC_MAINTNONDELIVERY, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,162,115,20 + 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", + IDC_MAINTNOMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | + BS_MULTILINE | WS_TABSTOP,5,182,115,20 + CONTROL "Generate Traffic Report",IDC_MAINTTRAFFIC,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_TABSTOP,5,204,115,10 + CONTROL "Send Non-delivery Notifications for P and T messages", + IDC_MAINTNONDELIVERY,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,162,115,20 CONTROL "Apply Overrides to Unsent Bulls",IDC_OVERRIDEUNSENT, - "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,153,261,195,10 + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_TABSTOP,153,261,195,10 LTEXT "Delete Inactive Users (Days)",IDC_STATIC,7,127,93,10 - EDITTEXT IDC_USERLIFETIME,102,125,25,12,ES_CENTER | ES_AUTOHSCROLL + EDITTEXT IDC_USERLIFETIME,102,125,25,12,ES_CENTER | + ES_AUTOHSCROLL GROUPBOX "NTS",IDC_STATIC,259,80,102,62 LTEXT "Forwarded",IDC_STATIC,264,109,49,10 EDITTEXT IDM_NTSF,324,108,20,12,ES_CENTER | ES_AUTOHSCROLL @@ -782,69 +1067,100 @@ BEGIN EDITTEXT IDM_NTSU,324,123,20,12,ES_CENTER | ES_AUTOHSCROLL LTEXT "Delivered",IDC_STATIC,264,94,49,10 EDITTEXT IDM_NTSD,324,94,20,12,ES_CENTER | ES_AUTOHSCROLL - CONTROL "Save Registry",IDC_MAINTSAVEREG2,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,222,115,10 + CONTROL "Save Registry",IDC_MAINTSAVEREG2,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | + WS_TABSTOP,5,222,115,10 LTEXT "Maintenance Interval (Hrs)",IDC_STATIC,7,47,93,10 - EDITTEXT IDC_MAINTINTERVAL,102,45,25,12,ES_CENTER | ES_AUTOHSCROLL + EDITTEXT IDC_MAINTINTERVAL,102,45,25,12,ES_CENTER | + ES_AUTOHSCROLL END -FILTERS DIALOG 26, 5, 382, 371 -STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +FILTERS DIALOG DISCARDABLE 26, 5, 382, 371 +STYLE WS_CHILD | WS_VISIBLE FONT 8, "System" BEGIN LTEXT "Reject Messages:",IDC_STATIC,162,26,70,10 LTEXT "From",IDC_STATIC,83,137,28,10 - EDITTEXT IDC_HOLDFROM,58,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_HOLDFROM,58,149,64,83,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "To",IDC_STATIC,152,137,27,10 - EDITTEXT IDC_HOLDTO,126,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_HOLDTO,126,149,64,83,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "At",IDC_STATIC,223,137,15,10 - EDITTEXT IDC_HOLDAT,194,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN - DEFPUSHBUTTON "Save",IDC_FILTERSAVE,171,341,50,14,BS_CENTER | BS_VCENTER + EDITTEXT IDC_HOLDAT,194,149,64,83,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",IDC_FILTERSAVE,171,341,50,14,BS_CENTER | + BS_VCENTER LTEXT "From",IDC_STATIC,83,40,28,10 - EDITTEXT IDC_REJFROM,58,52,64,67,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_REJFROM,58,52,64,67,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "To",IDC_STATIC,154,40,27,10 - EDITTEXT IDC_REJTO,126,52,64,68,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_REJTO,126,52,64,68,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "At",IDC_STATIC,223,40,15,10 - EDITTEXT IDC_REJAT,194,52,64,68,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_REJAT,194,52,64,68,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "Message Filtering Setup.",IDC_STATIC,152,10,95,15 LTEXT "Hold Messages:",IDC_STATIC,166,128,60,9 - EDITTEXT IDC_REJBID,262,52,64,68,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN - EDITTEXT IDC_HOLDBID,262,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_REJBID,262,52,64,68,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_HOLDBID,262,149,64,83,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN LTEXT "BID",IDC_STATIC,289,137,15,10 LTEXT "BID",IDC_STATIC,289,41,15,10 - EDITTEXT IDC_REJSYS,58,265,270,66,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN - LTEXT "Composite Rules (like fbb reject.sys)",IDC_STATIC,152,236,134,9 - LTEXT "Action, Type, from, @BBS, to, BID, maximum size",IDC_STATIC,59,251,247,9 + EDITTEXT IDC_REJSYS,58,265,270,66,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "Composite Rules (like fbb reject.sys)",IDC_STATIC,152, + 236,134,9 + LTEXT "Action, Type, from, @BBS, to, BID, maximum size", + IDC_STATIC,59,251,247,9 END -WPUPDATE DIALOG 26, 5, 382, 287 -STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +WPUPDATE DIALOG DISCARDABLE 26, 5, 382, 287 +STYLE WS_CHILD | WS_VISIBLE FONT 8, "System" BEGIN - CONTROL "Send WP Updates",IDC_SENDWP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,90,18,71,10 - EDITTEXT IDC_WPTO,112,82,154,113,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL - COMBOBOX IDC_WPTYPE,193,17,19,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Send WP Updates",IDC_SENDWP,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,90,18,71,10 + EDITTEXT IDC_WPTO,112,82,154,113,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL + COMBOBOX IDC_WPTYPE,193,17,19,55,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP LTEXT "Type",IDC_STATIC,172,18,21,10 DEFPUSHBUTTON "Save",IDC_WPSAVE,165,204,50,14,BS_CENTER | BS_VCENTER - CONTROL "Reject WP Bulls",IDC_FILTERWPB,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,222,18,71,10 - LTEXT "Send To.\rBPQMail only automatically processes messages with TO of WP, so for P messages format should be WP@BBSCALL. ",IDC_STATIC,98,38,176,35 + CONTROL "Reject WP Bulls",IDC_FILTERWPB,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,222,18,71,10 + LTEXT "Send To.\rBPQMail only automatically processes messages with TO of WP, so for P messages format should be WP@BBSCALL. ", + IDC_STATIC,98,38,176,35 END -IDD_RMSBULLDLG DIALOG 0, 0, 277, 258 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_RMSBULLDLG DIALOG DISCARDABLE 0, 0, 277, 258 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "RMS Express Bull Configuration" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,66,237,50,14 PUSHBUTTON "Cancel",IDCANCEL,164,237,50,14 - EDITTEXT IDC_TOCALLS,82,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL - EDITTEXT IDC_TOCALLS2,144,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL - EDITTEXT IDC_TOCALLS3,208,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL - EDITTEXT IDC_TOCALLS4,18,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_TOCALLS,82,76,54,112,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL + EDITTEXT IDC_TOCALLS2,144,76,54,112,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL + EDITTEXT IDC_TOCALLS3,208,76,54,112,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL + EDITTEXT IDC_TOCALLS4,18,76,54,112,ES_MULTILINE | ES_UPPERCASE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL LTEXT "Common",IDC_STATIC,63,47,48,8 LTEXT "User Specific",IDC_STATIC,174,47,48,8 LTEXT "TO AT",IDC_STATIC,39,62,79,8 - LTEXT "TO AT",IDC_STATIC,163,62,79,8 - LTEXT "This defines Bulls that will be downloaded to RMS Express Users. There are two lists, one for all RMS Express users and one per User. The lists will be combined, Updating the Common list will affect all users.",IDC_STATIC,7,7,242,37 + LTEXT "TO AT",IDC_STATIC,163,62,79, + 8 + LTEXT "This defines Bulls that will be downloaded to RMS Express Users. There are two lists, one for all RMS Express users and one per User. The lists will be combined, Updating the Common list will affect all users.", + IDC_STATIC,7,7,242,37 END @@ -854,12 +1170,8 @@ END // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO +GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN - "BPQMAIL", DIALOG - BEGIN - END - 102, DIALOG BEGIN TOPMARGIN, 47 @@ -974,7 +1286,7 @@ END // Menu // -IDC_BPQMailChat MENU +IDC_BPQMailChat MENU DISCARDABLE BEGIN POPUP "Actions" BEGIN @@ -994,6 +1306,7 @@ BEGIN MENUITEM "Housekeeping", IDM_HOUSEKEEPING MENUITEM "Send Message", ID_ACTIONS_SENDMESSAGE MENUITEM "Send Msg from Clipboard", ID_ACTIONS_SENDMSGFROMCLIPBOARD + MENUITEM "Rerun Message Routing", RESCANMSGS MENUITEM "Import Messages", IDM_IMPORT END @@ -1018,7 +1331,7 @@ BEGIN END END -CONSOLEMENU MENU +CONSOLEMENU MENU DISCARDABLE BEGIN POPUP "Options" BEGIN @@ -1044,7 +1357,7 @@ BEGIN END END -MENU_2 MENU +MENU_2 MENU DISCARDABLE BEGIN POPUP "Monitor" BEGIN @@ -1058,7 +1371,7 @@ BEGIN END END -MENU_3 MENU +MENU_3 MENU DISCARDABLE BEGIN POPUP "Edit" BEGIN @@ -1067,7 +1380,7 @@ BEGIN END END -MENU_1 MENU +MENU_1 MENU DISCARDABLE BEGIN POPUP "Edit" BEGIN @@ -1082,7 +1395,7 @@ END // Accelerator // -IDC_TELNETSERVER ACCELERATORS +IDC_TELNETSERVER ACCELERATORS MOVEABLE PURE BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT @@ -1095,12 +1408,12 @@ END // TEXTINCLUDE // -1 TEXTINCLUDE +1 TEXTINCLUDE MOVEABLE PURE BEGIN "BPQMailrc.h\0" END -2 TEXTINCLUDE +2 TEXTINCLUDE MOVEABLE PURE BEGIN "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""AFXRES.h""\r\n" @@ -1110,7 +1423,7 @@ BEGIN "\0" END -3 TEXTINCLUDE +3 TEXTINCLUDE MOVEABLE PURE BEGIN "#define MAIL\r\n" "#include ""Versions.h""\r\n" @@ -1118,7 +1431,7 @@ BEGIN "\0" END -1 TEXTINCLUDE +1 TEXTINCLUDE MOVEABLE PURE BEGIN "resource.h\0" END @@ -1131,24 +1444,19 @@ END // AFX_DIALOG_LAYOUT // -IDD_USEREDIT AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -IDD_FORWARDING AFX_DIALOG_LAYOUT +IDD_USEREDIT AFX_DIALOG_LAYOUT MOVEABLE PURE BEGIN - 0 + 0x0000 END -FILTERS AFX_DIALOG_LAYOUT +IDD_FORWARDING AFX_DIALOG_LAYOUT MOVEABLE PURE BEGIN - 0 + 0x0000 END -BPQMAIL AFX_DIALOG_LAYOUT +FILTERS AFX_DIALOG_LAYOUT MOVEABLE PURE BEGIN - 0 + 0x0000 END @@ -1157,13 +1465,13 @@ END // String Table // -STRINGTABLE +STRINGTABLE DISCARDABLE BEGIN IDS_APP_TITLE "BPQMail" IDC_BPQMailChat "BPQMail" END -#endif // English (United Kingdom) resources +#endif // English (U.K.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/BPQMail.rc.bak b/BPQMail.rc.bak new file mode 100644 index 0000000..178d358 --- /dev/null +++ b/BPQMail.rc.bak @@ -0,0 +1,1183 @@ +// Microsoft Visual C++ generated resource script. +// +#include "BPQMailrc.h" + +// Generated Help ID header file +#define APSTUDIO_HIDDEN_SYMBOLS +#include "BPQMailrc.hm" +#undef APSTUDIO_HIDDEN_SYMBOLS + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "AFXRES.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +#define MAILCHAT +#include "..\CommonSource\Versions.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_PROPPAGE_LARGE DIALOG 0, 0, 235, 156 +STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Property Page" +FONT 8, "MS Sans Serif" +BEGIN +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_PROPPAGE_LARGE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 228 + TOPMARGIN, 7 + BOTTOMMARGIN, 149 + END +END +#endif // APSTUDIO_INVOKED + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (United Kingdom) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +BPQMAIL DIALOGEX 120, 50, 341, 165 +STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "G8BPQ Mail and Chat Server 1.0.0.10 Beta July 2009" +CLASS "BPQMail" +FONT 8, "FixedSys", 0, 0, 0x0 +BEGIN + LTEXT " User Callsign Stream Conf Queue Sent Rxed",101,3,4,228,10 + LTEXT "UTC",IDC_STATIC,236,5,15,10 + LTEXT "Local",IDC_STATIC,280,5,21,10 + LTEXT "",IDC_UTC,254,5,25,10 + LTEXT "",IDC_LOCAL,307,5,25,10 + LISTBOX 100,2,16,231,130,WS_VSCROLL + LTEXT "Msgs",IDC_STATIC,236,25,40,10 + LTEXT "",IDC_MSGS,282,25,20,8 + LTEXT "Sysop Msgs",IDC_STATIC,236,36,40,10 + LTEXT "Held Msgs",IDC_STATIC,236,47,40,10 + LTEXT "",IDC_SYSOPMSGS,282,36,20,8 + LTEXT "",IDC_HELD,282,47,20,8 + LTEXT "SMTP Msgs",IDC_STATIC,236,61,40,10 + LTEXT "",IDC_SMTP,282,58,20,8 + LTEXT "Msg SEM Clashes",IDC_STATIC,236,77,63,10 + LTEXT "Alloc SEM Clashes",IDC_STATIC,236,88,68,10 + LTEXT "0",IDC_MSGSEM,321,77,20,10 + LTEXT "0",IDC_ALLOCSEM,321,88,20,10 + LTEXT "Con SEM Clashes",IDC_STATIC,236,99,68,10 + LTEXT "0",IDC_CONSEM,321,99,20,10 +END + +CONSOLEWINDOW DIALOG 17, 25, 400, 301 +STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Mail Console" +MENU CONSOLEMENU +CLASS "CONSOLEWINDOW" +FONT 8, "FixedSys" +BEGIN + EDITTEXT 118,24,228,348,15,ES_AUTOHSCROLL | ES_NOHIDESEL +END + +BPQMONWINDOW DIALOG 17, 25, 400, 300 +STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Mail Monitor" +MENU MENU_2 +CLASS "BPQMONWINDOW" +FONT 8, "FixedSys" +BEGIN + LISTBOX 121,6,25,290,109,LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL +END + +BPQMCWINDOW DIALOG 17, 25, 500, 300 +STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Multicast Monitor" +MENU MENU_1 +CLASS "BPQMCWINDOW" +FONT 8, "FixedSys" +BEGIN +END + +BPQDEBUGWINDOW DIALOG 17, 25, 400, 300 +STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Mail Debug Window" +MENU MENU_3 +CLASS "BPQDEBUGWINDOW" +FONT 8, "FixedSys" +BEGIN + LISTBOX 122,5,156,290,109,LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL +END + +102 DIALOG 0, 0, 385, 301 +STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | WS_THICKFRAME +CAPTION "Configuration" +FONT 8, "System" +BEGIN +END + +BBS_CONFIG DIALOG 0, 0, 381, 306 +STYLE DS_SETFONT | WS_CHILD +FONT 8, "System" +BEGIN + LTEXT "BBS Call is the base callsign, without SSID. This is not necessarily the same as the Application Callsign defined in the BPQ32 configuration. SYSOP Call is the callsign used by the local console.",IDC_STATIC,10,4,354,23 + LTEXT "The Application Number defines which BPQ32 Application gives access to the BBS. Note this is the APPLNumber (1-32) not an Application Mask, as used in many BPQ32 programs.",IDC_STATIC,10,27,353,18 + LTEXT "The eMail Server Params configure the NNTP, SMTP and POP3 Servers, which allow normal Internet email and News clients to get messages from, and post mesages to the BBS. If you don't want to use this, set them to zero.. ",IDC_STATIC,8,52,357,27 + LTEXT "Enable UI System activates FBB compatible UI broadcasting of Message Headers",IDC_STATIC,8,80,357,15 + LTEXT "BBS Call",IDC_STATIC,7,105,37,12 + EDITTEXT IDC_BBSCall,83,103,47,14,ES_UPPERCASE + LTEXT "SYSOP Call",IDC_STATIC,138,105,42,12 + EDITTEXT IDC_SYSOPCALL,184,103,42,14,ES_UPPERCASE + CONTROL "Send SYSTEM Msgs to SYSOP call",IDC_SYSTOSYSOPCALL, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,231,104,129,12 + LTEXT "H Route",IDC_STATIC,7,122,37,12 + EDITTEXT IDC_HRoute,83,120,119,13,ES_UPPERCASE + LTEXT "BBS Appl Number",IDC_STATIC,7,138,61,10 + EDITTEXT IDC_BBSAppl,83,136,29,12 + LTEXT "Streams",IDC_STATIC,130,138,32,10 + EDITTEXT IDC_BBSStreams,168,136,29,12 + CONTROL "Refuse Bulls",IDC_REFUSEBULLS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,211,138,53,10 + CONTROL "Enable FBB UI System",IDC_ENABLEUI,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,6,157,87,10 + LTEXT "Send Mail For Beacons Every",IDC_STATIC,102,157,100,12 + EDITTEXT MAILFOR_MINS,205,156,22,12,ES_UPPERCASE + LTEXT "Minutes",IDC_STATIC,232,157,30,12 + PUSHBUTTON "Config UI Ports and Digis",IDC_UICONFIG,273,155,91,13 + LTEXT "eMail Server Params:",IDC_STATIC,7,227,135,10 + LTEXT "NNTP Port",IDC_STATIC,7,243,39,12 + EDITTEXT IDC_NNTPPort,47,241,29,14 + LTEXT "POP3 Port",IDC_STATIC,90,243,37,12 + EDITTEXT IDC_POP3Port,130,241,29,14 + LTEXT "SMTP Port",IDC_STATIC,170,243,37,12 + EDITTEXT IDC_SMTPPort,210,241,29,14 + CONTROL "Enable Remote Access",1009,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,249,240,91,14 + PUSHBUTTON "Save",IDC_BBSSAVE,159,281,50,14,BS_CENTER | BS_VCENTER + CONTROL "Don't hold messages from new users",IDC_DONTHOLDNEW, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5,189,134,12 + CONTROL "Forward Messages to BBS Call",IDC_FORWARDTOBBS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,145,189,114,12 + CONTROL "Redirect msgs to BBS Call to SYSOP Call",IDC_BBSTOSYSOPCALL, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,213,120,146,12 + CONTROL "Don't Request Home BBS",IDC_NOHOMEBBS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,260,174,99,12 + CONTROL "Don't Request Name",IDC_NONAME,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,176,174,79,12 + EDITTEXT IDC_AMPR,72,258,119,13 + LTEXT "AMPR Address",IDC_STATIC,6,260,60,12 + CONTROL "Send ampr.org mail to AMPR host",IDC_FORWARDAMPR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,201,258,124,14 + CONTROL "Allow users to kill T msgs",IDC_USERRKILLT,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,264,189,95,12 + CONTROL "Set Don't add WINLINK.ORG flag on new users",IDC_DEFAULTNOWINLINK, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5,174,162,12 + CONTROL "Don't allow unknown users",IDC_KNOWNUSERS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,277,138,98,10 + CONTROL "Don't Check From Calls",IDC_DONTCHECKFROM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,5,204,95,12 +END + +CHAT_CONFIG DIALOG 0, 0, 381, 266 +STYLE DS_SETFONT | WS_CHILD +FONT 8, "System" +BEGIN + LTEXT "Chat Appl Number",-1,115,109,61,8 + EDITTEXT 2001,185,106,29,14 + LTEXT "Nodes to link to",-1,115,129,53,8 + EDITTEXT 2002,185,125,87,88,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",2100,172,226,50,14,BS_CENTER | BS_VCENTER + LTEXT "The Application Number defines which BPQ32 Application gives access to the Chat Server. Note this is the APPLNumber (1-32) not an Application Mask, as uses in many BPQ32 programs.",-1,10,10,353,18 + LTEXT "The Nodes to link to box defines which other Chat Nodes should be connected to, or from which connections may be accepted. The format is ALIAS:CALL, eg BPQCHT:G8BPQ-4. Note these must be directly connectable - ie in your NODES table.",-1,10,30,355,25 + LTEXT "The Callsign of the Chat Node is not defined here - It is obtained from the BPQ32 APPLCALL parameter corresponding to the Chat Appl Number.",-1,10,60,360,25 +END + +IDD_USEREDIT DIALOGEX 20, 20, 293, 281 +STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | WS_THICKFRAME + +CAPTION "Edit User" +FONT 8, "System", 0, 0, 0x1 +BEGIN + COMBOBOX 5000,7,10,57,123,CBS_SIMPLE | CBS_SORT | CBS_UPPERCASE | WS_VSCROLL | WS_TABSTOP + CONTROL "BBS",IDC_BBSFLAG,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,9,57,10 + CONTROL "PMS",IDC_PMSFLAG,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,22,57,10 + CONTROL "Sysop",IDC_SYSOP,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,35,57,10 + CONTROL "Expert",IDC_EXPERT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,48,57,10 + CONTROL "Excluded",IDC_EXCLUDED,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,61,57,10 + CONTROL "Hold Messages",IDC_HOLDMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,74,65,10 + CONTROL "NTS MPS",IDC_NTSMPS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,87,69,10 + CONTROL "Permit Email",IDC_EMAIL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,9,57,10 + CONTROL "Poll RMS for SSID's",IDC_POLLRMS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,23,78,8,0,HIDC_POLLRMS + EDITTEXT RMS_SSID1,244,21,13,12,ES_AUTOHSCROLL + EDITTEXT RMS_SSID2,258,21,13,12,ES_AUTOHSCROLL + EDITTEXT RMS_SSID3,272,21,13,12,ES_AUTOHSCROLL + CONTROL "RMS Express User",RMS_EXPRESS_USER,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,35,77,10 + LTEXT "Last Listed",IDC_STATIC,163,87,38,12 + EDITTEXT IDC_LASTLISTED,248,85,29,12,ES_AUTOHSCROLL + LTEXT "Name",IDC_STATIC,7,184,35,14 + EDITTEXT IDC_NAME,55,182,96,14,ES_AUTOHSCROLL + LTEXT "Password",IDC_STATIC,7,202,35,14 + EDITTEXT IDC_PASSWORD,55,200,89,14,ES_AUTOHSCROLL + LTEXT "QTH",IDC_STATIC,7,220,35,14 + EDITTEXT IDC_QTH,55,218,130,14,ES_AUTOHSCROLL + LTEXT "Home BBS",IDC_STATIC,7,238,40,14 + EDITTEXT IDC_HOMEBBS,55,236,162,14,ES_UPPERCASE | ES_AUTOHSCROLL + PUSHBUTTON "Add user",IDC_ADDUSER,79,257,42,14,BS_CENTER | BS_VCENTER + PUSHBUTTON "Delete user",5101,124,257,42,14,BS_CENTER | BS_VCENTER + PUSHBUTTON "Save",5102,169,257,42,14,BS_CENTER | BS_VCENTER + LTEXT "Connects in",IDC_STATIC,10,131,45,10 + LTEXT "Connects out",IDC_STATIC,10,142,45,10 + LTEXT "0",CONN_IN,57,131,26,10,0,WS_EX_RIGHT + LTEXT "0",CONN_OUT,57,142,26,10,0,WS_EX_RIGHT + LTEXT "Msgs in",IDC_STATIC,87,131,35,10 + LTEXT "Msgs out",IDC_STATIC,87,142,35,10 + LTEXT "0",MSGS_IN,125,131,26,10,0,WS_EX_RIGHT + LTEXT "0",MSGS_OUT,125,142,26,10,0,WS_EX_RIGHT + LTEXT "Rejects in",IDC_STATIC,159,131,35,10 + LTEXT "Rejects out",IDC_STATIC,159,142,40,10 + LTEXT "0",REJECTS_IN,201,131,26,10,0,WS_EX_RIGHT + LTEXT "0",REJECTS_OUT,201,142,26,10,0,WS_EX_RIGHT + LTEXT "Bytes out",IDC_STATIC,10,164,35,10 + LTEXT "",BYTES_OUT,45,164,38,10,0,WS_EX_RIGHT + LTEXT "Bytes in",IDC_STATIC,10,153,35,10 + LTEXT "0",BYTES_IN,45,153,38,10,0,WS_EX_RIGHT + LTEXT "Last Connect",IDC_STATIC,87,153,45,10 + LTEXT "Never",LASTCONNECT,134,153,93,10 + CONTROL "Don't add @winlink.org",NO_WINLINKdotORG,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,47,100,10 + LTEXT "ZIP",IDC_STATIC,189,221,12,11 + EDITTEXT IDC_UZIP,207,219,38,12,ES_AUTOHSCROLL + CONTROL "Allow sending Bulls",ALLOW_BULLS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,163,61,100,10 + CONTROL "Include SYSOP msgs in LM",IDC_SYSOP_IN_LM,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_DISABLED | WS_TABSTOP,163,74,100,10 + EDITTEXT IDC_CMSPASS,187,201,88,14,ES_PASSWORD + CONTROL "CMS Pass",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,149,203,34,14 + CONTROL "Send Mail For to APRS ssid",IDC_APRSMFOR,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,113,108,10 + EDITTEXT IDC_APRSSSID,182,112,16,12,ES_AUTOHSCROLL + CONTROL "Redirect to RMS",IDC_RMSREDIRECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,72,100,69,10 +END + +ISP_CONFIG DIALOG 26, 5, 381, 284 +STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +FONT 8, "System" +BEGIN + EDITTEXT 3001,95,110,100,15 + LTEXT "SMTP Server",-1,10,130,53,13 + LTEXT "The system relies on having an email domain which supports forwarding of all email addresses to a fixed mailbox. For example, I could register domain mycall.org.uk, and have any mail sent to anyone@mycall.org.uk forwarded to mymailbox@myisp.com",1,10,34,349,25 + LTEXT "POP3 Server",-1,10,146,61,13 + LTEXT "ISP Account Name",-1,10,163,63,13 + EDITTEXT IDC_ISPSMTPName,95,127,148,15 + EDITTEXT 3004,95,144,147,15 + EDITTEXT 3006,95,161,147,15 + LTEXT "Port",-1,250,147,18,13 + LTEXT "Port",-1,250,130,19,13 + EDITTEXT 3005,275,144,29,15 + EDITTEXT 3003,275,127,29,15 + LTEXT "This page configures the BBS <> Internet Mail Gateway. The Gateway allows local users to send messages to Internet email addresses, and get replies from those messages",-1,10,10,353,20 + LTEXT "My Domain",-1,10,112,51,8 + LTEXT "ISP Account Password",-1,10,180,80,13 + EDITTEXT 3007,95,178,147,15,ES_PASSWORD + LTEXT "POP3 Poll Interval (Seconds)",-1,10,216,80,18 + EDITTEXT 3008,95,219,29,12 + LTEXT "WARNING This feature my be illegal in some administrations. Make sure your authorities permit forwarding mail from the Amateur Service before enabling it",-1,10,64,348,15 + CONTROL "Enable Internet Gateway",3000,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,10,90,90,15 + DEFPUSHBUTTON "Save",3100,165,261,57,17,BS_CENTER | BS_VCENTER + CONTROL "SMTP Server Requires Authentication",ISP_SMTP_AUTH, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | BS_MULTILINE | WS_TABSTOP,250,159,69,32 + EDITTEXT SMTP_EHELO,95,196,100,15 + LTEXT "SMTP ""EHELO"" Domain",-1,10,198,80,8 +END + +IDD_FORWARDING DIALOG 20, 20, 457, 327 +STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | WS_THICKFRAME +CAPTION "Manage Forwarding" +FONT 8, "System" +BEGIN + LTEXT "Forwarding Rules are define here. BBS Records are created by setting the BBS flag on a User Record.",IDC_STATIC,5,7,368,10 + LTEXT "The Enable Forwarding flag allows you to disable forwarding without losing the messages to be forwarded. ",IDC_STATIC,5,20,373,8 + GROUPBOX "Global Params",IDC_STATIC,2,33,114,263 + LTEXT "Max Size to Send",IDC_STATIC,5,50,58,12 + EDITTEXT IDC_MAXSEND,66,49,26,12,ES_AUTOHSCROLL + LTEXT "Max Size to Recv",IDC_STATIC,5,68,58,12 + EDITTEXT IDC_MAXRECV,66,66,26,12,ES_AUTOHSCROLL + 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 | 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 + CONTROL "Readdress Received",IDC_READDRESSRXED,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,4,281,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 | CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL + LTEXT "To Calls:",IDC_STATIC,186,46,40,10 + EDITTEXT IDC_TOCALLS,177,59,50,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + LTEXT "AT Calls:",IDC_STATIC,242,46,43,10 + EDITTEXT IDC_ATCALLS,233,59,50,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + LTEXT "Times",IDC_STATIC,299,46,30,13 + EDITTEXT IDC_FWDTIMES,288,59,50,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + LTEXT "Connect Script",IDC_STATIC,348,46,57,13 + EDITTEXT IDC_CALL,343,59,92,60,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + LTEXT "Hierarchical Routes (Flood Bulls)",IDC_STATIC,141,126,114,12 + EDITTEXT IDC_HROUTES,122,140,148,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL + LTEXT "HR (Personals and Directed Bulls)",IDC_STATIC,281,126,125,12 + EDITTEXT IDC_HROUTESP,280,141,151,60,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL + LTEXT "Interval (Secs)",IDC_STATIC,359,205,48,8 + EDITTEXT IDC_FWDINT,253,204,22,12,ES_AUTOHSCROLL + CONTROL "Enable Forwarding",4000,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,122,206,72,8 + CONTROL "Request Reverse",4006,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_LEFT | WS_TABSTOP,286,206,67,8 + CONTROL "Send new messages without waiting for poll timer",IDC_SENDNEW, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,122,221,182,8 + LTEXT "BBS HA",IDC_STATIC,125,242,30,12 + EDITTEXT IDC_BBSHA,162,240,134,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "Max Block",IDC_STATIC,368,241,37,12 + EDITTEXT IDC_MAXBLOCK,407,240,26,12,ES_AUTOHSCROLL + CONTROL "Send Personal Mail Only",IDC_PERSONALONLY,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,321,221,108,8 + CONTROL "Allow Binary",IDC_ALLOWCOMP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,125,260,58,8 + CONTROL "Use B1 Protocol",IDC_USEB1,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,185,260,72,8 + CONTROL "Use B2 Protocol",IDC_USEB2,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,261,260,67,8 + DEFPUSHBUTTON "? Help",IDC_HRHELP,381,6,33,11,BS_CENTER | BS_VCENTER | NOT WS_TABSTOP + DEFPUSHBUTTON "Save",4100,352,303,57,17,BS_CENTER | BS_VCENTER + LTEXT "Interval (Secs)",IDC_STATIC,198,206,48,8 + EDITTEXT IDC_REVFWDINT,407,205,23,12,ES_AUTOHSCROLL + CONTROL "Use Local Time ",IDC_USELOCALTIME,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,116,103,8 + CONTROL "Send ctrl/Z instead of /ex",IDC_CTRLZ,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,333,260,100,8 + LTEXT "Max Bull Age",IDC_STATIC,5,86,58,12 + EDITTEXT IDC_MAXAGE,66,84,26,12,ES_AUTOHSCROLL + CONTROL "FBB Blocked",IDC_BLOCKED,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,301,241,61,8 + PUSHBUTTON "Copy From BBS",COPYCONFIG,160,303,57,17,BS_CENTER | BS_VCENTER + EDITTEXT COPYFROMCALL,227,303,35,17,ES_UPPERCASE | ES_AUTOHSCROLL + CONTROL "Send P to more than 1 BBS",IDC_MULTIP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | 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 176, 132, 129, 68 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME +FONT 8, "System" +BEGIN + DEFPUSHBUTTON "Ok",0,47,48,36,17,BS_CENTER | BS_VCENTER + LTEXT "Label0",5050,5,10,117,32 +END + +IDD_MSGEDIT DIALOGEX 20, 20, 421, 298 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Edit Message" +FONT 8, "System", 0, 0, 0x1 +BEGIN + RTEXT "Msg",IDC_STATIC,7,7,19,8 + LISTBOX 0,33,7,65,81,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_MSGTYPE,125,9,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_MSGSTATUS,185,9,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "From",IDC_STATIC,7,98,19,8 + EDITTEXT 6001,33,95,65,14,ES_UPPERCASE | ES_AUTOHSCROLL + RTEXT "BID",IDC_STATIC,7,114,19,8 + EDITTEXT 6002,33,111,65,14,ES_AUTOHSCROLL + RTEXT "To",IDC_STATIC,7,132,19,8 + EDITTEXT 6003,33,128,65,14,ES_UPPERCASE | ES_AUTOHSCROLL + RTEXT "Via",IDC_STATIC,4,190,25,8 + EDITTEXT 6004,33,186,177,14,ES_UPPERCASE | ES_AUTOHSCROLL + RTEXT "Subject",IDC_STATIC,4,206,25,8 + EDITTEXT 6005,33,203,177,14,ES_AUTOHSCROLL + LTEXT "Status",IDC_STATIC,160,10,20,8 + RTEXT "Sent",IDC_STATIC,116,96,32,8 + EDITTEXT 6018,153,95,57,14,ES_AUTOHSCROLL + RTEXT "Received",IDC_STATIC,116,113,32,8 + EDITTEXT 6019,153,111,57,14,ES_AUTOHSCROLL + RTEXT "Last Changed",IDC_STATIC,103,130,45,8 + EDITTEXT 6021,153,128,57,14,ES_AUTOHSCROLL + RTEXT "Size",IDC_STATIC,116,147,32,8 + EDITTEXT 6020,153,145,55,14,ES_AUTOHSCROLL + LTEXT "Type",IDC_STATIC,105,10,17,8 + CONTROL "",25,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,7,35,10 + CONTROL "",26,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,17,35,10 + CONTROL "",27,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,27,35,10 + CONTROL "",28,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,37,35,10 + CONTROL "",29,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,47,35,10 + CONTROL "",30,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,57,35,10 + CONTROL "",31,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,67,35,10 + CONTROL "",32,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,77,35,10 + CONTROL "",33,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,87,35,10 + CONTROL "",34,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,97,35,10 + CONTROL "",35,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,107,35,10 + CONTROL "",36,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,117,35,10 + CONTROL "",37,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,127,35,10 + CONTROL "",38,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,137,35,10 + CONTROL "",39,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,147,35,10 + CONTROL "",40,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,157,35,10 + CONTROL "",41,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,167,35,10 + CONTROL "",42,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,177,35,10 + CONTROL "",43,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,187,35,10 + CONTROL "",44,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,197,35,10 + CONTROL "",45,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,208,35,10 + CONTROL "",46,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,218,35,10 + CONTROL "",47,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,228,35,10 + CONTROL "",48,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,238,35,10 + CONTROL "",49,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,221,248,35,10 + CONTROL "",50,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,7,35,10 + CONTROL "",51,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,17,35,10 + CONTROL "",52,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,27,35,10 + CONTROL "",53,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,37,35,10 + CONTROL "",54,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,47,35,10 + CONTROL "",55,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,57,35,10 + CONTROL "",56,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,67,35,10 + CONTROL "",57,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,77,35,10 + CONTROL "",58,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,87,35,10 + CONTROL "",59,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,97,35,10 + CONTROL "",60,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,107,35,10 + CONTROL "",61,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,117,35,10 + CONTROL "",62,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,127,35,10 + CONTROL "",63,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,137,35,10 + CONTROL "",64,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,147,35,10 + CONTROL "",65,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,157,35,10 + CONTROL "",66,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,167,35,10 + CONTROL "",67,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,177,35,10 + CONTROL "",68,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,187,35,10 + CONTROL "",69,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,197,35,10 + CONTROL "",70,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,207,35,10 + CONTROL "",71,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,217,35,10 + CONTROL "",72,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,227,35,10 + CONTROL "",73,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,237,35,10 + CONTROL "",74,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,260,247,35,10 + CONTROL "",75,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,7,35,10 + CONTROL "",76,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,17,35,10 + CONTROL "",77,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,27,35,10 + CONTROL "",78,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,37,35,10 + CONTROL "",79,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,47,35,10 + CONTROL "",80,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,57,35,10 + CONTROL "",81,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,67,35,10 + CONTROL "",82,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,77,35,10 + CONTROL "",83,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,87,35,10 + CONTROL "",84,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,97,35,10 + CONTROL "",85,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,107,35,10 + CONTROL "",86,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,117,35,10 + CONTROL "",87,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,127,35,10 + CONTROL "",88,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,137,35,10 + CONTROL "",89,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,147,35,10 + CONTROL "",90,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,157,35,10 + CONTROL "",91,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,167,35,10 + CONTROL "",92,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,177,35,10 + CONTROL "",93,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,187,35,10 + CONTROL "",94,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,197,35,10 + CONTROL "",95,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,207,35,10 + CONTROL "",96,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,217,35,10 + CONTROL "",97,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,227,35,10 + CONTROL "",98,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,237,35,10 + CONTROL "",99,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,299,247,35,10 + CONTROL "",100,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,7,35,10 + CONTROL "",101,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,18,35,10 + CONTROL "",102,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,27,35,10 + CONTROL "",103,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,37,35,10 + CONTROL "",104,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,47,35,10 + LTEXT "Key",IDC_STATIC,317,267,35,9 + CONTROL "Dont Send",205,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE,262,281,43,10 + CONTROL "Send",206,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE,311,280,35,10 + CONTROL "Sent",207,"Button",BS_3STATE | BS_CENTER | BS_PUSHLIKE,353,280,35,10 + DEFPUSHBUTTON "Edit Text",IDC_EDITTEXT,24,275,38,15,BS_CENTER | BS_VCENTER + DEFPUSHBUTTON "Print",IDC_PRINTMSG,150,275,24,15,BS_CENTER | BS_VCENTER + RTEXT "Filter From",IDC_STATIC,104,30,38,8 + EDITTEXT FILTER_FROM,147,28,62,14,ES_UPPERCASE | ES_AUTOHSCROLL + EDITTEXT FILTER_TO,147,44,62,14,ES_UPPERCASE | ES_AUTOHSCROLL + EDITTEXT FILTER_VIA,147,60,62,14,ES_UPPERCASE | ES_AUTOHSCROLL,0,HFILTER_VIA + RTEXT "Filter To",IDC_STATIC,104,46,38,8 + RTEXT "Filter Via",IDC_STATIC,104,62,38,8 + DEFPUSHBUTTON "Save",IDC_SAVEMSG,67,275,24,15,BS_CENTER | BS_VCENTER + DEFPUSHBUTTON "Save to File",IDC_SAVETOFILE,96,275,49,15,BS_CENTER | BS_VCENTER + DEFPUSHBUTTON "Export",IDC_EXPORT,179,275,32,15,BS_CENTER | BS_VCENTER + EDITTEXT EMAILFROM,33,169,177,14,ES_UPPERCASE | ES_AUTOHSCROLL + RTEXT "Email From",IDC_STATIC,4,168,25,17 + CONTROL "",105,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,57,35,10 + CONTROL "",106,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,67,35,10 + CONTROL "",107,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,77,35,10 + CONTROL "",108,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,87,35,10 + CONTROL "",109,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,97,35,10 + CONTROL "",110,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,107,35,10 + CONTROL "",111,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,118,35,10 + CONTROL "",112,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,127,35,10 + CONTROL "",113,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,137,35,10 + CONTROL "",114,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,147,35,10 + CONTROL "",115,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,157,35,10 + CONTROL "",116,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,167,35,10 + CONTROL "",117,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,177,35,10 + CONTROL "",118,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,187,35,10 + CONTROL "",119,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,197,35,10 + CONTROL "",120,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,207,35,10 + CONTROL "",121,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,217,35,10 + CONTROL "",122,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,227,35,10 + CONTROL "",123,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,237,35,10 + CONTROL "",124,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,337,247,35,10 + CONTROL "",148,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,237,35,10 + CONTROL "",125,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,8,35,10 + CONTROL "",126,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,17,35,10 + CONTROL "",127,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,27,35,10 + CONTROL "",128,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,37,35,10 + CONTROL "",129,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,47,35,10 + CONTROL "",130,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,57,35,10 + CONTROL "",131,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,67,35,10 + CONTROL "",132,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,77,35,10 + CONTROL "",133,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,87,35,10 + CONTROL "",134,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,97,35,10 + CONTROL "",135,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,108,35,10 + CONTROL "",136,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,117,35,10 + CONTROL "",137,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,127,35,10 + CONTROL "",138,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,137,35,10 + CONTROL "",139,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,147,35,10 + CONTROL "",140,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,157,35,10 + CONTROL "",141,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,167,35,10 + CONTROL "",150,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,247,35,10 + CONTROL "",142,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,177,35,10 + CONTROL "",143,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,187,35,10 + CONTROL "",144,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,197,35,10 + CONTROL "",145,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,207,35,10 + CONTROL "",146,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,217,35,10 + CONTROL "",147,"Button",BS_AUTO3STATE | BS_LEFT | BS_PUSHLIKE | WS_TABSTOP,377,227,35,10 + EDITTEXT FILTER_BID,147,76,62,14,ES_UPPERCASE | ES_AUTOHSCROLL,0,HFILTER_BID + RTEXT "Filter BID",IDC_STATIC,104,78,38,8 +END + +WELCOMEMSG DIALOG 26, 5, 365, 281 +STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +FONT 8, "System" +BEGIN + LTEXT "Normal User Welcome Message",IDC_STATIC,5,7,130,8 + EDITTEXT IDM_USERMSG,5,20,340,50,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "New User Welcome Message",IDC_STATIC,5,75,130,8 + EDITTEXT IDM_NEWUSERMSG,5,89,340,65,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "Expert User Welcome Message",IDC_STATIC,5,159,130,8 + EDITTEXT IDM_EXPERTUSERMSG,5,172,340,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",IDM_MSGSAVE,166,264,50,14,BS_CENTER | BS_VCENTER + LTEXT "$U : Callsign of the user $I : First name of the user $X Messages for user $x Unread messages",IDC_STATIC,0,222,365,8 + LTEXT "$L : Number of the latest message $N : Number of active messages. $Z : Last message read by user",IDC_STATIC,0,234,365,10 + LTEXT "Signoff Message",IDC_STATIC,5,190,130,8 + EDITTEXT IDM_SIGNOFF,5,202,340,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "$F : Number of mesages to be forwarded to user (if a BBS)",IDC_STATIC,0,246,365,10 +END + +BBSPROMPTS DIALOG 26, 5, 381, 266 +STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +FONT 8, "System" +BEGIN + LTEXT "Normal User Prompt",IDC_STATIC,5,7,130,8 + EDITTEXT IDM_USERMSG,5,20,340,35,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "New User Prompt",IDC_STATIC,5,59,130,8 + EDITTEXT IDM_NEWUSERMSG,5,70,340,35,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "Expert User Prompt",IDC_STATIC,5,110,130,8 + EDITTEXT IDM_EXPERTUSERMSG,5,120,340,35,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",IDM_PROMPTSAVE,166,250,50,14,BS_CENTER | BS_VCENTER + LTEXT "$U : Callsign of the user $I : First name of the user $X Messages for user $x Unread messages",IDC_STATIC,2,165,353,8 + LTEXT "$L : Number of the latest message $N : Number of active messages. $Z : Last message read by user",IDC_STATIC,3,175,347,10 +END + +IDD_MAINTRESULTS DIALOG 0, 0, 181, 114 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME +CAPTION "Maintenance Results" +FONT 8, "System" +BEGIN + DEFPUSHBUTTON "OK",IDOK,66,91,50,14 + LTEXT "Killed Messsages Removed",IDC_STATIC,11,10,103,10 + LTEXT "Messages Killed",IDC_STATIC,11,21,103,10 + LTEXT "Live Messages",IDC_STATIC,11,32,104,10 + LTEXT "Total Messages",IDC_STATIC,11,43,103,10 + LTEXT "BIDs Removed",IDC_STATIC,11,58,103,10 + LTEXT "BIDs Left",IDC_STATIC,11,70,103,10 + LTEXT "Static",IDC_REMOVED,146,10,30,10 + LTEXT "Static",IDC_KILLED,146,21,30,10 + LTEXT "Static",IDC_LIVE,146,32,30,10 + LTEXT "Static",IDC_TOTAL,146,43,30,10 + LTEXT "Static",IDC_BIDSREMOVED,146,58,30,10 + LTEXT "Static",IDC_BIDSLEFT,146,69,30,10 +END + +IDD_EDITWP DIALOG 0, 0, 398, 265 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "EDIT WP Record" +FONT 8, "MS Sans Serif" +BEGIN + COMBOBOX IDC_WP,9,9,76,190,CBS_SIMPLE | CBS_SORT | CBS_UPPERCASE | WS_VSCROLL | WS_TABSTOP + LTEXT "Name",-1,100,11,47,10 + EDITTEXT IDC_WPNAME,165,10,128,12,ES_AUTOHSCROLL + LTEXT "Home BBS 1",-1,100,26,53,10 + EDITTEXT IDC_HOMEBBS1,165,25,216,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "Home BBS 2",-1,100,41,53,10 + EDITTEXT IDC_HOMEBBS2,165,40,216,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "QTH 1",-1,100,56,47,10 + EDITTEXT IDC_QTH1,165,55,215,12,ES_AUTOHSCROLL + LTEXT "QTH 2",-1,100,71,47,10 + EDITTEXT IDC_QTH2,165,70,215,12,ES_AUTOHSCROLL + LTEXT "ZIP 1",-1,100,86,47,12 + EDITTEXT IDC_ZIP1,165,85,128,12,ES_AUTOHSCROLL + LTEXT "ZIP 2",-1,100,101,47,12 + EDITTEXT IDC_ZIP2,165,100,128,12,ES_AUTOHSCROLL + LTEXT "Last Seen",-1,100,121,47,12 + EDITTEXT IDC_LASTSEEN,165,120,128,12,ES_AUTOHSCROLL + LTEXT "Last Modified",-1,100,136,47,12 + EDITTEXT IDC_LASTMODIFIED,165,135,128,12,ES_AUTOHSCROLL + LTEXT "Type",-1,100,156,47,12 + EDITTEXT IDC_TYPE,165,155,59,12,ES_AUTOHSCROLL + LTEXT "Changed",-1,100,171,47,12 + LTEXT "Seen",-1,100,186,47,12 + EDITTEXT IDC_CHANGED,165,170,59,12,ES_AUTOHSCROLL + EDITTEXT IDC_SEEN,165,185,59,12,ES_AUTOHSCROLL + PUSHBUTTON "Delete",IDC_DELETEWP,106,215,56,17,BS_CENTER | BS_VCENTER + PUSHBUTTON "Save",IDC_SAVEWP,171,216,56,17,BS_CENTER | BS_VCENTER +END + +IDD_UICONFIG DIALOG 0, 0, 400, 151 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "UI Configuration" +FONT 8, "System" +BEGIN + DEFPUSHBUTTON "Save",IDOK,7,98,50,14 + PUSHBUTTON "Cancel",IDCANCEL,342,98,50,14 + LTEXT "Mailfor Header",IDC_STATIC,5,5,50,10 + EDITTEXT IDC_MAILFOR,61,3,331,12,ES_AUTOHSCROLL + LTEXT "Send: Mail For Headers Null Mailfor",IDC_STATIC,242,25,127,10 + LTEXT "(use \\r to insert newline in message)",IDC_STATIC,62,16,125,10 +END + +IDD_CHATCOLCONFIG DIALOG 0, 0, 224, 120 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Chat Colour Configuration" +FONT 8, "System" +BEGIN + DEFPUSHBUTTON "Save",IDOK,50,95,50,14 + PUSHBUTTON "Close",IDCANCEL,120,95,50,14 + COMBOBOX IDC_CHATCALLS,10,5,100,60,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CHATCOLOURS,115,5,100,60,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP +END + +IDD_UPDATECHATMAP DIALOG 0, 0, 274, 146 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Update Chat Map" +FONT 8, "System" +BEGIN + LTEXT "Click Help for full information about the Chat Network Map",IDC_STATIC,5,10,195,15 + DEFPUSHBUTTON "? Help",IDC_MAPHELP,220,10,33,11,BS_CENTER | BS_VCENTER + LTEXT "Position",IDC_STATIC,5,30,35,10 + EDITTEXT IDC_MAPPOSITION,5,45,145,15,ES_AUTOHSCROLL + LTEXT "Popup Box Text. ",IDC_STATIC,5,65,70,9 + EDITTEXT IDC_POPUPTEXT,5,80,200,35,ES_MULTILINE | ES_AUTOHSCROLL | WS_HSCROLL + LTEXT "Popup Mode",IDC_STATIC,215,80,49,10 + CONTROL "Hover",IDC_HOVER,"Button",BS_AUTORADIOBUTTON,219,92,45,10 + CONTROL "Click",IDC_CLICK,"Button",BS_AUTORADIOBUTTON,219,104,45,10 + DEFPUSHBUTTON "Send to Map System",IDSENDTOMAP,5,125,90,14 + DEFPUSHBUTTON "Save",IDOK,100,125,35,14 + PUSHBUTTON "Cancel",IDCANCEL,140,125,40,14 +END + +IDD_MSGFROMCLIPBOARD DIALOGEX 0, 0, 442, 306 +STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Send Message" +FONT 8, "System", 0, 0, 0x1 +BEGIN + PUSHBUTTON "Send",IDSEND,333,5,50,14 + PUSHBUTTON "Cancel",IDCANCEL,333,25,50,14 + EDITTEXT IDC_EDIT1,4,57,431,245,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL,WS_EX_ACCEPTFILES + LTEXT "To:",IDC_STATIC,66,8,12,8 + EDITTEXT IDC_MSGTO,83,7,147,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "Title:",IDC_STATIC,8,26,22,8 + EDITTEXT IDC_MSGTITLE,50,24,277,12,ES_AUTOHSCROLL + LTEXT "BID:",IDC_STATIC,240,8,20,8 + EDITTEXT IDC_MSGBID,262,7,65,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "Type",IDC_STATIC,8,8,20,8 + COMBOBOX IDC_MSGTYPE,34,7,25,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Select",IDSelectFiles,333,42,50,14 + LTEXT "Attachments",IDC_STATIC,8,43,42,8 + EDITTEXT IDC_ATTACHMENTS,50,41,277,12,ES_AUTOHSCROLL +END + +IDD_HRHELP DIALOG 0, 0, 415, 182 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Hierarchical Forwarding Help" +FONT 8, "System" +BEGIN + DEFPUSHBUTTON "OK",IDOK,182,158,50,14 + EDITTEXT IDC_HRTEXT,4,4,405,150,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL +END + +IDD_EDITMSGTEXT DIALOGEX 0, 0, 492, 356 +STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Edit Message" +FONT 8, "Fixedsys", 0, 0, 0x1 +BEGIN + EDITTEXT IDC_MESSAGE,4,25,480,327,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL,WS_EX_ACCEPTFILES + PUSHBUTTON "Save",IDSAVE,5,5,40,17 + PUSHBUTTON "Cancel",IDCANCEL,125,5,40,17 + PUSHBUTTON "Save Attachments",IDC_SAVEATTACHMENTS,50,5,70,17,WS_DISABLED +END + +MAINT DIALOG 26, 5, 382, 298 +STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +FONT 8, "System" +BEGIN + LTEXT "This sets the parameters for deleting old messages. Specify length of time (in days) for messages to be kept before being deleted",IDC_STATIC,149,13,226,22 + LTEXT "Read",IDC_STATIC,159,46,46,10 + EDITTEXT IDM_PR,224,46,20,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Unread",IDC_STATIC,159,61,46,10 + EDITTEXT IDM_PUR,224,61,20,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Forwarded",IDC_STATIC,159,76,46,10 + EDITTEXT IDM_PF,224,76,20,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Not Forwarded",IDC_STATIC,159,91,49,10 + EDITTEXT IDM_PNF,224,91,20,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Forwarded",IDC_STATIC,264,46,49,10 + EDITTEXT IDM_BF,324,46,20,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Not Forwarded",IDC_STATIC,264,61,49,10 + EDITTEXT IDM_BNF,324,61,20,12,ES_CENTER | ES_AUTOHSCROLL + GROUPBOX "Personals",IDC_STATIC,149,36,108,107 + GROUPBOX "Bulletins",IDC_STATIC,259,36,103,44 + LTEXT "The following boxes allow you to specify different values for different Bulletin origins and destinations. Normally these apply to Sent Messages, to apply to unsent, check box below",IDC_STATIC,151,148,214,27 + LTEXT "Specify Call, Lifetime, eg ALL, 10",IDC_STATIC,151,176,154,8 + LTEXT "From",IDC_STATIC,176,189,28,9 + EDITTEXT IDM_LTFROM,151,202,64,55,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "To",IDC_STATIC,247,189,27,10 + EDITTEXT IDM_LTTO,221,202,64,55,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "At",IDC_STATIC,316,189,15,8 + EDITTEXT IDM_LTAT,289,202,64,55,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",IDM_MAINTSAVE,166,279,50,14,BS_CENTER | BS_VCENTER + GROUPBOX "Lifetimes",IDC_STATIC,144,0,231,275 + GROUPBOX "Parameters",IDC_STATIC,3,3,133,275 + LTEXT "Max Message Number",IDC_STATIC,7,68,77,10 + LTEXT "BID Lifetime (Days)",IDC_STATIC,7,87,77,10 + LTEXT "Maintenance Time (UTC) Enter as HHMM",IDC_STATIC,7,21,83,25 + EDITTEXT IDC_MAXMSG,102,67,25,12,ES_CENTER + EDITTEXT IDC_BIDLIFETIME,102,86,25,12,ES_CENTER | ES_AUTOHSCROLL + EDITTEXT IDC_MAINTTIME,102,23,25,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Log File Lifetime (Days)",IDC_STATIC,7,107,80,10 + EDITTEXT IDC_LOGLIFETIME,102,105,25,12,ES_CENTER | ES_AUTOHSCROLL + 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",IDC_MAINTNOMAIL, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,182,115,20 + CONTROL "Generate Traffic Report",IDC_MAINTTRAFFIC,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,204,115,10 + CONTROL "Send Non-delivery Notifications for P and T messages",IDC_MAINTNONDELIVERY, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,162,115,20 + CONTROL "Apply Overrides to Unsent Bulls",IDC_OVERRIDEUNSENT, + "Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,153,261,195,10 + LTEXT "Delete Inactive Users (Days)",IDC_STATIC,7,127,93,10 + EDITTEXT IDC_USERLIFETIME,102,125,25,12,ES_CENTER | ES_AUTOHSCROLL + GROUPBOX "NTS",IDC_STATIC,259,80,102,62 + LTEXT "Forwarded",IDC_STATIC,264,109,49,10 + EDITTEXT IDM_NTSF,324,108,20,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Not Forwarded",IDC_STATIC,264,124,49,10 + EDITTEXT IDM_NTSU,324,123,20,12,ES_CENTER | ES_AUTOHSCROLL + LTEXT "Delivered",IDC_STATIC,264,94,49,10 + EDITTEXT IDM_NTSD,324,94,20,12,ES_CENTER | ES_AUTOHSCROLL + CONTROL "Save Registry",IDC_MAINTSAVEREG2,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_MULTILINE | WS_TABSTOP,5,222,115,10 + LTEXT "Maintenance Interval (Hrs)",IDC_STATIC,7,47,93,10 + EDITTEXT IDC_MAINTINTERVAL,102,45,25,12,ES_CENTER | ES_AUTOHSCROLL +END + +FILTERS DIALOG 26, 5, 382, 371 +STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +FONT 8, "System" +BEGIN + LTEXT "Reject Messages:",IDC_STATIC,162,26,70,10 + LTEXT "From",IDC_STATIC,83,137,28,10 + EDITTEXT IDC_HOLDFROM,58,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "To",IDC_STATIC,152,137,27,10 + EDITTEXT IDC_HOLDTO,126,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "At",IDC_STATIC,223,137,15,10 + EDITTEXT IDC_HOLDAT,194,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "Save",IDC_FILTERSAVE,171,341,50,14,BS_CENTER | BS_VCENTER + LTEXT "From",IDC_STATIC,83,40,28,10 + EDITTEXT IDC_REJFROM,58,52,64,67,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "To",IDC_STATIC,154,40,27,10 + EDITTEXT IDC_REJTO,126,52,64,68,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "At",IDC_STATIC,223,40,15,10 + EDITTEXT IDC_REJAT,194,52,64,68,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "Message Filtering Setup.",IDC_STATIC,152,10,95,15 + LTEXT "Hold Messages:",IDC_STATIC,166,128,60,9 + EDITTEXT IDC_REJBID,262,52,64,68,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + EDITTEXT IDC_HOLDBID,262,149,64,83,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "BID",IDC_STATIC,289,137,15,10 + LTEXT "BID",IDC_STATIC,289,41,15,10 + EDITTEXT IDC_REJSYS,58,265,270,66,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_WANTRETURN + LTEXT "Composite Rules (like fbb reject.sys)",IDC_STATIC,152,236,134,9 + LTEXT "Action, Type, from, @BBS, to, BID, maximum size",IDC_STATIC,59,251,247,9 +END + +WPUPDATE DIALOG 26, 5, 382, 287 +STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE +FONT 8, "System" +BEGIN + CONTROL "Send WP Updates",IDC_SENDWP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,90,18,71,10 + EDITTEXT IDC_WPTO,112,82,154,113,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + COMBOBOX IDC_WPTYPE,193,17,19,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Type",IDC_STATIC,172,18,21,10 + DEFPUSHBUTTON "Save",IDC_WPSAVE,165,204,50,14,BS_CENTER | BS_VCENTER + CONTROL "Reject WP Bulls",IDC_FILTERWPB,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,222,18,71,10 + LTEXT "Send To.\rBPQMail only automatically processes messages with TO of WP, so for P messages format should be WP@BBSCALL. ",IDC_STATIC,98,38,176,35 +END + +IDD_RMSBULLDLG DIALOG 0, 0, 277, 258 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "RMS Express Bull Configuration" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,66,237,50,14 + PUSHBUTTON "Cancel",IDCANCEL,164,237,50,14 + EDITTEXT IDC_TOCALLS,82,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_TOCALLS2,144,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_TOCALLS3,208,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_TOCALLS4,18,76,54,112,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + LTEXT "Common",IDC_STATIC,63,47,48,8 + LTEXT "User Specific",IDC_STATIC,174,47,48,8 + LTEXT "TO AT",IDC_STATIC,39,62,79,8 + LTEXT "TO AT",IDC_STATIC,163,62,79,8 + LTEXT "This defines Bulls that will be downloaded to RMS Express Users. There are two lists, one for all RMS Express users and one per User. The lists will be combined, Updating the Common list will affect all users.",IDC_STATIC,7,7,242,37 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + "BPQMAIL", DIALOG + BEGIN + END + + 102, DIALOG + BEGIN + TOPMARGIN, 47 + END + + "BBS_CONFIG", DIALOG + BEGIN + BOTTOMMARGIN, 303 + HORZGUIDE, 87 + END + + IDD_USEREDIT, DIALOG + BEGIN + RIGHTMARGIN, 292 + BOTTOMMARGIN, 280 + END + + IDD_FORWARDING, DIALOG + BEGIN + RIGHTMARGIN, 444 + BOTTOMMARGIN, 314 + END + + IDD_USERADDED_BOX, DIALOG + BEGIN + BOTTOMMARGIN, 65 + END + + IDD_MSGEDIT, DIALOG + BEGIN + RIGHTMARGIN, 415 + BOTTOMMARGIN, 266 + END + + "WELCOMEMSG", DIALOG + BEGIN + BOTTOMMARGIN, 266 + END + + IDD_MAINTRESULTS, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 176 + TOPMARGIN, 7 + BOTTOMMARGIN, 106 + END + + IDD_EDITWP, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 391 + TOPMARGIN, 9 + BOTTOMMARGIN, 258 + END + + IDD_UICONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 392 + TOPMARGIN, 2 + BOTTOMMARGIN, 144 + END + + IDD_MSGFROMCLIPBOARD, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 435 + TOPMARGIN, 7 + END + + IDD_HRHELP, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 408 + TOPMARGIN, 7 + BOTTOMMARGIN, 175 + END + + IDD_EDITMSGTEXT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 485 + TOPMARGIN, 7 + BOTTOMMARGIN, 349 + END + + "MAINT", DIALOG + BEGIN + RIGHTMARGIN, 381 + BOTTOMMARGIN, 266 + END + + "FILTERS", DIALOG + BEGIN + RIGHTMARGIN, 377 + BOTTOMMARGIN, 355 + END + + IDD_RMSBULLDLG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 267 + TOPMARGIN, 7 + BOTTOMMARGIN, 251 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDC_BPQMailChat MENU +BEGIN + POPUP "Actions" + BEGIN + POPUP "Start Forwarding" + BEGIN + MENUITEM "All", IDM_FORWARD_ALL + END + POPUP "Logging Options" + BEGIN + MENUITEM "Log BBS Traffic", IDM_LOGBBS + MENUITEM "Log TCP Traffic", IDM_LOGTCP + END + POPUP "Disconnect User" + BEGIN + MENUITEM ".", IDM_DISCONNECT + END + MENUITEM "Housekeeping", IDM_HOUSEKEEPING + MENUITEM "Send Message", ID_ACTIONS_SENDMESSAGE + MENUITEM "Send Msg from Clipboard", ID_ACTIONS_SENDMSGFROMCLIPBOARD + MENUITEM "Rerun Message Routing", RESCANMSGS + MENUITEM "Import Messages", IDM_IMPORT + END + POPUP "&Configuration" + BEGIN + MENUITEM "Main &Configuration", IDM_CONFIG + MENUITEM "Manage &Users", IDM_USERS + MENUITEM "Manage &Forwarding", IDM_FWD + MENUITEM "Manage &Messages", IDM_MESSAGES + MENUITEM "Manage &White Pages", IDM_WP + END + POPUP "Windows" + BEGIN + MENUITEM "BBS Console (F2)", IDM_CONSOLE + MENUITEM "Multicast Monitor (F3)", IDM_MCMONITOR + MENUITEM "Monitor (F4)", IDM_MONITOR + END + POPUP "&Help" + BEGIN + MENUITEM "&About ...", IDM_ABOUT + MENUITEM "Online Documentation", ID_HELP_ONLINEHELP + END +END + +CONSOLEMENU MENU +BEGIN + POPUP "Options" + BEGIN + MENUITEM "Enable Bells", BPQBELLS + MENUITEM "Flash instead of Beep on Bell", BPQFLASHONBELL + MENUITEM "Strip Linefeeds", BPQStripLF + MENUITEM "Wrap Input ", IDM_WRAPTEXT + MENUITEM "Beep if Input too long", IDM_WARNINPUT + MENUITEM "Close Window on exit", IDM_CLOSEWINDOW + END + POPUP "Edit" + BEGIN + MENUITEM "Copy Output Window", BPQCOPYOUT + MENUITEM "Clear Output Window", BPQCLEAROUT + END + POPUP "Actions" + BEGIN + POPUP "Chat to user" + BEGIN + MENUITEM ".", BBSUSERCHAT + END + MENUITEM "End user chat", ENDUSERCHAT + END +END + +MENU_2 MENU +BEGIN + POPUP "Monitor" + BEGIN + MENUITEM "Monitor BBS", MONBBS + MENUITEM "Monitor TCP", MONTCP + END + POPUP "Edit" + BEGIN + MENUITEM "Copy Monitor Window", BPQCOPYOUT + MENUITEM "Clear Monitor Window", BPQCLEAROUT + END +END + +MENU_3 MENU +BEGIN + POPUP "Edit" + BEGIN + MENUITEM "Copy Monitor Window", BPQCOPYOUT + MENUITEM "Clear Monitor Window", BPQCLEAROUT + END +END + +MENU_1 MENU +BEGIN + POPUP "Edit" + BEGIN + MENUITEM "Copy", ID_EDIT_COPY + MENUITEM "Clear", ID_EDIT_CLEAR + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDC_TELNETSERVER ACCELERATORS +BEGIN + "?", IDM_ABOUT, ASCII, ALT + "/", IDM_ABOUT, ASCII, ALT +END + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "BPQMailrc.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""AFXRES.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#define MAILCHAT\r\n" + "#include ""..\\CommonSource\\Versions.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define MAIL\r\n" + "#include ""Versions.h""\r\n" + "#include ""StdVer.inc""\r\n" + "\0" +END + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// AFX_DIALOG_LAYOUT +// + +IDD_USEREDIT AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_FORWARDING AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +FILTERS AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +BPQMAIL AFX_DIALOG_LAYOUT +BEGIN + 0 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_APP_TITLE "BPQMail" + IDC_BPQMailChat "BPQMail" +END + +#endif // English (United Kingdom) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define MAIL +#include "Versions.h" +#include "StdVer.inc" + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Bpq32.c b/Bpq32.c index 388f89a..bd75ca6 100644 --- a/Bpq32.c +++ b/Bpq32.c @@ -1308,6 +1308,13 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses // Don't reset NS on RR R(F) following I(P) just on RR poll following timeout. Can get problems with delayed RR R(F) (reverted) (14) // Ignore packets that would cause an FRMR and respond to FRMR with DM (14) // Add option to send periodic INP3 RIF refresh (15) +// Add RHP and STREAMS nodes commands (16) +// Fix possible crash in telnet connected to application processing (16) +// Fix NodeAPI /tcpqueues output for local telnet sessions (16) +// Fix handling of disconnects when using RHP (17) +// Fix propagating unreachable in INP3 (18) +// Add STOPROUTE command (22) + @@ -1528,6 +1535,7 @@ VOID PMClose(); VOID MySetWindowText(HWND hWnd, char * Msg); BOOL CreateMonitorWindow(char * MonSize); VOID FormatTime3(char * Time, time_t cTime); +void * zalloc(int len); char EXCEPTMSG[80] = ""; @@ -2563,7 +2571,7 @@ FirstInit() return 0; } -Check_Timer() +int Check_Timer() { if (Closing) return 0; @@ -3900,7 +3908,10 @@ BOOL UpdateNodesForApp(int Appl) NUMBEROFNODES++; APPL->NODEPOINTER = DEST; - + + if (DEST->RouteLastTT == 0) + DEST->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); + memmove (DEST->DEST_CALL,APPL->APPLCALL,13); DEST->DEST_STATE=0x80; // SPECIAL ENTRY diff --git a/Cmd.c b/Cmd.c index 738b8ad..e3e3785 100644 --- a/Cmd.c +++ b/Cmd.c @@ -72,6 +72,7 @@ int CompareRoutes(const void * a, const void * b); void SendVARANetromNodes(struct TNCINFO * TNC, MESSAGE *Buffer); VOID DoNetromConnect(TRANSPORTENTRY * Session, char * Bufferptr, struct DEST_LIST * Dest, BOOL Spy, int Service); VOID sendAlltoOneNeigbour(struct ROUTE * Route); +VOID CMDSTREAMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); extern VOID KISSTX(struct KISSINFO * KISS, PMESSAGE Buffer); @@ -171,6 +172,8 @@ VOID STOPCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct VOID STARTCMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); VOID STOPPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); VOID STARTPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); +VOID STOPROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); +VOID STARTROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); VOID FINDBUFFS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); VOID WL2KSYSOP(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); VOID AXRESOLVER(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); @@ -189,7 +192,7 @@ VOID HELPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct VOID UZ7HOCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD); VOID QTSMCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * UserCMD); void hookL2SessionAttempt(int Port, char * fromCall, char * toCall, struct _LINKTABLE * LINK); - +VOID RHPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); /* Paula's NetROMX includes a service number in a CREQX message which allows a node to host lots of applications without filling the Nodes table with SSID's @@ -4692,6 +4695,8 @@ struct CMDX COMMANDS[] = "STARTPORT ",5,STARTPORT,0, "STOPCMS ",7,STOPCMS,0, "STARTCMS ",8,STARTCMS,0, + "STOPROUTE ",9,STOPROUTE,0, + "STARTROUTE ",10,STARTROUTE,0, "FINDBUFFS ",4,FINDBUFFS,0, "KISS ",4,KISSCMD,0, @@ -4781,6 +4786,8 @@ struct CMDX COMMANDS[] = "ROUTES ",1,CMDR00,0, "STATS ",1,CMDSTATS,0, "USERS ",1,CMDS00,0, + "STREAMS ",6,CMDSTREAMS,0, + "RHP ",3,RHPCMD,0, "UNPROTO ",2,UNPROTOCMD,0, "? ",1,CMDQUERY,0, "DUMP ",4,DUMPCMD,0, @@ -5992,6 +5999,132 @@ VOID STARTPORT(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struc return; } +BOOL FindNeighbour(UCHAR * Call, int Port, struct ROUTE ** REQROUTE); +VOID DecayNETROMRoutes(struct ROUTE * Route); +VOID DeleteINP3Routes(struct ROUTE * Route); +void NETROMCloseTCP(struct ROUTE * Route); + +VOID STOPROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) +{ + char _REPLYBUFFER[1000] = ""; + char * ptr, * Context, * Call; + int portno; + unsigned char Neighbour[7]; + struct ROUTE * Route; + + // STOPROUTE PORT CALL + + // Get port number and call + + ptr = strtok_s(CmdTail, " ", &Context); + Call = strtok_s(NULL, " \r", &Context); + + if (ptr && Call && Call[0]) + { + portno = atoi (ptr); + ConvToAX25(Call, Neighbour); + } + else + { + Bufferptr = Cmdprintf(Session, Bufferptr, "Invalid Params - Should be STOPROUTE PORT CALL\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; + } + + if (FindNeighbour(Neighbour, portno, &Route) == 0) + { + Bufferptr = Cmdprintf(Session, Bufferptr, "Route not found\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; + } + + if (Route->NEIGHBOUR_LINK == 0 || Route->NEIGHBOUR_LINK->LINKPORT == 0) + { + // Not active + + Bufferptr = Cmdprintf(Session, Bufferptr, "Route not active\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; + } + + Route->Stopped = 1; + DecayNETROMRoutes(Route); + DeleteINP3Routes(Route); + + Route->Status = 0; // Down + + // close the link + + if (Route->TCPPort == 0) // NetromTCP doesn't have a real link + { + Route->NEIGHBOUR_LINK->KILLTIMER = 0; + Route->NEIGHBOUR_LINK->L2TIMER = 1; // TO FORCE DISC + Route->NEIGHBOUR_LINK->L2STATE = 4; // DISCONNECTING + } + else + { + // but we should reset the TCP connection + + NETROMCloseTCP(Route); + } + + + Route->BCTimer = 999999; // Wait a while before retrying + + Bufferptr = Cmdprintf(Session, Bufferptr, "Route Closed\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; +} + +VOID STARTROUTE(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) +{ + char _REPLYBUFFER[1000] = ""; + char * ptr, * Context, * Call; + int portno; + unsigned char Neighbour[7]; + struct ROUTE * Route; + + // STARTROUTE PORT CALL + + // Get port number and call + + ptr = strtok_s(CmdTail, " ", &Context); + Call = strtok_s(NULL, " \r", &Context); + + if (ptr && Call && Call[0]) + { + portno = atoi (ptr); + ConvToAX25(Call, Neighbour); + } + else + { + Bufferptr = Cmdprintf(Session, Bufferptr, "Invalid Params - Should be STARTROUTE PORT CALL\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; + } + + if (FindNeighbour(Neighbour, portno, &Route) == 0) + { + Bufferptr = Cmdprintf(Session, Bufferptr, "Route not found\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; + } + + if (Route->Stopped == 0) + { + Bufferptr = Cmdprintf(Session, Bufferptr, "Route not stopped\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; + } + + Route->Stopped = 0; + Route->BCTimer = 0; + + Bufferptr = Cmdprintf(Session, Bufferptr, "Route Enabled\r"); + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; +} + int ASYSEND(struct PORTCONTROL * PortVector, char * buffer, int count); @@ -6359,11 +6492,149 @@ VOID QTSMCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct return; } +DllExport int APIENTRY Get_APPLMASK(int Stream); +DllExport int APIENTRY GetStreamPID(int Stream); +DllExport int APIENTRY GetApplFlags(int Stream); +DllExport int APIENTRY GetApplNum(int Stream); +DllExport int APIENTRY GetApplMask(int Stream); +DllExport BOOL APIENTRY GetAllocationState(int Stream); +int Check_Timer(); + +DllExport int APIENTRY GetCallsignNoSem(int stream, char * callsign) +{ + // Returns call connected on stream (BPQHOST function 8 (part)). + + BPQVECSTRUC * SESS; + TRANSPORTENTRY * L4; + TRANSPORTENTRY * Partner; + UCHAR Call[11] = "SWITCH "; + UCHAR * AXCall = NULL; + Check_Timer(); + + stream--; // API uses 1 - 64 + + if (stream < 0 || stream > 63) + return 0; + + SESS = &BPQHOSTVECTOR[stream]; + L4 = SESS->HOSTSESSION; + + if (L4 == 0) + { + return 0; + } + + Partner = L4->L4CROSSLINK; + + if (Partner) + { + // CONNECTED OUT - GET TARGET SESSION + + if (Partner->L4CIRCUITTYPE & BPQHOST) + { + AXCall = &Partner->L4USER[0]; + } + else if (Partner->L4CIRCUITTYPE & L2LINK) + { + struct _LINKTABLE * LINK = Partner->L4TARGET.LINK; + if (LINK) + AXCall = LINK->LINKCALL; + if (Partner->L4CIRCUITTYPE & UPLINK) + { + // IF UPLINK, SHOULD USE SESSION CALL, IN CASE *** LINKED HAS BEEN USED + AXCall = &Partner->L4USER[0]; + } + } + else if (Partner->L4CIRCUITTYPE & PACTOR) + { + // PACTOR Type - Frames are queued on the Port Entry + EXTPORTDATA * EXTPORT = Partner->L4TARGET.EXTPORT; + if (EXTPORT) + AXCall = &EXTPORT->ATTACHEDSESSIONS[Partner->KAMSESSION]->L4USER[0]; + + } + else + { + // MUST BE NODE SESSION + + // ANOTHER NODE + + // IF THE HOST IS THE UPLINKING STATION, WE NEED THE TARGET CALL + + if (L4->L4CIRCUITTYPE & UPLINK) + { + struct DEST_LIST *DEST = Partner->L4TARGET.DEST; + + if (DEST) + AXCall = &DEST->DEST_CALL[0]; + } + else + AXCall = Partner->L4USER; + } + if (AXCall) + ConvFromAX25(AXCall, Call); + } + + memcpy(callsign, Call, 10); + return 0; +} + + +VOID CMDSTREAMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) +{ + int i; + char callsign[12] = ""; + char flag[3]; + UINT Mask, MaskCopy; + int Flags; + int AppNumber; + int OneBits; + Bufferptr = Cmdprintf(Session, Bufferptr, "\r| | RX | TX | MON |App|Flg| Callsign | Program |\r"); + + for (i=1; i <=BPQHOSTSTREAMS; i++) + { + callsign[0]=0; + + if (GetAllocationState(i) == 0) + continue; + + strcpy(flag,"*"); + + GetCallsignNoSem(i,callsign); + + Mask = MaskCopy = Get_APPLMASK(i); + + // if only one bit set, convert to number + + AppNumber = 0; + OneBits = 0; + + while (MaskCopy) + { + if (MaskCopy & 1) + OneBits++; + + AppNumber++; + MaskCopy = MaskCopy >> 1; + } + + Flags=GetApplFlags(i); + + if (OneBits > 1) + Bufferptr = Cmdprintf(Session, Bufferptr, "|%2d%s|%4d|%4d|%5d|%3x|%3x|%10s|%-15s|\r", i, flag, RXCount(i), TXCount(i), MONCount(i), Mask, Flags, callsign, BPQHOSTVECTOR[i-1].PgmName); + else + Bufferptr = Cmdprintf(Session, Bufferptr, "|%2d%s|%4d|%4d|%5d|%3d|%3x|%10s|%-15s|\r",i, flag, RXCount(i), TXCount(i), MONCount(i), AppNumber, Flags, callsign, BPQHOSTVECTOR[i-1].PgmName); + + } + + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; +} diff --git a/CommonCode.c b/CommonCode.c index 26dda97..eb6c011 100644 --- a/CommonCode.c +++ b/CommonCode.c @@ -395,16 +395,54 @@ BOK1: return 0; } + +void CheckFreeQueue(char * File, int Line) +{ + void ** pointer; + int n = 0; + void ** debug; + PMESSAGE Test; + + pointer = FREE_Q; + debug = &FREE_Q; + + while (pointer) + { + // Validate pointer to make sure it is in pool - it may be a duff address if Q is corrupt + + Test = (PMESSAGE)pointer; + + if (Test->GuardZone || (uintptr_t)pointer < (uintptr_t)BUFFERPOOL || (uintptr_t)pointer > (uintptr_t)ENDBUFFERPOOL) + { + // Not pointing to a buffer . debug points to the buffer that this is chained from + + Debugprintf("CheckFree Queue Pool Corruption n = %d, ptr %p prev %p from %s Line %d", n, pointer, debug, File, Line); + } + + debug = pointer; + pointer = pointer[0]; + n++; + + if (n > 1000) + { + Debugprintf("CheckFreeQueue Loop searching free chain - pointer = %p %p from %s Line %d", debug, pointer, File, Line); + FindLostBuffers(); + WriteMiniDump(); + Restart(); + } + } +} + int _C_Q_ADD(VOID *PQ, VOID *PBUFF, char * File, int Line) { void ** Q; void ** BUFF = PBUFF; void ** next; PMESSAGE Test; - - int n = 0; + CheckFreeQueue(File, Line); + // PQ may not be word aligned, so copy as bytes (for ARM5) Q = PQ; @@ -532,6 +570,8 @@ VOID * _GetBuff(char * File, int Line) char * fptr = 0; unsigned char * byteaddr; + CheckFreeQueue(File, Line); + Temp = Q_REM(&FREE_Q); // FindLostBuffers(); diff --git a/DOSAPI.c b/DOSAPI.c index 5780608..d1c1131 100644 --- a/DOSAPI.c +++ b/DOSAPI.c @@ -175,8 +175,8 @@ VOID CHOSTAPI(ULONG * pEAX, ULONG * pEBX, ULONG * pECX, ULONG * pEDX, VOID ** pE Stream = (EAX & 0xFF); n = Stream - 1; // API Numbers Streams 1-64 - if (n < 0 || n > 63) - n = 64; + if (n < 0 || n > BPQHOSTSTREAMS - 1) + n = BPQHOSTSTREAMS; HostVec = &BPQHOSTVECTOR[n]; Session = HostVec->HOSTSESSION; diff --git a/Events.c b/Events.c index 8e63cfe..1db1740 100644 --- a/Events.c +++ b/Events.c @@ -752,7 +752,13 @@ void APIL2Trace(struct _MESSAGE * Message, char * Dirn) int NR; struct PORTCONTROL * PORT = GetPortTableEntryFromPortNum(Message->PORT); time_t Now = time(NULL); - +#ifdef LINBPQ + struct timespec ts; +#else + FILETIME SystemTimeAsFileTime; + ULARGE_INTEGER FT64; +#endif + double NowMs; if (PORT == 0) return; @@ -776,6 +782,20 @@ void APIL2Trace(struct _MESSAGE * Message, char * Dirn) if ((Message->ORIGIN[6] & 1) == 0) // Digis - ignore for now return; +#ifdef LINBPQ + + if (clock_gettime(CLOCK_REALTIME, &ts) == -1) + NowMs = Now; + else + NowMs = ts.tv_sec + ts.tv_nsec / 1000000000.0; +#else + GetSystemTimeAsFileTime(&SystemTimeAsFileTime); + // FILETIME is 100 nS interval since 1601 - subtract 116444736000000000 to get 100 nS intervels since 1970 (Unix Time) + FT64.HighPart = SystemTimeAsFileTime.dwHighDateTime; + FT64.LowPart = SystemTimeAsFileTime.dwLowDateTime; + NowMs = (FT64.QuadPart - 116444736000000000) / 10000000.0; +#endif + if ((Message->DEST[6] & 0x80) == 0 && (Message->ORIGIN[6] & 0x80) == 0) strcpy(CR, "V1"); else if ((Message->DEST[6] & 0x80)) @@ -898,9 +918,9 @@ void APIL2Trace(struct _MESSAGE * Message, char * Dirn) // Common to all frame types udplen = snprintf(UDPMsg, 2048, - "{\"@type\": \"L2Trace\", \"serial\": %d, \"time\": %d, \"dirn\": \"%s\", \"isRF\": %s, \"reportFrom\": \"%s\", \"port\": \"%d\", \"srce\": \"%s\", \"dest\": \"%s\", \"ctrl\": %d," + "{\"@type\": \"L2Trace\", \"serial\": %d, \"time\": %.3f, \"dirn\": \"%s\", \"isRF\": %s, \"reportFrom\": \"%s\", \"port\": \"%d\", \"srce\": \"%s\", \"dest\": \"%s\", \"ctrl\": %d," "\"l2Type\": \"%s\", \"modulo\": 8, \"cr\": \"%s\"", - UDPSeq++, (int)Now, Dirn, (PORT->isRF)?"true":"false", NODECALLLOPPED, Message->PORT, srcecall, destcall, Message->CTL, Type, CR); + UDPSeq++, NowMs, Dirn, (PORT->isRF)?"true":"false", NODECALLLOPPED, Message->PORT, srcecall, destcall, Message->CTL, Type, CR); if (UIFlag) { @@ -949,12 +969,10 @@ void APIL2Trace(struct _MESSAGE * Message, char * Dirn) udplen += snprintf(&UDPMsg[udplen], 2048 - udplen, ", \"rseq\": %d", NR); } - UDPMsg[udplen++] = '}'; UDPMsg[udplen] = 0; -// Debugprintf(UDPMsg); + Debugprintf(UDPMsg); sendto(NodeAPISocket, UDPMsg, udplen, 0, (struct sockaddr *)&UDPreportdest, sizeof(UDPreportdest)); - } diff --git a/HTTPcode.c b/HTTPcode.c index b120822..ffb1050 100644 --- a/HTTPcode.c +++ b/HTTPcode.c @@ -4319,7 +4319,7 @@ int StatusProc(char * Buff) Len += sprintf(&Buff[Len], " MON  App  Flg "); Len += sprintf(&Buff[Len], "Callsign  Program"); - for (i=1;i<65; i++) + for (i=1; i <=BPQHOSTSTREAMS; i++) { callsign[0]=0; diff --git a/L2Code.c b/L2Code.c index fa8739f..1d63949 100644 --- a/L2Code.c +++ b/L2Code.c @@ -779,7 +779,7 @@ VOID L2FORUS(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buff } } - // IF CALL REQUEST IS FROM A LOCKED NODE WITH QUALITY ZERO, IGNORE IT + // IF CALL REQUEST IS FROM A LOCKED NODE WITH QUALITY ZERO or Stopped, IGNORE IT if (FindNeighbour(Buffer->ORIGIN, PORT->PORTNUMBER, &ROUTE)) { @@ -787,7 +787,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->Stopped || (ROUTE->NEIGHBOUR_FLAG && ROUTE->NEIGHBOUR_QUAL == 0)) // Stopped or Locked, qual 0 { ReleaseBuffer(Buffer); return; @@ -1360,7 +1360,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe // if it is an INP3 connection tell INP3 it is up - if (FindNeighbour(LINK->LINKCALL, PORT->PORTNUMBER, &ROUTE)) { if (ROUTE->INP3Node) diff --git a/L3Code.c b/L3Code.c index 84ebbdd..30dac2a 100644 --- a/L3Code.c +++ b/L3Code.c @@ -403,7 +403,9 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT) memset(DEST, 0, sizeof(struct DEST_LIST)); memcpy(DEST->DEST_CALL, Msg->ORIGIN, 7); - + if (DEST->RouteLastTT == 0) + DEST->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); + NUMBEROFNODES++; } @@ -582,6 +584,9 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT) memset(DEST, 0, sizeof(struct DEST_LIST)); memcpy(DEST->DEST_CALL, ptr1, 7); + if (DEST->RouteLastTT == 0) + DEST->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); + NUMBEROFNODES++; } @@ -1369,6 +1374,10 @@ VOID REMOVENODE(dest_list * DEST) } L4++; } + + if (DEST->RouteLastTT) + free(DEST->RouteLastTT); + memset(DEST, 0, sizeof(struct DEST_LIST)); NUMBEROFNODES--; } @@ -1523,7 +1532,10 @@ struct DEST_LIST * CHECKL3TABLES(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * Msg #endif memcpy(DEST->DEST_CALL, Msg->L3SRCE, 7); - + + if (DEST->RouteLastTT == 0) + DEST->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); + NUMBEROFNODES++; // MAKE SURE NEIGHBOUR IS DEFINED FOR DESTINATION diff --git a/MBLRoutines.c b/MBLRoutines.c index 0d33e53..97b694e 100644 --- a/MBLRoutines.c +++ b/MBLRoutines.c @@ -274,7 +274,7 @@ VOID ProcessMBLLine(CIRCUIT * conn, struct UserInfo * user, UCHAR* Buffer, int l QueueMsg(conn, MsgPtr, MsgLen); if (user->ForwardingInfo->SendCTRLZ) - nodeprintf(conn, "\rx1a"); + nodeprintf(conn, "\r\x1a"); else nodeprintf(conn, "\r/ex\r"); diff --git a/Moncode.c b/Moncode.c index 6cbf95a..7e50701 100644 --- a/Moncode.c +++ b/Moncode.c @@ -866,6 +866,18 @@ char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen) return Output; } + + if (Index == 0x0F) // NCMP + { + Output += sprintf((char *)Output, " NCMP %x %x Type %x Code %x", Index, ID, TXNO, RXNO); + + MsgLen = MsgLen - (19 + sizeof(void *)); + + if (MsgLen < 0 || MsgLen > 257) + return Output;// Duff + + return Output; + } } Output += sprintf((char *)Output, " "); @@ -1021,6 +1033,7 @@ void WritePacketLogThread(void * param) MESSAGE * MSG; MESSAGE * Q; char buffer[2048]; + char * ptr; while(1) { @@ -1074,7 +1087,14 @@ void WritePacketLogThread(void * param) MsgLen = IntDecodeFrame(MSG, buffer, MSG->Timestamp, 0xffffffffffffffff, FALSE, FALSE); IntSetTraceOptionsEx(MMASK, SaveMTX, SaveMCOM, SaveMUI); - buffer[MsgLen++] = 0x0a; // Add lf + // lines are CR terminated. Replace with LF + + ptr = buffer; + + while (ptr = strchr(ptr, 0x0d)) + *ptr = 0x0a; + +// buffer[MsgLen++] = 0x0a; // Add lf fwrite(buffer , 1, MsgLen, Handle); diff --git a/NETROMTCP.c b/NETROMTCP.c index acc890c..47f5b57 100644 --- a/NETROMTCP.c +++ b/NETROMTCP.c @@ -481,8 +481,15 @@ checkLen: memcpy(Route->NEIGHBOUR_LINK->LINKCALL, axCall, 7); Route->localport = htons(sockptr->sin.sin_port); - Debugprintf("New NRTCP Connection from %s port %d", Msg->Call, Route->localport); - + if(Route->Stopped) + { + Debugprintf("Neighbour %s port %d Route stopped - closing connection", Msg->Call, portNo); + closesocket(sockptr->socket); + sockptr->SocketActive = FALSE; + memset(sockptr, 0, sizeof(struct ConnectionInfo)); + Info->Call[0] = 0; + return 0; + } if (Info->Route->INP3Node) SendRTTMsg(Info->Route); @@ -675,6 +682,11 @@ void NETROMConnectionLost(struct ConnectionInfo * sockptr) if (Route) { + if (sockptr->Connecting) + TellINP3LinkSetupFailed(Route); + else + TellINP3LinkGone(Route); + Route->NEIGHBOUR_LINK = 0; Route->TCPSession = 0; Route->localport = 0; diff --git a/RHP.c b/RHP.c index 8faacb6..3142e39 100644 --- a/RHP.c +++ b/RHP.c @@ -42,7 +42,7 @@ static int GetJSONInt(char * _REPLYBUFFER, char * Name); struct RHPSessionInfo { struct ConnectionInfo * sockptr; - SOCKET Socket; // Websocks Socket + SOCKET Socket; // Websocks Socket int BPQStream; int Handle; // RHP session ID int Seq; @@ -51,16 +51,10 @@ struct RHPSessionInfo BOOL Connecting; // Set while waiting for connection to complete BOOL Listening; BOOL Connected; + BOOL Closing; int Busy; }; -struct RHPConnectionInfo -{ - SOCKET socket; - struct RHPSessionInfo ** RHPSessions; - int NumberofRHPSessions; -}; - // Struct passed by beginhread struct RHPParamBlock @@ -72,10 +66,6 @@ struct RHPParamBlock }; - -//struct RHPConnectionInfo ** RHPSockets = NULL; -//int NumberofRHPConnections = 0; - struct RHPSessionInfo ** RHPSessions; int NumberofRHPSessions; @@ -589,9 +579,9 @@ int processRHCPClose(SOCKET Socket, char * Msg, char * ReplyBuffer) Disconnect(RHPSession->BPQStream); RHPSession->Connected = 0; RHPSession->Connecting = 0; + RHPSession->Closing = 1; - DeallocateStream(RHPSession->BPQStream); - RHPSession->BPQStream = 0; + // Stream is deallocated in disconnect event handler return sprintf(ReplyBuffer, "{\"id\": %d, \"type\": \"closeReply\", \"handle\": %d, \"errcode\": 0, \"errtext\": \"Ok\"}", ID, Handle); } @@ -633,6 +623,9 @@ void RHPPoll() RHPSession = RHPSessions[n]; Stream = RHPSession->BPQStream; + if (Stream == 0) + continue; + // See if connected state has changed SessionState(Stream, &state, &change); @@ -660,12 +653,16 @@ void RHPPoll() } else { - // Disconnected. Send Close to client + // Disconnected. Send Close to client unless we initiated close - RHPMsg = malloc(256); - Len = sprintf(&RHPMsg[10], "{\"type\": \"close\", \"seqno\": %d, \"handle\": %d}", RHPSession->Seq++, RHPSession->Handle); - SendWebSockMessage(RHPSession->Socket, RHPMsg, Len); + if (RHPSession->Closing == 0) + { + RHPMsg = malloc(256); + Len = sprintf(&RHPMsg[10], "{\"type\": \"close\", \"seqno\": %d, \"handle\": %d}", RHPSession->Seq++, RHPSession->Handle); + SendWebSockMessage(RHPSession->Socket, RHPMsg, Len); + } + RHPSession->Closing = 0; RHPSession->Connected = 0; RHPSession->Connecting = 0; @@ -802,4 +799,35 @@ static int GetJSONInt(char * _REPLYBUFFER, char * Name) return atoi(ptr1); } +VOID SendCommandReply(TRANSPORTENTRY * Session, struct DATAMESSAGE * Buffer, int Len); +char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char * format, ...); + +extern struct DATAMESSAGE * REPLYBUFFER; + +VOID RHPCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD) +{ + int n; + struct RHPSessionInfo * RHP; + + Bufferptr = Cmdprintf(Session, Bufferptr, "\r|Stream|Local |Remote |Handle| Seq |Busy|\r"); + + for (n = 0; n < NumberofRHPSessions; n++) + { + RHP = RHPSessions[n]; + + if (RHP->BPQStream == 0) + continue; + + Bufferptr = Cmdprintf(Session, Bufferptr, "| %2d |%-9s|%-9s| %3d |%5d| %2d |\r", RHP->BPQStream, RHP->Local, RHP->Remote, RHP->Handle, RHP->Seq, RHP->Busy); + } + + SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); + return; +} + + + + + + diff --git a/TelnetV6.c b/TelnetV6.c index e2915db..d31093a 100644 --- a/TelnetV6.c +++ b/TelnetV6.c @@ -5764,11 +5764,10 @@ int Telnet_Connected(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, SOCK } else { - struct _TRANSPORTENTRY * CROSSLINK = TNC->PortRecord->ATTACHEDSESSIONS[Stream]->L4CROSSLINK; + struct _TRANSPORTENTRY * STREAM = TNC->PortRecord->ATTACHEDSESSIONS[Stream]; - if (CROSSLINK && CROSSLINK->APPL[0]) - buffptr->Len = sprintf(&buffptr->Data[0], "*** Connected to %s\r", - TNC->PortRecord->ATTACHEDSESSIONS[Stream]->L4CROSSLINK->APPL); + if (STREAM && STREAM->L4CROSSLINK && STREAM->L4CROSSLINK->APPL[0]) + buffptr->Len = sprintf(&buffptr->Data[0], "*** Connected to %s\r", STREAM->L4CROSSLINK->APPL); else buffptr->Len = sprintf(&buffptr->Data[0], "*** Connected to APPL\r"); diff --git a/Versions.h b/Versions.h index b7e091d..984d4bc 100644 --- a/Versions.h +++ b/Versions.h @@ -10,17 +10,17 @@ #endif -#define KVers 6,0,25,15 -#define KVerstring "6.0.25.15\0" +#define KVers 6,0,25,22 +#define KVerstring "6.0.25.22\0" #ifdef CKernel #define Vers KVers #define Verstring KVerstring -#define Datestring "December 2025" +#define Datestring "February 2026" #define VerComments "G8BPQ Packet Switch (C Version)" KVerstring -#define VerCopyright "Copyright © 2001-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 2001-2026 John Wiseman G8BPQ\0" #define VerDesc "BPQ32 Switch\0" #define VerProduct "BPQ32" @@ -31,7 +31,7 @@ #define Vers 1,0,16,2 #define Verstring "1.0.16.2\0" #define VerComments "Internet Terminal for G8BPQ Packet Switch\0" -#define VerCopyright "Copyright © 2011-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 2011-2026 John Wiseman G8BPQ\0" #define VerDesc "Simple TCP Terminal Program for G8BPQ Switch\0" #define VerProduct "BPQTermTCP" @@ -42,7 +42,7 @@ #define Vers 2,2,5,2 #define Verstring "2.2.5.2\0" #define VerComments "Simple Terminal for G8BPQ Packet Switch\0" -#define VerCopyright "Copyright © 1999-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 1999-2026 John Wiseman G8BPQ\0" #define VerDesc "Simple Terminal Program for G8BPQ Switch\0" #define VerProduct "BPQTerminal" @@ -53,7 +53,7 @@ #define Vers 2,2,0,3 #define Verstring "2.2.0.3\0" #define VerComments "MDI Terminal for G8BPQ Packet Switch\0" -#define VerCopyright "Copyright © 1999-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 1999-2026 John Wiseman G8BPQ\0" #define VerDesc "MDI Terminal Program for G8BPQ Switch\0" #endif @@ -63,7 +63,7 @@ #define Vers KVers #define Verstring KVerstring #define VerComments "Mail server for G8BPQ Packet Switch\0" -#define VerCopyright "Copyright © 2009-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 2009-2026 John Wiseman G8BPQ\0" #define VerDesc "Mail server for G8BPQ's 32 Bit Switch\0" #define VerProduct "BPQMail" @@ -98,7 +98,7 @@ #define Vers 0,1,0,0 #define Verstring "0.1.0.0\0" #define VerComments "Password Generation Utility for G8BPQ Packet Switch\0" -#define VerCopyright "Copyright © 2011-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 2011-2026 John Wiseman G8BPQ\0" #define VerDesc "Password Generation Utility for G8BPQ Switch\0" #endif @@ -108,7 +108,7 @@ #define Vers KVers #define Verstring KVerstring #define VerComments "APRS Client for G8BPQ Switch\0" -#define VerCopyright "Copyright © 2012-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 2012-2026 John Wiseman G8BPQ\0" #define VerDesc "APRS Client for G8BPQ Switch\0" #define VerProduct "BPQAPRS" @@ -119,7 +119,7 @@ #define Vers KVers #define Verstring KVerstring #define VerComments "Chat server for G8BPQ Packet Switch\0" -#define VerCopyright "Copyright © 2009-2025 John Wiseman G8BPQ\0" +#define VerCopyright "Copyright © 2009-2026 John Wiseman G8BPQ\0" #define VerDesc "Chat server for G8BPQ's 32 Bit Switch\0" #define VerProduct "BPQChat" diff --git a/asmstrucs.h b/asmstrucs.h index 7dca751..0fd608a 100644 --- a/asmstrucs.h +++ b/asmstrucs.h @@ -261,6 +261,7 @@ typedef struct ROUTE int localport; // for consistancy check int recNum; // This entry's index it Routes table int noV2point2; // Set to force V2.0 connect. Can be set in config or dynamically learned + int Stopped; // Set by STOPROUTE command } *PROUTE; @@ -481,7 +482,6 @@ typedef struct _APPLCALLS typedef struct NR_DEST_ROUTE_ENTRY { struct ROUTE * ROUT_NEIGHBOUR; // POINTER TO NEXT NODE IN PATH - uint16_t * Dummy; // Padding so records are same length UCHAR ROUT_QUALITY; // QUALITY UCHAR ROUT_OBSCOUNT; UCHAR ROUT_LOCKED; @@ -490,7 +490,6 @@ typedef struct NR_DEST_ROUTE_ENTRY typedef struct INP3_DEST_ROUTE_ENTRY { struct ROUTE * ROUT_NEIGHBOUR; // POINTER TO NEXT NODE IN PATH - uint16_t * RouteLastTT; // Last time sent should be saved for each neighbour. Area is mallod'ed as needed USHORT STT; // Current time to dest from here (was called RTT but is one way not round trip. // Is actually a smoothed value as is calculated from smoothed link times) UCHAR Hops; @@ -517,7 +516,9 @@ typedef struct DEST_LIST void * DEST_Q; // QUEUE OF FRAMES FOR THIS DESTINATION int DEST_RTT; // SMOOTHED ROUND TRIP TIMER - int DEST_COUNT; // FRAMES SENT + int DEST_COUNT; // FRAMES SENT + + uint16_t * RouteLastTT; // Last time sent should be saved for each neighbour. Area is mallod'ed as needed } dest_list; diff --git a/cMain.c b/cMain.c index c551265..f355e48 100644 --- a/cMain.c +++ b/cMain.c @@ -1565,6 +1565,9 @@ BOOL Start() DEST->DEST_STATE = 0x80; // SPECIAL ENTRY DEST->NRROUTE[0].ROUT_QUALITY = 255; DEST->NRROUTE[0].ROUT_OBSCOUNT = 255; + if (DEST->RouteLastTT == 0) + DEST->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); + DEST++; NUMBEROFNODES++; } @@ -1585,6 +1588,9 @@ BOOL Start() DEST->NRROUTE[0].ROUT_QUALITY = (UCHAR)APPL->APPLQUAL; DEST->NRROUTE[0].ROUT_OBSCOUNT = 255; APPL->NODEPOINTER = DEST; + if (DEST->RouteLastTT == 0) + DEST->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); + DEST++; @@ -2120,6 +2126,9 @@ VOID ReadNodes() memcpy(DEST->DEST_CALL, axcall, 7); memcpy(DEST->DEST_ALIAS, FULLALIAS, 6); + if (DEST->RouteLastTT == 0) + DEST->RouteLastTT = (uint16_t *)zalloc(MAXNEIGHBOURS * sizeof(uint16_t)); + NUMBEROFNODES++; RouteLoop: diff --git a/nodeapi.c b/nodeapi.c index ca0ad14..148728b 100644 --- a/nodeapi.c +++ b/nodeapi.c @@ -943,10 +943,14 @@ int sendPortQState(char * response, char * token, char * param, int Local) } else if (Sess1->L4CIRCUITTYPE & PACTOR) { - // PACTOR Type - Frames are queued on the Port Entry + // PACTOR Type struct PORTCONTROL * PORT = Sess1->L4TARGET.PORT; - strcpy(Type, "HFLINK"); + + if (PORT && PORT->Hardware == H_TELNET) + strcpy(Type, "TELNET"); + else + strcpy(Type, "HFLINK"); if (PORT) radioport = PORT->PORTNUMBER;