summaryrefslogtreecommitdiffstats
path: root/pica-client/skynet.cpp
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2013-08-30 13:34:02 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2013-08-30 13:34:02 +0000
commit0ef7c1d7471ce20fe54729c27858db864aedee91 (patch)
tree3a71b713febdbea19fc7358af68d9f6cfa3c3158 /pica-client/skynet.cpp
parentbfd5528f28264772a245dc29f41d4bb5d29fb1eb (diff)
downloadpica-pica-0ef7c1d7471ce20fe54729c27858db864aedee91.tar.gz
pica-pica-0ef7c1d7471ce20fe54729c27858db864aedee91.zip
updated pica-client to make it handle new id format. quint32 type for id is replaced with QByteArray in most places. Implemented verification callbacks in client and node that allow self-signed certificates
git-svn-id: svn://localhost/project_picapica/trunk@266 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'pica-client/skynet.cpp')
-rw-r--r--pica-client/skynet.cpp72
1 files changed, 36 insertions, 36 deletions
diff --git a/pica-client/skynet.cpp b/pica-client/skynet.cpp
index c86c22c..111b79a 100644
--- a/pica-client/skynet.cpp
+++ b/pica-client/skynet.cpp
@@ -30,7 +30,7 @@ PICA_client_init(&cbs);
nodelink = NULL;
-connect(this, SIGNAL(PeerCertificateReceived(quint32,QString,bool*)), this, SLOT(verify_peer_cert(quint32,QString,bool*)),Qt::DirectConnection);
+connect(this, SIGNAL(PeerCertificateReceived(QByteArray,QString,bool*)), this, SLOT(verify_peer_cert(QByteArray,QString,bool*)),Qt::DirectConnection);
}
@@ -60,12 +60,12 @@ void SkyNet::nodethread_connected(QString addr, quint16 port, NodeThread *thread
emit BecameSelfAware();
//restore old peer connections, if any
- QList<quint32> c2c_peer_ids;
+ QList<QByteArray> c2c_peer_ids;
//load undelivered messages from history
if (msgqueues.isEmpty())
{
- History h(config_dbname, account_id);
+ History h(config_dbname, QByteArray((const char*)account_id, PICA_ID_SIZE));
msgqueues = h.GetUndeliveredMessages();
}
@@ -78,7 +78,7 @@ void SkyNet::nodethread_connected(QString addr, quint16 port, NodeThread *thread
write_mutex.lock();
struct PICA_chaninfo *chan = NULL;
- ret = PICA_create_channel(nodelink, c2c_peer_ids[i], &chan);
+ ret = PICA_create_channel(nodelink, (const unsigned char*)c2c_peer_ids[i].constData(), &chan);
qDebug()<<"restoring channel to "<<c2c_peer_ids[i]<<" ret ="<<ret<<"\n";
write_mutex.unlock();
@@ -95,12 +95,12 @@ void SkyNet::node_status_changed(QString addr, quint16 port, bool alive)
nodes.UpdateStatus(nr, alive);
}
-void SkyNet::verify_peer_cert(quint32 peer_id, QString cert_pem, bool *verified)
+void SkyNet::verify_peer_cert(QByteArray peer_id, QString cert_pem, bool *verified)
{
// ViewCertDialog vcd;
// vcd.SetCert(cert_pem);
// vcd.exec();
- Contacts cnt(config_dbname, account_id);
+ Contacts cnt(config_dbname, QByteArray((const char*)account_id, PICA_ID_SIZE));
QString stored_cert;
if ((stored_cert = cnt.GetContactCert(peer_id)).isEmpty())
@@ -148,7 +148,7 @@ void SkyNet::timerEvent(QTimerEvent *e)
{
if (self_aware)
{
- QList<quint32> c2c_peer_ids = msgqueues.keys();
+ QList<QByteArray> c2c_peer_ids = msgqueues.keys();
write_mutex.lock();
@@ -160,7 +160,7 @@ if (self_aware)
struct PICA_chaninfo *chan = NULL;
- ret = PICA_create_channel(nodelink, c2c_peer_ids[i], &chan);
+ ret = PICA_create_channel(nodelink, (const unsigned char*)c2c_peer_ids[i].constData(), &chan);
qDebug()<<"restoring channel to "<<c2c_peer_ids[i]<<" ret ="<<ret<<" in timer event\n";
@@ -213,7 +213,7 @@ bool SkyNet::isSelfAware()
return self_aware;
}
-void SkyNet::SendMessage(quint32 to, QString msg)
+void SkyNet::SendMessage(QByteArray to, QString msg)
{
int ret = PICA_OK;
struct PICA_chaninfo *iptr;
@@ -242,7 +242,7 @@ if ( (iptr = find_active_chan(to)) )
{
struct PICA_chaninfo *chan = NULL;
- ret = PICA_create_channel(nodelink, to, &chan);
+ ret = PICA_create_channel(nodelink, (const unsigned char*)to.constData(), &chan);
QList<QString> l;
l.append(msg);
@@ -257,7 +257,7 @@ write_mutex.unlock();//>>
}
-void SkyNet::flush_msgqueue(quint32 to)
+void SkyNet::flush_msgqueue(QByteArray to)
{
struct PICA_chaninfo *chan;
int ret;
@@ -288,7 +288,7 @@ void SkyNet::flush_msgqueue(quint32 to)
}
}
-struct PICA_chaninfo * SkyNet::find_active_chan(quint32 peer_id)
+struct PICA_chaninfo * SkyNet::find_active_chan(QByteArray peer_id)
{
if (!nodelink)
return NULL;
@@ -297,7 +297,7 @@ struct PICA_chaninfo *iptr = nodelink->chan_list_head;
while(iptr)
{
- if (iptr->state == PICA_CHANSTATE_ACTIVE && iptr->peer_id == peer_id)
+ if (iptr->state == PICA_CHANSTATE_ACTIVE && QByteArray((const char*)iptr->peer_id, PICA_ID_SIZE) == peer_id)
break;
iptr = iptr->next;
@@ -306,9 +306,9 @@ while(iptr)
return iptr;
}
-QList<quint32> SkyNet::filter_existing_chans(QList<quint32> peer_ids)
+QList<QByteArray> SkyNet::filter_existing_chans(QList<QByteArray> peer_ids)
{
- QList<quint32> ret = peer_ids;
+ QList<QByteArray> ret = peer_ids;
if (!nodelink)
return ret;
@@ -317,8 +317,8 @@ QList<quint32> SkyNet::filter_existing_chans(QList<quint32> peer_ids)
while(iptr)
{
- if (peer_ids.contains(iptr->peer_id))
- ret.removeOne(iptr->peer_id);
+ if (peer_ids.contains(QByteArray((const char*)iptr->peer_id, PICA_ID_SIZE)))
+ ret.removeOne((const char*)iptr->peer_id);
iptr = iptr->next;
}
@@ -326,22 +326,22 @@ QList<quint32> SkyNet::filter_existing_chans(QList<quint32> peer_ids)
return ret;
}
-void SkyNet::emit_Delivered(quint32 to)
+void SkyNet::emit_Delivered(QByteArray to)
{
emit Delivered(to);
}
-void SkyNet::emit_MessageReceived(quint32 from, QString msg)
+void SkyNet::emit_MessageReceived(QByteArray from, QString msg)
{
emit MessageReceived(from, msg);
}
-void SkyNet::emit_UnableToDeliver(quint32 to, QString msg)
+void SkyNet::emit_UnableToDeliver(QByteArray to, QString msg)
{
emit UnableToDeliver(to, msg);
}
-void SkyNet::emit_PeerCertificateReceived(quint32 peer_id, QString cert_pem, bool *verified)
+void SkyNet::emit_PeerCertificateReceived(QByteArray peer_id, QString cert_pem, bool *verified)
{
emit PeerCertificateReceived(peer_id, cert_pem, verified);
}
@@ -351,36 +351,36 @@ void SkyNet::emit_PeerCertificateReceived(quint32 peer_id, QString cert_pem, boo
//all callbacks are executed in separate thread, created in Nodethread instance, REMEMBER THAT !!!
// write_mutex is locked
-void SkyNet::newmsg_cb(unsigned int peer_id, char *msgbuf, unsigned int nb, int type)
+void SkyNet::newmsg_cb(const unsigned char *peer_id, char *msgbuf, unsigned int nb, int type)
{
QString msg = QString::fromUtf8(msgbuf, nb);
-skynet->emit_MessageReceived(peer_id, msg);
+skynet->emit_MessageReceived(QByteArray((const char*)peer_id, PICA_ID_SIZE), msg);
}
-void SkyNet::msgok_cb(unsigned int peer_id)
+void SkyNet::msgok_cb(const unsigned char *peer_id)
{
-skynet->emit_Delivered(peer_id);
+skynet->emit_Delivered(QByteArray((const char*)peer_id, PICA_ID_SIZE));
}
-void SkyNet::channel_established_cb(unsigned int peer_id)
+void SkyNet::channel_established_cb(const unsigned char *peer_id)
{
-skynet->flush_msgqueue(peer_id);
+skynet->flush_msgqueue(QByteArray((const char*)peer_id, PICA_ID_SIZE));
}
-void SkyNet::channel_failed(unsigned int peer_id)
+void SkyNet::channel_failed(const unsigned char *peer_id)
{
- qDebug()<<"channel failed ("<<peer_id<<")\n";
+ qDebug()<<"channel failed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()<<")\n";
}
-int SkyNet::accept_cb(unsigned int caller_id)
+int SkyNet::accept_cb(const unsigned char *caller_id)
{
return 1; //implement black list
}
-void SkyNet::notfound_cb(unsigned int callee_id)
+void SkyNet::notfound_cb(const unsigned char *callee_id)
{
- qDebug()<<"not found ("<<callee_id<<")\n";
+ qDebug()<<"not found ("<<QByteArray((const char*)callee_id, PICA_ID_SIZE).toBase64()<<")\n";
/*
if (skynet->msgqueues.contains(callee_id))
@@ -395,9 +395,9 @@ void SkyNet::notfound_cb(unsigned int callee_id)
*/
}
-void SkyNet::channel_closed_cb(unsigned int peer_id, int reason)
+void SkyNet::channel_closed_cb(const unsigned char *peer_id, int reason)
{
- qDebug()<<"channel closed ("<<peer_id<<")\n";
+ qDebug()<<"channel closed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()<<")\n";
}
@@ -407,11 +407,11 @@ void SkyNet::nodelist_cb(int type, void *addr_bin, const char *addr_str, unsigne
skynet->nodes.Add(nr);
}
-int SkyNet::peer_cert_verify_cb(unsigned int peer_id, const char *cert_pem, unsigned int nb)
+int SkyNet::peer_cert_verify_cb(const unsigned char *peer_id, const char *cert_pem, unsigned int nb)
{
bool verified = true;
- skynet->emit_PeerCertificateReceived(peer_id, QString::fromAscii(cert_pem, nb), &verified);
+ skynet->emit_PeerCertificateReceived(QByteArray((const char*)peer_id, PICA_ID_SIZE), QString::fromAscii(cert_pem, nb), &verified);
if (!verified)
return 0;