From bfe23363bc0566f03b8e647c742482762067224e Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 24 Jun 1998 13:48:00 +0000 Subject: [PATCH] Corretta gestione utenti e connesioni git-svn-id: svn://10.65.10.50/trunk@6776 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- servers/hardlock/connect.h | 2 +- servers/hardlock/connectu.cpp | 4 +-- servers/hardlock/frontend.aps | Bin 561 -> 10430 bytes servers/hardlock/frontend.clw | 16 ++++++--- servers/hardlock/frontend.cpp | 30 ++++++++++++---- servers/hardlock/frontend.rc | 63 ++++++++++++---------------------- servers/hardlock/mainfrm.cpp | 9 ++--- servers/hardlock/resource.h | 1 + servers/hardlock/server.cpp | 40 +++++++++++++++------ servers/hardlock/server.h | 12 ++++--- servers/hardlock/statdlg.cpp | 37 ++++---------------- servers/hardlock/statdlg.h | 4 --- servers/hardlock/tracing.cpp | 2 +- 13 files changed, 107 insertions(+), 113 deletions(-) diff --git a/servers/hardlock/connect.h b/servers/hardlock/connect.h index 7652f8cd1..784958b25 100755 --- a/servers/hardlock/connect.h +++ b/servers/hardlock/connect.h @@ -33,7 +33,7 @@ public: const CString& User() const { return m_strUser; } - TPrassiConnection(TLanManager* lm, DWORD id); + TPrassiConnection(TLanManager* lm, DWORD id); virtual ~TPrassiConnection(); }; diff --git a/servers/hardlock/connectu.cpp b/servers/hardlock/connectu.cpp index 9173d2eb3..d2eda66e1 100755 --- a/servers/hardlock/connectu.cpp +++ b/servers/hardlock/connectu.cpp @@ -34,7 +34,7 @@ BOOL TPrassiConnection::DoUserLogin(const CString& user, if (ok) { - m_strUser = user; + m_strUser = user; m_strUser.MakeUpper(); m_strApp = app; } } @@ -52,7 +52,7 @@ int f_UserLogin(TConnection& conn, void* pJolly) const int argc = argv.GetSize(); if (argc > 3) { - TPrassiConnection& c = (TPrassiConnection&)conn; + TPrassiConnection& c = (TPrassiConnection&)conn; return c.DoUserLogin(argv[1], argv[2], argv[3]); } return FALSE; diff --git a/servers/hardlock/frontend.aps b/servers/hardlock/frontend.aps index 59817b1913b4f358fa9d86f43bab26db5c8030a2..ea11d67799e2bb2815bbb15120f4cd27b1bbf34a 100755 GIT binary patch literal 10430 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 aA|yV@HP}Bi$k{bM%+V**mBG;1m;nF=8Y1Zc diff --git a/servers/hardlock/frontend.clw b/servers/hardlock/frontend.clw index f0e413db5..610ec17d7 100755 --- a/servers/hardlock/frontend.clw +++ b/servers/hardlock/frontend.clw @@ -15,11 +15,11 @@ Class3=CFrontEndView Class4=CMainFrame ResourceCount=3 -Resource1=IDD_STATUS +Resource1=IDR_MAINFRAME Class5=CAboutDlg Resource2=IDD_ABOUTBOX Class6=CStatusDlg -Resource3=IDR_MAINFRAME +Resource3=IDD_STATUS [CLS:CFrontEndApp] Type=0 @@ -68,13 +68,15 @@ LastObject=IDC_GRID1 [DLG:IDD_ABOUTBOX] Type=1 Class=CAboutDlg -ControlCount=6 +ControlCount=8 Control1=IDC_STATIC,static,1342177283 Control2=IDC_STATIC,static,1342312576 Control3=IDC_DISK_SPACE,static,1342312448 Control4=IDOK,button,1342373889 Control5=IDC_STATIC,static,1342312448 Control6=IDC_PHYSICAL_MEM,static,1342312448 +Control7=IDC_STATIC,static,1342308352 +Control8=IDC_STATIC,static,1342308352 [MNU:IDR_MAINFRAME] Type=1 @@ -110,6 +112,7 @@ CommandCount=13 [TB:IDR_MAINFRAME] Type=1 +Class=? Command1=ID_FILE_SAVE_AS Command2=ID_VIEW_TRACE Command3=ID_EDIT_CLEAR_ALL @@ -121,9 +124,12 @@ CommandCount=6 [DLG:IDD_STATUS] Type=1 Class=CStatusDlg -ControlCount=2 +ControlCount=5 Control1=IDOK,button,1342242817 -Control2=IDC_GRID,{A8C3B720-0B5A-101B-B22E-00AA0037B2FC},1342242816 +Control2=IDC_STATIC,static,1342308352 +Control3=IDC_USERS,static,1342308352 +Control4=IDC_STATIC,static,1342308352 +Control5=IDC_CONNECTIONS,static,1342308352 [CLS:CStatusDlg] Type=0 diff --git a/servers/hardlock/frontend.cpp b/servers/hardlock/frontend.cpp index 02425101d..d46d2892c 100755 --- a/servers/hardlock/frontend.cpp +++ b/servers/hardlock/frontend.cpp @@ -18,6 +18,8 @@ static char THIS_FILE[] = __FILE__; #endif +#define DONGLE_SERVER_ATOM "DONGLE_SERVER_ATOM" + ///////////////////////////////////////////////////////////////////////////// // CFrontEndApp @@ -83,9 +85,20 @@ BOOL CFrontEndApp::InitInstance() if (!ProcessShellCommand(cmdInfo)) return FALSE; - StartServer(); - - return TRUE; + BOOL ok = ::GlobalFindAtom(DONGLE_SERVER_ATOM) == 0; + if (ok) + { + ok = StartServer(); + if (ok) + ::GlobalAddAtom(DONGLE_SERVER_ATOM); + } + else + { + AfxMessageBox("Non e' possibile attivare due server contemporaneamente!", + MB_ICONEXCLAMATION); + } + + return ok; } ///////////////////////////////////////////////////////////////////////////// @@ -147,7 +160,12 @@ void CFrontEndApp::OnAppAbout() int CFrontEndApp::ExitInstance() { - StopServer(); + if (StopServer()) + { + ATOM atom = ::GlobalFindAtom(DONGLE_SERVER_ATOM); + if (atom) + ::GlobalDeleteAtom(atom); + } return CWinApp::ExitInstance(); } @@ -156,8 +174,8 @@ void CFrontEndApp::OnAppExit() BOOL bCanExit = !GetServer().HasConnections(); if (!bCanExit) { - int nCode = AfxMessageBox("There are still active connections:\n" - "Do you really want to exit anyway?", + int nCode = AfxMessageBox("Ci sono ancora degli utenti collegati:\n" + "Si desidera uscire ugualmete?", MB_YESNO | MB_ICONQUESTION); if (nCode == IDYES) bCanExit = TRUE; diff --git a/servers/hardlock/frontend.rc b/servers/hardlock/frontend.rc index 578b1f8c2..b6beb65c9 100755 --- a/servers/hardlock/frontend.rc +++ b/servers/hardlock/frontend.rc @@ -159,23 +159,27 @@ STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Server PRASSI" FONT 8, "MS Sans Serif" BEGIN - ICON IDR_MAINFRAME,IDC_STATIC,7,7,21,20 + ICON IDR_MAINFRAME,IDC_STATIC,7,7,20,20 LTEXT "Server Versione 1.0",IDC_STATIC,49,7,119,10,SS_NOPREFIX | SS_SUNKEN - LTEXT "Disk space",IDC_DISK_SPACE,49,54,119,9,SS_SUNKEN + LTEXT "Disk space",IDC_DISK_SPACE,84,54,84,9,SS_SUNKEN DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP - LTEXT "Copyright © 1997",IDC_STATIC,49,23,119,9,SS_SUNKEN - LTEXT "Physical memory",IDC_PHYSICAL_MEM,49,38,119,9,SS_SUNKEN + LTEXT "Copyright © 1998",IDC_STATIC,49,23,119,9,SS_SUNKEN + LTEXT "Physical memory",IDC_PHYSICAL_MEM,84,38,84,9,SS_SUNKEN + LTEXT "Memoria",IDC_STATIC,50,41,28,8 + LTEXT "Disco",IDC_STATIC,50,55,19,8 END -IDD_STATUS DIALOG DISCARDABLE 0, 0, 186, 122 +IDD_STATUS DIALOGEX 0, 0, 152, 71 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Utenti del sistema" FONT 8, "MS Sans Serif" BEGIN - DEFPUSHBUTTON "OK",IDOK,68,101,50,14 - CONTROL "",IDC_GRID,"{A8C3B720-0B5A-101B-B22E-00AA0037B2FC}", - WS_TABSTOP,7,7,172,84 + DEFPUSHBUTTON "OK",IDOK,50,45,50,14 + LTEXT "Numero connessioni",IDC_STATIC,7,23,84,8 + LTEXT "0",IDC_USERS,111,7,34,10,0,WS_EX_RIGHT + LTEXT "Numero utenti",IDC_STATIC,7,7,84,8 + LTEXT "0",IDC_CONNECTIONS,111,20,34,10,0,WS_EX_RIGHT END @@ -186,8 +190,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 + FILEVERSION 1998,1,3,75 + PRODUCTVERSION 1998,1,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -200,17 +204,16 @@ VS_VERSION_INFO VERSIONINFO BEGIN BLOCK "StringFileInfo" BEGIN - BLOCK "040904B0" + BLOCK "040904b0" BEGIN - VALUE "CompanyName", "\0" - VALUE "FileDescription", "FRONTEND Applicazione MFC\0" - VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "CompanyName", "AGA\0" + VALUE "FileDescription", "Network Dongle Server \0" + VALUE "FileVersion", "1998, 1, 3, 75\0" VALUE "InternalName", "FRONTEND\0" - VALUE "LegalCopyright", "Copyright © 1997\0" - VALUE "LegalTrademarks", "\0" + VALUE "LegalCopyright", "Copyright © 1998\0" VALUE "OriginalFilename", "FRONTEND.EXE\0" VALUE "ProductName", "FRONTEND Applicazione\0" - VALUE "ProductVersion", "1, 0, 0, 1\0" + VALUE "ProductVersion", "1998, 1, 3, 0\0" END END BLOCK "VarFileInfo" @@ -241,36 +244,14 @@ BEGIN IDD_STATUS, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 179 + RIGHTMARGIN, 145 TOPMARGIN, 7 - BOTTOMMARGIN, 115 + BOTTOMMARGIN, 59 END END #endif // APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Dialog Info -// - -IDD_STATUS DLGINIT -BEGIN - IDC_GRID, 0x376, 164, 0 -0x0024, 0x0000, 0x0041, 0x0036, 0x0044, 0x0041, 0x0038, 0x0035, 0x0038, -0x0030, 0x002d, 0x0035, 0x0039, 0x0044, 0x0036, 0x002d, 0x0031, 0x0030, -0x0031, 0x0042, 0x002d, 0x0041, 0x0033, 0x0043, 0x0039, 0x002d, 0x0030, -0x0038, 0x0030, 0x0030, 0x0032, 0x0042, 0x0032, 0x0046, 0x0034, 0x0039, -0x0046, 0x0042, 0x0000, 0x0001, 0x1aaa, 0x0000, 0x0e29, 0x0000, 0x004d, -0x0000, 0x0000, 0x0080, 0xffff, 0x00ff, 0x0300, 0xe352, 0x910b, 0xce8f, -0x9d11, 0x00e3, 0x00aa, 0xb84b, 0x0151, 0x0000, 0x9000, 0x4401, 0x0142, -0x0d00, 0x534d, 0x5320, 0x6e61, 0x2073, 0x6553, 0x6972, 0x0166, 0x0001, -0x0002, 0x0002, 0x0001, 0x0001, 0x0002, 0x0101, 0x0000, 0x0100, 0x0000, -0x00ff, - 0 -END - - ///////////////////////////////////////////////////////////////////////////// // // String Table diff --git a/servers/hardlock/mainfrm.cpp b/servers/hardlock/mainfrm.cpp index 73229d2cc..a2c94ac04 100755 --- a/servers/hardlock/mainfrm.cpp +++ b/servers/hardlock/mainfrm.cpp @@ -112,13 +112,8 @@ void CMainFrame::OnUpdateNotepad(CCmdUI* pCmdUI) pCmdUI->Enable(TRUE); } - -extern "C" -{ -_declspec(dllimport) int Aga_exec(const char* p); -} - void CMainFrame::OnNotepad() { - Aga_exec("notepad"); + CString cmd = "notepad"; + WinExec(cmd, SW_SHOWNORMAL); } diff --git a/servers/hardlock/resource.h b/servers/hardlock/resource.h index 1ce21bf3c..b18da22f8 100755 --- a/servers/hardlock/resource.h +++ b/servers/hardlock/resource.h @@ -14,6 +14,7 @@ #define IDC_DISK_SPACE 1006 #define IDC_USERS 1008 #define IDC_GRID 1009 +#define IDC_CONNECTIONS 1009 #define stc32 0x045f #define ID_BUTTON32772 32772 #define ID_VIEW_TRACE 32773 diff --git a/servers/hardlock/server.cpp b/servers/hardlock/server.cpp index 49f2f2441..f69103d3d 100755 --- a/servers/hardlock/server.cpp +++ b/servers/hardlock/server.cpp @@ -145,7 +145,7 @@ BOOL TDongleServer::HardlockLogin() ReadHardlockWords(60, 4, Val); HL_CODE(EYECAST Val, 1); _AssistanceYear = Val[0]; - _Users = Val[1]; + _MaxUsers = Val[1]; int index = 0; for (unsigned short reg = 48; reg < 60; reg += 4) @@ -202,7 +202,7 @@ BOOL TDongleServer::EutronLogin() _SerNo = (unsigned long)atol(serno); if (eh._max_users > 0) { - _Users = eh._max_users; + _MaxUsers = eh._max_users; _AssistanceYear = eh._year_assist; ReadEutronWords(16, 16, _int_tab); } @@ -218,25 +218,25 @@ BOOL TDongleServer::Login() BOOL ok = HardlockLogin() || EutronLogin(); if (ok) { - if (_SerNo == 0 || _Users == 0) + if (_SerNo == 0 || _MaxUsers == 0) { const CTime tNow = CTime::GetCurrentTime(); _AssistanceYear = tNow.GetYear(); if (_SerNo == 0) { - _Users = 4; + _MaxUsers = 4; memset(_int_tab, 0xFF, sizeof(_int_tab)); } else { - _Users = 1; + _MaxUsers = 1; memset(_int_tab, 0x00, sizeof(_int_tab)); } } Trace(-1, "Numero di serie %u", _SerNo); Trace(-1, "Anno assistenza %u", _AssistanceYear); - Trace(-1, "Numero utenti %u", _Users); + Trace(-1, "Numero utenti %u", _MaxUsers); } return ok; } @@ -253,14 +253,14 @@ void TDongleServer::Logout() HL_LOGOUT(); } _SerNo = 0xFFFF; - _Users = 0; + _MaxUsers = 0; _AssistanceYear = 0; memset(_int_tab, 0, sizeof(_int_tab)); } BOOL TDongleServer::OnConnect(const CString& topic) { - BOOL ok = Connections() <= MaxUsers(); + BOOL ok = Users() < MaxUsers(); if (!ok) Trace(0, "Refusing Topic %s", (const char*)topic); return ok; @@ -270,7 +270,7 @@ BOOL TDongleServer::OnConnect(const CString& topic) TConnection* TDongleServer::OnCreateConnection(DWORD id) { TConnection* c = NULL; - if (Connections() <= MaxUsers()) + if (Users() < MaxUsers()) { Trace(0, "Connecting %lu", id); c = new TPrassiConnection(this, id); @@ -286,11 +286,31 @@ BOOL TDongleServer::OnRemoveConnection(DWORD id) return BASE_SERVER::OnRemoveConnection(id); } +int CountUsers(TConnection& conn, void* pJolly) +{ + CMapStringToOb& users = *(CMapStringToOb*)pJolly; + const TPrassiConnection& c = (TPrassiConnection&)conn; + const CString& name = c.User(); + BOOL ok = name != "******"; + if (ok) + users.SetAt(name, NULL); + return ok; +} + + +unsigned short TDongleServer::Users() const +{ + CMapStringToOb u; + ((TDongleServer*)this)->ForEachConnection(CountUsers, &u); + unsigned short nTotal = (unsigned short)u.GetCount(); + return nTotal; +} + TDongleServer::TDongleServer() : BASE_SERVER("DONGLE") { _SerNo = 0xFFFF; - _Users = 0; + _MaxUsers = 0; _AssistanceYear = 0; memset(_int_tab, 0, sizeof(_int_tab)); Login(); diff --git a/servers/hardlock/server.h b/servers/hardlock/server.h index 79d702812..11c8655b8 100755 --- a/servers/hardlock/server.h +++ b/servers/hardlock/server.h @@ -18,15 +18,15 @@ class TDongleServer : public BASE_SERVER { - enum { MAX_MODULES = 256 }; + enum { MAX_MODULES = 256 }; - unsigned int _SerNo, _Users, _AssistanceYear; + unsigned int _SerNo, _MaxUsers, _AssistanceYear; unsigned short _int_tab[MAX_MODULES/16]; protected: virtual BOOL OnConnect(const CString& topic); virtual TConnection* OnCreateConnection(DWORD id); - virtual BOOL OnRemoveConnection(DWORD id); + virtual BOOL OnRemoveConnection(DWORD id); BOOL HardlockLogin(); BOOL EutronLogin(); @@ -47,9 +47,11 @@ public: { nSize = sizeof(_int_tab); return _int_tab; } unsigned short MaxUsers() const - { return _Users; } + { return _MaxUsers; } - TDongleServer(); + unsigned short Users() const; + + TDongleServer(); virtual ~TDongleServer(); }; diff --git a/servers/hardlock/statdlg.cpp b/servers/hardlock/statdlg.cpp index 02d926f57..a71bfafa5 100755 --- a/servers/hardlock/statdlg.cpp +++ b/servers/hardlock/statdlg.cpp @@ -29,7 +29,6 @@ void CStatusDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CStatusDlg) - DDX_Control(pDX, IDC_GRID, m_grid); //}}AFX_DATA_MAP } @@ -42,41 +41,17 @@ END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CStatusDlg message handlers -static int AddConnectionToGrid(TConnection& conn, void* pJolly) -{ - const TPrassiConnection& user = (const TPrassiConnection&)conn; - CGridCtrl* pGrid = (CGridCtrl*)pJolly; - - int nPos = pGrid->GetRow()+1; - pGrid->SetRow(nPos); - - pGrid->SetCol(0); - CString str; str.Format("%d", nPos); - pGrid->SetText(str); - - pGrid->SetCol(1); - pGrid->SetText(user.User()); - return 1; -} BOOL CStatusDlg::OnInitDialog() { CDialog::OnInitDialog(); - m_grid.SetColWidth(1, 4100); - m_grid.SetRow(0); - m_grid.SetCol(0); - m_grid.SetText("N."); - m_grid.SetCol(1); - m_grid.SetText("Name"); - TDongleServer& srv = GetServer(); - const int nUsers = srv.Connections(); - if (nUsers > 0) - { - m_grid.SetRows(nUsers+1); - srv.ForEachConnection(AddConnectionToGrid, &m_grid); - } - return TRUE; // return TRUE unless you set the focus to a control + const int nUsers = srv.Users(); + const int nConns = srv.Connections(); + SetDlgItemInt(IDC_USERS, nUsers); + SetDlgItemInt(IDC_CONNECTIONS, nConns); + + return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } diff --git a/servers/hardlock/statdlg.h b/servers/hardlock/statdlg.h index 5925705d4..ea035f54c 100755 --- a/servers/hardlock/statdlg.h +++ b/servers/hardlock/statdlg.h @@ -3,9 +3,6 @@ ///////////////////////////////////////////////////////////////////////////// // CStatusDlg dialog -//{{AFX_INCLUDES() -#include "gridctrl.h" -//}}AFX_INCLUDES class CStatusDlg : public CDialog { @@ -16,7 +13,6 @@ public: // Dialog Data //{{AFX_DATA(CStatusDlg) enum { IDD = IDD_STATUS }; - CGridCtrl m_grid; //}}AFX_DATA diff --git a/servers/hardlock/tracing.cpp b/servers/hardlock/tracing.cpp index 87074d130..b2086c746 100755 --- a/servers/hardlock/tracing.cpp +++ b/servers/hardlock/tracing.cpp @@ -28,7 +28,7 @@ BOOL Trace(int level, const char* fmt, ...) ASSERT(pFrame); CTreeView* pTreeView = (CTreeView*)pFrame->GetActiveView(); ASSERT(pTreeView); - CTreeCtrl& pTreeCtrl = pTreeView->GetTreeCtrl(); + CTreeCtrl& pTreeCtrl = pTreeView->GetTreeCtrl(); char msg[256]; va_list argptr;