[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r34136 - in gnunet-qt/SecureShare: . core/gnunet core/socia
From: |
gnunet |
Subject: |
[GNUnet-SVN] r34136 - in gnunet-qt/SecureShare: . core/gnunet core/social qml |
Date: |
Sun, 10 Aug 2014 22:04:15 +0200 |
Author: bratao
Date: 2014-08-10 22:04:15 +0200 (Sun, 10 Aug 2014)
New Revision: 34136
Modified:
gnunet-qt/SecureShare/SecureShare.pro
gnunet-qt/SecureShare/core/gnunet/gnunet.h
gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h
gnunet-qt/SecureShare/core/social/place.cpp
gnunet-qt/SecureShare/core/social/place.h
gnunet-qt/SecureShare/core/social/socialservice.cpp
gnunet-qt/SecureShare/core/social/socialservice.h
gnunet-qt/SecureShare/psyc.cpp
gnunet-qt/SecureShare/qml/ExportEgo.qml
gnunet-qt/SecureShare/qml/ImportEgo.qml
gnunet-qt/SecureShare/qml/NewEgo.qml
gnunet-qt/SecureShare/qml/createRoom.qml
gnunet-qt/SecureShare/qml/joinRoom.qml
gnunet-qt/SecureShare/qml/main.qml
Log:
Implement logic of creating rooms and joining as guests.
Modified: gnunet-qt/SecureShare/SecureShare.pro
===================================================================
--- gnunet-qt/SecureShare/SecureShare.pro 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/SecureShare.pro 2014-08-10 20:04:15 UTC (rev
34136)
@@ -2,8 +2,12 @@
QT += qml quick widgets
-LIBS += -lgnunetutil -lgnunetcore -lgnunetidentity -lgnunetarm -lgnunetsocial
-lgnunetfriends -lextractor -lqrencode
+LIBS += -lgnunetutil -lgnunetcore -lgnunetidentity -lgnunetarm -lgnunetsocial
-lgnunetenv -lgnunetpsycutil -lgnunetfriends -lextractor -lqrencode
+
+
+
+
#include(3rdParty/qzxing-master/QZXing.pro)
SOURCES += main.cpp \
Modified: gnunet-qt/SecureShare/core/gnunet/gnunet.h
===================================================================
--- gnunet-qt/SecureShare/core/gnunet/gnunet.h 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/core/gnunet/gnunet.h 2014-08-10 20:04:15 UTC (rev
34136)
@@ -34,6 +34,7 @@
{
Q_OBJECT
Q_PROPERTY(IdentityService * identity READ identity CONSTANT)
+ Q_PROPERTY(SocialService * social READ social CONSTANT)
Q_PROPERTY(GNUNET_CONFIGURATION_Handle * config READ config)
@@ -50,9 +51,10 @@
IdentityService* identity() const
{ return m_identity; }
+ SocialService* social() const
+ { return m_social; }
-
GNUNET_CONFIGURATION_Handle* config() const
{ return m_config; }
Modified: gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h
===================================================================
--- gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h 2014-08-10 17:25:45 UTC
(rev 34135)
+++ gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h 2014-08-10 20:04:15 UTC
(rev 34136)
@@ -42,5 +42,8 @@
#include <gnunet/gnunet_identity_service.h>
#include <gnunet/gnunet_friends_lib.h>
#include <gnunet/gnunet_social_service.h>
+#include <gnunet/gnunet_psyc_util_lib.h>
+#include <gnunet/gnunet_env_lib.h>
+
#endif // GNUNET_INCLUDES_H
Modified: gnunet-qt/SecureShare/core/social/place.cpp
===================================================================
--- gnunet-qt/SecureShare/core/social/place.cpp 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/core/social/place.cpp 2014-08-10 20:04:15 UTC (rev
34136)
@@ -1,5 +1,8 @@
#include "place.h"
+#include <QApplication>
+#include <QClipboard>
+
Place::Place(QString key, QObject *parent) :
QObject(parent)
{
@@ -8,3 +11,11 @@
m_name = "No name";
m_type = "group";//thread;group;contact
}
+
+
+void Place::copyToClipboard()
+{
+ QClipboard *clipboard = QApplication::clipboard();
+
+ clipboard->setText(m_key);
+}
Modified: gnunet-qt/SecureShare/core/social/place.h
===================================================================
--- gnunet-qt/SecureShare/core/social/place.h 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/core/social/place.h 2014-08-10 20:04:15 UTC (rev
34136)
@@ -45,6 +45,7 @@
emit statusChanged(status);
}
+ Q_INVOKABLE void copyToClipboard();
private:
int m_index;
QString m_name;
Modified: gnunet-qt/SecureShare/core/social/socialservice.cpp
===================================================================
--- gnunet-qt/SecureShare/core/social/socialservice.cpp 2014-08-10 17:25:45 UTC
(rev 34135)
+++ gnunet-qt/SecureShare/core/social/socialservice.cpp 2014-08-10 20:04:15 UTC
(rev 34136)
@@ -5,13 +5,23 @@
#include "models/models.h"
#include "models/PlacesModel.h"
+#include "core/gnunet/gnunet.h"
+
#include "core/social/place.h"
+
+#define DATA2ARG(data) data, sizeof (data)
+
+
SocialService::SocialService(QObject *parent) :
QObject(parent)
{
+ connect(this,&SocialService::createPlaceSignal,
+ this,&SocialService::createPlaceSlot, Qt::QueuedConnection);
+ connect(this,&SocialService::enterRoomSignal,
+ this,&SocialService::enterRoomSlot, Qt::QueuedConnection);
}
@@ -48,6 +58,40 @@
&hostRecvDataCallback, &hostRecvEomCallback,
NULL);
}
+
+void SocialService::createPlace()
+{
+ emit createPlaceSignal();
+}
+
+void SocialService::createPlaceSlot()
+{
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Creating a New Place.\n");
+
+
+ GNUNET_CRYPTO_EddsaPrivateKey *placeKey = GNUNET_CRYPTO_eddsa_key_create
();
+ GNUNET_CRYPTO_EddsaPublicKey placePubKey;
+
+ GNUNET_CRYPTO_eddsa_key_get_public (placeKey, &placePubKey);
+
+ char* id = GNUNET_CRYPTO_eddsa_public_key_to_string (&placePubKey);
+ QString strId = QString::fromLatin1(id);
+
+
+
+ Place* newPlace = theApp->models()->placesModel()->add(strId);
+
+ newPlace->setName(strId);
+
+
+
+ GNUNET_SOCIAL_Host * host = GNUNET_SOCIAL_host_enter (m_config, m_hostEgo,
placeKey,
+
GNUNET_PSYC_CHANNEL_PRIVATE, m_hostSlicer,
+
&hostEnteredCallback, &hostAnswerDoorCallback,
+
&hostFarewellCallback, newPlace);
+}
+
+
void SocialService::enterPlaceAsHost()
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Entering to place as host.\n");
@@ -153,19 +197,43 @@
void
SocialService::hostAnswerDoorCallback (void *cls,
- struct GNUNET_SOCIAL_Nym *nym,
- const char *method_name,
- struct GNUNET_ENV_Environment *env,
- size_t data_size,
- const void *data)
+ struct GNUNET_SOCIAL_Nym *nym,
+ const char *method_name,
+ struct GNUNET_ENV_Environment *env,
+ size_t data_size,
+ const void *data)
{
+
theApp->gnunet()->social()->hostAnswerDoor(cls,nym,method_name,env,data_size,data);
+
+
+
+}
+
+void
+SocialService::hostAnswerDoor (void *cls,
+ struct GNUNET_SOCIAL_Nym *nym,
+ const char *method_name,
+ struct GNUNET_ENV_Environment *env,
+ size_t data_size,
+ const void *data)
+{
+
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Host received entry request from guest .\n"
);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"%s\n%.*s\n",
method_name, data_size, data);
+
+
+ //TODO: Give option to deny
+
+ GNUNET_PSYC_Message *join_resp = GNUNET_PSYC_message_create ("_admit_nym",
env,
+ DATA2ARG
("Welcome, nym!"));
+ GNUNET_SOCIAL_host_entry_decision (m_hst, nym, GNUNET_YES, join_resp);
+
+
/*
switch (test)
{
@@ -188,8 +256,9 @@
}*/
}
+
void SocialService::hostEnteredCallback (void *cls, int result,
- uint64_t max_message_id)
+ uint64_t max_message_id)
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Host entered to place.\n");
@@ -198,10 +267,10 @@
void
SocialService::hostFarewellCallback (void *cls,
- struct GNUNET_SOCIAL_Nym *nym,
- struct GNUNET_ENV_Environment *env,
- size_t variable_count,
- struct GNUNET_ENV_Modifier *variables)
+ struct GNUNET_SOCIAL_Nym *nym,
+ struct GNUNET_ENV_Environment *env,
+ size_t variable_count,
+ struct GNUNET_ENV_Modifier *variables)
{
// FIXME: this function is not called yet
@@ -216,3 +285,94 @@
GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL);*/
}
+
+
+void
+SocialService::guestRecvLocalEnterCallback (void *cls, int result, uint64_t
max_message_id)
+{
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Guest entered to local place,
result : %i.\n",result);
+
+}
+
+void
+SocialService::guestRecvEntryDecisionCallback (void *cls,
+ int is_admitted,
+ const struct
GNUNET_PSYC_Message *entry_resp)
+{
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Guest received entry decision: %d.\n",
+ is_admitted);
+
+ if (NULL != entry_resp)
+ {
+ struct GNUNET_ENV_Environment *env = GNUNET_ENV_environment_create ();
+ const char *method_name = NULL;
+ const void *data = NULL;
+ uint16_t data_size = 0;
+ GNUNET_PSYC_message_parse (entry_resp, &method_name, env, &data,
&data_size);
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "%s\n%.*s\n",
+ method_name, data_size, data);
+ /* FIXME: check response message */
+ }
+
+ /*
+ switch (test)
+ {
+ case TEST_GUEST_RECV_ENTRY_DCSN_REFUSE:
+ GNUNET_assert (GNUNET_NO == is_admitted);
+ guest_enter ();
+ break;
+
+ case TEST_GUEST_RECV_ENTRY_DCSN_ADMIT:
+ GNUNET_assert (GNUNET_YES == is_admitted);
+ host_announce ();
+ break;
+
+ default:
+ GNUNET_assert (0);
+ }*/
+}
+
+
+
+void
+SocialService::enterRoom(QString pubKey, QString peerIdentity)
+{
+ emit enterRoomSignal(pubKey,peerIdentity);
+}
+
+void
+SocialService::enterRoomSlot(QString pubKey, QString peerIdentity)
+{
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Entering to place %s as
guest.\n",pubKey.toStdString().c_str() );
+
+ GuestEnterMessage emsg;
+
+ emsg.method_name = "_request_enter";
+ emsg.env = GNUNET_ENV_environment_create ();
+ GNUNET_ENV_environment_add (emsg.env, GNUNET_ENV_OP_ASSIGN,
+ "_abc", "abc def", 7);
+ GNUNET_ENV_environment_add (emsg.env, GNUNET_ENV_OP_ASSIGN,
+ "_abc_def", "abc def ghi", 11);
+ emsg.data = "let me in";
+ emsg.data_size = strlen (emsg.data) + 1;
+ emsg.msg = GNUNET_PSYC_message_create (emsg.method_name, emsg.env,
+ emsg.data, emsg.data_size);
+
+ GNUNET_CRYPTO_EddsaPublicKey convertedRoomKey;
+
+ GNUNET_CRYPTO_eddsa_public_key_from_string (pubKey.toStdString().c_str(),
+ pubKey.length(),
+ &convertedRoomKey);
+
+
+
+
+ //TODO change place pub key to arbitrary value
+ GNUNET_SOCIAL_Guest *gst = GNUNET_SOCIAL_guest_enter (m_config, m_hostEgo,
&convertedRoomKey,
+
theApp->gnunet()->myPeer(), 0, NULL, emsg.msg,
+ m_hostSlicer,
&guestRecvLocalEnterCallback,
+
&guestRecvEntryDecisionCallback, NULL);
+}
Modified: gnunet-qt/SecureShare/core/social/socialservice.h
===================================================================
--- gnunet-qt/SecureShare/core/social/socialservice.h 2014-08-10 17:25:45 UTC
(rev 34135)
+++ gnunet-qt/SecureShare/core/social/socialservice.h 2014-08-10 20:04:15 UTC
(rev 34136)
@@ -4,6 +4,16 @@
#include <QObject>
#include "core/gnunet/gnunet_includes.h"
+
+typedef struct GuestEnterMessage
+{
+ struct GNUNET_PSYC_Message *msg;
+ const char *method_name;
+ struct GNUNET_ENV_Environment *env;
+ char *data;
+ uint16_t data_size;
+}GuestEnterMessage;
+
class SocialService : public QObject
{
Q_OBJECT
@@ -45,6 +55,13 @@
struct GNUNET_ENV_Environment *env,
size_t data_size,
const void *data);
+ void
+ hostAnswerDoor (void *cls,
+ struct GNUNET_SOCIAL_Nym *nym,
+ const char *method_name,
+ struct GNUNET_ENV_Environment *env,
+ size_t data_size,
+ const void *data);
static void hostEnteredCallback (void *cls, int result,
uint64_t max_message_id);
static void
@@ -53,11 +70,28 @@
struct GNUNET_ENV_Environment *env,
size_t variable_count,
struct GNUNET_ENV_Modifier *variables);
+
+
+ static void
+ guestRecvEntryDecisionCallback (void *cls,
+ int is_admitted,
+ const struct GNUNET_PSYC_Message *entry_resp);
+
+ static void
+ guestRecvLocalEnterCallback (void *cls, int result, uint64_t
max_message_id);
+
+
+
void start(GNUNET_CONFIGURATION_Handle *config);
+ Q_INVOKABLE void createPlace();
+ void createPlaceSlot();
+ Q_INVOKABLE void enterRoom(QString pubKey, QString peerIdentity);
signals:
-
+ void createPlaceSignal();
+ void enterRoomSignal(QString pubKey, QString peerIdentity);
public slots:
+ void enterRoomSlot(QString pubKey, QString peerIdentity);
private:
GNUNET_IDENTITY_Ego* m_hostEgo;
GNUNET_SOCIAL_Slicer* m_hostSlicer;
Modified: gnunet-qt/SecureShare/psyc.cpp
===================================================================
--- gnunet-qt/SecureShare/psyc.cpp 2014-08-10 17:25:45 UTC (rev 34135)
+++ gnunet-qt/SecureShare/psyc.cpp 2014-08-10 20:04:15 UTC (rev 34136)
@@ -11,6 +11,9 @@
#include "core/identity/identityService.h"
#include "core/identity/identity.h"
+#include "core/social/socialservice.h"
+#include "core/social/place.h"
+
#include "utils/qrimageprovider.h"
#include <QQmlEngine>
@@ -71,6 +74,8 @@
qmlRegisterUncreatableType<IdentityService>(URI, 1, 0, "IdentityService",
QLatin1String("Use calling the psyc method."));
qmlRegisterUncreatableType<Identity>(URI, 1, 0, "Identity",
QLatin1String("Use calling the psyc method."));
+ qmlRegisterUncreatableType<SocialService>(URI, 1, 0, "SocialService",
QLatin1String("Use calling the psyc method."));
+ qmlRegisterUncreatableType<Place>(URI, 1, 0, "Place", QLatin1String("Use
calling the psyc method."));
}
Modified: gnunet-qt/SecureShare/qml/ExportEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/ExportEgo.qml 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/qml/ExportEgo.qml 2014-08-10 20:04:15 UTC (rev
34136)
@@ -79,7 +79,7 @@
spacing: 2
Button{
text: "Close"
- onPressedChanged: {
+ onClicked: {
exportEgoWnd.close();
}
}
Modified: gnunet-qt/SecureShare/qml/ImportEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/ImportEgo.qml 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/qml/ImportEgo.qml 2014-08-10 20:04:15 UTC (rev
34136)
@@ -79,13 +79,13 @@
spacing: 2
Button{
text: "Cancel"
- onPressedChanged: {
+ onClicked: {
importEgoWnd.close();
}
}
Button{
text: "Add"
- onPressedChanged: {
+ onClicked: {
importEgoWnd.close();
}
}
Modified: gnunet-qt/SecureShare/qml/NewEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/NewEgo.qml 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/qml/NewEgo.qml 2014-08-10 20:04:15 UTC (rev
34136)
@@ -25,7 +25,7 @@
}
Button{
text: "Ok"
- onPressedChanged: {
+ onClicked: {
Psyc.gnunet.identity.createEgo(newName.text)
newEgoWnd.close();
}
Modified: gnunet-qt/SecureShare/qml/createRoom.qml
===================================================================
--- gnunet-qt/SecureShare/qml/createRoom.qml 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/qml/createRoom.qml 2014-08-10 20:04:15 UTC (rev
34136)
@@ -178,6 +178,10 @@
Button{
text: "Create"
width: 200
+
+ onClicked: {
+ Psyc.gnunet.social.createPlace()
+ }
}
}
}
Modified: gnunet-qt/SecureShare/qml/joinRoom.qml
===================================================================
--- gnunet-qt/SecureShare/qml/joinRoom.qml 2014-08-10 17:25:45 UTC (rev
34135)
+++ gnunet-qt/SecureShare/qml/joinRoom.qml 2014-08-10 20:04:15 UTC (rev
34136)
@@ -217,6 +217,10 @@
Button{
text: "Join"
width: 200
+
+ onClicked: {
+ Psyc.gnunet.social.enterRoom(publicKeyField.text, "bla")
+ }
}
}
}
Modified: gnunet-qt/SecureShare/qml/main.qml
===================================================================
--- gnunet-qt/SecureShare/qml/main.qml 2014-08-10 17:25:45 UTC (rev 34135)
+++ gnunet-qt/SecureShare/qml/main.qml 2014-08-10 20:04:15 UTC (rev 34136)
@@ -12,11 +12,26 @@
property var firstRun: true
property var splashWnd
+ property var selectedPlace
FontLoader { id: ubuntuFont; source: "fonts/Ubuntu-R.ttf" }
FontLoader { id: ubuntuBIFont; source: "fonts/Ubuntu-BI.ttf" }
+
+
+ Action {
+ id: copyLink
+ text: "Copy Link"
+ onTriggered: selectedPlace.copyToClipboard()
+ }
+
+ Menu {
+ id: contextMenu
+ MenuItem { action: copyLink }
+
+ }
+
menuBar: MenuBar {
Menu {
title: qsTr("File")
@@ -72,7 +87,7 @@
-/*
+ /*
ListModel {
id: contactsModel
ListElement {
@@ -314,10 +329,22 @@
anchors.fill: parent
hoverEnabled: true
+ acceptedButtons: Qt.LeftButton |
Qt.RightButton
- onClicked: main.currentIndex = 3+index
+ onClicked: {
+ if (mouse.button == Qt.RightButton)
+ {
+ selectedPlace =
Psyc.models.placesModel.get(index)
+ contextMenu.popup()
+ }
+ else
+ main.currentIndex = 3+index
+ }
+
+
+
}
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r34136 - in gnunet-qt/SecureShare: . core/gnunet core/social qml,
gnunet <=