This commit is contained in:
mysticbbs 2013-08-05 12:56:31 -04:00
parent 41316ef5a6
commit 791d404b38
12 changed files with 101 additions and 20 deletions

View File

@ -513,7 +513,7 @@ Begin
Form.AddBol ('A', ' Allow New Users', 22, 7, 41, 7, 17, 3, @Config.AllowNewUsers, Topic);
Form.AddByte ('S', ' Security', 29, 8, 41, 8, 10, 3, 1, 255, @Config.NewUserSec, Topic);
Form.AddStr ('P', ' Password', 29, 9, 41, 9, 10, 15, 15, @Config.NewUserPW, Topic);
Form.AddPass ('P', ' Password', 29, 9, 41, 9, 10, 15, 15, @Config.NewUserPW, Topic);
Form.AddBol ('N', ' New User Feedback', 20, 10, 41, 10, 19, 3, @Config.NewUserEmail, Topic);
Form.AddBol ('U', ' Use USA Phone', 24, 11, 41, 11, 15, 3, @Config.UseUSAPhone, Topic);
Form.AddTog ('E', ' User Name Format', 21, 12, 41, 12, 18, 8, 0, 3, 'As_Typed Upper Lower Proper', @Config.UserNameFormat, Topic);

View File

@ -387,7 +387,7 @@ Begin
Session.io.AnsiColor (Session.io.ScreenInfo[3].A);
Session.io.AnsiGotoXY (Session.io.ScreenInfo[3].X, Session.io.ScreenInfo[3].Y);
If InsertMode Then Session.io.BufAddStr('INS') else Session.io.BufAddStr('OVR'); { ++lang }
If InsertMode Then Session.io.BufAddStr('INS') else Session.io.BufAddStr('OVR'); { ++lang++ }
End;
Procedure TEditorANSI.ReDrawTemplate (Reset: Boolean);

View File

@ -1395,9 +1395,11 @@ Begin
SavedP2 := Session.io.PromptInfo[2];
Result := Session.User.ThisUser.Protocol;
If Result = 'Q' Then Result := #0;
//Session.SystemLog('DEBUG: In SelectProtocol');
If Not LoadByKey(Result) Then Begin
If Not LoadByKey(Result) Or Not UseDefault Then Begin
Keys := 'Q';
Session.io.OutFullLn(Session.GetPrompt(359));

View File

@ -1800,6 +1800,7 @@ Var
Res := True;
1 : Res := Session.User.IsThisUser(MsgBase^.GetTo);
2 : Res := Session.User.IsThisUser(MsgBase^.GetTo) or Session.User.IsThisUser(MsgBase^.GetFrom);
(*
3 : Begin
Res := (Pos(SearchStr, strUpper(MsgBase^.GetTo)) > 0) or (Pos(SearchStr, strUpper(MsgBase^.GetFrom)) > 0) or
(Pos(SearchStr, strUpper(MsgBase^.GetSubj)) > 0);
@ -1813,9 +1814,24 @@ Var
End;
End;
End;
*)
4 : Res := Session.User.IsThisUser(MsgBase^.GetFrom);
End;
If (SearchStr <> '') And (((ScanMode = 2) And Res) Or (ScanMode = 3)) Then Begin
Res := (Pos(SearchStr, strUpper(MsgBase^.GetTo)) > 0) or (Pos(SearchStr, strUpper(MsgBase^.GetFrom)) > 0) or
(Pos(SearchStr, strUpper(MsgBase^.GetSubj)) > 0);
If Not Res Then Begin
MsgBase^.MsgTxtStartUp;
While Not Res And Not MsgBase^.EOM Do Begin
Str := strUpper(MsgBase^.GetString(79));
Res := Pos(SearchStr, Str) > 0;
End;
End;
End;
If NoFrom And Session.User.IsThisUser(MsgBase^.GetFrom) Then
Res := False;
@ -2869,7 +2885,7 @@ Begin
Case MBase.BaseType of
0 : MsgBase := New(PMsgBaseJAM, Init);
1 : MsgBase := New(PMsgbaseSquish, Init);
1 : MsgBase := New(PMsgBaseSquish, Init);
End;
MsgBase^.SetMsgPath (MBase.Path + MBase.FileName);
@ -2902,6 +2918,9 @@ Begin
Else
ScanMode := 0;
// session.io.outfull('read ' + mbase.filename + ' ' + mode + ' ' + searchstr + ' ' + stri2s(scanmode) + '|PN');
// session.io.bufflush;
LastRead := MsgBase^.GetLastRead(Session.User.UserNum);
MsgNum := 1;
@ -2937,9 +2956,11 @@ Begin
If (Session.User.ThisUser.MReadType = 1) and (Session.io.Graphics > 0) Then Begin
ListMode := 1;
Ansi_Read_Messages;
End Else Begin
ListMode := 0;
Ascii_Read_Messages;
End;
@ -3403,8 +3424,9 @@ Procedure TMsgBase.GlobalMessageSearch (Mode : Char);
{ G = all areas in group }
{ A = all areas in all groups }
Var
SearchStr : String;
Old : RecMessageBase;
SearchStr : String;
SavedIgnore : Boolean;
Old : RecMessageBase;
Begin
If Not (Mode in ['A', 'C', 'G']) Then Mode := 'G';
@ -3416,6 +3438,8 @@ Begin
OLD := MBase;
WereMsgs := False;
SavedIgnore := Session.User.IgnoreGroup;
Session.User.IgnoreGroup := Mode = 'A';
If Mode = 'C' Then
@ -3435,6 +3459,7 @@ Begin
If MScan.NewScan > 0 Then Begin
If Not ReadMessages('T', '', SearchStr) Then Begin
Session.io.OutRawLn('');
Break;
End;
@ -3448,7 +3473,7 @@ Begin
Close (MBaseFile);
End;
Session.User.IgnoreGroup := False;
Session.User.IgnoreGroup := SavedIgnore;
MBase := OLD;
End;

View File

@ -107,7 +107,7 @@ Begin
ThisUser.LastFGroup := Config.StartFGroup;
ThisUser.LastMGroup := Config.StartMGroup;
ThisUser.UseLBQuote := True;
ThisUser.UseFulLChat := True;
ThisUser.UseFullChat := True;
ThisUser.CodePage := Config.StartCodePage;
IgnoreGroup := False;
@ -946,9 +946,9 @@ Begin
If AskBirthdate Then GetBirthdate(False);
If AskEmail Then GetEmail(False);
If AskUserNote Then GetUserNote(False);
If OptionalField[1].Ask Then GetOption1(False);
If OptionalField[2].Ask Then GetOption2(False);
If OptionalField[3].Ask Then GetOption3(False);
If OptionalField[1].Ask Then GetOption1(False);
If OptionalField[2].Ask Then GetOption2(False);
If OptionalField[3].Ask Then GetOption3(False);
If UserEditorType = 2 Then GetEditor(False) Else ThisUser.EditType := UserEditorType;
If UserQuoteWin = 2 Then

View File

@ -49,7 +49,7 @@ Type
Destructor Destroy; Override;
Function OpenDataSession : Boolean;
Procedure CloseDataSession;
Procedure CloseDataSession;
Procedure ResetSession;
Procedure UpdateUserStats (TFBase: RecFileBase; FDir: RecFileList; DirPos: LongInt);
Function CheckFileLimits (TempFBase: RecFileBase; FDir: RecFileList) : Byte;
@ -411,7 +411,9 @@ End;
Procedure TFTPServer.cmdREIN;
Begin
ResetSession;
Client.WriteLine(re_Greeting);
If Not Client.WriteFile('220', bbsConfig.DataPath + 'ftpbanner.txt') Then
Client.WriteLine (re_Greeting);
End;
Procedure TFTPServer.cmdPORT;
@ -866,9 +868,11 @@ Begin
If Cmd = 'CDUP' Then cmdCDUP Else
If Cmd = 'CWD' Then cmdCWD Else
// If Cmd = 'DELE' Then Client.WriteLine(re_NoAccess) Else
If Cmd = 'EPRT' Then cmdEPRT Else
If Cmd = 'EPSV' Then cmdEPSV Else
If Cmd = 'LIST' Then cmdLIST Else
// If Cmd = 'MKD' Then Client.WriteLine(re_NoAccess) Else
If Cmd = 'MODE' Then cmdMODE Else
If Cmd = 'NLST' Then cmdNLST Else
If Cmd = 'NOOP' Then Client.WriteLine(re_CommandOK) Else
@ -878,6 +882,7 @@ Begin
If Cmd = 'PWD' Then cmdPWD Else
If Cmd = 'REIN' Then cmdREIN Else
If Cmd = 'RETR' Then cmdRETR Else
// If Cmd = 'RMD' Then Client.WriteLine(re_NoAccess) Else
If Cmd = 'SIZE' Then cmdSIZE Else
If Cmd = 'STOR' Then cmdSTOR Else
If Cmd = 'STRU' Then cmdSTRU Else

View File

@ -220,7 +220,7 @@ Begin
Status ('BUSY: ' + NewClient.PeerIP + ' (' + NewClient.PeerName + ')');
If Not NewClient.WriteFile(TextPath + 'busy.txt') Then
If Not NewClient.WriteFile('', TextPath + 'busy.txt') Then
NewClient.WriteLine('BUSY');
WaitMS(3000);
@ -232,7 +232,7 @@ Begin
Status('BLOCK: ' + NewClient.PeerIP + ' (' + NewClient.PeerName + ')');
If Not NewClient.WriteFile(TextPath + 'blocked.txt') Then
If Not NewClient.WriteFile('', TextPath + 'blocked.txt') Then
NewClient.WriteLine('BLOCKED');
WaitMS(3000);
@ -244,7 +244,7 @@ Begin
Status('MULTI: ' + NewClient.PeerIP + ' (' + NewClient.PeerName + ')');
If Not NewClient.WriteFile(TextPath + 'dupeip.txt') Then
If Not NewClient.WriteFile('', TextPath + 'dupeip.txt') Then
NewClient.WriteLine('Only ' + strI2S(ClientMaxIPs) + ' connection(s) per user');
WaitMS(3000);

View File

@ -322,7 +322,9 @@ Begin
AddProc ({$IFDEF MPLPARSER} 'inputoptions', {$ENDIF} 'lbbcss', iNone); // 555
AddProc ({$IFDEF MPLPARSER} 'inputexit', {$ENDIF} 'l', iChar); // 556
AddProc ({$IFDEF MPLPARSER} 'inputnumber', {$ENDIF} 'lbbbblll', iLongInt); // 557
AddProc ({$IFDEF MPLPARSER} 'inputenter', {$ENDIF} 'lbbbs', iBool);
AddProc ({$IFDEF MPLPARSER} 'inputenter', {$ENDIF} 'lbbbs', iBool); // 558
AddProc ({$IFDEF MPLPARSER} 'imageget', {$ENDIF} 'lbbbb', iNone); // 559
AddProc ({$IFDEF MPLPARSER} 'imageput', {$ENDIF} 'l', iNone); // 560
{ END OF PROCEDURE DEFINITIONS }
@ -370,6 +372,18 @@ Begin
AddVar ({$IFDEF MPLPARSER} 'usermbase', {$ENDIF} iLongInt);
AddVar ({$IFDEF MPLPARSER} 'usermgroup', {$ENDIF} iLongInt);
AddVar ({$IFDEF MPLPARSER} 'userbirthday', {$ENDIF} iLongInt);
AddStr ({$IFDEF MPLPARSER} 'usercity', {$ENDIF} iString, 25);
AddStr ({$IFDEF MPLPARSER} 'useremail', {$ENDIF} iString, 60);
AddStr ({$IFDEF MPLPARSER} 'userinfo', {$ENDIF} iString, 30);
AddStr ({$IFDEF MPLPARSER} 'useropts', {$ENDIF} iString, 10 * 60 - 1);
CV[X]^.ArrPos := 1;
{$IFNDEF MPLPARSER}
CV[X]^.VarSize := 61;
CV[X]^.ArrDim[1] := 10;
{$ENDIF}
AddVar ({$IFDEF MPLPARSER} 'userfsreader', {$ENDIF} iBool);
End;
2 : Begin
AddPointer ({$IFDEF MPLPARSER} 'cfgsyspath', {$ENDIF} iString, mysMaxPathSize, {$IFNDEF MPLPARSER} @Config.SystemPath {$ELSE} NIL {$ENDIF});

View File

@ -1,3 +1,6 @@
// remove token label
// remove extra parse block?
Unit MPL_Compile;
{$I M_OPS.PAS}

View File

@ -18,6 +18,7 @@ Const
Const
mplClass_Box = 1;
mplClass_Input = 2;
mplClass_Image = 3;
Type
TClassStack = Record
@ -190,6 +191,11 @@ Begin
Move (U.LastMBase, VarData[IdxVarUser + 14]^.Data^, SizeOf(U.LastMBase));
Move (U.LastMGroup, VarData[IdxVarUser + 15]^.Data^, SizeOf(U.LastMGroup));
Move (U.Birthday, VarData[IdxVarUser + 16]^.Data^, SizeOf(U.Birthday));
Move (U.City, VarData[IdxVarUser + 17]^.Data^, SizeOf(U.City));
Move (U.Email, VarData[IdxVarUser + 18]^.Data^, SizeOf(U.Email));
Move (U.UserInfo, VarData[IdxVarUser + 19]^.Data^, SizeOf(U.UserInfo));
Move (U.OptionData, VarData[IdxVarUser + 20]^.Data^, SizeOf(U.OptionData));
Move (U.MReadType, VarData[IdxVarUser + 21]^.Data^, SizeOf(U.MReadType));
End;
Procedure TInterpEngine.PutUserVars (Var U: RecUser);
@ -211,6 +217,11 @@ Begin
Move (VarData[IdxVarUser + 14]^.Data^, U.LastMBase, SizeOf(U.LastMBase));
Move (VarData[IdxVarUser + 15]^.Data^, U.LastMGroup, SizeOf(U.LastMGroup));
Move (VarData[IdxVarUser + 16]^.Data^, U.Birthday, SizeOf(U.Birthday));
Move (VarData[IdxVarUser + 17]^.Data^, U.City, SizeOf(U.City));
Move (VarData[IdxVarUser + 18]^.Data^, U.Email, SizeOf(U.Email));
Move (VarData[IdxVarUser + 19]^.Data^, U.UserInfo, SizeOf(U.UserInfo));
Move (VarData[IdxVarUser + 20]^.Data^, U.OptionData, SizeOf(U.OptionData));
Move (VarData[IdxVarUser + 21]^.Data^, U.MReadType, SizeOf(U.MReadType));
End;
Function TInterpEngine.GetUserRecord (Num: LongInt) : Boolean;
@ -393,9 +404,7 @@ Begin
For Count := 1 to mplMaxClassStack Do
If Assigned(ClassData[Count].ClassPtr) Then
Case ClassData[Count].ClassType of
mplClass_Box : TAnsiMenuBox(ClassData[Count].ClassPtr).Free;
End;
ClassFree(Count);
Inherited Destroy;
End;
@ -1266,6 +1275,11 @@ Begin
If Str = 'INPUT' Then Begin
ClassData[Num].ClassPtr := TAnsiMenuInput.Create;
ClassData[Num].ClassType := mplClass_Input;
End Else
If Str = 'IMAGE' Then Begin
GetMem (ClassData[Num].ClassPtr, SizeOf(TConsoleImageRec));
ClassData[Num].ClassType := mplClass_Image;
End Else
Error(mpxInvalidClass, Str);
End;
@ -1277,6 +1291,7 @@ Begin
Case ClassData[Num].ClassType of
mplClass_Box : TAnsiMenuBox(ClassData[Num].ClassPtr).Free;
mplClass_Input : TAnsiMenuInput(ClassData[Num].ClassPtr).Free;
mplClass_Image : FreeMem(ClassData[Num].ClassPtr);
End;
ClassData[Num].ClassPtr := NIL;
@ -2076,6 +2091,10 @@ Begin
TempBool := TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).GetEnter(Param[2].B, Param[3].B, Param[4].B, Param[5].S);
Store (TempBool, 1);
End;
559 : If ClassValid(Param[1].L, mplClass_Image) Then
Screen.GetScreenImage (Param[2].B, Param[3].B, Param[4].B, Param[5].B, TConsoleImageRec(ClassData[Param[1].L].ClassPtr^));
560 : If ClassValid(Param[1].L, mplClass_Image) Then
Session.io.RemoteRestore(TConsoleImageRec(ClassData[Param[1].L].ClassPtr^));
End;
End;

View File

@ -32,6 +32,9 @@ BUGS AND POSSIBLE ISSUES
FUTURE / IDEAS / WORK IN PROGRESS / NOTES
=========================================
- global user editor for user flags, def protocol, etc etc
- ability to configure auto signatures (2 of them) one for handle and one
for real names
- ability to download ANSIs while actually viewing them in the gallery
- optional Menu scroller during input?
- Menu type: Lightbar/Form OR just change standard lightbar to work that
@ -254,6 +257,8 @@ ReplaceLine
1.11
====
- MUTIL option to create bases to (msgbase path + domainname) directory.
- MUTIL option to scan recursively when creatign bases by data files
- Rewrite user login functions and MATRIX
- Change temp directories. Add MIS/MUTIL/FTN/NODE
- User directories (research disk performance with a zillion dirs)

View File

@ -3509,4 +3509,12 @@
See TESTINPUT.MPS for an example.
+ MIS FTP server now will display 'ftpbanner.txt' from the DATA directory
if it exists when a user connects via FTP.
! Once a default protocol was selected, the GE command (option 22) to change
the default was not working.
+ MPL now supports ANSI screen class. NEED TO DOCUMENT AND SHOW EXAMPLE
<ALPHA 36 RELEASED>