|
reSIProcate/DialogUsageManager
9694
|
#include "resip/dum/DialogUsageManager.hxx"#include "resip/dum/MasterProfile.hxx"#include "resip/dum/UserProfile.hxx"#include "resip/dum/ClientAuthManager.hxx"#include "resip/dum/ClientRegistration.hxx"#include "resip/dum/ClientPagerMessage.hxx"#include "resip/dum/ServerPagerMessage.hxx"#include "resip/dum/RegistrationHandler.hxx"#include "resip/dum/PagerMessageHandler.hxx"#include "resip/stack/PlainContents.hxx"#include "resip/stack/Pkcs7Contents.hxx"#include "resip/stack/MultipartSignedContents.hxx"#include "resip/stack/Mime.hxx"#include "resip/stack/SecurityAttributes.hxx"#include "resip/stack/Helper.hxx"#include "rutil/Log.hxx"#include "rutil/Logger.hxx"#include "resip/stack/ssl/Security.hxx"#include <iostream>#include <string>#include <sstream>
Go to the source code of this file.
Classes | |
| class | TestSMIMEMessageHandler |
Defines | |
| #define | RESIPROCATE_SUBSYSTEM Subsystem::TEST |
Functions | |
| int | main (int argc, char *argv[]) |
| #define RESIPROCATE_SUBSYSTEM Subsystem::TEST |
Definition at line 35 of file testSMIMEMessage.cxx.
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 147 of file testSMIMEMessage.cxx.
References resip::DialogUsageManager::addTransport(), resip::BaseSecurity::encrypt(), finished, resip::Handle< T >::get(), resip::Uri::getAor(), resip::Uri::host(), InfoLog, TestSMIMEMessageHandler::isEnded(), TestSMIMEMessageHandler::isRcvd(), TestSMIMEMessageHandler::isRegistered(), resip::DialogUsageManager::makePagerMessage(), resip::DialogUsageManager::makeRegistration(), resip::SipStack::process(), resip::DialogUsageManager::process(), TestSMIMEMessageHandler::reset(), resip::DialogUsageManager::send(), resip::DialogUsageManager::setClientAuthManager(), resip::DialogUsageManager::setClientPagerMessageHandler(), resip::DialogUsageManager::setClientRegistrationHandler(), resip::DialogUsageManager::setMasterProfile(), resip::DialogUsageManager::setServerPagerMessageHandler(), resip::BaseSecurity::sign(), UDP, resip::NameAddr::uri(), resip::Uri::user(), and V4.
{
if ( argc < 3 ) {
cout << "usage: " << argv[0] << " sip:user passwd\n";
return 0;
}
Log::initialize(Log::Cout, Log::Debug, argv[0]);
NameAddr userAor(argv[1]);
Data passwd(argv[2]);
InfoLog(<< "user: " << userAor << ", passwd: " << passwd << "\n");
#ifdef WIN32
Security* security = new WinSecurity;
#else
Security* security = new Security;
#endif
assert(security);
SipStack clientStack(security);
DialogUsageManager clientDum(clientStack);
clientDum.addTransport(UDP, 0, V4);
//clientDum.addTransport(TCP, 0, V4);
//clientDum.addTransport(TLS, 0, V4);
// clientDum.addTransport(UDP, 0, V6);
// clientDum.addTransport(TCP, 0, V6);
// clientDum.addTransport(TLS, 0, V6);
SharedPtr<MasterProfile> clientProfile(new MasterProfile);
auto_ptr<ClientAuthManager> clientAuth(new ClientAuthManager());
TestSMIMEMessageHandler clientHandler(security);
clientDum.setClientAuthManager(clientAuth);
clientDum.setClientRegistrationHandler(&clientHandler);
clientDum.setClientPagerMessageHandler(&clientHandler);
clientDum.setServerPagerMessageHandler(&clientHandler);
clientProfile->setDefaultFrom(userAor);
clientProfile->setDigestCredential(userAor.uri().host(), userAor.uri().user(), passwd);
clientProfile->setDefaultRegistrationTime(70);
clientProfile->addSupportedMethod(MESSAGE);
clientProfile->addSupportedMimeType(MESSAGE, Mime("text", "plain"));
clientProfile->addSupportedMimeType(MESSAGE, Mime("application", "pkcs7-mime"));
clientProfile->addSupportedMimeType(MESSAGE, Mime("multipart", "signed"));
clientDum.setMasterProfile(clientProfile);
SharedPtr<SipMessage> regMessage = clientDum.makeRegistration(userAor);
InfoLog( << *regMessage << "Generated register: " << endl << *regMessage );
clientDum.send(regMessage);
int iteration = 0;
bool finished = false;
while (!finished)
{
clientHandler.reset();
bool sent = false;
while (!clientHandler.isEnded() || !clientHandler.isRcvd() )
{
clientStack.process(100);
while (clientDum.process());
if (!sent && clientHandler.isRegistered())
{
try
{
ClientPagerMessageHandle cpmh = clientDum.makePagerMessage(userAor);
Contents* mcontent = new PlainContents(Data("message"));
auto_ptr<Contents> content;
switch (iteration)
{
case 0:
{
InfoLog( << "Sending PKCS7 encrypted data" );
Pkcs7Contents* pkcs7 = security->encrypt(mcontent, userAor.uri().getAor());
content = auto_ptr<Contents>(static_cast<Contents *>(pkcs7));
break;
}
case 1:
{
InfoLog( << "Sending PKCS7 signed data" );
MultipartSignedContents* mpc = security->sign(userAor.uri().getAor(), mcontent);
content = auto_ptr<Contents>(static_cast<Contents *>(mpc));
break;
}
default:
{
InfoLog( << "Finished!" );
finished = true;
break;
}
}
if (finished)
break;
cpmh.get()->page(content);
sent = true;
}
catch (...)
{
InfoLog( << "failure to send message at iteration " << iteration );
break;
}
}
}
++iteration;
}
return 0;
}

1.7.5.1