mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-26 23:36:59 -05:00
Add ConnectFriendWizard improvement.
Add cert details in friendCertCleanLabel tooltip. Use qss for background color of friendCertCleanLabel. Add Known IP in final view.
This commit is contained in:
parent
e8b97405b9
commit
a072b151f5
@ -552,26 +552,24 @@ unsigned short RsCertificate::loc_port_us() const
|
|||||||
return (int)ipv4_internal_ip_and_port[4]*256 + (int)ipv4_internal_ip_and_port[5] ;
|
return (int)ipv4_internal_ip_and_port[4]*256 + (int)ipv4_internal_ip_and_port[5] ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsCertificate::cleanCertificate( const std::string& input, std::string& output, Format& format, uint32_t& error_code, bool check_content )
|
bool RsCertificate::cleanCertificate( const std::string& input, std::string& output, Format& format, uint32_t& error_code, bool check_content, RsPeerDetails& details)
|
||||||
{
|
{
|
||||||
if(cleanRadix64(input,output,error_code))
|
if(cleanRadix64(input,output,error_code))
|
||||||
{
|
{
|
||||||
RsPeerDetails details;
|
|
||||||
|
|
||||||
if(rsPeers->parseShortInvite(output,details,error_code))
|
if(rsPeers->parseShortInvite(output,details,error_code))
|
||||||
{
|
{
|
||||||
format = RS_CERTIFICATE_SHORT_RADIX;
|
format = RS_CERTIFICATE_SHORT_RADIX;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Clear details. As parseShortInvite may make it dirty.
|
||||||
|
details = RsPeerDetails();
|
||||||
format = RS_CERTIFICATE_RADIX;
|
format = RS_CERTIFICATE_RADIX;
|
||||||
|
|
||||||
if(!check_content) return true;
|
if(!check_content) return true;
|
||||||
|
|
||||||
uint32_t errCode;
|
return rsPeers->loadDetailsFromStringCert(input,details,error_code);
|
||||||
auto crt = RsCertificate::fromString(input, errCode);
|
|
||||||
error_code = static_cast<int>(errCode);
|
|
||||||
return crt != nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -84,7 +84,7 @@ public:
|
|||||||
|
|
||||||
static bool cleanCertificate(
|
static bool cleanCertificate(
|
||||||
const std::string& input, std::string& output,
|
const std::string& input, std::string& output,
|
||||||
RsCertificate::Format& format, uint32_t& error_code, bool check_content);
|
RsCertificate::Format& format, uint32_t& error_code, bool check_content, RsPeerDetails& details);
|
||||||
|
|
||||||
const std::set<RsUrl>& locators() const { return mLocators; }
|
const std::set<RsUrl>& locators() const { return mLocators; }
|
||||||
|
|
||||||
|
@ -887,7 +887,7 @@ public:
|
|||||||
// Certificate utils
|
// Certificate utils
|
||||||
virtual bool cleanCertificate(
|
virtual bool cleanCertificate(
|
||||||
const std::string& certstr, std::string& cleanCert,
|
const std::string& certstr, std::string& cleanCert,
|
||||||
bool& is_short_format, uint32_t& error_code ) = 0;
|
bool& is_short_format, uint32_t& error_code, RsPeerDetails& details) = 0;
|
||||||
virtual std::string saveCertificateToString(const RsPeerId &id) = 0;
|
virtual std::string saveCertificateToString(const RsPeerId &id) = 0;
|
||||||
|
|
||||||
virtual bool signGPGCertificate(const RsPgpId &gpg_id,const std::string& gpg_passphrase) = 0;
|
virtual bool signGPGCertificate(const RsPgpId &gpg_id,const std::string& gpg_passphrase) = 0;
|
||||||
|
@ -1758,11 +1758,11 @@ bool p3Peers::loadDetailsFromStringCert( const std::string &certstr,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool p3Peers::cleanCertificate(const std::string &certstr, std::string &cleanCert,bool& is_short_format,uint32_t& error_code)
|
bool p3Peers::cleanCertificate(const std::string &certstr, std::string &cleanCert,bool& is_short_format,uint32_t& error_code,RsPeerDetails& details)
|
||||||
{
|
{
|
||||||
RsCertificate::Format format ;
|
RsCertificate::Format format ;
|
||||||
|
|
||||||
bool res = RsCertificate::cleanCertificate(certstr,cleanCert,format,error_code,true) ;
|
bool res = RsCertificate::cleanCertificate(certstr,cleanCert,format,error_code,true,details) ;
|
||||||
|
|
||||||
if(format == RsCertificate::RS_CERTIFICATE_RADIX)
|
if(format == RsCertificate::RS_CERTIFICATE_RADIX)
|
||||||
is_short_format = false;
|
is_short_format = false;
|
||||||
|
@ -163,7 +163,7 @@ public:
|
|||||||
virtual bool loadPgpKeyFromBinaryData( const unsigned char *bin_key_data,uint32_t bin_key_len, RsPgpId& gpg_id, std::string& error_string ) override;
|
virtual bool loadPgpKeyFromBinaryData( const unsigned char *bin_key_data,uint32_t bin_key_len, RsPgpId& gpg_id, std::string& error_string ) override;
|
||||||
virtual bool loadDetailsFromStringCert(const std::string &cert, RsPeerDetails &pd, uint32_t& error_code) override;
|
virtual bool loadDetailsFromStringCert(const std::string &cert, RsPeerDetails &pd, uint32_t& error_code) override;
|
||||||
|
|
||||||
virtual bool cleanCertificate(const std::string &certstr, std::string &cleanCert, bool &is_short_format, uint32_t& error_code) override;
|
virtual bool cleanCertificate(const std::string &certstr, std::string &cleanCert, bool &is_short_format, uint32_t& error_code, RsPeerDetails& details) override;
|
||||||
virtual std::string saveCertificateToString(const RsPeerId &id) override;
|
virtual std::string saveCertificateToString(const RsPeerId &id) override;
|
||||||
|
|
||||||
virtual bool signGPGCertificate(const RsPgpId &id,const std::string& gpg_passphrase) override;
|
virtual bool signGPGCertificate(const RsPgpId &id,const std::string& gpg_passphrase) override;
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "ConnectFriendWizard.h"
|
#include "ConnectFriendWizard.h"
|
||||||
#include "ui_ConnectFriendWizard.h"
|
#include "ui_ConnectFriendWizard.h"
|
||||||
#include "gui/common/PeerDefs.h"
|
#include "gui/common/PeerDefs.h"
|
||||||
|
#include "gui/connect/ConfCertDialog.h"
|
||||||
#include "gui/notifyqt.h"
|
#include "gui/notifyqt.h"
|
||||||
#include "gui/common/GroupDefs.h"
|
#include "gui/common/GroupDefs.h"
|
||||||
#include "gui/msgs/MessageComposer.h"
|
#include "gui/msgs/MessageComposer.h"
|
||||||
@ -572,6 +573,16 @@ void ConnectFriendWizard::initializePage(int id)
|
|||||||
ui->ipEdit->setText(s);
|
ui->ipEdit->setText(s);
|
||||||
ui->signersEdit->setPlainText(ts);
|
ui->signersEdit->setPlainText(ts);
|
||||||
|
|
||||||
|
ui->knownIpLabel->setHidden(peerDetails.ipAddressList.empty());
|
||||||
|
ui->knownIpEdit->setHidden(peerDetails.ipAddressList.empty());
|
||||||
|
{
|
||||||
|
QString ipList;
|
||||||
|
for(auto& it : peerDetails.ipAddressList)
|
||||||
|
ipList.append(QString::fromStdString(it) + "\n");
|
||||||
|
|
||||||
|
ui->knownIpEdit->setPlainText(ipList);
|
||||||
|
}
|
||||||
|
|
||||||
fillGroups(this, ui->groupComboBox, groupId);
|
fillGroups(this, ui->groupComboBox, groupId);
|
||||||
|
|
||||||
if(peerDetails.isHiddenNode)
|
if(peerDetails.isHiddenNode)
|
||||||
@ -587,15 +598,16 @@ void ConnectFriendWizard::initializePage(int id)
|
|||||||
}
|
}
|
||||||
if(mIsShortInvite)
|
if(mIsShortInvite)
|
||||||
{
|
{
|
||||||
ui->nameEdit->setText(tr("[Unknown]"));
|
if(ui->nameEdit->text().isEmpty())
|
||||||
ui->addKeyToKeyring_CB->setChecked(false);
|
ui->nameEdit->setText(tr("[Unknown]"));
|
||||||
ui->addKeyToKeyring_CB->setEnabled(false);
|
ui->addKeyToKeyring_CB->setChecked(false);
|
||||||
|
ui->addKeyToKeyring_CB->setEnabled(false);
|
||||||
ui->signersEdit->hide();
|
ui->signersEdit->hide();
|
||||||
ui->signersLabel->hide();
|
ui->signersLabel->hide();
|
||||||
ui->signGPGCheckBox->setChecked(false);
|
ui->signGPGCheckBox->setChecked(false);
|
||||||
ui->signGPGCheckBox->setEnabled(false);
|
ui->signGPGCheckBox->setEnabled(false);
|
||||||
ui->acceptNoSignGPGCheckBox->setChecked(true);
|
ui->acceptNoSignGPGCheckBox->setChecked(true);
|
||||||
ui->acceptNoSignGPGCheckBox->setEnabled(false);
|
ui->acceptNoSignGPGCheckBox->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->ipEdit->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
ui->ipEdit->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
@ -856,30 +868,30 @@ void ConnectFriendWizard::cleanFriendCert()
|
|||||||
{
|
{
|
||||||
bool certValid = false;
|
bool certValid = false;
|
||||||
QString errorMsg ;
|
QString errorMsg ;
|
||||||
|
QString certDetail;
|
||||||
std::string cert = ui->friendCertEdit->toPlainText().toUtf8().constData();
|
std::string cert = ui->friendCertEdit->toPlainText().toUtf8().constData();
|
||||||
|
|
||||||
if (cert.empty()) {
|
if (cert.empty()) {
|
||||||
ui->friendCertCleanLabel->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":/images/delete.png"));
|
|
||||||
ui->friendCertCleanLabel->setToolTip("");
|
ui->friendCertCleanLabel->setToolTip("");
|
||||||
ui->friendCertCleanLabel->setStyleSheet("");
|
|
||||||
errorMsg = tr("");
|
errorMsg = tr("");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
std::string cleanCert;
|
std::string cleanCert;
|
||||||
uint32_t error_code;
|
uint32_t error_code;
|
||||||
|
RsPeerDetails details;
|
||||||
|
|
||||||
if (rsPeers->cleanCertificate(cert, cleanCert, mIsShortInvite, error_code))
|
if (rsPeers->cleanCertificate(cert, cleanCert, mIsShortInvite, error_code, details))
|
||||||
{
|
{
|
||||||
certValid = true;
|
certValid = true;
|
||||||
|
|
||||||
if (cert != cleanCert)
|
if (cert != cleanCert)
|
||||||
{
|
{
|
||||||
QTextCursor textCursor = ui->friendCertEdit->textCursor();
|
QTextCursor textCursor = ui->friendCertEdit->textCursor();
|
||||||
|
|
||||||
whileBlocking(ui->friendCertEdit)->setPlainText(QString::fromUtf8(cleanCert.c_str()));
|
whileBlocking(ui->friendCertEdit)->setPlainText(QString::fromUtf8(cleanCert.c_str()));
|
||||||
whileBlocking(ui->friendCertEdit)->setTextCursor(textCursor);
|
whileBlocking(ui->friendCertEdit)->setTextCursor(textCursor);
|
||||||
|
|
||||||
ui->friendCertCleanLabel->setStyleSheet("");
|
certDetail = ConfCertDialog::getCertificateDescription(details,false,mIsShortInvite,!details.ipAddressList.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mIsShortInvite)
|
if (mIsShortInvite)
|
||||||
@ -887,7 +899,7 @@ void ConnectFriendWizard::cleanFriendCert()
|
|||||||
else
|
else
|
||||||
errorMsg = tr("Valid certificate") ;
|
errorMsg = tr("Valid certificate") ;
|
||||||
|
|
||||||
ui->friendCertCleanLabel->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":/images/accepted16.png"));
|
ui->friendCertCleanLabel->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":/images/accepted16.png"));
|
||||||
} else {
|
} else {
|
||||||
if (error_code > 0) {
|
if (error_code > 0) {
|
||||||
switch (error_code) {
|
switch (error_code) {
|
||||||
@ -903,16 +915,17 @@ void ConnectFriendWizard::cleanFriendCert()
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
errorMsg = tr("Not a valid Retroshare certificate!") ;
|
errorMsg = tr("Not a valid Retroshare certificate!") ;
|
||||||
ui->friendCertCleanLabel->setStyleSheet("QLabel#friendCertCleanLabel {border: 1px solid #DCDC41; border-radius: 6px; background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2);}");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ui->friendCertCleanLabel->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":/images/delete.png"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->friendCertCleanLabel->setPixmap(certValid ? FilesDefs::getPixmapFromQtResourcePath(":/images/accepted16.png") : FilesDefs::getPixmapFromQtResourcePath(":/images/delete.png"));
|
ui->friendCertCleanLabel->setPixmap(certValid ? FilesDefs::getPixmapFromQtResourcePath(":/images/accepted16.png") : FilesDefs::getPixmapFromQtResourcePath(":/images/delete.png"));
|
||||||
ui->friendCertCleanLabel->setToolTip(errorMsg);
|
ui->friendCertCleanLabel->setToolTip("<p>" + errorMsg + (certValid ? "\n" + certDetail : "") + "</p>");
|
||||||
ui->friendCertCleanLabel->setText(errorMsg);
|
ui->friendCertCleanLabel->setText(errorMsg);
|
||||||
|
ui->friendCertCleanLabel->setProperty("WrongValue", !certValid && !errorMsg.isEmpty());
|
||||||
|
ui->friendCertCleanLabel->style()->unpolish(ui->friendCertCleanLabel);
|
||||||
|
ui->friendCertCleanLabel->style()->polish( ui->friendCertCleanLabel);
|
||||||
|
|
||||||
ui->TextPage->setComplete(certValid);
|
ui->TextPage->setComplete(certValid);
|
||||||
}
|
}
|
||||||
|
@ -590,7 +590,7 @@
|
|||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">Email</string>
|
<string notr="true">ProfilId</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -629,7 +629,7 @@
|
|||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Signers</string>
|
<string>Signers:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -675,6 +675,16 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="7" column="0">
|
||||||
|
<widget class="QLabel" name="knownIpLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Known IP:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="1">
|
||||||
|
<widget class="QPlainTextEdit" name="knownIpEdit"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user