📄 server.cpp
字号:
// **********************************************************************//// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.//// This copy of Ice is licensed to you under the terms described in the// ICE_LICENSE file included in this distribution.//// **********************************************************************#include <Ice/Ice.h>#include <Glacier2/PermissionsVerifier.h>#include <IceSSL/Plugin.h>#include <TestCommon.h>using namespace std;class ClientPermissionsVerifierI : public Glacier2::PermissionsVerifier{public: virtual bool checkPermissions(const string& userId, const string& passwd, string&, const Ice::Current&) const { return userId == "client1" && passwd == "test1" || userId == "client2" && passwd == "test2"; }};class SSLPermissionsVerifierI : public Glacier2::SSLPermissionsVerifier{public: virtual bool authorize(const Glacier2::SSLInfo& info, string&, const Ice::Current& current) const { IceSSL::CertificatePtr cert = IceSSL::Certificate::decode(info.certs[0]); test(cert->getIssuerDN() == IceSSL::DistinguishedName( "emailAddress=info@zeroc.com,CN=ZeroC Test CA,OU=Ice,O=ZeroC\\, Inc.,L=Palm Beach Gardens," "ST=Florida,C=US")); test(cert->getSubjectDN() == IceSSL::DistinguishedName( "CN=Client,emailAddress=info@zeroc.com,OU=Ice,O=ZeroC\\, Inc.,ST=Florida,C=US")); test(cert->checkValidity()); return true; }};class Server : public Ice::Application{public: virtual int run(int argc, char* argv[]);};intServer::run(int argc, char* argv[]){ Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Server"); if(communicator()->getProperties()->getPropertyAsInt("AddPermissionsVerifiers") > 0) { adapter->add(new ClientPermissionsVerifierI(), communicator()->stringToIdentity("ClientPermissionsVerifier")); adapter->add(new SSLPermissionsVerifierI(), communicator()->stringToIdentity("SSLPermissionsVerifier")); } adapter->activate(); shutdownOnInterrupt(); try { adapter->activate(); } catch(const Ice::ObjectAdapterDeactivatedException&) { } communicator()->waitForShutdown(); ignoreInterrupt(); return EXIT_SUCCESS;}intmain(int argc, char* argv[]){ Server app; int rc = app.main(argc, argv); return rc;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -