mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-03 03:41:04 -05:00
Tweaked tabs and order. Added NewsFeed.
Added Template functions for ssl+xpgp code. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@853 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
01a2ca1468
commit
77cb7314bc
@ -310,3 +310,91 @@ bool GPGAuthMgr::SignData(const void *data, const uint32_t len, std::string &sig
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
|
bool setupSSL(SSL_CTX *ctx)
|
||||||
|
{
|
||||||
|
/* signer is done by pgp, so we have to manually authenticate the certificate.
|
||||||
|
*/
|
||||||
|
|
||||||
|
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_pgp_callback);
|
||||||
|
SSL_CTX_set_verify_depth(1);
|
||||||
|
|
||||||
|
/* generate a certificate */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int verify_pgp_callback(int preverify_ok, X509_STORE_CTX *ctx)
|
||||||
|
{
|
||||||
|
char buf[256];
|
||||||
|
X509 *err_cert;
|
||||||
|
int err, depth;
|
||||||
|
SSL *ssl;
|
||||||
|
mydata_t *mydata;
|
||||||
|
|
||||||
|
err_cert = X509_STORE_CTX_get_current_cert(ctx);
|
||||||
|
err = X509_STORE_CTX_get_error(ctx);
|
||||||
|
depth = X509_STORE_CTX_get_error_depth(ctx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Retrieve the pointer to the SSL of the connection currently treated
|
||||||
|
* and the application specific data stored into the SSL object.
|
||||||
|
*/
|
||||||
|
ssl = X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx());
|
||||||
|
mydata = SSL_get_ex_data(ssl, mydata_index);
|
||||||
|
|
||||||
|
X509_NAME_oneline(X509_get_subject_name(err_cert), buf, 256);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Catch a too long certificate chain. The depth limit set using
|
||||||
|
* SSL_CTX_set_verify_depth() is by purpose set to "limit+1" so
|
||||||
|
* that whenever the "depth>verify_depth" condition is met, we
|
||||||
|
* have violated the limit and want to log this error condition.
|
||||||
|
* We must do it here, because the CHAIN_TOO_LONG error would not
|
||||||
|
* be found explicitly; only errors introduced by cutting off the
|
||||||
|
* additional certificates would be logged.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
if (depth > mydata->verify_depth) {
|
||||||
|
preverify_ok = 0;
|
||||||
|
err = X509_V_ERR_CERT_CHAIN_TOO_LONG;
|
||||||
|
X509_STORE_CTX_set_error(ctx, err);
|
||||||
|
}
|
||||||
|
if (!preverify_ok) {
|
||||||
|
printf("verify error:num=%d:%s:depth=%d:%s\n", err,
|
||||||
|
X509_verify_cert_error_string(err), depth, buf);
|
||||||
|
}
|
||||||
|
else if (mydata->verbose_mode)
|
||||||
|
{
|
||||||
|
printf("depth=%d:%s\n", depth, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* At this point, err contains the last verification error. We can use
|
||||||
|
* it for something special
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!preverify_ok && (err == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT))
|
||||||
|
{
|
||||||
|
X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert), buf, 256);
|
||||||
|
printf("issuer= %s\n", buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mydata->always_continue)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return preverify_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -157,6 +157,24 @@ class GPGAuthMgr: public p3AuthMgr
|
|||||||
bool SignData(std::string input, std::string &sign);
|
bool SignData(std::string input, std::string &sign);
|
||||||
bool SignData(const void *data, const uint32_t len, std::string &sign);
|
bool SignData(const void *data, const uint32_t len, std::string &sign);
|
||||||
|
|
||||||
|
/*********************************************************************************/
|
||||||
|
/************************* PGP Specific functions ********************************/
|
||||||
|
/*********************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These support the authentication process.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool checkSignature(std::string id, std::string hash, std::string signature);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************************/
|
/*********************************************************************************/
|
||||||
/************************* OTHER FUNCTIONS ***************************************/
|
/************************* OTHER FUNCTIONS ***************************************/
|
||||||
/*********************************************************************************/
|
/*********************************************************************************/
|
||||||
@ -182,6 +200,15 @@ class GPGAuthMgr: public p3AuthMgr
|
|||||||
gpgme_ctx_t CTX;
|
gpgme_ctx_t CTX;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*****
|
||||||
|
*
|
||||||
|
* Support Functions for OpenSSL verification.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
int verify_pgp_callback(int preverify_ok, X509_STORE_CTX *ctx);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,12 +27,17 @@
|
|||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
|
|
||||||
#include "ChannelFeed.h"
|
|
||||||
#include "ForumsDialog.h"
|
#include "NetworkView.h"
|
||||||
#include "LinksDialog.h"
|
#include "LinksDialog.h"
|
||||||
#include "GamesDialog.h"
|
|
||||||
#include "PhotoDialog.h"
|
#include "PhotoDialog.h"
|
||||||
#include "channels/channelsDialog.h"
|
#include "ForumsDialog.h"
|
||||||
|
#include "NewsFeed.h"
|
||||||
|
#include "PeersFeed.h"
|
||||||
|
#include "TransferFeed.h"
|
||||||
|
#include "MsgFeed.h"
|
||||||
|
#include "ChannelFeed.h"
|
||||||
|
|
||||||
|
|
||||||
#include <rshare.h>
|
#include <rshare.h>
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
@ -93,6 +98,7 @@
|
|||||||
#define IMAGE_MINIMIZE ":/images/window_nofullscreen.png"
|
#define IMAGE_MINIMIZE ":/images/window_nofullscreen.png"
|
||||||
#define IMAGE_MAXIMIZE ":/images/window_fullscreen.png"
|
#define IMAGE_MAXIMIZE ":/images/window_fullscreen.png"
|
||||||
#define IMG_HELP ":/images/help.png"
|
#define IMG_HELP ":/images/help.png"
|
||||||
|
#define IMAGE_NEWSFEED ":/images/konqsidebar_news24.png"
|
||||||
|
|
||||||
/* Keys for UI Preferences */
|
/* Keys for UI Preferences */
|
||||||
#define UI_PREF_PROMPT_ON_QUIT "UIOptions/ConfirmOnQuit"
|
#define UI_PREF_PROMPT_ON_QUIT "UIOptions/ConfirmOnQuit"
|
||||||
@ -160,26 +166,40 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags)
|
|||||||
QActionGroup *grp = new QActionGroup(this);
|
QActionGroup *grp = new QActionGroup(this);
|
||||||
|
|
||||||
|
|
||||||
ui.stackPages->add(networkDialog = new NetworkDialog(ui.stackPages),
|
NewsFeed *newsFeed = NULL;
|
||||||
createPageAction(QIcon(IMAGE_NETWORK), tr("Network"), grp));
|
ui.stackPages->add(newsFeed = new NewsFeed(ui.stackPages),
|
||||||
|
createPageAction(QIcon(IMAGE_NEWSFEED), tr("News Feed"), grp));
|
||||||
|
|
||||||
|
|
||||||
ui.stackPages->add(peersDialog = new PeersDialog(ui.stackPages),
|
ui.stackPages->add(peersDialog = new PeersDialog(ui.stackPages),
|
||||||
createPageAction(QIcon(IMAGE_PEERS), tr("Friends"), grp));
|
createPageAction(QIcon(IMAGE_PEERS), tr("Friends"), grp));
|
||||||
|
|
||||||
|
//PeersFeed *peersFeed = NULL;
|
||||||
|
//ui.stackPages->add(peersFeed = new PeersFeed(ui.stackPages),
|
||||||
|
// createPageAction(QIcon(IMAGE_PEERS), tr("Peers"), grp));
|
||||||
|
|
||||||
ui.stackPages->add(searchDialog = new SearchDialog(ui.stackPages),
|
ui.stackPages->add(searchDialog = new SearchDialog(ui.stackPages),
|
||||||
createPageAction(QIcon(IMAGE_SEARCH), tr("Search"), grp));
|
createPageAction(QIcon(IMAGE_SEARCH), tr("Search"), grp));
|
||||||
|
|
||||||
ui.stackPages->add(transfersDialog = new TransfersDialog(ui.stackPages),
|
ui.stackPages->add(transfersDialog = new TransfersDialog(ui.stackPages),
|
||||||
createPageAction(QIcon(IMAGE_TRANSFERS), tr("Transfers"), grp));
|
createPageAction(QIcon(IMAGE_TRANSFERS), tr("Transfers"), grp));
|
||||||
|
|
||||||
|
//TransferFeed *transferFeed = NULL;
|
||||||
|
//ui.stackPages->add(transferFeed = new TransferFeed(ui.stackPages),
|
||||||
|
// createPageAction(QIcon(IMAGE_LINKS), tr("Transfers"), grp));
|
||||||
|
|
||||||
ui.stackPages->add(sharedfilesDialog = new SharedFilesDialog(ui.stackPages),
|
ui.stackPages->add(sharedfilesDialog = new SharedFilesDialog(ui.stackPages),
|
||||||
createPageAction(QIcon(IMAGE_FILES), tr("Files"), grp));
|
createPageAction(QIcon(IMAGE_FILES), tr("Files"), grp));
|
||||||
|
|
||||||
//ui.stackPages->add(chatDialog = new ChatDialog(ui.stackPages),
|
//ui.stackPages->add(chatDialog = new ChatDialog(ui.stackPages),
|
||||||
// createPageAction(QIcon(IMAGE_CHAT), tr("Chat"), grp));
|
// createPageAction(QIcon(IMAGE_CHAT), tr("Chat"), grp));
|
||||||
|
|
||||||
|
//MsgFeed *msgFeed = NULL;
|
||||||
|
//ui.stackPages->add(msgFeed = new MsgFeed(ui.stackPages),
|
||||||
|
// createPageAction(QIcon(IMAGE_MESSAGES), tr("Messages"), grp));
|
||||||
|
|
||||||
ui.stackPages->add(messagesDialog = new MessagesDialog(ui.stackPages),
|
ui.stackPages->add(messagesDialog = new MessagesDialog(ui.stackPages),
|
||||||
createPageAction(QIcon(IMAGE_MESSAGES), tr("Messages"), grp));
|
createPageAction(QIcon(IMAGE_MESSAGES), tr("Messages"), grp));
|
||||||
|
|
||||||
LinksDialog *linksDialog = NULL;
|
LinksDialog *linksDialog = NULL;
|
||||||
|
|
||||||
@ -197,6 +217,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags)
|
|||||||
ui.stackPages->add(forumsDialog = new ForumsDialog(ui.stackPages),
|
ui.stackPages->add(forumsDialog = new ForumsDialog(ui.stackPages),
|
||||||
createPageAction(QIcon(IMAGE_FORUMS), tr("Forums"), grp));
|
createPageAction(QIcon(IMAGE_FORUMS), tr("Forums"), grp));
|
||||||
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
channelsDialog = NULL;
|
channelsDialog = NULL;
|
||||||
ui.stackPages->add(linksDialog = new LinksDialog(ui.stackPages),
|
ui.stackPages->add(linksDialog = new LinksDialog(ui.stackPages),
|
||||||
@ -211,6 +232,10 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ui.stackPages->add(networkDialog = new NetworkDialog(ui.stackPages),
|
||||||
|
createPageAction(QIcon(IMAGE_NETWORK), tr("Network"), grp));
|
||||||
|
|
||||||
|
|
||||||
//ui.stackPages->add(new HelpDialog(ui.stackPages),
|
//ui.stackPages->add(new HelpDialog(ui.stackPages),
|
||||||
// createPageAction(QIcon(IMAGE_ABOUT), tr("About/Help"), grp));
|
// createPageAction(QIcon(IMAGE_ABOUT), tr("About/Help"), grp));
|
||||||
|
|
||||||
@ -540,8 +565,8 @@ void MainWindow::createActions()
|
|||||||
_appAct = new QAction(QIcon(IMAGE_UNFINISHED), tr("Applications"), this);
|
_appAct = new QAction(QIcon(IMAGE_UNFINISHED), tr("Applications"), this);
|
||||||
connect(_appAct, SIGNAL(triggered()),this, SLOT(showApplWindow()));
|
connect(_appAct, SIGNAL(triggered()),this, SLOT(showApplWindow()));
|
||||||
|
|
||||||
_smplayerAct = new QAction(QIcon(IMAGE_SMPLAYER), tr("SMPlayer"), this);
|
//_smplayerAct = new QAction(QIcon(IMAGE_SMPLAYER), tr("SMPlayer"), this);
|
||||||
connect(_smplayerAct, SIGNAL(triggered()),this, SLOT(showsmplayer()));
|
//connect(_smplayerAct, SIGNAL(triggered()),this, SLOT(showsmplayer()));
|
||||||
|
|
||||||
_helpAct = new QAction(QIcon(IMG_HELP), tr("Help"), this);
|
_helpAct = new QAction(QIcon(IMG_HELP), tr("Help"), this);
|
||||||
connect(_helpAct, SIGNAL(triggered()), this, SLOT(showHelpDialog()));
|
connect(_helpAct, SIGNAL(triggered()), this, SLOT(showHelpDialog()));
|
||||||
@ -668,14 +693,17 @@ void MainWindow::startqcheckers()
|
|||||||
/** Shows smplayer */
|
/** Shows smplayer */
|
||||||
void MainWindow::showsmplayer()
|
void MainWindow::showsmplayer()
|
||||||
{
|
{
|
||||||
static SMPlayer * smplayer = 0;
|
return;
|
||||||
|
|
||||||
if (mSMPlayer == 0)
|
if (mSMPlayer == 0)
|
||||||
{
|
{
|
||||||
mSMPlayer = new SMPlayer(QString::null, this);
|
mSMPlayer = new SMPlayer(QString::null, this);
|
||||||
|
mSMPlayer->gui()->hide();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mSMPlayer->gui()->show();
|
||||||
}
|
}
|
||||||
mSMPlayer->gui()->show();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::playFiles(QStringList files)
|
void MainWindow::playFiles(QStringList files)
|
||||||
@ -686,7 +714,8 @@ void MainWindow::playFiles(QStringList files)
|
|||||||
|
|
||||||
std::cerr << "MainWindow::playFiles() showsmplayer() done" << std::endl;
|
std::cerr << "MainWindow::playFiles() showsmplayer() done" << std::endl;
|
||||||
|
|
||||||
mSMPlayer->gui()->openFiles(files);
|
if (mSMPlayer)
|
||||||
|
mSMPlayer->gui()->openFiles(files);
|
||||||
|
|
||||||
std::cerr << "MainWindow::playFiles() done" << std::endl;
|
std::cerr << "MainWindow::playFiles() done" << std::endl;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user