diff --git a/.travis.yml b/.travis.yml index cc75af004..14de55fd2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ language: cpp matrix: include: - os: linux - dist: trusty + dist: bionic sudo: required compiler: gcc - os: osx @@ -16,21 +16,24 @@ matrix: before_install: - if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get update; fi - - if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get install -y build-essential libssl-dev libsqlcipher-dev libbz2-dev libmicrohttpd-dev libsqlite3-dev libupnp-dev pkg-config qt5-default libxss-dev qtmultimedia5-dev libqt5x11extras5-dev libqt5designer5 libxapian-dev qttools5-dev; fi - + - > + if [ $TRAVIS_OS_NAME == linux ]; then + sudo apt-get install -y + build-essential libssl-dev libsqlcipher-dev libbz2-dev libsqlite3-dev + libupnp-dev pkg-config qt5-default libxss-dev qtmultimedia5-dev + libqt5x11extras5-dev libqt5designer5 libxapian-dev qttools5-dev + rapidjson-dev ; + fi - if [ $TRAVIS_OS_NAME == osx ]; then brew update ; fi - - if [ $TRAVIS_OS_NAME == osx ]; then brew install ccach; export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi - if [ $TRAVIS_OS_NAME == osx ]; then brew install qt5; fi - if [ $TRAVIS_OS_NAME == osx ]; then brew link --force qt5 ; fi - - if [ $TRAVIS_OS_NAME == osx ]; then brew install openssl miniupnpc libmicrohttpd sqlcipher xapian cmark; fi + - > + if [ $TRAVIS_OS_NAME == osx ]; then + brew install openssl miniupnpc rapidjson sqlcipher xapian cmark; + fi - if [ $TRAVIS_OS_NAME == osx ]; then brew install p7zip; fi - if [ $TRAVIS_OS_NAME == osx ]; then npm install -g appdmg; fi - - wget https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz - - tar -xf v1.1.0.tar.gz - - if [ $TRAVIS_OS_NAME == osx ]; then cp -r rapidjson-1.1.0/include/rapidjson/ /usr/local/include/rapidjson ; fi - - if [ $TRAVIS_OS_NAME == linux ]; then sudo cp -r rapidjson-1.1.0/include/rapidjson/ /usr/include/rapidjson ; fi - env: global: # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created @@ -49,13 +52,23 @@ addons: before_script: - env - if [ $TRAVIS_OS_NAME == linux ]; then qmake; fi - - if [ $TRAVIS_OS_NAME == osx ]; then qmake CONFIG+=rs_macos10.14 INCLUDEPATH+=/usr/local/opt/openssl/include/ INCLUDEPATH+=$(find /usr/local/Cellar/sqlcipher/*/include | headn -n 1) INCLUDEPATH+=$(find /usr/local/Cellar/libmicrohttpd/*/include | head -n 1) QMAKE_LIBDIR+=/usr/local/opt/openssl/lib/ QMAKE_LIBDIR+=$(find /usr/local/Cellar/libmicrohttpd/*/lib | head -n 1) QMAKE_LIBDIR+=$(find /usr/local/Cellar/sqlcipher/*/lib | head -n 1); fi + - > + if [ $TRAVIS_OS_NAME == osx ]; then + qmake CONFIG+=rs_macos10.14 + INCLUDEPATH+=$(find /usr/local/Cellar/miniupnpc/*/include | head -n 1) + QMAKE_LIBDIR+=$(find /usr/local/Cellar/miniupnpc/*/lib/ | head -n 1) + INCLUDEPATH+=$(find /usr/local/Cellar/openssl*/*/include/ | head -n 1) + QMAKE_LIBDIR+=$(find /usr/local/Cellar/openssl*/*/lib/ | head -n 1) + INCLUDEPATH+=$(find /usr/local/Cellar/rapidjson/*/include | head -n 1) + INCLUDEPATH+=$(find /usr/local/Cellar/sqlcipher/*/include | head -n 1) + QMAKE_LIBDIR+=$(find /usr/local/Cellar/sqlcipher/*/lib | head -n 1); + fi script: - - if [ $TRAVIS_OS_NAME == osx ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j4; fi + - if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j4; fi after_success: - - if [ $TRAVIS_OS_NAME == osx ]; then chmod +x ./travis_makeOSXPackage.sh && ./travis_makeOSXPackage.sh ; fi + - if [ $TRAVIS_OS_NAME == osx ]; then build_scripts/OSX/travis_makeOSXPackage.sh ; fi - if [ $TRAVIS_OS_NAME == linux ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j2; fi diff --git a/README.asciidoc b/README.asciidoc index 2086c1bd5..c2aad3e7f 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -2,8 +2,7 @@ RetroShare is a decentralized, private, secure, cross-platform, communication toolkit. -RetroShare provides filesharing, chat, messages, forums, channels and -more. +RetroShare provides filesharing, chat, messages, forums, channels and more. .Build Status |=============================================================================== @@ -15,10 +14,14 @@ more. == Compilation It is very difficult to keep a comprehensive (we support many platforms) and -updated documentation on how to build retroshare, instead we provide scripts and -receipts that are used to create the packages for the supported platforms and +updated documentation on how to build RetroShare, instead we provide scripts and +recipes that are used to create the packages for the supported platforms and more in the `build_scripts` directory of this repository. +Those packaging receipts together with the continuous integration files +`.travis.yml` and `appveyor.yml` are a good source of knowledge on how to +compile RetroShare on different platforms. + == Using RetroShare on a headless computer with WebUI diff --git a/RetroShare.pro b/RetroShare.pro index 845cdd3a6..2e9b0a17f 100644 --- a/RetroShare.pro +++ b/RetroShare.pro @@ -16,6 +16,8 @@ # along with this program. If not, see . # ################################################################################ +CONFIG += c++11 + !include("retroshare.pri"): error("Could not include file retroshare.pri") TEMPLATE = subdirs @@ -29,12 +31,6 @@ rs_jsonapi:isEmpty(JSONAPI_GENERATOR_EXE) { libretroshare.depends += jsonapi-generator } -rs_webui { - !rs_jsonapi { - error("rs_webui requires rs_jsonapi") - } -} - SUBDIRS += libbitdht libbitdht.file = libbitdht/src/libbitdht.pro libretroshare.depends += openpgpsdk libbitdht diff --git a/appveyor.yml b/appveyor.yml index 98686b717..d74e82c77 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -90,8 +90,10 @@ install: # Configuring MSys2 - set PATH=C:\msys64\usr\bin;%PATH% - set PATH=C:\msys64\mingw32\bin;%PATH% - - pacman --noconfirm -S mingw-w64-i686-qt5 mingw-w64-i686-miniupnpc mingw-w64-i686-sqlcipher mingw-w64-i686-libmicrohttpd mingw-w64-i686-xapian-core mingw-w64-i686-cmark - #- pacman --noconfirm -S mingw-w64-i686-qt5-static mingw-w64-i686-miniupnpc mingw-w64-i686-sqlcipher mingw-w64-i686-libmicrohttpd + - > + pacman --noconfirm -S + mingw-w64-i686-qt5 mingw-w64-i686-miniupnpc mingw-w64-i686-rapidjson + mingw-w64-i686-sqlcipher mingw-w64-i686-xapian-core mingw-w64-i686-cmark #- set PATH=C:\msys64\mingw32\qt5-static\bin\;%PATH% # Configuring Qt @@ -138,6 +140,10 @@ configuration: Release # scripts to run before build before_build: - cd C:\projects\RetroShare + - git submodule update --init + - cd C:\projects\ + - mkdir RetroShare-build + - cd RetroShare-build # - find C:\ > filelist.txt # scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services) @@ -146,15 +152,18 @@ before_package: # to run your custom scripts instead of automatic MSBuild build_script: - env - - git submodule update --init - - qmake -Wall -spec win32-g++ "CONFIG=debug" + - qmake ../RetroShare -spec win32-g++ "CONFIG+=debug" - mingw32-make -j3 # scripts to run after build after_build: + - find . + - mkdir %RS_DEPLOY% - - copy retroshare-service\src\retroshare-service.exe %RS_DEPLOY%\ - - copy retroshare-gui\src\retroshare.exe %RS_DEPLOY%\ + - copy retroshare-gui\src\debug\retroshare.exe %RS_DEPLOY%\ + - copy retroshare-service\src\debug\retroshare-service.exe %RS_DEPLOY%\ +# - copy retroshare-service\src\retroshare-service.exe %RS_DEPLOY%\ +# - copy retroshare-gui\src\retroshare.exe %RS_DEPLOY%\ ## In Debug build winedeplyqt forget the non debug Qt libs - copy C:\msys64\mingw32\bin\Qt5Svg.dll %RS_DEPLOY%\ @@ -234,24 +243,10 @@ after_build: - copy C:\msys64\mingw32\bin\libwebpdemux*.dll %RS_DEPLOY%\ - copy C:\msys64\mingw32\bin\liblzma*.dll %RS_DEPLOY%\ -## Needed for libresapi http - - copy C:\msys64\mingw32\bin\libmicrohttpd*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libgnutls*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libgmp*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libhogweed*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libidn2*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libnettle*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libp11-kit*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libtasn1*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libunistring*.dll %RS_DEPLOY%\ - - copy C:\msys64\mingw32\bin\libffi*.dll %RS_DEPLOY%\ - ## Needed for cmark - copy C:\msys64\mingw32\bin\libcmark*.dll %RS_DEPLOY%\ - copy C:\msys64\mingw32\bin\libdouble-conversion*.dll %RS_DEPLOY%\ - - find C:\projects\RetroShare >> filelist.txt - # to disable automatic builds #build: off diff --git a/build_scripts/OSX/travis_makeOSXPackage.sh b/build_scripts/OSX/travis_makeOSXPackage.sh old mode 100644 new mode 100755 diff --git a/build_scripts/Windows-msys2/WindowsMSys2_InstallGuide.md b/build_scripts/Windows-msys2/WindowsMSys2_InstallGuide.md index c9ce0edd7..5d939d2de 100644 --- a/build_scripts/Windows-msys2/WindowsMSys2_InstallGuide.md +++ b/build_scripts/Windows-msys2/WindowsMSys2_InstallGuide.md @@ -47,6 +47,7 @@ Install all needed dependencies: pacman -S mingw-w64-i686-sqlcipher pacman -S mingw-w64-i686-qt5 pacman -S mingw32/mingw-w64-i686-cmake + pacman -S mingw-w64-i686-rapidjson We're done installing MSYS2, close the shell terminal. diff --git a/libretroshare/src/jsonapi/jsonapi.cpp b/libretroshare/src/jsonapi/jsonapi.cpp index 3884775da..24f4fefb7 100644 --- a/libretroshare/src/jsonapi/jsonapi.cpp +++ b/libretroshare/src/jsonapi/jsonapi.cpp @@ -1,23 +1,23 @@ -/******************************************************************************* - * RetroShare JSON API * - * * - * Copyright (C) 2018-2019 Gioacchino Mazzurco * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License version 3 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ - -#include "jsonapi.h" +/* + * RetroShare JSON API + * + * Copyright (C) 2018-2019 Gioacchino Mazzurco + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the + * Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * + * SPDX-FileCopyrightText: 2004-2019 RetroShare Team + * SPDX-License-Identifier: AGPL-3.0-only + */ #include #include @@ -26,6 +26,9 @@ #include #include + +#include "jsonapi.h" + #include "util/rsjson.h" #include "retroshare/rsfiles.h" #include "util/radix64.h" @@ -36,6 +39,7 @@ #include "util/rsurl.h" #include "util/rstime.h" #include "retroshare/rsevents.h" +#include "retroshare/rsversion.h" // Generated at compile time #include "jsonapi-includes.inl" @@ -644,3 +648,14 @@ void JsonApiServer::runloop() RsInfo() << __PRETTY_FUNCTION__ << " finished!" << std::endl; } + +/*static*/ void RsJsonApi::version( + uint32_t& major, uint32_t& minor, uint32_t& mini, std::string& extra, + std::string& human ) +{ + major = RS_MAJOR_VERSION; + minor = RS_MINOR_VERSION; + mini = RS_MINI_VERSION; + extra = RS_EXTRA_VERSION; + human = RS_HUMAN_READABLE_VERSION; +} diff --git a/libretroshare/src/jsonapi/jsonapi.h b/libretroshare/src/jsonapi/jsonapi.h index 9c0fa502d..6c26ceaae 100644 --- a/libretroshare/src/jsonapi/jsonapi.h +++ b/libretroshare/src/jsonapi/jsonapi.h @@ -1,21 +1,24 @@ -/******************************************************************************* - * RetroShare JSON API * - * * - * Copyright (C) 2018-2019 Gioacchino Mazzurco * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License version 3 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ +/* + * RetroShare JSON API + * + * Copyright (C) 2018-2019 Gioacchino Mazzurco + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the + * Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * + * SPDX-FileCopyrightText: 2004-2019 RetroShare Team + * SPDX-License-Identifier: AGPL-3.0-only + */ + #pragma once #include diff --git a/libretroshare/src/jsonapi/jsonapiitems.h b/libretroshare/src/jsonapi/jsonapiitems.h index ac6ac8b25..eba871e98 100644 --- a/libretroshare/src/jsonapi/jsonapiitems.h +++ b/libretroshare/src/jsonapi/jsonapiitems.h @@ -1,22 +1,24 @@ -/******************************************************************************* - * RetroShare JSON API * - * * - * Copyright (C) 2018-2019 Gioacchino Mazzurco * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ +/* + * RetroShare JSON API + * + * Copyright (C) 2018-2019 Gioacchino Mazzurco + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the + * Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * + * SPDX-FileCopyrightText: 2004-2019 RetroShare Team + * SPDX-License-Identifier: AGPL-3.0-only + */ + #pragma once #include diff --git a/libretroshare/src/rsserver/p3webui.cc b/libretroshare/src/jsonapi/p3webui.cc similarity index 79% rename from libretroshare/src/rsserver/p3webui.cc rename to libretroshare/src/jsonapi/p3webui.cc index 7daa4cd6a..60fc63ea9 100644 --- a/libretroshare/src/rsserver/p3webui.cc +++ b/libretroshare/src/jsonapi/p3webui.cc @@ -1,23 +1,23 @@ -/******************************************************************************* - * libretroshare/src/rsserver: p3webui.cc * - * * - * libretroshare: retroshare core library * - * * - * Copyright 2019-2019 Cyril Soler * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version 3 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ +/* + * RetroShare Web User Interface + * + * Copyright (C) 2019 Cyril Soler + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the + * Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * + * SPDX-FileCopyrightText: 2004-2019 RetroShare Team + * SPDX-License-Identifier: AGPL-3.0-only + */ #include "p3webui.h" @@ -194,5 +194,3 @@ bool p3WebUI::stop() rsJsonApi->restart(); return true; } - - diff --git a/libretroshare/src/jsonapi/p3webui.h b/libretroshare/src/jsonapi/p3webui.h new file mode 100644 index 000000000..b67927ab7 --- /dev/null +++ b/libretroshare/src/jsonapi/p3webui.h @@ -0,0 +1,47 @@ +/* + * RetroShare Web User Interface + * + * Copyright (C) 2019 Cyril Soler + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the + * Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * + * SPDX-FileCopyrightText: 2004-2019 RetroShare Team + * SPDX-License-Identifier: AGPL-3.0-only + */ + +#pragma once + +#include +#include +#include + +#include "retroshare/rswebui.h" +#include "jsonapi/jsonapi.h" + +class p3WebUI: public RsWebUi, public JsonApiResourceProvider +{ +public: + ~p3WebUI() override = default; + + // implements RsWebUI + + virtual void setHtmlFilesDirectory(const std::string& html_dir) override; + virtual void setUserPassword(const std::string& passwd) override; + + virtual bool restart() override ; + virtual bool stop() override ; + bool isRunning() const override; + // implements JsonApiResourceProvider + + virtual std::vector > getResources() const override; +}; diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro index 0a9c75322..779558a59 100644 --- a/libretroshare/src/libretroshare.pro +++ b/libretroshare/src/libretroshare.pro @@ -161,8 +161,8 @@ PUBLIC_HEADERS = retroshare/rsdisc.h \ rs_webui { PUBLIC_HEADERS += retroshare/rswebui.h - SOURCES += rsserver/p3webui.cc - HEADERS += rsserver/p3webui.h + SOURCES += jsonapi/p3webui.cc + HEADERS += jsonapi/p3webui.h } HEADERS += plugins/pluginmanager.h \ @@ -172,8 +172,6 @@ HEADERS += plugins/pluginmanager.h \ HEADERS += $$PUBLIC_HEADERS -SOURCES *= services/rsversion.cxx - ################################# Linux ########################################## linux-* { CONFIG += link_pkgconfig diff --git a/libretroshare/src/retroshare/rsjsonapi.h b/libretroshare/src/retroshare/rsjsonapi.h index e5c59c496..2fbad4a44 100644 --- a/libretroshare/src/retroshare/rsjsonapi.h +++ b/libretroshare/src/retroshare/rsjsonapi.h @@ -1,22 +1,26 @@ -/******************************************************************************* - * libretroshare/src/retroshare: rsjsonapi.h * - * * - * Copyright (C) 2018-2019 Gioacchino Mazzurco * - * Copyright (C) 2019-2019 Cyril Soler * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License version 3 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ +/* + * RetroShare JSON API public header + * + * Copyright (C) 2018-2019 Gioacchino Mazzurco + * Copyright (C) 2019 Cyril Soler + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see + * + * SPDX-FileCopyrightText: 2004-2019 RetroShare Team + * SPDX-License-Identifier: LGPL-3.0-or-later + */ + #pragma once #include @@ -158,5 +162,17 @@ public: */ virtual bool isAuthTokenValid(const std::string& token) = 0; + /** + * @brief Write version information to given paramethers + * @jsonapi{development,unauthenticated} + * @param[out] major storage + * @param[out] minor storage + * @param[out] mini storage + * @param[out] extra storage + * @param[out] human storage + */ + static void version( uint32_t& major, uint32_t& minor, uint32_t& mini, + std::string& extra, std::string& human ); + virtual ~RsJsonApi() = default; }; diff --git a/libretroshare/src/retroshare/rsversion.h b/libretroshare/src/retroshare/rsversion.h index dde4fde89..b28aef021 100644 --- a/libretroshare/src/retroshare/rsversion.h +++ b/libretroshare/src/retroshare/rsversion.h @@ -80,34 +80,6 @@ constexpr auto RS_HUMAN_READABLE_VERSION = RS_PRIVATE_STRINGIFY(RS_MINOR_VERSION) "." \ RS_PRIVATE_STRINGIFY(RS_MINI_VERSION) RS_EXTRA_VERSION; - -#include -#include - -/** - * Helper to expose version information to JSON API. - * From C++ you should use directly the macro and constants defined upstair - * @jsonapi{development} - */ -class RsVersion -{ -public: - /** - * @brief Write version information to given paramethers - * @jsonapi{development,unauthenticated} - * @param[out] major storage - * @param[out] minor storage - * @param[out] mini storage - * @param[out] extra storage - * @param[out] human storage - */ - static void version( uint32_t& major, uint32_t& minor, uint32_t& mini, - std::string& extra, std::string& human ); -}; - -/** - * Pointer to global instance of RsVersion, for the sake of JSON API, from C++ - * you can use directly the macro and constants defined upstair - * @jsonapi{development} - */ -extern RsVersion* rsVersion; +/* Because RetroShare-gui include this file in gui/images/retroshare_win.rc + * including any C++ things like `#include ` will break compilation of + * RetroShare-gui on Windows. Therefore this file must be kept minimal. */ diff --git a/libretroshare/src/retroshare/rswebui.h b/libretroshare/src/retroshare/rswebui.h index 03eabc076..d7166f545 100644 --- a/libretroshare/src/retroshare/rswebui.h +++ b/libretroshare/src/retroshare/rswebui.h @@ -1,23 +1,25 @@ -/******************************************************************************* - * libretroshare/src/rsserver: rswebui.h * - * * - * libretroshare: retroshare core library * - * * - * Copyright 2019-2019 Cyril Soler * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License version 3 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ +/* + * RetroShare Web User Interface public header + * + * Copyright (C) 2019 Cyril Soler + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see + * + * SPDX-FileCopyrightText: 2004-2019 RetroShare Team + * SPDX-License-Identifier: LGPL-3.0-or-later + */ + #pragma once #include diff --git a/libretroshare/src/rsserver/p3webui.h b/libretroshare/src/rsserver/p3webui.h deleted file mode 100644 index 0a2a7450f..000000000 --- a/libretroshare/src/rsserver/p3webui.h +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * libretroshare/src/rsserver: p3webui.h * - * * - * libretroshare: retroshare core library * - * * - * Copyright 2019-2019 Cyril Soler * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version 3 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ - -#include -#include -#include -#include "retroshare/rswebui.h" -#include "jsonapi/jsonapi.h" - -class p3WebUI: public RsWebUi, public JsonApiResourceProvider -{ -public: - ~p3WebUI() override = default; - - // implements RsWebUI - - virtual void setHtmlFilesDirectory(const std::string& html_dir) override; - virtual void setUserPassword(const std::string& passwd) override; - - virtual bool restart() override ; - virtual bool stop() override ; - bool isRunning() const override; - // implements JsonApiResourceProvider - - virtual std::vector > getResources() const override; -}; - - diff --git a/libretroshare/src/serialiser/rstypeserializer.cc b/libretroshare/src/serialiser/rstypeserializer.cc index c166ce39c..47fd99e45 100644 --- a/libretroshare/src/serialiser/rstypeserializer.cc +++ b/libretroshare/src/serialiser/rstypeserializer.cc @@ -32,12 +32,7 @@ #include #include #include // for typeid - -#ifdef HAS_RAPIDJSON #include -#else -#include -#endif // HAS_RAPIDJSON static constexpr uint32_t MAX_SERIALIZED_CHUNK_SIZE = 10*1024*1024 ; // 10 MB. diff --git a/libretroshare/src/services/rsversion.cxx b/libretroshare/src/services/rsversion.cxx deleted file mode 100644 index b4a06f7f7..000000000 --- a/libretroshare/src/services/rsversion.cxx +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * * - * libretroshare: retroshare core library * - * * - * Copyright (C) 2019 Gioacchino Mazzurco * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public License * - * along with this program. If not, see . * - * * - *******************************************************************************/ - -#include "retroshare/rsversion.h" - -/*extern*/ RsVersion* rsVersion = new RsVersion; - -/*static*/ void RsVersion::version( - uint32_t& major, uint32_t& minor, uint32_t& mini, std::string& extra, - std::string& human ) -{ - major = RS_MAJOR_VERSION; - minor = RS_MINOR_VERSION; - mini = RS_MINI_VERSION; - extra = RS_EXTRA_VERSION; - human = RS_HUMAN_READABLE_VERSION; -} diff --git a/libretroshare/src/use_libretroshare.pri b/libretroshare/src/use_libretroshare.pri index 9b9622574..11a9801d8 100644 --- a/libretroshare/src/use_libretroshare.pri +++ b/libretroshare/src/use_libretroshare.pri @@ -38,11 +38,10 @@ bitdht { # always possible to find them RAPIDJSON_AVAILABLE = $$system(pkg-config --atleast-version 1.1 RapidJSON && echo yes) isEmpty(RAPIDJSON_AVAILABLE) { - message("using built-in rapidjson") + message("using rapidjson from submodule") INCLUDEPATH *= $$clean_path($${PWD}/../../supportlibs/rapidjson/include) } else { message("using system rapidjson") - DEFINES *= HAS_RAPIDJSON } diff --git a/libretroshare/src/util/rsjson.cc b/libretroshare/src/util/rsjson.cc index 37f6282e4..8af1cf942 100644 --- a/libretroshare/src/util/rsjson.cc +++ b/libretroshare/src/util/rsjson.cc @@ -19,19 +19,12 @@ * * *******************************************************************************/ +#include +#include +#include + #include "util/rsjson.h" -#ifdef HAS_RAPIDJSON -# include -# include -# include -#else -# include -# include -# include -#endif // HAS_RAPIDJSON - - inline int getJsonManipulatorStatePosition() { static int p = std::ios_base::xalloc(); diff --git a/libretroshare/src/util/rsjson.h b/libretroshare/src/util/rsjson.h index 8bbb2a992..db864a73f 100644 --- a/libretroshare/src/util/rsjson.h +++ b/libretroshare/src/util/rsjson.h @@ -21,12 +21,7 @@ #pragma once #include - -#ifdef HAS_RAPIDJSON -# include -#else -# include -#endif // HAS_RAPIDJSON +#include /** * Use this type for JSON documents representations in RetroShare code diff --git a/retroshare-service/src/retroshare-service.cc b/retroshare-service/src/retroshare-service.cc index 7242b08e4..71abaa81a 100644 --- a/retroshare-service/src/retroshare-service.cc +++ b/retroshare-service/src/retroshare-service.cc @@ -310,11 +310,11 @@ int main(int argc, char* argv[]) #endif // def RS_SERVICE_TERMINAL_LOGIN #if (defined(RS_JSONAPI) && defined(RS_WEBUI)) && defined(RS_SERVICE_TERMINAL_WEBUI_PASSWORD) - if(rsJsonAPI && !webui_pass1.empty()) + if(rsJsonApi && !webui_pass1.empty()) { - rsWebUI->setHtmlFilesDirectory(webui_base_directory); - rsWebUI->setUserPassword(webui_pass1); - rsWebUI->restart(); + rsWebUi->setHtmlFilesDirectory(webui_base_directory); + rsWebUi->setUserPassword(webui_pass1); + rsWebUi->restart(); } #endif diff --git a/retroshare.pri b/retroshare.pri index 0158b2957..f74fc7aa4 100644 --- a/retroshare.pri +++ b/retroshare.pri @@ -164,13 +164,14 @@ no_rs_broadcast_discovery:CONFIG -= rs_broadcast_discovery CONFIG *= rs_no_webui rs_webui:CONFIG -= rs_no_webui -# To enable webui append the following assignation to qmake -# command line "CONFIG+=rs_service_webui_terminal_password" +# To disable retroshare-service option to set webui password from the terminal +# append the following assignation to qmake command line +# "CONFIG+=no_rs_service_webui_terminal_password" CONFIG *= rs_service_webui_terminal_password no_rs_service_webui_terminal_password:CONFIG -= rs_service_webui_terminal_password -# To enable retroshare-service terminal login append the following assignation -# to qmake command line "CONFIG+=rs_service_terminal_login" +# To disable retroshare-service terminal login append the following assignation +# to qmake command line "CONFIG+=no_rs_service_terminal_login" CONFIG *= rs_service_terminal_login no_rs_service_terminal_login:CONFIG -= rs_service_terminal_login @@ -479,11 +480,6 @@ no_rs_cppwarning { rs_gxs_trans { DEFINES *= RS_GXS_TRANS - greaterThan(QT_MAJOR_VERSION, 4) { - CONFIG += c++11 - } else { - QMAKE_CXXFLAGS += -std=c++0x - } } bitdht { @@ -707,21 +703,7 @@ macx-* { message(***retroshare.pri:MacOSX) - # BIN_DIR += "/usr/bin" - # INC_DIR += "/usr/include" - # INC_DIR += "/usr/local/include" - # INC_DIR += "/opt/local/include" - # LIB_DIR += "/usr/local/lib" - # LIB_DIR += "/opt/local/lib" BIN_DIR += "/Applications/Xcode.app/Contents/Developer/usr/bin" - INC_DIR += "/usr/local/Cellar/miniupnpc/2.1/include" - INC_DIR += "/usr/local/Cellar/libmicrohttpd/0.9.62_1/include" - INC_DIR += "/usr/local/Cellar/sqlcipher/4.1.0/include" - LIB_DIR += "/usr/local/opt/openssl/lib/" - LIB_DIR += "/usr/local/Cellar/libmicrohttpd/0.9.62_1/lib" - LIB_DIR += "/usr/local/Cellar/sqlcipher/4.1.0/lib" - LIB_DIR += "/usr/local/Cellar/miniupnpc/2.1/lib" - CONFIG += c++11 INCLUDEPATH += "/usr/local/include" RS_UPNP_LIB = miniupnpc QT += macextras