// // Load if necessary and initialize the current DSMPlugin // This can only be done if NO client is connected (for the moment) // BOOL vncServer::SetDSMPlugin(void) { if (AuthClientCount() > 0) return FALSE; if (!IsDSMPluginEnabled()) return FALSE; // If the plugin is loaded, unload it first // sf@2003 - it has been possibly pre-configured by // clicking on the plugin config button if (m_pDSMPlugin->IsLoaded()) { // sf@2003 - We check if the loaded plugin is the same than // the currently selected one or not m_pDSMPlugin->DescribePlugin(); if (stricmp(m_pDSMPlugin->GetPluginFileName(), GetDSMPluginName())) { m_pDSMPlugin->SetEnabled(false); m_pDSMPlugin->UnloadPlugin(); } } if (!m_pDSMPlugin->IsLoaded()) { if (!m_pDSMPlugin->LoadPlugin(GetDSMPluginName(), false)) { vnclog.Print(LL_INTINFO, VNCLOG("DSMPlugin cannot be loaded\n")); return FALSE; } } // Now that it is loaded, init it if (m_pDSMPlugin->InitPlugin()) { char szParams[8 + 64]; strcpy(szParams, "NoPassword"); // The second parameter tells the plugin the kind of program is using it // (in WinVNC : "server-app" or "server-svc" strcat(szParams, ","); strcat(szParams, vncService::RunningAsService() ? "server-svc" : "server-app"); if (m_pDSMPlugin->SetPluginParams(NULL, szParams/*vncDecryptPasswd((char *)password)*/)) { m_pDSMPlugin->SetEnabled(true); // The plugin is ready to be used vnclog.Print(LL_INTINFO, VNCLOG("DSMPlugin Params OK\n")); return TRUE; } else { m_pDSMPlugin->SetEnabled(false); vnclog.Print(LL_INTINFO, VNCLOG("Unable to set DSMPlugin Params\n")); } } else { m_pDSMPlugin->SetEnabled(false); vnclog.Print(LL_INTINFO, VNCLOG("Unable to init DSMPlugin\n")); } /* MessageBox(NULL, _T(_this->m_pDSMPlugin->DescribePlugin()), _T("Plugin Description"), MB_OK | MB_ICONEXCLAMATION ); */ return TRUE; }
// // Load if necessary and initialize the current DSMPlugin // This can only be done if NO client is connected (for the moment) // BOOL SetDSMPlugin(BOOL bForceReload) { if (!IsDSMPluginEnabled()) return FALSE; // If the plugin is loaded, unload it first // sf@2003 - it has been possibly pre-configured by // clicking on the plugin config button if (m_pDSMPlugin->IsLoaded()) { // sf@2003 - We check if the loaded plugin is the same than // the currently selected one or not m_pDSMPlugin->DescribePlugin(); if (_stricmp(m_pDSMPlugin->GetPluginFileName(), GetDSMPluginName()) || bForceReload) { m_pDSMPlugin->SetEnabled(false); m_pDSMPlugin->UnloadPlugin(); } } if (!m_pDSMPlugin->IsLoaded()) { if (!m_pDSMPlugin->LoadPlugin(GetDSMPluginName(), false)) { return FALSE; } } // Now that it is loaded, init it if (m_pDSMPlugin->InitPlugin()) { char szParams[MAXPWLEN + 64]; // Does the plugin need the VNC password to do its job ? if (!_stricmp(m_pDSMPlugin->GetPluginParams(), "VNCPasswordNeeded")) strcpy(szParams, vncDecryptPasswd((char *)passwd)); else strcpy(szParams, "NoPassword"); // The second parameter tells the plugin the kind of program is using it // (in WinVNC : "server-app" or "server-svc" strcat(szParams, ","); strcat(szParams, "server-app"); if (m_pDSMPlugin->SetPluginParams(NULL, szParams/*vncDecryptPasswd((char *)password)*/)) { m_pDSMPlugin->SetEnabled(true); // The plugin is ready to be used return TRUE; } else { m_pDSMPlugin->SetEnabled(false); } } else { m_pDSMPlugin->SetEnabled(false); } return TRUE; }