Because we don't support libupnp-1.8.x yet avoid using that library
If libupnp-1.6.x is available use that, if not try to use miniupnc if
if unavailble print a warning and disable RetroShare UPnP support
Discover peers on the same broadcast domain/LAN
Implements own node announcement
Implements others announcement listening
Implements API to get notifiend when other nodes get discovered
Implements API to get discovered nodes
Add discovered peer locator to rsPeers if it is already friend
Yet a bunch of things to do to take full advantage of this new
implementation
warnings:
../../../trunk/libretroshare/src/services/p3idservice.h:226:24: warning:
'getServiceInfo' overrides a member function but is not marked
'override' [-Winconsistent-missing-override]
virtual RsServiceInfo getServiceInfo();
^
../../../trunk/libretroshare/src/gxs/rsgenexchange.h:122:27: note:
overridden virtual function is here
virtual RsServiceInfo getServiceInfo() = 0;
^
This doesn't need any interacion of the user at startup, unlike
retroshare-nogui which requires the user to login on the shell this doesn't
even need a TTY.
At startup this just parse command line, read the PGP keyring, look for
available locations, and start listening for JSON API requests.
Another difference with retroshare-nogui is that this is capable to
generate/import PGP identities, generate locations, and in general anything
possible through the RetroShare API.
retroshare-service is suitable also to run it as a system service, even
in very constrained systems such as Android ot a Docker container.
retroshare-service drop support for libresapi so only the new JSON API
is exposed, it will completely obsolete retroshare-android-service once
retroshare-qml-app is ported to the new JSON API.
Avoid the need of dirty patching to set the version at build time
In case RS version is not passed as argument attempt to determine it
using git describe, if unavailable use hardcoded default
qmake file add jsonapi-generator target to compile JSON API generator
qmake files add rs_jsonapi CONFIG option to enable/disable JSON API at compile
time
RsTypeSerializer pass down same serialization flags when creating new context
for nested objects serial job
RsGxsChannels expose a few methods through JSON API as example
Derive a few GXS types (RsGxsChannelGroup, RsGxsChannelPost, RsGxsFile,
RsMsgMetaData) from RsSerializables so they can be used for the JSON API
Create RsGenericSerializer::SERIALIZATION_FLAG_YIELDING so JSON objects that
miss some fields can be still deserialized, this improve API usability
SerializeContext offer friendly constructor with default paramethers
Add restbed 4.6 library as git submodule as most systems doesn't have it yet
Add a bit of documentation about JSON API into jsonapi-generator/README.adoc
Add JsonApiServer class to expose the JSON API via HTTP protocol
Since DATA_DIR (and the others) are not set 'make install' will move the files to /{qss, sounds, stylesheets, usr, webui} (instead of '/usr/...')
Fixes 4876a0ea3b
Adding default include path to INCLUDEPATH break compilation with GCC 6
With many errors similar to this
x86_64-pc-linux-gnu-gcc -c -march=native -mtune=native -pipe -O0 -g -fno-omit-frame-pointer -fPIC -Wall -W -D_REENTRANT -DRS_ENABLE_GXS -DENABLE_WEBUI -DRS_NO_WARN_DEPRECATED -DRS_NO_WARN_CPP -DRS_GXS_TRANS -DOPENSSL_NO_IDEA -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include -I. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib64/qt5/mkspecs/linux-g++ -o temp/linux/obj/accumulate.o openpgpsdk/accumulate.c
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/ext/string_conversions.h:41:0,
from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/bits/basic_string.h:5417,
from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/string:52,
from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/bits/locale_classes.h:40,
from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/bits/ios_base.h:41,
from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/ios:42,
from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/ostream:38,
from /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/iostream:39,
from ./bitdht/bdobj.h:32,
from ./bitdht/bdmsgs.h:34,
from bitdht/bdmsgs.cc:30:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/g++-v6/cstdlib:75:25: fatal error: stdlib.h: No such file or directory
#include_next <stdlib.h>
^
@see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129
Restructure and document retroshare.pri variables and helper functions
Link sqlite statically like other libraries on Android
qmake has multiple win32-* specs match them correctly
Move a buch of generic thing to retroshare.pri instead of having them replocated
accross project specific .pro
Fix retroshare-gui too many symbols exported on windows liking error by adding
QMAKE_LFLAGS+=-Wl,--exclude-libs,ALL
Rename retroshare-gui/src/util/win32.h because the name is too prone to
confusion and build conflicts
libreasapi avoid usage of cretar_prl link_prl that seems unreliable on some
platforms
libreasapi rename LIBRESAPI_QT to more understendable LIBRESAPI_SETTINGS
Use use_*.pri instead of copy pasting error prone qmake snippets around
Expose bitdht option to retroshare.pri
Add RS_THREAD_LIB qmake variable for better crossplatform support
Move debug and profiling generic options to retroshare.pri (avoid copy/pasting)
Remove Qt script module in qmake as it is not available anymore
In lastest Qt versions linux-* mkspec doesn't match android anymore,
this was triggering a compilation error as DATA_DIR was not defined the
RsAccountsDetail::PathDataDirectory(bool check) code has been rearranged
so it works reasonably also on Android and do not depend on DATA_DIR
define anymore
Updated Android compiling documentation
Added retroshare-android-notify-service a stub will handle notifications
to android system, at the moment it only attempt autologin if default
password is used
retroshare-android-service quit QCoreApplication gracefully
Android Studio update has changed some android build files
Create BusyOverlay.qml componet so it is reusable accross the qml app
Contacts.qml create a pseudonimous GXS identity as needed without
prompting the user
RsLoginPassView.qml nicer look, on mobile phone password usage is not
common so do not use password by default
QML app main view handle correctly +waiting_startup+ runstate
QML app main view use BusyOverlay as initial item
GxsTrans is a generic transport service, use more generic name trans
instead of mail to avoid confusion
Renamed size(...) to seria_size(...) for costistence whit the codebase
Moved GxsTrans and related things to gxstrans directory
Removed outdated and now uncompatible gxsmail test service
Avoid expose internal items in public interface methods