#include <SecurityServer.hh>
Public Member Functions | |
SecurityServer (SocketServer &, AuditFile &, Handle) | |
SecurityServer constructor. | |
~SecurityServer () | |
Removes existing SecurityLevel instances before deleting instance. | |
Handle | federation () const |
Socket * | getSocketLink (FederateHandle theFederate, TransportType theType=RELIABLE) const |
bool | dominates (SecurityLevelID A, SecurityLevelID B) const |
Compares two security level ID. | |
bool | canFederateAccessData (FederateHandle theFederate, SecurityLevelID theDataLevelID) |
SecurityLevelID | getLevelIDWithName (const char *theName) |
Returns the level ID associated with name otherwise creates a new one. | |
void | registerFederate (const char *the_federate, SecurityLevelID the_level_id) |
Register a new federate with security level id. | |
Public Attributes | |
AuditFile & | audit |
This part of the security server is linked to the RTIG Audit Server. | |
Private Member Functions | |
SecurityLevelID | getLevel (const char *theFederate) const |
Returns the federate level id stored in a FederateLevelList. | |
void | insertPublicLevel () |
Insert the public level name and id into the list. | |
Private Attributes | |
Handle | myFederation |
SocketServer & | RTIG_SocketServer |
SecurityLevelID | LastLevelID |
Last Level ID attributed. | |
FederateLevelList | FedLevelList |
Liste dynamique gerant la securite des donnees, en affectant des numeros aux differents niveaux de securite, des niveaux a chacun des federes, et en reglementant les acces aux donnees par les federes.
Definition at line 48 of file SecurityServer.hh.
SecurityServer | ( | SocketServer & | theRTIGServer, | |
AuditFile & | theAuditServer, | |||
Handle | theFederation | |||
) |
SecurityServer constructor.
Definition at line 112 of file SecurityServer.cc.
References SecurityServer::myFederation.
~SecurityServer | ( | ) |
Removes existing SecurityLevel instances before deleting instance.
Definition at line 126 of file SecurityServer.cc.
Handle federation | ( | ) | const [inline] |
Definition at line 57 of file SecurityServer.hh.
Referenced by ObjectClass::attributeOwnershipAcquisition(), ObjectClass::attributeOwnershipAcquisitionIfAvailable(), ObjectClass::cancelAttributeOwnershipAcquisition(), ObjectClass::deleteInstance(), ObjectClass::negotiatedAttributeOwnershipDivestiture(), ObjectSet::queryAttributeOwnership(), ObjectClass::registerObjectInstance(), ObjectClass::sendDiscoverMessages(), Interaction::sendInteraction(), ObjectClass::sendToOwners(), ObjectClass::unconditionalAttributeOwnershipDivestiture(), and ObjectClass::updateAttributeValues().
Socket * getSocketLink | ( | FederateHandle | theFederate, | |
TransportType | theType = RELIABLE | |||
) | const |
Each call to this method is passed to the RTIG's SocketServer, by including our Federation Handle.
Definition at line 45 of file SecurityServer.cc.
References SocketServer::getSocketLink(), SecurityServer::myFederation, and SecurityServer::RTIG_SocketServer.
Referenced by Federation::broadcastAnyMessage(), Federation::broadcastSomeMessage(), SecurityServer::canFederateAccessData(), Federation::requestFederationRestore(), Federation::requestObjectOwner(), ObjectClass::sendDiscoverMessages(), ObjectClassBroadcastList::sendPendingDOMessage(), InteractionBroadcastList::sendPendingMessage(), ObjectClassBroadcastList::sendPendingRAVMessage(), ObjectSet::sendToFederate(), and ObjectClass::sendToFederate().
bool dominates | ( | SecurityLevelID | A, | |
SecurityLevelID | B | |||
) | const |
Compares two security level ID.
Definition at line 60 of file SecurityServer.cc.
References PublicLevelID.
Referenced by SecurityServer::canFederateAccessData(), ObjectClass::setSecurityLevelId(), and Interaction::setSecurityLevelId().
bool canFederateAccessData | ( | FederateHandle | theFederate, | |
SecurityLevelID | theDataLevelID | |||
) |
Determines if federate can access to datas. 1- Get the socket of this federate 2- Check if it is a secure socket 3- If yes, retrieve federate principal name. 4- Retrieve Federate level
Definition at line 73 of file SecurityServer.cc.
References SecurityServer::dominates(), SecurityServer::getLevel(), SecureTCPSocket::getPeerName(), SecurityServer::getSocketLink(), and PublicLevelID.
Referenced by ObjectClassAttribute::checkFederateAccess(), ObjectClass::checkFederateAccess(), and Interaction::checkFederateAccess().
SecurityLevelID getLevelIDWithName | ( | const char * | theName | ) |
Returns the level ID associated with name otherwise creates a new one.
Definition at line 145 of file SecurityServer.cc.
References certi::D, certi::fedparser::end(), SecurityServer::insertPublicLevel(), SecurityServer::LastLevelID, MAX_SECURITYLEVELNAME, and pdDebug.
Referenced by RootObject::getSecurityLevelID().
void registerFederate | ( | const char * | the_federate, | |
SecurityLevelID | the_level_id | |||
) |
Register a new federate with security level id.
Definition at line 191 of file SecurityServer.cc.
References FederateLevelList::addFederate(), and SecurityServer::FedLevelList.
Referenced by RootObject::registerFederate().
SecurityLevelID getLevel | ( | const char * | theFederate | ) | const [private] |
Returns the federate level id stored in a FederateLevelList.
Definition at line 137 of file SecurityServer.cc.
References SecurityServer::FedLevelList, and FederateLevelList::getLevel().
Referenced by SecurityServer::canFederateAccessData().
void insertPublicLevel | ( | ) | [private] |
Insert the public level name and id into the list.
Definition at line 176 of file SecurityServer.cc.
References SecurityServer::LastLevelID, PublicLevelID, and PublicLevelName.
Referenced by SecurityServer::getLevelIDWithName().
This part of the security server is linked to the RTIG Audit Server.
Definition at line 55 of file SecurityServer.hh.
Handle myFederation [private] |
Definition at line 74 of file SecurityServer.hh.
Referenced by SecurityServer::getSocketLink(), and SecurityServer::SecurityServer().
SocketServer& RTIG_SocketServer [private] |
SecurityLevelID LastLevelID [private] |
Last Level ID attributed.
Definition at line 77 of file SecurityServer.hh.
Referenced by SecurityServer::getLevelIDWithName(), and SecurityServer::insertPublicLevel().
FederateLevelList FedLevelList [private] |
Definition at line 78 of file SecurityServer.hh.
Referenced by SecurityServer::getLevel(), and SecurityServer::registerFederate().