So clients with limited access rights can not affect it.tags/v1.4.90
static LogWriter vlog("SConnection"); | static LogWriter vlog("SConnection"); | ||||
// AccessRights values | // AccessRights values | ||||
const SConnection::AccessRights SConnection::AccessView = 0x0001; | |||||
const SConnection::AccessRights SConnection::AccessKeyEvents = 0x0002; | |||||
const SConnection::AccessRights SConnection::AccessPtrEvents = 0x0004; | |||||
const SConnection::AccessRights SConnection::AccessCutText = 0x0008; | |||||
const SConnection::AccessRights SConnection::AccessDefault = 0x03ff; | |||||
const SConnection::AccessRights SConnection::AccessNoQuery = 0x0400; | |||||
const SConnection::AccessRights SConnection::AccessFull = 0xffff; | |||||
const SConnection::AccessRights SConnection::AccessView = 0x0001; | |||||
const SConnection::AccessRights SConnection::AccessKeyEvents = 0x0002; | |||||
const SConnection::AccessRights SConnection::AccessPtrEvents = 0x0004; | |||||
const SConnection::AccessRights SConnection::AccessCutText = 0x0008; | |||||
const SConnection::AccessRights SConnection::AccessSetDesktopSize = 0x0010; | |||||
const SConnection::AccessRights SConnection::AccessDefault = 0x03ff; | |||||
const SConnection::AccessRights SConnection::AccessNoQuery = 0x0400; | |||||
const SConnection::AccessRights SConnection::AccessFull = 0xffff; | |||||
SConnection::SConnection(bool reverseConnection_) | SConnection::SConnection(bool reverseConnection_) |
// is up to the derived class. | // is up to the derived class. | ||||
typedef rdr::U16 AccessRights; | typedef rdr::U16 AccessRights; | ||||
static const AccessRights AccessView; // View display contents | |||||
static const AccessRights AccessKeyEvents; // Send key events | |||||
static const AccessRights AccessPtrEvents; // Send pointer events | |||||
static const AccessRights AccessCutText; // Send/receive clipboard events | |||||
static const AccessRights AccessDefault; // The default rights, INCLUDING FUTURE ONES | |||||
static const AccessRights AccessNoQuery; // Connect without local user accepting | |||||
static const AccessRights AccessFull; // All of the available AND FUTURE rights | |||||
static const AccessRights AccessView; // View display contents | |||||
static const AccessRights AccessKeyEvents; // Send key events | |||||
static const AccessRights AccessPtrEvents; // Send pointer events | |||||
static const AccessRights AccessCutText; // Send/receive clipboard events | |||||
static const AccessRights AccessSetDesktopSize; // Change desktop size | |||||
static const AccessRights AccessDefault; // The default rights, INCLUDING FUTURE ONES | |||||
static const AccessRights AccessNoQuery; // Connect without local user accepting | |||||
static const AccessRights AccessFull; // All of the available AND FUTURE rights | |||||
virtual void setAccessRights(AccessRights ar) = 0; | virtual void setAccessRights(AccessRights ar) = 0; | ||||
// Other methods | // Other methods |
("SendCutText", | ("SendCutText", | ||||
"Send clipboard changes to clients.", | "Send clipboard changes to clients.", | ||||
true); | true); | ||||
rfb::BoolParameter rfb::Server::acceptSetDesktopSize | |||||
("AcceptSetDesktopSize", | |||||
"Accept set desktop size events from clients.", | |||||
true); | |||||
rfb::BoolParameter rfb::Server::queryConnect | rfb::BoolParameter rfb::Server::queryConnect | ||||
("QueryConnect", | ("QueryConnect", | ||||
"Prompt the local user to accept or reject incoming connections.", | "Prompt the local user to accept or reject incoming connections.", |
static BoolParameter acceptPointerEvents; | static BoolParameter acceptPointerEvents; | ||||
static BoolParameter acceptCutText; | static BoolParameter acceptCutText; | ||||
static BoolParameter sendCutText; | static BoolParameter sendCutText; | ||||
static BoolParameter acceptSetDesktopSize; | |||||
static BoolParameter queryConnect; | static BoolParameter queryConnect; | ||||
}; | }; |
{ | { | ||||
unsigned int result; | unsigned int result; | ||||
if (!(accessRights & AccessSetDesktopSize)) return; | |||||
if (!rfb::Server::acceptSetDesktopSize) return; | |||||
// Don't bother the desktop with an invalid configuration | // Don't bother the desktop with an invalid configuration | ||||
if (!layout.validate(fb_width, fb_height)) { | if (!layout.validate(fb_width, fb_height)) { | ||||
writer()->writeExtendedDesktopSize(reasonClient, resultInvalid, | writer()->writeExtendedDesktopSize(reasonClient, resultInvalid, |