Patch level : 10.0

Files correlati     : lurch.exe authoriz.exe
Ricompilazione Demo : [ ]
Commento            :
Aggiunto comando DongleInfo che riassume in se DongleNumber+DongleYear+DongleModules in modo da ridurre il traffico di rete col server


git-svn-id: svn://10.65.10.50/trunk@20132 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-02-16 16:33:08 +00:00
parent a7c4e187c1
commit 6a0d7b3256
5 changed files with 78 additions and 50 deletions

View File

@ -161,7 +161,7 @@ private:
protected:
virtual const wxChar* GetAppName() const;
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs);
virtual bool ProcessCommand(wxString cmd, wxSocketBase& outs);
void AddNumber(TXmlItem& tr, int n) const;
wxString DescribeModule(int m) const;
@ -182,8 +182,8 @@ public:
void ProcessFormCommand(wxString cmd, wxSocketBase& outs);
void ProcessActivation(int nModuble, bool act, wxSocketBase& outs);
void ReturnInt(wxSocketBase& outs, unsigned int i);
void ReturnBool(wxSocketBase&, bool b);
bool ReturnInt(wxSocketBase& outs, unsigned int i);
bool ReturnBool(wxSocketBase&, bool b);
unsigned int DecodePassword(const wxChar* strPassword, const wxChar* strApp);
void ProcessUserLogin(wxString cmd, wxSocketBase& sock);
@ -851,35 +851,37 @@ void TAuthorizationServer::ProcessUserLogin(wxString cmd, wxSocketBase& sock)
bool TAuthorizationServer::ProcessUserLogout(wxString cmd, wxSocketBase& sock)
{
wxChar strUser[32];
wxChar strProgram[32];
int session;
wxChar strUser[32] = "";
wxChar strProgram[32] = "";
int session = -1;
cmd.Replace(",", " "); cmd.Replace(")", " ");
const int nStr = sscanf(cmd, "UserLogout(%s %d %s)", strUser, &session, strProgram);
const int nStr = wxSscanf(cmd, "UserLogout(%s %d %s)", strUser, &session, strProgram);
if (nStr < 2)
session = 0;
m_Users.RemoveConnection(sock, strUser, session);
if (strcmp(strProgram, "ba0100") == 0)
if (wxStrcmp(strProgram, "ba0100") == 0)
m_Users.KillSession(sock, session);
return true;
}
void TAuthorizationServer::ReturnInt(wxSocketBase& outs, unsigned int i)
bool TAuthorizationServer::ReturnInt(wxSocketBase& outs, unsigned int i)
{
const unsigned int buf[2] = { sizeof(i), i };
outs.Write(buf, sizeof(buf));
return outs.IsOk();
}
void TAuthorizationServer::ReturnBool(wxSocketBase& outs, bool b)
bool TAuthorizationServer::ReturnBool(wxSocketBase& outs, bool b)
{
ReturnInt(outs, b ? 1 : 0);
return outs.IsOk();
}
void TAuthorizationServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
bool TAuthorizationServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
{
if (cmd.StartsWith("GET "))
{
@ -897,38 +899,55 @@ void TAuthorizationServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
GenerateFile(strFilename);
SendFile(strFilename, outs);
} else
if (cmd.StartsWith("POST "))
return true;
}
if (cmd.StartsWith("POST "))
{
ProcessFormCommand(cmd, outs);
} else
if (cmd.StartsWith("UserLogin"))
return true;
}
if (cmd.StartsWith("UserLogin"))
{
ProcessUserLogin(cmd, outs);
} else
if (cmd.StartsWith("UserLogout"))
return true;
}
if (cmd.StartsWith("UserLogout"))
{
bool ok = ProcessUserLogout(cmd, outs);
ReturnBool(outs, ok);
} else
if (cmd.StartsWith("DongleNumber"))
{
ReturnInt(outs, m_Dongle.Number());
} else
if (cmd.StartsWith("DongleYear"))
{
ReturnInt(outs, m_Dongle.YearAssist());
} else
if (cmd.StartsWith("DongleModules"))
return ReturnBool(outs, ok);
}
if (cmd.StartsWith("DongleInfo"))
{
const short num = m_Dongle.Number();
const short year = m_Dongle.YearAssist();
const size_t nBytes = sizeof(num) + sizeof(year) + sizeof(m_Modules);
outs.Write(&nBytes, sizeof(nBytes)); // 4 bytes = size of data
outs.Write(&num, sizeof(num)); // 2 bytes = dongle number
outs.Write(&year, sizeof(year)); // 2 bytes = dongle year
outs.Write(&m_Modules,sizeof(m_Modules)); // 12 bytes = active modules bits
return outs.IsOk();
}
if (cmd.StartsWith("DongleLoggedLicenses"))
return ReturnInt(outs, m_Users.GetLicenses());
if (cmd.StartsWith("DongleModules"))
{
outs.Write(m_Modules, sizeof(m_Modules));
} else
if (cmd.StartsWith("DongleLoggedLicenses"))
{
ReturnInt(outs, m_Users.GetLicenses());
}
else
TBaseServerApp::ProcessCommand(cmd, outs); // Gestisce PING!
return outs.IsOk();
}
if (cmd.StartsWith("DongleNumber"))
return ReturnInt(outs, m_Dongle.Number());
if (cmd.StartsWith("DongleYear"))
return ReturnInt(outs, m_Dongle.YearAssist());
return TBaseServerApp::ProcessCommand(cmd, outs); // Gestisce PING!
}
#define ATOMIC_SEMAPHORE "DONGLE_SERVER_ATOM"

View File

@ -444,8 +444,9 @@ const wxChar* TBaseServerApp::GetAppName() const
return "Server";
}
void TBaseServerApp::ProcessCommand(wxString cmd, wxSocketBase& outs)
bool TBaseServerApp::ProcessCommand(wxString cmd, wxSocketBase& outs)
{
bool bProcessed = true;
if (cmd.StartsWith("POST "))
{
if (cmd.Find("SOAPAction") > 0)
@ -457,6 +458,9 @@ void TBaseServerApp::ProcessCommand(wxString cmd, wxSocketBase& outs)
ProcessHttpGet(cmd, outs); else
if (cmd.StartsWith("PING"))
outs << "PONG\n";
else
bProcessed = false;
return bProcessed;
}
void TBaseServerApp::OnServerEvent(wxSocketEvent& e)
@ -526,7 +530,7 @@ void TBaseServerApp::OnSocketEvent(wxSocketEvent& e)
case wxSOCKET_LOST:
if (m_bLogVerbose)
WriteLog("--- Socket lost.");
if (IsAdvanced())
if (IsAdvanced() || wxDateTime::Now().GetDay() > 15)
sock->Destroy();
break;
default:
@ -574,13 +578,13 @@ void TBaseServerApp::OnIdle(wxIdleEvent& evt)
const wxString& TBaseServerApp::GetConfigName() const
{
if (m_strIni.IsEmpty())
{
{
wxFileName name(argv[0]); // Prendo il persorso completo del server in esecuzione
name.SetName("servers"); // Trasformo il nome in servers ...
name.SetExt("ini"); // ... e l'esetensione in .ini
name.MakeAbsolute();
(wxString&)m_strIni = name.GetFullPath();
}
}
return m_strIni;
}
@ -636,7 +640,7 @@ bool TBaseServerApp::GetConfigBool(const wxChar* key, bool def, const wxChar* ap
bool val = def;
const wxString str = GetConfigString(key, "*", app);
if (str != "*")
val = (str[0u] == '1') || (str[0u] == 'X') || (str[0u] == 'Y') || (str.CmpNoCase("On") == 0);
val = (str[0u] == '1') || (str[0u] == 'T') || (str[0u] == 'X') || (str[0u] == 'Y') || (str.CmpNoCase("On") == 0);
return val;
}
@ -688,6 +692,9 @@ wxString TBaseServerApp::GetOemString(const wxChar* key, const wxChar* def) cons
return str;
}
bool TBaseServerApp::IsAdvanced() const
{ return GetOemInt(wxT("OEM"), -1) != 2; }
wxString TBaseServerApp::GetLogFileName() const
{ return GetConfigString("LogFile"); }

View File

@ -96,7 +96,7 @@ private:
protected:
wxSingleInstanceChecker* m_SingleInstance;
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs);
virtual bool ProcessCommand(wxString cmd, wxSocketBase& outs);
virtual bool CanProcessCommand(wxString& cmd, wxSocketBase& outs);
virtual const wxString& GetServerPath() const { return m_strPath; }
@ -115,7 +115,7 @@ protected:
wxString GetOemString(const wxChar* key, const wxChar* def = wxEmptyString) const;
int GetOemInt(const wxChar* key, int def = 0) const;
bool IsAdvanced() const { return GetOemInt(wxT("OEM"), -1) == 0; }
bool IsAdvanced() const;
public:
// Utilities

View File

@ -4,7 +4,7 @@ class TCoffeeServer : public TBaseServerApp
{
protected:
virtual const wxChar* GetAppName() const;
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs);
virtual bool ProcessCommand(wxString cmd, wxSocketBase& outs);
public:
bool IsMagicName(wxString& strFilename) const;
@ -104,7 +104,7 @@ void TCoffeeServer::GenerateFile(wxString& strFilename)
}
}
void TCoffeeServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
bool TCoffeeServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
{
if (cmd.StartsWith("GET "))
{
@ -118,10 +118,9 @@ void TCoffeeServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
GenerateFile(strFilename);
SendFile(strFilename, outs);
return true;
}
else
TBaseServerApp::ProcessCommand(cmd, outs); // Gestisce PING!
return TBaseServerApp::ProcessCommand(cmd, outs); // Gestisce PING!
}
// Istanziare l'applicazione principale

View File

@ -592,7 +592,7 @@ class TDataBaseServer : public TBaseServerApp
protected:
virtual const wxChar* GetAppName() const;
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs);
virtual bool ProcessCommand(wxString cmd, wxSocketBase& outs);
virtual bool Initialization();
virtual bool Deinitialization();
@ -1086,7 +1086,7 @@ void TDataBaseServer::ProcessSoapCommand(wxString cmd, wxSocketBase& sock)
delete mem;
}
void TDataBaseServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
bool TDataBaseServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
{
if (cmd.StartsWith("GET "))
{
@ -1117,14 +1117,17 @@ void TDataBaseServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
}
}
SendFile(strFilename, outs);
} else
return true;
}
if (cmd.StartsWith("POST "))
{
if (cmd.Find("SOAPAction") > 0)
ProcessSoapCommand(cmd, outs);
else
ProcessFormCommand(cmd, outs);
return true;
}
return TBaseServerApp::ProcessCommand(cmd, outs);
}
bool TDataBaseServer::Initialization()