diff --git a/src/sbbs3/ctrl/MainFormUnit.cpp b/src/sbbs3/ctrl/MainFormUnit.cpp index 588f7cabce70eacacfbd992ac376ba0549f1b9e8..0d1b9c7a7c222248cdfd4a0e34a94411c4dc6c05 100644 --- a/src/sbbs3/ctrl/MainFormUnit.cpp +++ b/src/sbbs3/ctrl/MainFormUnit.cpp @@ -391,7 +391,35 @@ static void bbs_start(void) static void event_log_msg(log_msg_t* msg) { + static FILE* LogStream; + + if(msg==NULL) { + if(LogStream!=NULL) + fcloselog(LogStream); + LogStream=NULL; + return; + } + log_msg(EventsForm->Log, msg); + + if(MainForm->EventsLogFile) { + AnsiString LogFileName = AnsiString(MainForm->cfg.logs_dir) + "events"; + if(MainForm->bbs_startup.first_node > 1) + LogFileName += MainForm->bbs_startup.first_node; + LogFileName += ".log"; + + if(LogStream==NULL) + LogStream=fopenlog(&MainForm->cfg, LogFileName.c_str()); + + if(LogStream!=NULL) { + AnsiString Line=SystemTimeToDateTime(msg->time).FormatString("yyyy-mm-dd hh:mm:ss "); + Line+=AnsiString(msg->buf).Trim(); + if(msg->repeated) + Line += " [x" + AnsiString(msg->repeated + 1) + "]"; + Line+="\n"; + fwritelog(AnsiString(Line).c_str(),Line.Length(),LogStream); + } + } } static void services_log_msg(log_msg_t* msg) @@ -1901,14 +1929,19 @@ void __fastcall TMainForm::StartupTimerTick(TObject *Sender) ErrorSoundFile=Registry->ReadString("ErrorSoundFile"); if(Registry->ValueExists("MailLogFile")) - MailLogFile=Registry->ReadInteger("MailLogFile"); + MailLogFile=Registry->ReadBool("MailLogFile"); else - MailLogFile=true; + MailLogFile=true; if(Registry->ValueExists("FtpLogFile")) - FtpLogFile=Registry->ReadInteger("FtpLogFile"); + FtpLogFile=Registry->ReadBool("FtpLogFile"); else - FtpLogFile=true; + FtpLogFile=true; + + if(Registry->ValueExists("EventsLogFile")) + EventsLogFile=Registry->ReadBool("EventsLogFile"); + else + EventsLogFile=true; Registry->CloseKey(); delete Registry; @@ -2238,6 +2271,10 @@ void __fastcall TMainForm::SaveRegistrySettings(TObject* Sender) Registry->WriteBool("ToolBarVisible",Toolbar->Visible); Registry->WriteBool("StatusBarVisible",StatusBar->Visible); + Registry->WriteBool("FtpLogFile", FtpLogFile); + Registry->WriteBool("MailLogFile", MailLogFile); + Registry->WriteBool("EventsLogFile", EventsLogFile); + Registry->WriteInteger("MaxLogLen",MaxLogLen); Registry->WriteString("LoginCommand",LoginCommand); @@ -2375,6 +2412,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender) ImportFormSettings(IniFile,section="TelnetForm",TelnetForm); ImportFont(IniFile,section,"LogFont",TelnetForm->Log->Font); TelnetForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow)); + EventsLogFile=IniFile->ReadBool(section,"EventsFile",true); ImportFormSettings(IniFile,section="EventsForm",EventsForm); ImportFont(IniFile,section,"LogFont",EventsForm->Log->Font); @@ -2386,7 +2424,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender) ImportFormSettings(IniFile,section="FtpForm",FtpForm); ImportFont(IniFile,section,"LogFont",FtpForm->Log->Font); - FtpLogFile=IniFile->ReadInteger(section,"LogFile",true); + FtpLogFile=IniFile->ReadBool(section,"LogFile",true); FtpForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow)); ImportFormSettings(IniFile,section="WebForm",WebForm); @@ -2395,7 +2433,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender) ImportFormSettings(IniFile,section="MailForm",MailForm); ImportFont(IniFile,section,"LogFont",MailForm->Log->Font); - MailLogFile=IniFile->ReadInteger(section,"LogFile",true); + MailLogFile=IniFile->ReadBool(section,"LogFile",true); MailForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow)); ImportFormSettings(IniFile,section="NodeForm",NodeForm); diff --git a/src/sbbs3/ctrl/MainFormUnit.dfm b/src/sbbs3/ctrl/MainFormUnit.dfm index 1cf1cf9fb62c02e0e88136165c10747ce1dced7a..bd96eb321fd7cab1316ca44aa78a4457da7a7b00 100644 --- a/src/sbbs3/ctrl/MainFormUnit.dfm +++ b/src/sbbs3/ctrl/MainFormUnit.dfm @@ -1,6 +1,6 @@ object MainForm: TMainForm - Left = 733 - Top = 639 + Left = 420 + Top = 574 Width = 793 Height = 398 Caption = 'Synchronet Control Panel' diff --git a/src/sbbs3/ctrl/MainFormUnit.h b/src/sbbs3/ctrl/MainFormUnit.h index e8ec13c10ea8d67224cb856bf67b71c2279994f1..c91941df362f9dbc46e731375a67ad6a4bae53be 100644 --- a/src/sbbs3/ctrl/MainFormUnit.h +++ b/src/sbbs3/ctrl/MainFormUnit.h @@ -463,6 +463,7 @@ public: // User declarations BOOL ServicesAutoStart; bool MailLogFile; bool FtpLogFile; + bool EventsLogFile; AnsiString LoginCommand; AnsiString ConfigCommand; AnsiString Password; diff --git a/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp b/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp index 04bff4de6e5d3fcbbb84fb32b41400d0502ba150..3b0f9ae2b0a436df0726804d4c0ea35353353072 100644 --- a/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp +++ b/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp @@ -109,6 +109,8 @@ void __fastcall TTelnetCfgDlg::FormShow(TObject *Sender) EventsCheckBox->Checked =!(MainForm->bbs_startup.options&BBS_OPT_NO_EVENTS); + EventsLogFileCheckBox->Checked = MainForm->EventsLogFile; + RLoginEnabledCheckBoxClick(Sender); SshEnabledCheckBoxClick(Sender); PageControl->ActivePage=GeneralTabSheet; @@ -180,6 +182,7 @@ void __fastcall TTelnetCfgDlg::OKBtnClick(TObject *Sender) else MainForm->bbs_startup.options&=~BBS_OPT_ALLOW_SSH; + MainForm->EventsLogFile = EventsLogFileCheckBox->Checked; MainForm->SaveIniSettings(Sender); } //--------------------------------------------------------------------------- diff --git a/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm b/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm index b1b7d94b5ae62c4da1641bb913fc11004914d01b..5ce1c7b63385ef224183fcafbf92ea86deaba4f3 100644 --- a/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm +++ b/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm @@ -17,8 +17,8 @@ object TelnetCfgDlg: TTelnetCfgDlg Top = 3 Width = 278 Height = 186 - ActivePage = SoundTabSheet - TabIndex = 4 + ActivePage = GeneralTabSheet + TabIndex = 0 TabOrder = 0 object GeneralTabSheet: TTabSheet Caption = 'General' @@ -101,7 +101,7 @@ object TelnetCfgDlg: TTelnetCfgDlg end object QWKEventsCheckBox: TCheckBox Left = 148 - Top = 88 + Top = 114 Width = 117 Height = 20 Hint = 'Handle QWK Message Packet Events in This Instance' @@ -144,6 +144,17 @@ object TelnetCfgDlg: TTelnetCfgDlg ShowHint = True TabOrder = 2 end + object EventsLogFileCheckBox: TCheckBox + Left = 148 + Top = 88 + Width = 117 + Height = 20 + Hint = 'Save event log messages to disk file in your DATA directory' + Caption = 'Log Events to Disk' + ParentShowHint = False + ShowHint = True + TabOrder = 9 + end end object TelnetTabSheet: TTabSheet Caption = 'Telnet' diff --git a/src/sbbs3/ctrl/TelnetCfgDlgUnit.h b/src/sbbs3/ctrl/TelnetCfgDlgUnit.h index b10705a237ea41d0adb29d455b67f2056a728b1f..1d5ea91bc9bc8da47609097d85262d8e1bcd4341 100644 --- a/src/sbbs3/ctrl/TelnetCfgDlgUnit.h +++ b/src/sbbs3/ctrl/TelnetCfgDlgUnit.h @@ -96,6 +96,7 @@ __published: TLabel *SshConnectTimeoutLabel; TEdit *SshConnTimeoutEdit; TButton *ConfigureSoundButton; + TCheckBox *EventsLogFileCheckBox; void __fastcall FormShow(TObject *Sender); void __fastcall OKBtnClick(TObject *Sender); void __fastcall RLoginEnabledCheckBoxClick(TObject *Sender); diff --git a/src/sbbs3/ctrl/sbbsctrl.bpr b/src/sbbs3/ctrl/sbbsctrl.bpr index 716f357da73987452fad8fc97382750587bad2d9..8814ab748fee723acc2e711a0e421019b5e91fa6 100644 --- a/src/sbbs3/ctrl/sbbsctrl.bpr +++ b/src/sbbs3/ctrl/sbbsctrl.bpr @@ -5,7 +5,7 @@ <VERSION value="BCB.06.00"/> <PROJECT value="sbbsctrl.exe"/> <OBJFILES value="sbbsctrl.obj MainFormUnit.obj CtrlPathDialogUnit.obj TextFileEditUnit.obj - TelnetFormUnit.obj FtpFormUnit.obj MailFormUnit.obj NodeFormUnit.obj + TelnetFormUnit.obj FtpFormUnit.obj MailFormUnit.obj NodeFormUnit.obj ..\nopen.obj StatsFormUnit.obj AboutBoxFormUnit.obj StatsLogFormUnit.obj CodeInputFormUnit.obj ClientFormUnit.obj SpyFormUnit.obj ..\ringbuf.obj emulvt.obj UserListFormUnit.obj UserMsgFormUnit.obj PropertiesDlgUnit.obj