Show
Ignore:
Timestamp:
10/26/11 14:29:38 (2 years ago)
Author:
robert
Message:

Added password support into osgvnc example and vnc plugin

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgPlugins/vnc/ReaderWriterVNC.cpp

    r12850 r12851  
    5050        static void updateImage(rfbClient* client,int x,int y,int w,int h); 
    5151         
     52        static void passwordCheck(rfbClient* client,const char* encryptedPassWord,int len); 
     53        static char* getPassword(rfbClient* client); 
     54 
     55        std::string                 _username; 
     56        std::string                 _password; 
    5257        double                      _timeOfLastUpdate; 
    5358        double                      _timeOfLastRender; 
     
    138143 
    139144    _inactiveBlock = new osg::RefBlock; 
    140  
    141145} 
    142146 
     
    198202} 
    199203 
     204void LibVncImage::passwordCheck(rfbClient* client,const char* encryptedPassWord,int len) 
     205{ 
     206    OSG_NOTICE<<"LibVncImage::passwordCheck"<<std::endl; 
     207} 
     208 
     209char* LibVncImage::getPassword(rfbClient* client) 
     210{ 
     211    LibVncImage* image = (LibVncImage*)(rfbClientGetClientData(client, 0)); 
     212    OSG_NOTICE<<"LibVncImage::getPassword "<<image->_password<<std::endl; 
     213    return strdup(image->_password.c_str()); 
     214} 
     215 
    200216 
    201217bool LibVncImage::connect(const std::string& hostname) 
     
    212228    _client->HandleTextChat = 0; 
    213229 
     230    // provide the password if we have one assigned 
     231    if (!_password.empty())  _client->GetPassword = getPassword; 
     232 
    214233    rfbClientSetClientData(_client, 0, this); 
    215234     
     
    268287    PrintPixelFormat(&(client->format)); 
    269288 
     289#ifdef __APPLE__ 
     290    // feedback is that Mac's have an endian swap even though the PixelFormat results see under OSX are identical. 
     291    bool swap = true; 
     292#else 
    270293    bool swap = client->format.redShift!=0; 
     294#endif 
     295 
    271296    GLenum gl_pixelFormat = swap ? GL_BGRA : GL_RGBA; 
    272297 
     
    349374 
    350375            osg::ref_ptr<LibVncImage> image = new LibVncImage; 
    351             image->setDataVariance(osg::Object::DYNAMIC); 
    352              
     376            image->setDataVariance(osg::Object::DYNAMIC);            
    353377            image->setOrigin(osg::Image::TOP_LEFT); 
     378 
     379            const osgDB::AuthenticationMap* authenticationMap = (options && options->getAuthenticationMap()) ? 
     380                    options->getAuthenticationMap() : 
     381                    osgDB::Registry::instance()->getAuthenticationMap(); 
     382 
     383            const osgDB::AuthenticationDetails* details = authenticationMap ? 
     384                authenticationMap->getAuthenticationDetails(hostname) : 
     385                0; 
     386 
     387            // configure authentication if required. 
     388            if (details) 
     389            { 
     390                OSG_NOTICE<<"Passing in password = "<<details->password<<std::endl; 
     391 
     392                image->_username = details->username; 
     393                image->_password = details->password; 
     394            } 
    354395 
    355396            if (!image->connect(hostname))