|
|
@ -50,7 +50,7 @@ struct exit_exception {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
AuthSocket::AuthSocket(int sock, int serverID, TQObject *parent, const char *name) :
|
|
|
|
AuthSocket::AuthSocket(int sock, int serverID, TQObject *parent, const char *name) :
|
|
|
|
TDEKerberosServerSocket(parent, name), m_criticalSection(0), m_stationID(-1), m_bound(false), m_serviceID(0), m_serverID(serverID), m_terminationStamp(0), m_servActive(false), m_servState(0), m_servClientSocket(NULL), m_servClientTimeout(NULL), m_loopTimer(NULL), m_pollTimer(NULL), m_config(static_cast<AuthServer*>(parent)->m_config), m_database(NULL), m_databaseStationsCursor(NULL),
|
|
|
|
TDEKerberosServerSocket(parent, name), m_criticalSection(0), m_stationID(-1), m_bound(false), m_serviceID(0), m_serverID(serverID), m_terminationStamp(0), m_servActive(false), m_servState(0), m_servClientSocket(NULL), m_servClientTimeout(NULL), m_loopTimer(NULL), m_pollTimer(NULL), m_config(static_cast<AuthServer*>(parent)->m_config), m_database(NULL), m_databaseStationsCursor(NULL),
|
|
|
|
m_databaseServicesCursor(NULL), m_databaseServiceTypesCursor(NULL), m_databasePermissionsCursor(NULL), m_databaseActivityCursor(NULL), m_databaseStatisticsCursor(NULL)
|
|
|
|
m_databaseServicesCursor(NULL), m_databaseServiceTypesCursor(NULL), m_databasePermissionsCursor(NULL), m_databaseActivityCursor(NULL), m_databaseStatisticsCursor(NULL), m_databaseStatusCursor(NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
// Initialize timers
|
|
|
|
// Initialize timers
|
|
|
@ -107,6 +107,9 @@ AuthSocket::~AuthSocket() {
|
|
|
|
if (m_databaseStatisticsCursor) {
|
|
|
|
if (m_databaseStatisticsCursor) {
|
|
|
|
delete m_databaseStatisticsCursor;
|
|
|
|
delete m_databaseStatisticsCursor;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (m_databaseStatusCursor) {
|
|
|
|
|
|
|
|
delete m_databaseStatusCursor;
|
|
|
|
|
|
|
|
}
|
|
|
|
if (m_servClientSocket) {
|
|
|
|
if (m_servClientSocket) {
|
|
|
|
delete m_servClientSocket;
|
|
|
|
delete m_servClientSocket;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -519,8 +522,21 @@ void AuthSocket::commandLoop() {
|
|
|
|
if (activeID < 0) {
|
|
|
|
if (activeID < 0) {
|
|
|
|
for (StationList::Iterator it(m_slist.begin()); it != m_slist.end(); ++it) {
|
|
|
|
for (StationList::Iterator it(m_slist.begin()); it != m_slist.end(); ++it) {
|
|
|
|
if ((*it).services == st.services) {
|
|
|
|
if ((*it).services == st.services) {
|
|
|
|
m_stationID = (*it).id;
|
|
|
|
// Verify that all services provided by this candidate workspace are online before allocating the workspace to a user
|
|
|
|
break;
|
|
|
|
bool online = true;
|
|
|
|
|
|
|
|
m_databaseServicesCursor->select(TQString("station=%1").arg((*it).id));
|
|
|
|
|
|
|
|
while (m_databaseServicesCursor->next()) {
|
|
|
|
|
|
|
|
m_databaseStatusCursor->select(TQString("serviceid=%1").arg(m_databaseServicesCursor->value("hostname").toString()));
|
|
|
|
|
|
|
|
if (m_databaseStatusCursor->next()) {
|
|
|
|
|
|
|
|
if (m_databaseStatusCursor->value("online").toInt() == 0) {
|
|
|
|
|
|
|
|
online = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (online) {
|
|
|
|
|
|
|
|
m_stationID = (*it).id;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -713,6 +729,7 @@ int AuthSocket::connectToDatabase() {
|
|
|
|
m_databasePermissionsCursor = new TQSqlCursor("permissions", TRUE, m_database);
|
|
|
|
m_databasePermissionsCursor = new TQSqlCursor("permissions", TRUE, m_database);
|
|
|
|
m_databaseActivityCursor = new TQSqlCursor("activity", TRUE, m_database);
|
|
|
|
m_databaseActivityCursor = new TQSqlCursor("activity", TRUE, m_database);
|
|
|
|
m_databaseStatisticsCursor = new TQSqlCursor("statistics", TRUE, m_database);
|
|
|
|
m_databaseStatisticsCursor = new TQSqlCursor("statistics", TRUE, m_database);
|
|
|
|
|
|
|
|
m_databaseStatusCursor = new TQSqlCursor("status", TRUE, m_database);
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|