⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ksipauthentication.cpp

📁 KphoneSI (kpsi) is a SIP (Session Initiation Protocol) user agent for Linux, with which you can in
💻 CPP
字号:
#include <stdio.h>#include <qhbox.h>#include <qvbox.h>#include <qlabel.h>#include <qframe.h>#include <qlineedit.h>#include <qhbuttongroup.h>#include <qradiobutton.h>#include <qpushbutton.h>#include <qmessagebox.h>#include <qsettings.h>#include <qlayout.h>#include "../dissipate2/sipcall.h"#include "../dissipate2/sipuser.h"#include "../dissipate2/sipregister.h"#include "../dissipate2/sipclient.h"#include "kphone.h"#include "kphoneview.h"#include "ksipauthentication.h"#include "kstatics.h"KSipAuthenticationRequest::KSipAuthenticationRequest(	const QString &server, const QString &sipuri, const QString &prefix, 	const QString &authtype, QWidget *parent, const char *name )	: QDialog( parent, prefix + authtype, true ){	userPrefix = prefix;	QVBox *vbox = new QVBox( this );	vbox->setMargin( 3 );	vbox->setSpacing( 3 );	QVBoxLayout *vboxl = new QVBoxLayout( this, 5 );	vboxl->addWidget( vbox );	(void) new QLabel( "Authentication for Entry " + userPrefix, vbox );	(void) new QLabel( "SipUri = " + sipuri, vbox );	(void) new QLabel( "Server = " + server, vbox );	(void) new QLabel( "Username:", vbox );	username = new QLineEdit( vbox );	QSettings settings;	QString p = KStatics::dBase + userPrefix + "Registration/";	QString user = settings.readEntry( p + "UserName", "");	username->setText( user);	(void) new QLabel( "Password:", vbox );	password = new QLineEdit( vbox );	password->setEchoMode( QLineEdit::Password );	password->setFocus();	savePassword = new QCheckBox( "Save password", vbox );	QHBoxLayout *buttonBox;	buttonBox = new QHBoxLayout( vboxl, 6 );	okPushButton = new QPushButton( this, "ok button");	okPushButton->setText( "OK" );	okPushButton->setDefault( TRUE );	buttonBox->addWidget( okPushButton );	cancelPushButton = new QPushButton( this, "cancel button" );	cancelPushButton->setText( "Cancel" );	cancelPushButton->setAccel( Key_Escape );	buttonBox->addWidget( cancelPushButton );	connect( okPushButton, SIGNAL( clicked() ), this, SLOT( okClicked() ) );	connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) );	}KSipAuthenticationRequest::~KSipAuthenticationRequest( void ){}void KSipAuthenticationRequest::setUsername( const QString &newUsername ){	username->setText( newUsername );}void KSipAuthenticationRequest::setPassword( const QString &newPassword ){	password->setText( newPassword );}QString KSipAuthenticationRequest::getUsername( void ){	return username->text();}QString KSipAuthenticationRequest::getPassword( void ){	return password->text();}void KSipAuthenticationRequest::okClicked( void ){	QSettings settings;	QString p = KStatics::dBase + userPrefix + "Registration/";	QString ppw, dspw;	QString user;	user = settings.readEntry( p + "UserName", "");	if (user.isEmpty()) {	    user = getUsername();	    KStatics::myID = user;	}	if (savePassword->isChecked()) {		ppw = getPassword();		dspw=scramblePW(ppw.latin1(), ppw.length() );		settings.writeEntry( p + "Password", dspw );		settings.writeEntry( p + "UserName", user );		KStatics::myPW=ppw;	} else {		KStatics::myPW=getPassword();	}	accept();}QString KSipAuthenticationRequest::scramblePW(const char *a, int len) { int i;unsigned char c[16]={'a','V','t','L','n','q','z','Y','b','j','x','D','A','U','s','k'};unsigned char d[16]={'i','w','d','y','e','r','f','m','G','N','I','R','h','H','Q','l'};unsigned  char b0,b1;char b[100];i=0;while (i <len) {    b0 =(a[i]&0xf0)>>4;    b1 = a[i]&0x0f;    b[2*i]   = c[b0] ;    b[2*i+1] = d[b1];    i++;} b[2*i]=0; return QString(b);} KSipAuthentication::KSipAuthentication(){	authreq = 0;	execAuthreq = false;}KSipAuthentication::~KSipAuthentication( void ){}void KSipAuthentication::authRequest( SipCallMember *member, QString up ){	if( member->getAuthState() != SipCallMember::authState_AuthenticationRequired &&	    member->getAuthState() != SipCallMember::authState_AuthenticationRequiredWithNewPassword ) {		return;	}	if(KStatics::debugLevel >=  2) printf("===KSipAuthentication::authRequest\n");		if( execAuthreq ) return;		QString u = KStatics::myID; 	QString p = KStatics::myPW;	if( p.isEmpty() || member->getAuthState() == SipCallMember::authState_AuthenticationRequiredWithNewPassword ) {			QSettings settings;			QString pst = KStatics::dBase + up + "Registration/";			QString proxy = member->getCall()->getSipProxy();			SipUri localuri = member->getCall()->localAddress();			if( !authreq ) {				authreq = new KSipAuthenticationRequest( proxy, localuri.uri(), QString::null, QString::null );			}			authreq->setUsername( u );			authreq->setPassword( p );			execAuthreq = true;			if( authreq->exec() ) {				u = authreq->getUsername();				p = authreq->getPassword();				if( u.isEmpty() || p.isEmpty() ) {					return;				} else {				KStatics::myID=u;				KStatics::myPW=p;				}				member->getCall()->setPassword( p );				execAuthreq = false;			} else {				execAuthreq = false;				return;			}	}	switch( member->getCallMemberType() ){		case SipCallMember::Subscribe:			member->setAuthState(SipCallMember::authState_AuthenticationOK);			member->sendRequestSubscribe( u, p );			break;		case SipCallMember::Notify:			member->setAuthState(SipCallMember::authState_AuthenticationOK);			member->sendRequestNotify( u, p );			break;		case SipCallMember::Message:			member->setAuthState(SipCallMember::authState_AuthenticationOK);			member->sendRequestMessage( u, p );			break;		case SipCallMember::Invite:			member->setAuthState(SipCallMember::authState_AuthenticationOK);			member->sendRequestInvite( u, p );				break;		case SipCallMember::Disc:			member->setAuthState(SipCallMember::authState_AuthenticationOK);			member->sendRequestBye( u, p );			break;		case SipCallMember::Options:			member->setAuthState(SipCallMember::authState_AuthenticationOK);			member->sendRequestOptions( u, p );			break;			default:			break;	}} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -