summaryrefslogtreecommitdiffstats
path: root/pica-client/skynet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pica-client/skynet.cpp')
-rw-r--r--pica-client/skynet.cpp797
1 files changed, 401 insertions, 396 deletions
diff --git a/pica-client/skynet.cpp b/pica-client/skynet.cpp
index a016b48..8e22635 100644
--- a/pica-client/skynet.cpp
+++ b/pica-client/skynet.cpp
@@ -13,41 +13,42 @@
#include "settings.h"
SkyNet::SkyNet()
- : nodes(config_dbname), QObject(0)
+ : nodes(config_dbname), QObject(0)
{
- self_aware = false;
+ self_aware = false;
-PICA_client_callbacks cbs = {
- newmsg_cb,
- msgok_cb,
- c2c_established_cb,
- c2c_failed,
- accept_cb,
- notfound_cb,
- c2c_closed_cb,
- nodelist_cb,
- peer_cert_verify_cb,
- accept_file_cb,
- accepted_file_cb,
- denied_file_cb,
- file_progress,
- file_control,
- file_finished,
- c2n_established_cb,
- c2n_failed_cb,
- c2n_closed_cb,
- listener_error_cb
- };
-
-PICA_client_init(&cbs);
-
-this->active_nodelink = NULL;
-this->acc = NULL;
-this->listener = NULL;
-
-connect(this, SIGNAL(PeerCertificateReceived(QByteArray,QString,bool*)), this, SLOT(verify_peer_cert(QByteArray,QString,bool*)),Qt::DirectConnection);
-
-event_loop_timer_id = startTimer(0);
+ PICA_client_callbacks cbs =
+ {
+ newmsg_cb,
+ msgok_cb,
+ c2c_established_cb,
+ c2c_failed,
+ accept_cb,
+ notfound_cb,
+ c2c_closed_cb,
+ nodelist_cb,
+ peer_cert_verify_cb,
+ accept_file_cb,
+ accepted_file_cb,
+ denied_file_cb,
+ file_progress,
+ file_control,
+ file_finished,
+ c2n_established_cb,
+ c2n_failed_cb,
+ c2n_closed_cb,
+ listener_error_cb
+ };
+
+ PICA_client_init(&cbs);
+
+ this->active_nodelink = NULL;
+ this->acc = NULL;
+ this->listener = NULL;
+
+ connect(this, SIGNAL(PeerCertificateReceived(QByteArray, QString, bool*)), this, SLOT(verify_peer_cert(QByteArray, QString, bool*)), Qt::DirectConnection);
+
+ event_loop_timer_id = startTimer(0);
}
@@ -101,7 +102,7 @@ void SkyNet::nodelink_activated(PICA_c2n *c2n)
ret = PICA_new_c2c(active_nodelink, (const unsigned char*)c2c_peer_ids[i].constData(), NULL, &chan);
- qDebug()<<"restoring c2c to "<<c2c_peer_ids[i]<<" ret ="<<ret<<"\n";
+ qDebug() << "restoring c2c to " << c2c_peer_ids[i] << " ret =" << ret << "\n";
}
//start timer
@@ -143,17 +144,17 @@ void SkyNet::nodelink_failed(PICA_c2n *c2n, int error)
case PICA_ERRPROTONEW:
emit StatusMsg(QString("Node %1:%2 has newer protocol version. Please check if update for pica-client is available")
- .arg(connecting_nodes[i].second.address)
- .arg(connecting_nodes[i].second.port),
- true);
+ .arg(connecting_nodes[i].second.address)
+ .arg(connecting_nodes[i].second.port),
+ true);
break;
case PICA_ERRPROTOOLD:
emit StatusMsg(QString("Node %1:%2 has older protocol. Disconnected.")
- .arg(connecting_nodes[i].second.address)
- .arg(connecting_nodes[i].second.port),
- false);
+ .arg(connecting_nodes[i].second.address)
+ .arg(connecting_nodes[i].second.port),
+ false);
break;
}
@@ -170,7 +171,7 @@ void SkyNet::nodelink_failed(PICA_c2n *c2n, int error)
void SkyNet::node_status_changed(Nodes::NodeRecord nr, bool alive)
{
- nodes.UpdateStatus(nr, alive);
+ nodes.UpdateStatus(nr, alive);
}
void SkyNet::verify_peer_cert(QByteArray peer_id, QString cert_pem, bool *verified)
@@ -178,55 +179,58 @@ void SkyNet::verify_peer_cert(QByteArray peer_id, QString cert_pem, bool *verifi
// ViewCertDialog vcd;
// vcd.SetCert(cert_pem);
// vcd.exec();
- Contacts cnt(config_dbname, Accounts::GetCurrentAccount().id);
- QString stored_cert;
-
+ Contacts cnt(config_dbname, Accounts::GetCurrentAccount().id);
+ QString stored_cert;
- if (!cnt.Exists(peer_id) && cnt.isOK())
- {
- cnt.Add(peer_id, Contacts::temporary);
- }
- if ((stored_cert = cnt.GetContactCert(peer_id)).isEmpty())
- {
- cnt.SetContactCert(peer_id, cert_pem);
- QString name = OpenSSLTool::NameFromCertString(cert_pem);
+ if (!cnt.Exists(peer_id) && cnt.isOK())
+ {
+ cnt.Add(peer_id, Contacts::temporary);
+ }
+ if ((stored_cert = cnt.GetContactCert(peer_id)).isEmpty())
+ {
+ cnt.SetContactCert(peer_id, cert_pem);
- cnt.SetContactName(peer_id, name);
+ QString name = OpenSSLTool::NameFromCertString(cert_pem);
- emit ContactsUpdated();
- }
- else
- {//compare certificates
- QString strip_pem[4] = {
- "-----BEGIN CERTIFICATE-----",
- "-----END CERTIFICATE-----",
- "-----BEGIN X509 CERTIFICATE-----",
- "-----END X509 CERTIFICATE-----"
- };
- QString stripped_stored_cert = stored_cert;
- QString stripped_received_cert = cert_pem;
+ cnt.SetContactName(peer_id, name);
- for (int i = 0; i < 4; i++)
- {
- stripped_stored_cert.replace(strip_pem[i], "");
- stripped_received_cert.replace(strip_pem[i], "");
- }
+ emit ContactsUpdated();
+ }
+ else
+ {
+ //compare certificates
+ QString strip_pem[4] =
+ {
+ "-----BEGIN CERTIFICATE-----",
+ "-----END CERTIFICATE-----",
+ "-----BEGIN X509 CERTIFICATE-----",
+ "-----END X509 CERTIFICATE-----"
+ };
+ QString stripped_stored_cert = stored_cert;
+ QString stripped_received_cert = cert_pem;
+
+ for (int i = 0; i < 4; i++)
+ {
+ stripped_stored_cert.replace(strip_pem[i], "");
+ stripped_received_cert.replace(strip_pem[i], "");
+ }
- QByteArray stored_DER, received_DER;
+ QByteArray stored_DER, received_DER;
- stored_DER = QByteArray::fromBase64(stripped_stored_cert.toAscii().constData());
- received_DER = QByteArray::fromBase64(stripped_received_cert.toAscii().constData());
+ stored_DER = QByteArray::fromBase64(stripped_stored_cert.toAscii().constData());
+ received_DER = QByteArray::fromBase64(stripped_received_cert.toAscii().constData());
- if (stored_DER.size() != received_DER.size() ||
- memcmp(stored_DER.constData(), received_DER.constData(), stored_DER.size()) != 0)
- {//put scary message here
- *verified = false;
- emit CertificateForged(peer_id, cert_pem, stored_cert);
- }
+ if (stored_DER.size() != received_DER.size() ||
+ memcmp(stored_DER.constData(), received_DER.constData(), stored_DER.size()) != 0)
+ {
+ //put scary message here
+ *verified = false;
+ emit CertificateForged(peer_id, cert_pem, stored_cert);
+ }
- }
+ }
}
void SkyNet::timerEvent(QTimerEvent *e)
@@ -258,8 +262,8 @@ void SkyNet::timerEvent(QTimerEvent *e)
}
- if (self_aware)
- {
+ if (self_aware)
+ {
QMap<QByteArray, QList<QString> > queues = msgqueues;
queues.unite(sndfilequeues);
@@ -275,42 +279,43 @@ void SkyNet::timerEvent(QTimerEvent *e)
ret = PICA_new_c2c(active_nodelink, (const unsigned char*)c2c_peer_ids[i].constData(), NULL, &chan);
- qDebug()<<"restoring c2c to "<<c2c_peer_ids[i]<<" ret ="<<ret<<" in timer event\n";
+ qDebug() << "restoring c2c to " << c2c_peer_ids[i] << " ret =" << ret << " in timer event\n";
}
- }
-else
- {
- killTimer(e->timerId());
- Accounts::AccountRecord acc = this->CurrentAccount();
- Join(acc);
- }
+ }
+ else
+ {
+ killTimer(e->timerId());
+ Accounts::AccountRecord acc = this->CurrentAccount();
+ Join(acc);
+ }
}
bool SkyNet::open_account()
{
- int ret;
+ int ret;
- AskPassword::clear();
- do
- {
- ret = PICA_open_acc(skynet_account.cert_file.toUtf8().constData(),
- skynet_account.pkey_file.toUtf8().constData(),
- DHParam::GetDHParamFilename().toUtf8().constData(),
- AskPassword::ask_password_cb,
- &acc);
-
- if (ret == PICA_ERRINVPKEYPASSPHRASE)
- AskPassword::setInvalidPassword();
- } while (ret == PICA_ERRINVPKEYPASSPHRASE);
+ AskPassword::clear();
+ do
+ {
+ ret = PICA_open_acc(skynet_account.cert_file.toUtf8().constData(),
+ skynet_account.pkey_file.toUtf8().constData(),
+ DHParam::GetDHParamFilename().toUtf8().constData(),
+ AskPassword::ask_password_cb,
+ &acc);
+
+ if (ret == PICA_ERRINVPKEYPASSPHRASE)
+ AskPassword::setInvalidPassword();
+ }
+ while (ret == PICA_ERRINVPKEYPASSPHRASE);
- qDebug() << "PICA_open_acc() returned " << ret;
+ qDebug() << "PICA_open_acc() returned " << ret;
- if (ret != PICA_OK)
- return false;
+ if (ret != PICA_OK)
+ return false;
- return true;
+ return true;
}
void SkyNet::Join(Accounts::AccountRecord &accrec)
@@ -318,21 +323,21 @@ void SkyNet::Join(Accounts::AccountRecord &accrec)
PICA_directc2c_config directc2c_cfg = PICA_DIRECTC2C_CFG_DISABLED;
Settings st(config_dbname);
- skynet_account = accrec;
+ skynet_account = accrec;
QList<Nodes::NodeRecord> noderecords = nodes.GetNodes();
- if (!acc)
- {
- if (!open_account())
- return;
- }
+ if (!acc)
+ {
+ if (!open_account())
+ return;
+ }
- if (noderecords.count()==0)
- {
+ if (noderecords.count() == 0)
+ {
emit StatusMsg(QString(tr("No known Pica Pica nodes")), true);
- return;
- }
+ return;
+ }
directc2c_cfg = (PICA_directc2c_config)st.loadValue("direct_c2c.state", 1).toInt();
@@ -342,9 +347,9 @@ void SkyNet::Join(Accounts::AccountRecord &accrec)
int loc_port = st.loadValue("direct_c2c.local_port", 2298).toInt();
int ret = PICA_new_listener(acc,
- st.loadValue("direct_c2c.public_addr", "0.0.0.0").toString().toAscii().constData(),
- pub_port,
- loc_port, &listener);
+ st.loadValue("direct_c2c.public_addr", "0.0.0.0").toString().toAscii().constData(),
+ pub_port,
+ loc_port, &listener);
if (ret != PICA_OK)
{
emit StatusMsg(QString(tr("Failed to open port %1 for incoming direct connections")).arg(loc_port), true);
@@ -360,13 +365,13 @@ void SkyNet::Join(Accounts::AccountRecord &accrec)
connecting_nodes.clear();
}
- for (int i = 0; i < noderecords.size();i++)
+ for (int i = 0; i < noderecords.size(); i++)
{
int ret;
struct PICA_c2n *c2n = NULL;
ret = PICA_new_c2n(acc, noderecords[i].address.toUtf8().constData(), noderecords[i].port,
- directc2c_cfg, listener, &c2n);
+ directc2c_cfg, listener, &c2n);
if (ret == PICA_OK)
{
@@ -377,15 +382,15 @@ void SkyNet::Join(Accounts::AccountRecord &accrec)
node_status_changed(noderecords[i], false);
}
}
-/*
- for (int i=0;i<nodelist.count() && !self_aware;i++)
- {//TODO FIXME сделать запуск потоков порциями, а не все сразу
- threads.append(new NodeThread(nodelist[i],&self_aware, acc,&nodelink, &write_mutex));
- connect(threads.last(), SIGNAL(finished()),this,SLOT(nodethread_finished()));
- connect(threads.last(), SIGNAL(NodeStatusChanged(QString,quint16,bool)), this, SLOT(node_status_changed(QString,quint16,bool)));
- connect(threads.last(), SIGNAL(ConnectedToNode(QString,quint16,NodeThread*)), this, SLOT(nodethread_connected(QString,quint16,NodeThread*)));
- connect(threads.last(), SIGNAL(ErrorMsg(QString)), this, SIGNAL(ErrMsgFromNode(QString)));
- }*/
+ /*
+ for (int i=0;i<nodelist.count() && !self_aware;i++)
+ {//TODO FIXME сделать запуск потоков порциями, а не все сразу
+ threads.append(new NodeThread(nodelist[i],&self_aware, acc,&nodelink, &write_mutex));
+ connect(threads.last(), SIGNAL(finished()),this,SLOT(nodethread_finished()));
+ connect(threads.last(), SIGNAL(NodeStatusChanged(QString,quint16,bool)), this, SLOT(node_status_changed(QString,quint16,bool)));
+ connect(threads.last(), SIGNAL(ConnectedToNode(QString,quint16,NodeThread*)), this, SLOT(nodethread_connected(QString,quint16,NodeThread*)));
+ connect(threads.last(), SIGNAL(ErrorMsg(QString)), this, SIGNAL(ErrMsgFromNode(QString)));
+ }*/
}
@@ -397,7 +402,7 @@ void SkyNet::Exit()
active_nodelink = NULL;
}
- self_aware = false;
+ self_aware = false;
killTimer(retry_timer_id);
@@ -413,369 +418,369 @@ void SkyNet::Exit()
bool SkyNet::isSelfAware()
{
- return self_aware;
+ return self_aware;
}
void SkyNet::SendFile(QByteArray to, QString filepath)
{
-int ret = PICA_OK;
-struct PICA_c2c *iptr;
+ int ret = PICA_OK;
+ struct PICA_c2c *iptr;
-if ( (iptr = find_active_chan(to)) )
- {
- ret = PICA_send_file(iptr, filepath.toUtf8().data());
+ if ( (iptr = find_active_chan(to)) )
+ {
+ ret = PICA_send_file(iptr, filepath.toUtf8().data());
- if (ret != PICA_OK)
- {
- //show error somewhere somehow
- }
+ if (ret != PICA_OK)
+ {
+ //show error somewhere somehow
+ }
- return;
- }
+ return;
+ }
- if (sndfilequeues.contains(to))
- {
- //sending multiple files is not supported yet
- }
- else
- {
- struct PICA_c2c *chan = NULL;
+ if (sndfilequeues.contains(to))
+ {
+ //sending multiple files is not supported yet
+ }
+ else
+ {
+ struct PICA_c2c *chan = NULL;
- ret = PICA_new_c2c(active_nodelink, (const unsigned char*)to.constData(), NULL, &chan);
+ ret = PICA_new_c2c(active_nodelink, (const unsigned char*)to.constData(), NULL, &chan);
- QList<QString> l;
- l.append(filepath);
- sndfilequeues[to] = l;
- }
+ QList<QString> l;
+ l.append(filepath);
+ sndfilequeues[to] = l;
+ }
- if (ret!= PICA_OK)
- {
- //report error
- }
+ if (ret != PICA_OK)
+ {
+ //report error
+ }
}
void SkyNet::AcceptFile(QByteArray from, QString filepath)
{
-int ret = PICA_OK;
-struct PICA_c2c *iptr;
+ int ret = PICA_OK;
+ struct PICA_c2c *iptr;
-if ( (iptr = find_active_chan(from)) )
- {
- ret = PICA_accept_file(iptr, filepath.toUtf8().data(), filepath.toUtf8().size());
+ if ( (iptr = find_active_chan(from)) )
+ {
+ ret = PICA_accept_file(iptr, filepath.toUtf8().data(), filepath.toUtf8().size());
- qDebug() << "PICA_accept_file(" << filepath.toUtf8().data() << ", " << filepath.toUtf8().size() << ") returned " << ret << "\n";
- if (ret != PICA_OK)
- {
- //show error somewhere somehow
- }
- }
+ qDebug() << "PICA_accept_file(" << filepath.toUtf8().data() << ", " << filepath.toUtf8().size() << ") returned " << ret << "\n";
+ if (ret != PICA_OK)
+ {
+ //show error somewhere somehow
+ }
+ }
}
void SkyNet::DenyFile(QByteArray from)
{
-int ret = PICA_OK;
-struct PICA_c2c *iptr;
+ int ret = PICA_OK;
+ struct PICA_c2c *iptr;
-if ( (iptr = find_active_chan(from)) )
- {
- ret = PICA_deny_file(iptr);
+ if ( (iptr = find_active_chan(from)) )
+ {
+ ret = PICA_deny_file(iptr);
- qDebug() << "PICA_deny_file() returned " << ret << "\n";
- if (ret != PICA_OK)
- {
- //show error somewhere somehow
- }
- }
+ qDebug() << "PICA_deny_file() returned " << ret << "\n";
+ if (ret != PICA_OK)
+ {
+ //show error somewhere somehow
+ }
+ }
}
void SkyNet::PauseFile(QByteArray peer_id, bool pause_sending)
{
-int ret = PICA_OK;
-struct PICA_c2c *iptr;
+ int ret = PICA_OK;
+ struct PICA_c2c *iptr;
-if ( (iptr = find_active_chan(peer_id)) )
- {
- qDebug() << "calling PICA_pause_file(" << iptr << "," << pause_sending << ")\n";
- ret = PICA_pause_file(iptr, (int)pause_sending );
+ if ( (iptr = find_active_chan(peer_id)) )
+ {
+ qDebug() << "calling PICA_pause_file(" << iptr << "," << pause_sending << ")\n";
+ ret = PICA_pause_file(iptr, (int)pause_sending );
- if (ret != PICA_OK)
- {
- qDebug() << "PICA_pause_file() returned " << ret << "\n";
- }
- }
+ if (ret != PICA_OK)
+ {
+ qDebug() << "PICA_pause_file() returned " << ret << "\n";
+ }
+ }
}
void SkyNet::ResumeFile(QByteArray peer_id, bool resume_sending)
{
-int ret = PICA_OK;
-struct PICA_c2c *iptr;
+ int ret = PICA_OK;
+ struct PICA_c2c *iptr;
-if ( (iptr = find_active_chan(peer_id)) )
- {
- ret = PICA_resume_file(iptr, (int)resume_sending );
+ if ( (iptr = find_active_chan(peer_id)) )
+ {
+ ret = PICA_resume_file(iptr, (int)resume_sending );
- if (ret != PICA_OK)
- {
- //show error somewhere somehow
- }
- }
+ if (ret != PICA_OK)
+ {
+ //show error somewhere somehow
+ }
+ }
}
void SkyNet::CancelFile(QByteArray peer_id, bool cancel_sending)
{
-int ret = PICA_OK;
-struct PICA_c2c *iptr;
+ int ret = PICA_OK;
+ struct PICA_c2c *iptr;
-if ( (iptr = find_active_chan(peer_id)) )
- {
- ret = PICA_cancel_file(iptr, (int)cancel_sending );
+ if ( (iptr = find_active_chan(peer_id)) )
+ {
+ ret = PICA_cancel_file(iptr, (int)cancel_sending );
- if (ret != PICA_OK)
- {
- //show error somewhere somehow
- }
- }
+ if (ret != PICA_OK)
+ {
+ //show error somewhere somehow
+ }
+ }
}
void SkyNet::SendMessage(QByteArray to, QString msg)
{
-int ret = PICA_OK;
-struct PICA_c2c *iptr;
+ int ret = PICA_OK;
+ struct PICA_c2c *iptr;
-if ( (iptr = find_active_chan(to)) )
-{
- //write_mutex.lock();//<<
- ret = PICA_send_msg(iptr, msg.toUtf8().data(), msg.toUtf8().size());
- //write_mutex.unlock();//>>
+ if ( (iptr = find_active_chan(to)) )
+ {
+ //write_mutex.lock();//<<
+ ret = PICA_send_msg(iptr, msg.toUtf8().data(), msg.toUtf8().size());
+ //write_mutex.unlock();//>>
- if (ret != PICA_OK)
- emit UnableToDeliver(to, msg);
+ if (ret != PICA_OK)
+ emit UnableToDeliver(to, msg);
- return;
-}
+ return;
+ }
- if (msgqueues.contains(to))
- {
- msgqueues[to].append(msg);
- }
- else
- {
- struct PICA_c2c *chan = NULL;
+ if (msgqueues.contains(to))
+ {
+ msgqueues[to].append(msg);
+ }
+ else
+ {
+ struct PICA_c2c *chan = NULL;
ret = PICA_new_c2c(active_nodelink, (const unsigned char*)to.constData(), NULL, &chan);
- QList<QString> l;
- l.append(msg);
- msgqueues[to] = l;
- }
+ QList<QString> l;
+ l.append(msg);
+ msgqueues[to] = l;
+ }
- if (ret != PICA_OK)
- emit UnableToDeliver(to, msg);
+ if (ret != PICA_OK)
+ emit UnableToDeliver(to, msg);
}
void SkyNet::flush_queues(QByteArray to)
{
- struct PICA_c2c *chan;
- int ret;
+ struct PICA_c2c *chan;
+ int ret;
- if (self_aware && (msgqueues.contains(to) || sndfilequeues.contains(to)))
- {
- qDebug()<<"flushing "<<to<<" message queue\n";
+ if (self_aware && (msgqueues.contains(to) || sndfilequeues.contains(to)))
+ {
+ qDebug() << "flushing " << to << " message queue\n";
- if ((chan = find_active_chan(to)))
- {
- /////// messages
- while( !msgqueues[to].empty() )
- {
- ret = PICA_send_msg(chan, msgqueues[to].first().toUtf8().data(), msgqueues[to].first().toUtf8().size());
+ if ((chan = find_active_chan(to)))
+ {
+ /////// messages
+ while( !msgqueues[to].empty() )
+ {
+ ret = PICA_send_msg(chan, msgqueues[to].first().toUtf8().data(), msgqueues[to].first().toUtf8().size());
- if (ret != PICA_OK)
- {
- emit UnableToDeliver(to, msgqueues[to].first());
- break;
- }
+ if (ret != PICA_OK)
+ {
+ emit UnableToDeliver(to, msgqueues[to].first());
+ break;
+ }
- msgqueues[to].removeFirst();
+ msgqueues[to].removeFirst();
- }
+ }
- if (msgqueues[to].empty())
- msgqueues.remove(to);
+ if (msgqueues[to].empty())
+ msgqueues.remove(to);
- ///////// files
- while (!sndfilequeues[to].empty())
- {
- ret = PICA_send_file(chan, sndfilequeues[to].first().toUtf8().data());
+ ///////// files
+ while (!sndfilequeues[to].empty())
+ {
+ ret = PICA_send_file(chan, sndfilequeues[to].first().toUtf8().data());
- if (ret != PICA_OK)
- {
- //report error somehow
- break;
- }
+ if (ret != PICA_OK)
+ {
+ //report error somehow
+ break;
+ }
- sndfilequeues[to].removeFirst();
- }
+ sndfilequeues[to].removeFirst();
+ }
- if (sndfilequeues[to].empty())
- sndfilequeues.remove(to);
- }
- }
+ if (sndfilequeues[to].empty())
+ sndfilequeues.remove(to);
+ }
+ }
}
struct PICA_c2c * SkyNet::find_active_chan(QByteArray peer_id)
{
-if (!active_nodelink)
- return NULL;
+ if (!active_nodelink)
+ return NULL;
-struct PICA_c2c *iptr = active_nodelink->chan_list_head;
+ struct PICA_c2c *iptr = active_nodelink->chan_list_head;
-while(iptr)
- {
- if (iptr->state == PICA_C2C_STATE_ACTIVE && QByteArray((const char*)iptr->peer_id, PICA_ID_SIZE) == peer_id)
- break;
+ while(iptr)
+ {
+ if (iptr->state == PICA_C2C_STATE_ACTIVE && QByteArray((const char*)iptr->peer_id, PICA_ID_SIZE) == peer_id)
+ break;
- iptr = iptr->next;
- }
+ iptr = iptr->next;
+ }
-return iptr;
+ return iptr;
}
QList<QByteArray> SkyNet::filter_existing_chans(QList<QByteArray> peer_ids)
{
- QList<QByteArray> ret = peer_ids;
+ QList<QByteArray> ret = peer_ids;
if (!active_nodelink)
- return ret;
+ return ret;
struct PICA_c2c *iptr = active_nodelink->chan_list_head;
- while(iptr)
- {
- if (peer_ids.contains(QByteArray((const char*)iptr->peer_id, PICA_ID_SIZE)))
- ret.removeOne((const char*)iptr->peer_id);
+ while(iptr)
+ {
+ if (peer_ids.contains(QByteArray((const char*)iptr->peer_id, PICA_ID_SIZE)))
+ ret.removeOne((const char*)iptr->peer_id);
- iptr = iptr->next;
- }
+ iptr = iptr->next;
+ }
- return ret;
+ return ret;
}
void SkyNet::emit_Delivered(QByteArray to)
{
-emit Delivered(to);
+ emit Delivered(to);
}
void SkyNet::emit_MessageReceived(QByteArray from, QString msg)
{
-emit MessageReceived(from, msg);
+ emit MessageReceived(from, msg);
}
void SkyNet::emit_UnableToDeliver(QByteArray to, QString msg)
{
-emit UnableToDeliver(to, msg);
+ emit UnableToDeliver(to, msg);
}
void SkyNet::emit_PeerCertificateReceived(QByteArray peer_id, QString cert_pem, bool *verified)
{
- emit PeerCertificateReceived(peer_id, cert_pem, verified);
+ emit PeerCertificateReceived(peer_id, cert_pem, verified);
}
void SkyNet::emit_IncomingFileRequestReceived(QByteArray peer_id, quint64 file_size, QString filename)
{
- emit IncomingFileRequestReceived(peer_id, file_size, filename);
+ emit IncomingFileRequestReceived(peer_id, file_size, filename);
}
void SkyNet::emit_OutgoingFileRequestAccepted(QByteArray peer_id)
{
- emit OutgoingFileRequestAccepted(peer_id);
+ emit OutgoingFileRequestAccepted(peer_id);
}
void SkyNet::emit_OutgoingFileRequestDenied(QByteArray peer_id)
{
- emit OutgoingFileRequestDenied(peer_id);
+ emit OutgoingFileRequestDenied(peer_id);
}
void SkyNet::emit_FileProgress(QByteArray peer_id, quint64 bytes_sent, quint64 bytes_received)
{
- emit FileProgress(peer_id, bytes_sent, bytes_received);
+ emit FileProgress(peer_id, bytes_sent, bytes_received);
}
void SkyNet::emit_IncomingFilePaused(QByteArray peer_id)
{
- emit IncomingFilePaused(peer_id);
+ emit IncomingFilePaused(peer_id);
}
void SkyNet::emit_IncomingFileCancelled(QByteArray peer_id)
{
- emit IncomingFileCancelled(peer_id);
+ emit IncomingFileCancelled(peer_id);
}
void SkyNet::emit_IncomingFileIoError(QByteArray peer_id)
{
- emit IncomingFileIoError(peer_id);
+ emit IncomingFileIoError(peer_id);
}
void SkyNet::emit_IncomingFileResumed(QByteArray peer_id)
{
- emit IncomingFileResumed(peer_id);
+ emit IncomingFileResumed(peer_id);
}
void SkyNet::emit_OutgoingFilePaused(QByteArray peer_id)
{
- emit OutgoingFilePaused(peer_id);
+ emit OutgoingFilePaused(peer_id);
}
void SkyNet::emit_OutgoingFileCancelled(QByteArray peer_id)
{
- emit OutgoingFileCancelled(peer_id);
+ emit OutgoingFileCancelled(peer_id);
}
void SkyNet::emit_OutgoingFileIoError(QByteArray peer_id)
{
- emit OutgoingFileIoError(peer_id);
+ emit OutgoingFileIoError(peer_id);
}
void SkyNet::emit_OutgoingFileResumed(QByteArray peer_id)
{
- emit OutgoingFileResumed(peer_id);
+ emit OutgoingFileResumed(peer_id);
}
void SkyNet::emit_OutgoingFileFinished(QByteArray peer_id)
{
- emit OutgoingFileFinished(peer_id);
+ emit OutgoingFileFinished(peer_id);
}
void SkyNet::emit_IncomingFileFinished(QByteArray peer_id)
{
- emit IncomingFileFinished(peer_id);
+ emit IncomingFileFinished(peer_id);
}
void SkyNet::emit_c2cClosed(QByteArray peer_id)
{
- emit c2cClosed(peer_id);
+ emit c2cClosed(peer_id);
}
@@ -783,157 +788,157 @@ void SkyNet::emit_c2cClosed(QByteArray peer_id)
void SkyNet::newmsg_cb(const unsigned char *peer_id, const char *msgbuf, unsigned int nb, int type)
{
-QString msg = QString::fromUtf8(msgbuf, nb);
+ QString msg = QString::fromUtf8(msgbuf, nb);
-skynet->emit_MessageReceived(QByteArray((const char*)peer_id, PICA_ID_SIZE), msg);
+ skynet->emit_MessageReceived(QByteArray((const char*)peer_id, PICA_ID_SIZE), msg);
}
void SkyNet::msgok_cb(const unsigned char *peer_id)
{
-skynet->emit_Delivered(QByteArray((const char*)peer_id, PICA_ID_SIZE));
+ skynet->emit_Delivered(QByteArray((const char*)peer_id, PICA_ID_SIZE));
}
void SkyNet::c2c_established_cb(const unsigned char *peer_id)
{
-skynet->flush_queues(QByteArray((const char*)peer_id, PICA_ID_SIZE));
+ skynet->flush_queues(QByteArray((const char*)peer_id, PICA_ID_SIZE));
}
void SkyNet::c2c_failed(const unsigned char *peer_id)
{
- qDebug()<<"c2c failed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()<<")\n";
+ qDebug() << "c2c failed (" << QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64() << ")\n";
}
int SkyNet::accept_cb(const unsigned char *caller_id)
{
-return 1; //implement black list
+ return 1; //implement black list
}
void SkyNet::notfound_cb(const unsigned char *callee_id)
{
- qDebug()<<"not found ("<<QByteArray((const char*)callee_id, PICA_ID_SIZE).toBase64()<<")\n";
+ qDebug() << "not found (" << QByteArray((const char*)callee_id, PICA_ID_SIZE).toBase64() << ")\n";
- /*
- if (skynet->msgqueues.contains(callee_id))
- {
- while ( ! skynet->msgqueues[callee_id].empty())
- {
- skynet->emit_UnableToDeliver(callee_id, skynet->msgqueues[callee_id].last());
- skynet->msgqueues[callee_id].removeLast();
- }
- // msgqueues.remove(callee_id) was forgotten
- }
- */
+ /*
+ if (skynet->msgqueues.contains(callee_id))
+ {
+ while ( ! skynet->msgqueues[callee_id].empty())
+ {
+ skynet->emit_UnableToDeliver(callee_id, skynet->msgqueues[callee_id].last());
+ skynet->msgqueues[callee_id].removeLast();
+ }
+ // msgqueues.remove(callee_id) was forgotten
+ }
+ */
}
void SkyNet::c2c_closed_cb(const unsigned char *peer_id, int reason)
{
- qDebug()<<"c2c closed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()
- <<", error_code =" << reason << ")\n";
+ qDebug() << "c2c closed (" << QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()
+ << ", error_code =" << reason << ")\n";
- skynet->emit_c2cClosed(QByteArray((const char*)peer_id, PICA_ID_SIZE));
+ skynet->emit_c2cClosed(QByteArray((const char*)peer_id, PICA_ID_SIZE));
}
void SkyNet::nodelist_cb(int type, void *addr_bin, const char *addr_str, unsigned int port)
{
- Nodes::NodeRecord nr = {addr_str, port};
- skynet->nodes.Add(nr);
+ Nodes::NodeRecord nr = {addr_str, port};
+ skynet->nodes.Add(nr);
}
int SkyNet::peer_cert_verify_cb(const unsigned char *peer_id, const char *cert_pem, unsigned int nb)
{
- bool verified = true;
+ bool verified = true;
- skynet->emit_PeerCertificateReceived(QByteArray((const char*)peer_id, PICA_ID_SIZE), 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;
+ if (!verified)
+ return 0;
- return 1;
+ return 1;
}
int SkyNet::accept_file_cb(const unsigned char *peer_id, uint64_t file_size, const char *filename, unsigned int filename_size)
{
- skynet->emit_IncomingFileRequestReceived(QByteArray((const char*)peer_id, PICA_ID_SIZE),
- file_size, QString::fromUtf8(filename, filename_size));
+ skynet->emit_IncomingFileRequestReceived(QByteArray((const char*)peer_id, PICA_ID_SIZE),
+ file_size, QString::fromUtf8(filename, filename_size));
- return 2;//??? accept later code
+ return 2;//??? accept later code
}
void SkyNet::accepted_file_cb(const unsigned char *peer_id)
{
- qDebug()<<"FILE: file was accepted by remote side\n";
+ qDebug() << "FILE: file was accepted by remote side\n";
- skynet->emit_OutgoingFileRequestAccepted(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ skynet->emit_OutgoingFileRequestAccepted(QByteArray((const char *)peer_id, PICA_ID_SIZE));
}
void SkyNet::denied_file_cb(const unsigned char *peer_id)
{
- skynet->emit_OutgoingFileRequestDenied(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ skynet->emit_OutgoingFileRequestDenied(QByteArray((const char *)peer_id, PICA_ID_SIZE));
}
void SkyNet::file_progress(const unsigned char *peer_id, uint64_t sent, uint64_t received)
{
- qDebug()<<"FILE: file progress" << sent << " sent " << received << "received\n";
- skynet->emit_FileProgress(QByteArray((const char *)peer_id, PICA_ID_SIZE), sent, received);
+ qDebug() << "FILE: file progress" << sent << " sent " << received << "received\n";
+ skynet->emit_FileProgress(QByteArray((const char *)peer_id, PICA_ID_SIZE), sent, received);
}
void SkyNet::file_control(const unsigned char *peer_id, unsigned int sender_cmd, unsigned int receiver_cmd)
{
- qDebug() << "file_control callback: sender_cmd=" << sender_cmd << ", receiver_cmd=" << receiver_cmd << "\n";
-
-
- if (sender_cmd != PICA_PROTO_FILECONTROL_VOID && receiver_cmd == PICA_PROTO_FILECONTROL_VOID)
- {
- switch(sender_cmd)
- {
- case PICA_PROTO_FILECONTROL_PAUSE:
- skynet->emit_IncomingFilePaused(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
-
- case PICA_PROTO_FILECONTROL_RESUME:
- skynet->emit_IncomingFileResumed(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
-
- case PICA_PROTO_FILECONTROL_CANCEL:
- skynet->emit_IncomingFileCancelled(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
-
- case PICA_PROTO_FILECONTROL_IOERROR:
- skynet->emit_IncomingFileIoError(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
- }
- }
- else if (sender_cmd == PICA_PROTO_FILECONTROL_VOID && receiver_cmd != PICA_PROTO_FILECONTROL_VOID)
- {
- switch(receiver_cmd)
- {
- case PICA_PROTO_FILECONTROL_PAUSE:
- skynet->emit_OutgoingFilePaused(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
-
- case PICA_PROTO_FILECONTROL_RESUME:
- skynet->emit_OutgoingFileResumed(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
-
- case PICA_PROTO_FILECONTROL_CANCEL:
- skynet->emit_OutgoingFileCancelled(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
-
- case PICA_PROTO_FILECONTROL_IOERROR:
- skynet->emit_OutgoingFileIoError(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- break;
- }
- }
+ qDebug() << "file_control callback: sender_cmd=" << sender_cmd << ", receiver_cmd=" << receiver_cmd << "\n";
+
+
+ if (sender_cmd != PICA_PROTO_FILECONTROL_VOID && receiver_cmd == PICA_PROTO_FILECONTROL_VOID)
+ {
+ switch(sender_cmd)
+ {
+ case PICA_PROTO_FILECONTROL_PAUSE:
+ skynet->emit_IncomingFilePaused(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+
+ case PICA_PROTO_FILECONTROL_RESUME:
+ skynet->emit_IncomingFileResumed(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+
+ case PICA_PROTO_FILECONTROL_CANCEL:
+ skynet->emit_IncomingFileCancelled(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+
+ case PICA_PROTO_FILECONTROL_IOERROR:
+ skynet->emit_IncomingFileIoError(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+ }
+ }
+ else if (sender_cmd == PICA_PROTO_FILECONTROL_VOID && receiver_cmd != PICA_PROTO_FILECONTROL_VOID)
+ {
+ switch(receiver_cmd)
+ {
+ case PICA_PROTO_FILECONTROL_PAUSE:
+ skynet->emit_OutgoingFilePaused(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+
+ case PICA_PROTO_FILECONTROL_RESUME:
+ skynet->emit_OutgoingFileResumed(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+
+ case PICA_PROTO_FILECONTROL_CANCEL:
+ skynet->emit_OutgoingFileCancelled(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+
+ case PICA_PROTO_FILECONTROL_IOERROR:
+ skynet->emit_OutgoingFileIoError(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ break;
+ }
+ }
}
void SkyNet::file_finished(const unsigned char *peer_id, int sending)
{
- qDebug()<< "file_finished callback\n";
+ qDebug() << "file_finished callback\n";
- if (sending)
- skynet->emit_OutgoingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE));
- else
- skynet->emit_IncomingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ if (sending)
+ skynet->emit_OutgoingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ else
+ skynet->emit_IncomingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE));
}
void SkyNet::c2n_established_cb(struct PICA_c2n *c2n)