mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-28 00:49:28 -05:00
merged with upstream/master
This commit is contained in:
commit
5c2f714ada
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[submodule "supportlibs/restbed"]
|
||||||
|
path = supportlibs/restbed
|
||||||
|
url = https://github.com/Corvusoft/restbed.git
|
||||||
|
[submodule "cmark"]
|
||||||
|
path = supportlibs/cmark
|
||||||
|
url = https://github.com/commonmark/cmark.git
|
@ -13,10 +13,10 @@ matrix:
|
|||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get update; fi
|
- 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 qttools5-dev; 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 == osx ]; then brew update ; fi
|
- if [ $TRAVIS_OS_NAME == osx ]; then brew update ; fi
|
||||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install qt55 openssl miniupnpc libmicrohttpd sqlcipher; fi
|
- if [ $TRAVIS_OS_NAME == osx ]; then brew install qt55 openssl miniupnpc libmicrohttpd sqlcipher xapian; fi
|
||||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew link --force qt55 ; fi
|
- if [ $TRAVIS_OS_NAME == osx ]; then brew link --force qt55 ; fi
|
||||||
|
|
||||||
- wget https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz
|
- wget https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz
|
||||||
|
@ -8,7 +8,7 @@ Build Status
|
|||||||
| Platform | Build Status |
|
| Platform | Build Status |
|
||||||
| :------------- | :------------- |
|
| :------------- | :------------- |
|
||||||
| GNU/Linux, MacOS, (via travis-ci) | [![Build Status](https://travis-ci.org/RetroShare/RetroShare.svg?branch=master)](https://travis-ci.org/RetroShare/RetroShare) |
|
| GNU/Linux, MacOS, (via travis-ci) | [![Build Status](https://travis-ci.org/RetroShare/RetroShare.svg?branch=master)](https://travis-ci.org/RetroShare/RetroShare) |
|
||||||
| Windows, `MSys2` (via appveyor) | [![Build status](https://ci.appveyor.com/api/projects/status/fu7q0ye6pge53579?svg=true)](https://ci.appveyor.com/project/PhenomRetroShare/retroshare-59qxh) |
|
| Windows, `MSys2` (via appveyor) | [![Build status](https://ci.appveyor.com/api/projects/status/github/RetroShare/RetroShare?svg=true)](https://ci.appveyor.com/project/G10h4ck/retroshare-u4lmn) |
|
||||||
|
|
||||||
Compilation on Windows
|
Compilation on Windows
|
||||||
----------------------------
|
----------------------------
|
||||||
|
@ -1,3 +1,21 @@
|
|||||||
|
################################################################################
|
||||||
|
# Retroshare.pro #
|
||||||
|
# Copyright (C) 2018, Retroshare team <retroshare.team@gmailcom> #
|
||||||
|
# #
|
||||||
|
# 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 <https://www.gnu.org/licenses/>. #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
!include("retroshare.pri"): error("Could not include file retroshare.pri")
|
!include("retroshare.pri"): error("Could not include file retroshare.pri")
|
||||||
|
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
@ -5,14 +23,16 @@ TEMPLATE = subdirs
|
|||||||
SUBDIRS += openpgpsdk
|
SUBDIRS += openpgpsdk
|
||||||
openpgpsdk.file = openpgpsdk/src/openpgpsdk.pro
|
openpgpsdk.file = openpgpsdk/src/openpgpsdk.pro
|
||||||
|
|
||||||
retrotor {
|
rs_jsonapi {
|
||||||
libretroshare.depends = openpgpsdk
|
SUBDIRS += jsonapi-generator
|
||||||
} else {
|
jsonapi-generator.file = jsonapi-generator/src/jsonapi-generator.pro
|
||||||
SUBDIRS += libbitdht
|
libretroshare.depends += jsonapi-generator
|
||||||
libbitdht.file = libbitdht/src/libbitdht.pro
|
|
||||||
libretroshare.depends = openpgpsdk libbitdht
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SUBDIRS += libbitdht
|
||||||
|
libbitdht.file = libbitdht/src/libbitdht.pro
|
||||||
|
libretroshare.depends = openpgpsdk libbitdht
|
||||||
|
|
||||||
SUBDIRS += libretroshare
|
SUBDIRS += libretroshare
|
||||||
libretroshare.file = libretroshare/src/libretroshare.pro
|
libretroshare.file = libretroshare/src/libretroshare.pro
|
||||||
|
|
||||||
@ -27,15 +47,12 @@ retroshare_gui {
|
|||||||
retroshare_gui.target = retroshare_gui
|
retroshare_gui.target = retroshare_gui
|
||||||
}
|
}
|
||||||
|
|
||||||
retrotor {
|
|
||||||
} else {
|
|
||||||
retroshare_nogui {
|
retroshare_nogui {
|
||||||
SUBDIRS += retroshare_nogui
|
SUBDIRS += retroshare_nogui
|
||||||
retroshare_nogui.file = retroshare-nogui/src/retroshare-nogui.pro
|
retroshare_nogui.file = retroshare-nogui/src/retroshare-nogui.pro
|
||||||
retroshare_nogui.depends = libretroshare libresapi
|
retroshare_nogui.depends = libretroshare libresapi
|
||||||
retroshare_nogui.target = retroshare_nogui
|
retroshare_nogui.target = retroshare_nogui
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
retroshare_android_service {
|
retroshare_android_service {
|
||||||
SUBDIRS += retroshare_android_service
|
SUBDIRS += retroshare_android_service
|
||||||
|
@ -1,88 +1,73 @@
|
|||||||
## Compilation on Windows
|
## Compilation on Windows
|
||||||
|
|
||||||
### Qt Installation
|
The preferred build method on Windows is by using MSYS2 which is a collection
|
||||||
|
of packages providing unix-like tools to build native Windows software.
|
||||||
|
|
||||||
Install Qt via: [Qt Download](http://www.qt.io/download/)
|
Requirements: about 12 GB of free space
|
||||||
|
|
||||||
Use default options.
|
The resulting binary is a 32-bit build of Retroshare which will also work
|
||||||
Add to the PATH environment variable
|
fine on a 64-bit system.
|
||||||
|
|
||||||
;C:\Qt\5.5\mingw492_32\bin;C:\Qt\Tools\mingw492_32\bin;C:\Qt\Tools\mingw492_32\opt\bin
|
|
||||||
|
|
||||||
Depends on wich version of Qt you use.
|
|
||||||
Change build-all-mingw32make.bat with these values too if you don't use MSys2.
|
|
||||||
|
|
||||||
### MSYS2 INSTALLATION
|
### MSYS2 INSTALLATION
|
||||||
|
|
||||||
Choose your MSYS2 installer here: [MSYS2](http://msys2.github.io/)
|
Download MSYS2 from [MSYS2](http://www.msys2.org/). Get the i686 version
|
||||||
|
if you run a 32-bit Windows or the x86_64 if you run a 64-bit Windows.
|
||||||
|
|
||||||
Follow install procedure.
|
Run the installer and install MSYS2.
|
||||||
Don't forget to sync & Update pacman.
|
|
||||||
|
|
||||||
pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
|
At the end of the installation, it'll automatically open an MSYS shell terminal.
|
||||||
|
You can also find it on the start menu as MSYS2 MSYS. This is the shell you'll
|
||||||
|
use to install packages with pacman and do maintenance but NOT to build
|
||||||
|
RetroShare.
|
||||||
|
|
||||||
Restart console
|
First, update your MSYS2 environment to the latest version by typing:
|
||||||
|
|
||||||
pacman -Su
|
pacman -Syu
|
||||||
|
|
||||||
Install all default programms
|
Close the terminal window.
|
||||||
|
|
||||||
pacman -S base-devel git mercurial cvs wget p7zip gcc perl ruby python2
|
Run MSYS2 MSYS again and finish updating with:
|
||||||
|
|
||||||
Choose only w64-i686 if you want only compilation in 32b architecture.
|
pacman -Su
|
||||||
|
|
||||||
pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
|
Install the default programs needed to build:
|
||||||
|
|
||||||
### Install other binutils:
|
pacman -S base-devel git wget p7zip gcc perl ruby python2
|
||||||
pacman -S mingw-w64-i686-miniupnpc mingw-w64-x86_64-miniupnpc
|
|
||||||
pacman -S mingw-w64-i686-sqlite3 mingw-w64-x86_64-sqlite3
|
|
||||||
pacman -S mingw-w64-i686-speex mingw-w64-x86_64-speex
|
|
||||||
pacman -S mingw-w64-i686-speexdsp mingw-w64-x86_64-speexdsp
|
|
||||||
pacman -S mingw-w64-i686-opencv mingw-w64-x86_64-opencv
|
|
||||||
pacman -S mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg
|
|
||||||
pacman -S mingw-w64-i686-libmicrohttpd mingw-w64-x86_64-libmicrohttpd
|
|
||||||
pacman -S mingw-w64-i686-libxslt mingw-w64-x86_64-libxslt
|
|
||||||
|
|
||||||
Add MSYS2 to PATH environment variable depends your windows
|
Install the 32-bit toolchain:
|
||||||
|
|
||||||
;C:\msys64\mingw32\bin
|
pacman -S mingw-w64-i686-toolchain
|
||||||
;C:\msys32\mingw32\bin
|
|
||||||
|
|
||||||
|
Install all needed dependencies:
|
||||||
|
|
||||||
### Git Installation
|
pacman -S mingw-w64-i686-miniupnpc
|
||||||
|
pacman -S mingw-w64-i686-libmicrohttpd
|
||||||
|
pacman -S mingw-w64-i686-libxslt
|
||||||
|
pacman -S mingw-w64-i686-xapian-core
|
||||||
|
pacman -S mingw-w64-i686-sqlcipher
|
||||||
|
pacman -S mingw-w64-i686-qt5
|
||||||
|
|
||||||
Install Git Gui or other client: [Git Scm](https://git-scm.com/download/win)
|
We're done installing MSYS2, close the shell terminal.
|
||||||
|
|
||||||
Create a new directory named:
|
### BUILDING RETROSHARE
|
||||||
|
|
||||||
C:\Development\GIT
|
Now run the MSYS2 MinGW 32-bit shell terminal (it's in the start menu).
|
||||||
|
We will use it to checkout Retroshare and build it:
|
||||||
|
|
||||||
Right-click on it and choose: *Git Bash Here*
|
git clone https://github.com/RetroShare/RetroShare.git
|
||||||
|
|
||||||
Paste this text on git console:
|
Go to the RetroShare directory and configure to your liking, for example:
|
||||||
git clone https://github.com/RetroShare/RetroShare.git
|
|
||||||
|
|
||||||
|
cd RetroShare
|
||||||
|
qmake -r -Wall -spec win32-g++ "CONFIG+=debug" "CONFIG+=rs_autologin"
|
||||||
|
|
||||||
### Last Settings
|
Now we're ready to build Retroshare. Use the '-j' option with the number of
|
||||||
|
cores you have for a faster build, for instance if you have 4 cores:
|
||||||
|
|
||||||
|
mingw32-make -j4
|
||||||
|
|
||||||
In QtCreator Option Git add its path: *C:\Program Files\Git\bin*
|
Make sure your current Retroshare is not running. Then just run:
|
||||||
and select "Pull" with "Rebase"
|
|
||||||
|
|
||||||
|
retroshare-gui/src/debug/retroshare.exe
|
||||||
|
|
||||||
Open an MSys2 32|64 shell
|
You'll get debug output in the terminal and a running Retroshare instance.
|
||||||
Move to build_scripts:
|
|
||||||
|
|
||||||
cd /c/Development/GIT/RetroShare/msys2_build_libs/
|
|
||||||
|
|
||||||
### Compile missing library
|
|
||||||
make
|
|
||||||
|
|
||||||
You can now compile RS into Qt Creator
|
|
||||||
|
|
||||||
For using, and debugging Plugins, you can use [Symlinker](http://amd989.github.io/Symlinker/) to link
|
|
||||||
the files in
|
|
||||||
|
|
||||||
\build-RetroShare-Desktop_Qt_X_Y_Z_MinGW_32bit-Debug\plugins\PluginName\debug\*.dll
|
|
||||||
to
|
|
||||||
*%appdata%\RetroShare\extensions6*
|
|
||||||
|
@ -85,10 +85,11 @@ environment:
|
|||||||
# - cmd: echo This is batch again
|
# - cmd: echo This is batch again
|
||||||
# - cmd: set MY_VAR=12345
|
# - cmd: set MY_VAR=12345
|
||||||
install:
|
install:
|
||||||
|
- git submodule update --init
|
||||||
# Configuring MSys2
|
# Configuring MSys2
|
||||||
- set PATH=C:\msys64\usr\bin;%PATH%
|
- set PATH=C:\msys64\usr\bin;%PATH%
|
||||||
- set PATH=C:\msys64\mingw32\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
|
- pacman --noconfirm -S mingw-w64-i686-qt5 mingw-w64-i686-miniupnpc mingw-w64-i686-sqlcipher mingw-w64-i686-libmicrohttpd mingw-w64-i686-xapian-core
|
||||||
#- 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-static mingw-w64-i686-miniupnpc mingw-w64-i686-sqlcipher mingw-w64-i686-libmicrohttpd
|
||||||
#- set PATH=C:\msys64\mingw32\qt5-static\bin\;%PATH%
|
#- set PATH=C:\msys64\mingw32\qt5-static\bin\;%PATH%
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Source: retroshare
|
Source: retroshare
|
||||||
Section: devel
|
Section: devel
|
||||||
Priority: standard
|
Priority: optional
|
||||||
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||||
Build-Depends: debhelper (>= 9), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qtbase5-dev, qt5-qmake, qtbase5-dev-tools
|
Build-Depends: debhelper (>= 9), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qtbase5-dev, qt5-qmake, qtbase5-dev-tools
|
||||||
Standards-Version: 4.1.4
|
Standards-Version: 4.1.4
|
||||||
|
@ -2,8 +2,8 @@ Creation of a new Debian changelog:
|
|||||||
|
|
||||||
dch --create --package retroshare --newversion 0.6.4-1
|
dch --create --package retroshare --newversion 0.6.4-1
|
||||||
|
|
||||||
Note: dch reads email in $DEBMAIL or $USER@$HOSTNAME, so it should be made correct in debian/changlog
|
Note: dch reads email in $DEBMAIL or $USER@$HOSTNAME, so it should be made correct in debian/changlog
|
||||||
If the email does not match the email in mentors, the package will be rejected.
|
If the email does not match the email in mentors, the package will be rejected.
|
||||||
|
|
||||||
dget command to retrieve source package:
|
dget command to retrieve source package:
|
||||||
|
|
||||||
@ -16,17 +16,34 @@ When ready:
|
|||||||
|
|
||||||
dput mentors retroshare_0.6.4-1_source.changes
|
dput mentors retroshare_0.6.4-1_source.changes
|
||||||
|
|
||||||
Checkign with lintian:
|
Checking with lintian:
|
||||||
lintian --pedantic --profile debian retroshare_0.6.4-1_source.changes
|
lintian -EI --pedantic --profile debian retroshare_0.6.4-1_source.changes
|
||||||
|
echo -e 'display-info=y\ndisplay-experimental=y\npedantic=y\ncolor=auto' > ~/.config/lintian/lintianrc
|
||||||
|
|
||||||
|
Also apply lintian to binaries
|
||||||
|
* fix overlinking in voip plugin
|
||||||
|
|
||||||
|
Turn the RFP bug into ITP
|
||||||
|
you have to send an e-mail to control@bugs.debian.org and use the "retitle" command
|
||||||
|
[05/13/2018] successfully retitled. The mail *body* (instead of subject) needs to contain the command in a single line.
|
||||||
|
|
||||||
Todo
|
Todo
|
||||||
* make a sid binary package.
|
x make a sid binary package.
|
||||||
* test in sid using pbuilder chroot system (pbuilder login)
|
* test in sid using pbuilder chroot system (pbuilder login)
|
||||||
* upload to mentors
|
x upload to mentors
|
||||||
* request for sponsorship
|
x request for sponsorship
|
||||||
|
*
|
||||||
|
|
||||||
Getting help:
|
Getting help:
|
||||||
https://webchat.oftc.net/
|
https://webchat.oftc.net/
|
||||||
|
|
||||||
Bug creation/report
|
Bug creation/report
|
||||||
reportbug -B debian
|
reportbug -B debian
|
||||||
|
|
||||||
|
Re-do debian/rules according to
|
||||||
|
https://sources.debian.org/src/sleepyhead/1.0.0-beta-2+dfsg-5/debian/rules/
|
||||||
|
the proper way to use qtchooser in d/rules is exporting QT_SELECT in d/rules, see https://pkg-kde.alioth.debian.org/packagingqtbasedstuff.html
|
||||||
|
disable autologin
|
||||||
|
|
||||||
|
Put the package on salsa:
|
||||||
|
salsa.debian.org
|
||||||
|
11
build_scripts/Debian/clean.sh
Executable file
11
build_scripts/Debian/clean.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
rm -f ./retroshare_0.?.?-1_source.build
|
||||||
|
rm -f ./retroshare_0.?.?-1_source.changes
|
||||||
|
rm -f ./retroshare_0.?.?-1.tar.gz
|
||||||
|
rm -f ./retroshare_0.?.?-1.diff.gz
|
||||||
|
rm -f ./retroshare_0.?.?-1.dsc
|
||||||
|
|
||||||
|
rm -f *~
|
||||||
|
find . -name "*~" -exec rm {} \;
|
||||||
|
|
6
build_scripts/Debian/debian/README.Debian
Normal file
6
build_scripts/Debian/debian/README.Debian
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
retroshare for Debian
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
<possible notes regarding this package - if none, delete this file>
|
||||||
|
|
||||||
|
-- Cyril Soler <csoler@sourceforge.net> Sat, 06 Feb 2010 07:15:46 +0100
|
5
build_scripts/Debian/debian/changelog
Normal file
5
build_scripts/Debian/debian/changelog
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
retroshare (0.6.4-1) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* Initial release for Debian. (Closes: #659069)
|
||||||
|
|
||||||
|
-- Cyril Soler <csoler@users.sourceforge.net> Wed, 09 May 2018 10:11:31 +0200
|
1
build_scripts/Debian/debian/compat
Normal file
1
build_scripts/Debian/debian/compat
Normal file
@ -0,0 +1 @@
|
|||||||
|
10
|
39
build_scripts/Debian/debian/control
Normal file
39
build_scripts/Debian/debian/control
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
Source: retroshare
|
||||||
|
Section: devel
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Cyril Soler <csoler@users.sourceforge.net>
|
||||||
|
Build-Depends: debhelper (>= 10), libglib2.0-dev, libupnp-dev, libssl-dev, libxss-dev, libgnome-keyring-dev, libbz2-dev, libspeex-dev, libspeexdsp-dev, libxslt1-dev, cmake, libcurl4-openssl-dev, libopencv-dev, tcl8.6, libsqlcipher-dev, libmicrohttpd-dev, libavcodec-dev, qtmultimedia5-dev, qttools5-dev, libqt5x11extras5-dev, qtbase5-dev, qt5-qmake, qtbase5-dev-tools
|
||||||
|
Standards-Version: 4.1.4
|
||||||
|
Homepage: http://retroshare.sourceforge.net
|
||||||
|
|
||||||
|
Package: retroshare-voip-plugin
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare, libspeex1, libspeexdsp1, libqt5multimedia5
|
||||||
|
Description: VOIP plugin for the Retroshare communication platform
|
||||||
|
This package provides a plugin for RetroShare, a secured Friend-to-Friend
|
||||||
|
communication plateform. The plugin adds voice-over-IP functionality to the
|
||||||
|
private chat window. Both friends chatting together need the plugin installed
|
||||||
|
to be able to talk together.
|
||||||
|
|
||||||
|
Package: retroshare-feedreader-plugin
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}, retroshare
|
||||||
|
Description: FeedReader plugin for the Retroshare communication platform
|
||||||
|
Plugin for Retroshare, adding a RSS feed reader tab to retroshare.
|
||||||
|
|
||||||
|
Package: retroshare-nogui
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||||
|
Conflicts: retroshare
|
||||||
|
Description: headless version of Retroshare software
|
||||||
|
Headless version of the Retroshare platform.
|
||||||
|
|
||||||
|
Package: retroshare
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-keyring
|
||||||
|
Conflicts: retroshare-nogui
|
||||||
|
Description: Secure communication with friends
|
||||||
|
RetroShare is a Open Source, private and secure decentralised
|
||||||
|
commmunication platform. It creates mesh of computers linked with TLS
|
||||||
|
connections, on top of which it provides file transfer, asynchronous email,
|
||||||
|
forums, channels and chat.
|
49
build_scripts/Debian/debian/copyright
Normal file
49
build_scripts/Debian/debian/copyright
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: retroshare
|
||||||
|
Upstream-Contact: retroshare.team@gmail.com
|
||||||
|
Source: https://github.com/retroshare/retroshare
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: Copyright 2007-2018, Retroshare Team <retroshare.team@gmail.com>
|
||||||
|
License: GPL-2+
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 2 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 General Public License for more details.
|
||||||
|
.
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
.
|
||||||
|
See /usr/share/common-licenses/GPL-2 on your Debian system.
|
||||||
|
.
|
||||||
|
In addition to these license terms, the author grants the following
|
||||||
|
additional rights:
|
||||||
|
.
|
||||||
|
If you modify this program, or any covered work, by linking or
|
||||||
|
combining it with the OpenSSL project's OpenSSL library (or a
|
||||||
|
modified version of that library), containing parts covered by the
|
||||||
|
terms of the OpenSSL or SSLeay licenses, the author
|
||||||
|
grants you additional permission to convey the resulting work.
|
||||||
|
Corresponding Source for a non-source form of such a combination
|
||||||
|
shall include the source code for the parts of OpenSSL used as well
|
||||||
|
as that of the covered work.
|
||||||
|
.
|
||||||
|
You may at your option choose to remove this additional permission from
|
||||||
|
the work, or from any part of it.
|
||||||
|
.
|
||||||
|
It is possible to build this program in a way that it loads OpenSSL
|
||||||
|
libraries at run-time. If doing so, the following notices are required
|
||||||
|
by the OpenSSL and SSLeay licenses:
|
||||||
|
.
|
||||||
|
This product includes software developed by the OpenSSL Project
|
||||||
|
for use in the OpenSSL Toolkit. (http://www.openssl.org/)
|
||||||
|
.
|
||||||
|
This product includes cryptographic software written by Eric Young
|
||||||
|
(eay@cryptsoft.com)
|
||||||
|
|
||||||
|
|
0
build_scripts/Debian/debian/docs
Normal file
0
build_scripts/Debian/debian/docs
Normal file
@ -0,0 +1 @@
|
|||||||
|
debian/tmp/usr/lib/retroshare/extensions6/libFeedReader.so*
|
3
build_scripts/Debian/debian/retroshare-nogui.install
Normal file
3
build_scripts/Debian/debian/retroshare-nogui.install
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
debian/tmp/usr/bin/retroshare-nogui
|
||||||
|
debian/tmp/usr/share/retroshare/bdboot.txt
|
||||||
|
debian/tmp/usr/share/retroshare/webui/*
|
@ -0,0 +1 @@
|
|||||||
|
debian/tmp/usr/lib/retroshare/extensions6/libVOIP.so*
|
6
build_scripts/Debian/debian/retroshare.install
Normal file
6
build_scripts/Debian/debian/retroshare.install
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
debian/tmp/usr/bin/retroshare
|
||||||
|
debian/tmp/usr/bin/retroshare-nogui
|
||||||
|
debian/tmp/usr/share/applications/retroshare.desktop
|
||||||
|
debian/tmp/usr/share/icons/hicolor/*
|
||||||
|
debian/tmp/usr/share/pixmaps/retroshare.xpm
|
||||||
|
debian/tmp/usr/share/retroshare/*
|
5
build_scripts/Debian/debian/retrotor.install
Normal file
5
build_scripts/Debian/debian/retrotor.install
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
debian/tmp/usr/bin/retroshare
|
||||||
|
debian/tmp/usr/share/applications/retroshare.desktop
|
||||||
|
debian/tmp/usr/share/icons/hicolor/*
|
||||||
|
debian/tmp/usr/share/pixmaps/retroshare.xpm
|
||||||
|
debian/tmp/usr/share/retroshare/*
|
24
build_scripts/Debian/debian/rules
Executable file
24
build_scripts/Debian/debian/rules
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
|
export DH_VERBOSE = 1
|
||||||
|
|
||||||
|
DPKG_EXPORT_BUILDFLAGS = 1
|
||||||
|
|
||||||
|
# skip *-dbgsym packages
|
||||||
|
DEB_BUILD_OPTIONS=noddebs
|
||||||
|
|
||||||
|
include /usr/share/dpkg/default.mk
|
||||||
|
|
||||||
|
#export DEB_BUILD_MAINT_PTIONS = hardening=+all
|
||||||
|
export QT_SELECT = qt5
|
||||||
|
|
||||||
|
MY_BUILDDIR = _build
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@ --buildsystem=qmake --builddirectory=$(MY_BUILDDIR)
|
||||||
|
|
||||||
|
# Override dh_auto_configure in order to call qmake on the parent dir. We call mkdir here because of #800738.
|
||||||
|
|
||||||
|
override_dh_auto_configure:
|
||||||
|
@mkdir -p $(MY_BUILDDIR)
|
||||||
|
dh_auto_configure -- CONFIG="unix release retroshare_plugins rs_autologin" PREFIX=/usr LIB_DIR=/usr/lib ../src
|
1
build_scripts/Debian/debian/source/format
Normal file
1
build_scripts/Debian/debian/source/format
Normal file
@ -0,0 +1 @@
|
|||||||
|
1.0
|
145
build_scripts/Debian/debian_release_howto.txt
Normal file
145
build_scripts/Debian/debian_release_howto.txt
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
Creation of a new Debian changelog:
|
||||||
|
|
||||||
|
dch --create --package retroshare --newversion 0.6.4-1
|
||||||
|
|
||||||
|
Note: dch reads email in $DEBMAIL or $USER@$HOSTNAME, so it should be made correct in debian/changlog
|
||||||
|
If the email does not match the email in mentors, the package will be rejected.
|
||||||
|
|
||||||
|
dget command to retrieve source package:
|
||||||
|
|
||||||
|
dget -u https://launchpad.net/~retroshare/+archive/ubuntu/stable/+files/retroshare_0.6.4-1.20180313.0e6d27ad~xenial.dsc
|
||||||
|
|
||||||
|
(-u means don't check PGP signature)
|
||||||
|
|
||||||
|
When ready:
|
||||||
|
* updload the package in a place that can be used to dget the package on mentors.debian.net.
|
||||||
|
|
||||||
|
dput mentors retroshare_0.6.4-1_source.changes
|
||||||
|
|
||||||
|
Checking with lintian:
|
||||||
|
lintian -EI --pedantic --profile debian retroshare_0.6.4-1_source.changes
|
||||||
|
echo -e 'display-info=y\ndisplay-experimental=y\npedantic=y\ncolor=auto' > ~/.config/lintian/lintianrc
|
||||||
|
|
||||||
|
Also apply lintian to binaries
|
||||||
|
* fix overlinking in voip plugin
|
||||||
|
|
||||||
|
Turn the RFP bug into ITP
|
||||||
|
you have to send an e-mail to control@bugs.debian.org and use the "retitle" command
|
||||||
|
[05/13/2018] successfully retitled. The mail *body* (instead of subject) needs to contain the command in a single line.
|
||||||
|
|
||||||
|
Todo
|
||||||
|
x make a sid binary package.
|
||||||
|
* test in sid using pbuilder chroot system (pbuilder login)
|
||||||
|
x upload to mentors
|
||||||
|
x request for sponsorship
|
||||||
|
*
|
||||||
|
|
||||||
|
Getting help:
|
||||||
|
https://webchat.oftc.net/
|
||||||
|
|
||||||
|
Bug creation/report
|
||||||
|
reportbug -B debian
|
||||||
|
|
||||||
|
Re-do debian/rules according to
|
||||||
|
https://sources.debian.org/src/sleepyhead/1.0.0-beta-2+dfsg-5/debian/rules/
|
||||||
|
the proper way to use qtchooser in d/rules is exporting QT_SELECT in d/rules, see https://pkg-kde.alioth.debian.org/packagingqtbasedstuff.html
|
||||||
|
disable autologin
|
||||||
|
|
||||||
|
Put the package on salsa:
|
||||||
|
salsa.debian.org
|
||||||
|
|
||||||
|
Debian binary changes file signature:
|
||||||
|
gpg --clearsign -u 0932399B retroshare_0.6.4-1_amd64.changes
|
||||||
|
|
||||||
|
Signature does only work when done with debsign:
|
||||||
|
debsign -k0932399B retroshare_0.6.4-1.dsc
|
||||||
|
debsign -k0932399B retroshare_0.6.4-1_source.changes
|
||||||
|
debsign -k0932399B retroshare_0.6.4-1_amd64.changes
|
||||||
|
|
||||||
|
Uploading-to-mentors bug:
|
||||||
|
Apparently the system prevents you from uploading while a package is in the
|
||||||
|
queue. So the upload responds "403 forbidden" whene e.g. the previous
|
||||||
|
upload was cancelled by ^C.
|
||||||
|
|
||||||
|
|
||||||
|
Licensing issues:
|
||||||
|
Various licenses involved:
|
||||||
|
|
||||||
|
R: re-licence to GPLv3
|
||||||
|
D: delete
|
||||||
|
|
||||||
|
Code part | Licenses |A| Authors | Comment
|
||||||
|
--------------------------------+------------------------+-+----------------------------------------------+-------------------------------------------------
|
||||||
|
libbitdht | GPLv3 | | drbob, csoler, Retroshare team |
|
||||||
|
bitdht/bencode.h | Public domain | | Mike Frysinger <vapier@gmail.com> |
|
||||||
|
bitdht/bdrandom.h | GPLv2 |R| csoler |
|
||||||
|
--------------------------------+------------------------+-+----------------------------------------------+-------------------------------------------------
|
||||||
|
libresapi | GPLv3 | | G10H4ck, [], electron128 | Most files are unlicenced
|
||||||
|
libretroshare | GPLv2,GPLv3 | | csoler,drbob,Mr-alice,Chris,Thunder | Some files unversionned.
|
||||||
|
plugins/dlfcn_win32.cc | GPLv2.1 |R| Ramiro Polla |
|
||||||
|
pqi/authgpg.h | GPLv2 |R| Raghu Dev R. | .cc is authed by drbob
|
||||||
|
upnp/UPnPBase.h | GPLv2 | | Marcelo Roberto Jimenez, aMule Team | other code in upnp/ not copyrighted
|
||||||
|
util/pugiconfig.h | MIT | | Arseny Kapoulkyne | [unused file!]
|
||||||
|
util/rsstring.h | GPLv2 |R| Thomas Kister |
|
||||||
|
util/rswin.h | GPLv2 |R| Thomas Kister |
|
||||||
|
util/rsversioninfo.h | [none] | | Alexandrut |
|
||||||
|
util/stacktrace.h | GPLv2 |R| Timo Bingmann, G10H4ck |
|
||||||
|
librssimulator | [None] | | No authors |
|
||||||
|
openpgpsdk | Apache | | Rachell Wilmer, Ben Laurie |
|
||||||
|
pegmarkdown | All right reserved | | Daniel Jalkut - Code currently unused |
|
||||||
|
plugins/feedreader | GPLv2 | | Thunder |
|
||||||
|
plugins/VOIP | | | |
|
||||||
|
AudioInputConfig.h+ | All right reserved | | Thorvald Natvig | Code can be modified/re-used. Mumble's code.
|
||||||
|
SpeezProcessor.h | | | Peter Zotov |
|
||||||
|
retroshare-android-notify-* | GPLv3 | | G10H4ck |
|
||||||
|
retroshare-android-service | GPLv3 | | G10H4ck |
|
||||||
|
retroshare-gui/src | | | Thunder, csoler, drbob, crypton |
|
||||||
|
control/* | GPLv2 | | Matt Edman, crypton, Justin Hiple | [Unused code]
|
||||||
|
common/ElideLabel.h | BSD | | Qt Toolkit |
|
||||||
|
common/FlowLayout.h | BSD | | Qt Toolkit | Is that really Qt code?? Qt examples can be used.
|
||||||
|
common/html.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||||
|
common/rwindow.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||||
|
common/vmessagebox.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||||
|
common/PictureFlow | unclear | | Ariya Hidayat (@kde.org) | [Unused code]
|
||||||
|
elastic/* | LGPL | | Trolltech |
|
||||||
|
FileTransfer/FTIWidget | GPLv2 | | defnax, lsn752 |
|
||||||
|
FileTransfer/xprogressb | GPLv2 | | Xesc |
|
||||||
|
help/browser.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||||
|
images/retroshare_win.rc.h | GPLv2 | | crypton | [Unused code]
|
||||||
|
msgs/textformat.h | GPLv3 | | Merdhah Momeny, Golnaz Nilieh | very simple .h. Can be re-implemented
|
||||||
|
settings/rsettings.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||||
|
statistics/BandwidthGraphW.h| GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||||
|
statistics/dhtgraph.h | GPLv2 | | Matt Edman, defnax, Justin Hiple |
|
||||||
|
toaster/MessageToaster.h | GPLv3 | | Xesc |
|
||||||
|
toaster/DownloadToaster.h | GPLv3 | | Xesc |
|
||||||
|
About{Widget,Dialog}.h | GPLv2 | | Unipro, Russia | Very small file.
|
||||||
|
linetypes.h | GPLv2 | | Merdhah Momeny, Golnaz Nilieh | very simple .h. Can be re-implemented
|
||||||
|
mainpagestack.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||||
|
land/langagesupport.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||||
|
util/log.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||||
|
idle/idle.h | GPLv2 | | Justin Karneges | May be re-implemented
|
||||||
|
TorControl/* |* Public domaine | | John Brooks | Code from Ricochet.im
|
||||||
|
util/HandleRichText.h | GPLv2 | | Thomas Kister |
|
||||||
|
util/misc.h | GPLv2 | | defnax, Christophe Dumez |
|
||||||
|
util/printpreview.h | GPLv2 | | Trolltech example |
|
||||||
|
util/retrosharewin32.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||||
|
util/stringutil.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||||
|
rshare.h | GPLv2 | | Matt Edman, crypton, Justin Hiple |
|
||||||
|
retroshare-nogui/* | GPLv2 | | drbob |
|
||||||
|
|
||||||
|
|
||||||
|
Plan: move to GPLv3 with OpenSSL exception
|
||||||
|
|
||||||
|
- Appache is compatible with GPLv3
|
||||||
|
|
||||||
|
Many files unversionned.
|
||||||
|
|
||||||
|
Use a pointer to the top level licence file
|
||||||
|
|
||||||
|
|
||||||
|
Files after switch:
|
||||||
|
|
||||||
|
libresapi/api/json.h MIT license Copyright (c) 2013 Jeff Weinstein (jeff.weinstein at gmail)
|
||||||
|
libretroshare/src/tcponudp/bss_tou.cc SSL Licence Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||||
|
libretroshare/src/upnp/UPnPBase.{h,cpp} GPL Licence Copyright (c) 2004-2009 Marcelo Roberto Jimenez ( phoenix@amule.org )
|
||||||
|
|
189
build_scripts/Debian/makeSourcePackage.sh
Executable file
189
build_scripts/Debian/makeSourcePackage.sh
Executable file
@ -0,0 +1,189 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
###################### PARAMETERS ####################
|
||||||
|
gitpath="https://github.com/RetroShare/RetroShare.git"
|
||||||
|
#branch="master"
|
||||||
|
branch="v0.6.4-official_release"
|
||||||
|
#bubba3="Y" # comment out to compile for bubba3
|
||||||
|
######################################################
|
||||||
|
|
||||||
|
RS_MAJOR_VERSION=`fgrep RS_MAJOR_VERSION ../../libretroshare/src/retroshare/rsversion.h | cut -d\\ -f3- | sed -e s\/\ \/\/g | cut -c1`
|
||||||
|
RS_MINOR_VERSION=`fgrep RS_MINOR_VERSION ../../libretroshare/src/retroshare/rsversion.h | cut -d\\ -f3- | sed -e s\/\ \/\/g | cut -c1`
|
||||||
|
RS_BUILD_NUMBER=`fgrep RS_BUILD_NUMBER ../../libretroshare/src/retroshare/rsversion.h | grep -v BUILD_NUMBER_ADD | cut -d\\ -f3- | sed -e s\/\ \/\/g | cut -c1`
|
||||||
|
|
||||||
|
# echo "RS_MAJOR_VERSION="${RS_MAJOR_VERSION}
|
||||||
|
# echo "RS_MINOR_VERSION="${RS_MINOR_VERSION}
|
||||||
|
# echo "RS_BUILD_NUMBER="${RS_BUILD_NUMBER}
|
||||||
|
|
||||||
|
version_number="${RS_MAJOR_VERSION}"'.'"${RS_MINOR_VERSION}"'.'"${RS_BUILD_NUMBER}"
|
||||||
|
workdir=retroshare-${version_number}
|
||||||
|
|
||||||
|
echo This script is going to build the debian source package for RetroShare, from the Git repository.
|
||||||
|
|
||||||
|
if test -d "${workdir}" ; then
|
||||||
|
echo Removing the ${workdir} directory...
|
||||||
|
rm -rf ${workdir}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Parse options
|
||||||
|
rev=""
|
||||||
|
dist=""
|
||||||
|
# This is the key for "Cyril Soler <csoler@sourceforge.net>"
|
||||||
|
gpgkey="0932399B"
|
||||||
|
|
||||||
|
date=`git log --pretty=format:"%ai" | head -1 | cut -d\ -f1 | sed -e s/-//g`
|
||||||
|
time=`git log --pretty=format:"%aD" | head -1 | cut -d\ -f5 | sed -e s/://g`
|
||||||
|
hhsh=`git log --pretty=format:"%H" | head -1 | cut -c1-8`
|
||||||
|
|
||||||
|
rev=${date}.${hhsh}
|
||||||
|
useretrotor="false"
|
||||||
|
|
||||||
|
while [ ${#} -gt 0 ]; do
|
||||||
|
case ${1} in
|
||||||
|
"-rev") shift
|
||||||
|
rev=${1}
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-key") shift
|
||||||
|
gpgkey=${1}
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-nodl")
|
||||||
|
nodl=yes
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-makeorig")
|
||||||
|
makeorig=yes
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-h") shift
|
||||||
|
echo Package building script for debian/ubuntu distributions
|
||||||
|
echo Usage:
|
||||||
|
echo " "${0} '-key [PGP key id] -rev [svn revision number] -distribution [distrib name list with quotes, in (wheezy, sid, precise, saucy, etc)]'
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
"*") echo "Unknown option"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo Attempting to get revision number...
|
||||||
|
ccount=`git rev-list --count --all`
|
||||||
|
ccount=`expr $ccount + 8613 - 8267`
|
||||||
|
|
||||||
|
echo " Workdir :"${workdir}
|
||||||
|
echo " Version :"${version_number}
|
||||||
|
echo " Using revision :"${rev}
|
||||||
|
echo " Commit count :"${ccount}
|
||||||
|
echo " Hash :"${hhsh}
|
||||||
|
echo " Date :"${date}
|
||||||
|
echo " Time :"${time}
|
||||||
|
echo " Using branch :"${branch}
|
||||||
|
echo " Using PGP key id :"${gpgkey}
|
||||||
|
|
||||||
|
if test ${useretrotor} = "true"; then
|
||||||
|
echo " "Specific flags : retrotor
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Done.
|
||||||
|
version="${version_number}"."${rev}"
|
||||||
|
echo Got version number ${version}
|
||||||
|
echo
|
||||||
|
echo Please check that the changelog is up to date.
|
||||||
|
echo Hit ENTER if this is correct. Otherwise hit Ctrl+C
|
||||||
|
read tmp
|
||||||
|
|
||||||
|
echo Extracting base archive...
|
||||||
|
|
||||||
|
if ! test "${makeorig}" = "yes" ; then
|
||||||
|
if ! test -f retroshare_${version_number}.orig.tar.gz; then
|
||||||
|
echo Error: no orig file found. Please call with -makeorig option first
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! test "${nodl}" = "yes"; then
|
||||||
|
mkdir -p ${workdir}/src
|
||||||
|
echo Checking out latest snapshot...
|
||||||
|
cd ${workdir}/src
|
||||||
|
git clone --depth 1 ${gitpath} --single-branch --branch $branch .
|
||||||
|
|
||||||
|
cd -
|
||||||
|
|
||||||
|
if ! test -d ${workdir}/src/libretroshare/; then
|
||||||
|
echo Git clone failed.
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp -r debian ${workdir}/debian
|
||||||
|
|
||||||
|
# VOIP tweak
|
||||||
|
cp ${workdir}/src/retroshare-gui/src/gui/chat/PopupChatDialog.ui ${workdir}/src/plugins/VOIP/gui/PopupChatDialog.ui
|
||||||
|
|
||||||
|
# remove unised qml code, only needed on Android
|
||||||
|
rm -rf ${workdir}/src/retroshare-qml-app/
|
||||||
|
rm -rf ${workdir}/src/librssimulator/
|
||||||
|
rm -rf ${workdir}/src/retroshare-android-notify-service/
|
||||||
|
rm -rf ${workdir}/src/retroshare-android-service/
|
||||||
|
rm -rf ${workdir}/src/libretroshare/src/unused/
|
||||||
|
rm -rf ${workdir}/src/pegmarkdown/
|
||||||
|
rm -rf ${workdir}/src/unittests/
|
||||||
|
rm -rf ${workdir}/src/build_scripts/
|
||||||
|
rm -f ${workdir}/debian/*~
|
||||||
|
rm -f ${workdir}/debian/.*.sw?
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble_Compact/private/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/src/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/public/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/"history"/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/private/images.sh
|
||||||
|
|
||||||
|
cd ${workdir}
|
||||||
|
echo Setting version numbers...
|
||||||
|
|
||||||
|
# setup version numbers
|
||||||
|
sed -e "s%RS_REVISION_NUMBER.*%RS_REVISION_NUMBER 0x${hhsh}%" src/libretroshare/src/retroshare/rsversion.in > src/libretroshare/src/retroshare/rsversion.h
|
||||||
|
|
||||||
|
# Various cleaning
|
||||||
|
echo Cleaning...
|
||||||
|
|
||||||
|
\rm -rf src/.git
|
||||||
|
|
||||||
|
if test "${makeorig}" = "yes" ; then
|
||||||
|
echo making orig archive
|
||||||
|
cd -
|
||||||
|
tar zcvf retroshare_${version_number}.orig.tar.gz ${workdir}
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd -
|
||||||
|
else
|
||||||
|
tar zxvf retroshare_${version_number}.orig.tar.gz
|
||||||
|
|
||||||
|
cp -r debian/* ${workdir}/debian/
|
||||||
|
rm -rf ${workdir}/src/retroshare-qml-app/
|
||||||
|
rm -rf ${workdir}/src/retroshare-android-notify-service/
|
||||||
|
rm -rf ${workdir}/src/retroshare-android-service/
|
||||||
|
rm -rf ${workdir}/src/librssimulator/
|
||||||
|
rm -rf ${workdir}/src/unittests/
|
||||||
|
rm -rf ${workdir}/src/libretroshare/src/unused/
|
||||||
|
rm -rf ${workdir}/src/pegmarkdown/
|
||||||
|
rm -rf ${workdir}/src/build_scripts/
|
||||||
|
rm -f ${workdir}/debian/*~
|
||||||
|
rm -f ${workdir}/debian/.*.sw?
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble_Compact/private/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/src/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/public/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/"history"/images.sh
|
||||||
|
rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/private/images.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cloning sqlcipher
|
||||||
|
# git clone https://github.com/sqlcipher/sqlcipher.git
|
||||||
|
|
||||||
|
echo Calling debuild...
|
||||||
|
cd ${workdir}
|
||||||
|
debuild -S -k${gpgkey} --lintian-opts +pedantic -EviIL
|
||||||
|
cd -
|
||||||
|
|
||||||
|
exit 0
|
23
build_scripts/Windows-msys2/build-tor.bat
Normal file
23
build_scripts/Windows-msys2/build-tor.bat
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
%cecho% info "Build %SourceName%"
|
||||||
|
call "%~dp0build\build.bat" 32 release tor version autologin plugins
|
||||||
|
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
%cecho% info "Pack %SourceName%"
|
||||||
|
call "%~dp0build\pack.bat" 32 release tor
|
||||||
|
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
exit /B 1
|
23
build_scripts/Windows-msys2/build.bat
Normal file
23
build_scripts/Windows-msys2/build.bat
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
%cecho% info "Build %SourceName%"
|
||||||
|
call "%~dp0build\build.bat" 32 release version autologin plugins
|
||||||
|
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
%cecho% info "Pack %SourceName%"
|
||||||
|
call "%~dp0build\pack.bat" 32 release
|
||||||
|
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
exit /B 1
|
81
build_scripts/Windows-msys2/build/build.bat
Normal file
81
build_scripts/Windows-msys2/build/build.bat
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0..\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env-msys2.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
:: Initialize base environment
|
||||||
|
call "%~dp0env-base.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
:: Install needed things
|
||||||
|
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt5 mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-libmicrohttpd mingw-w64-%RsMSYS2Architecture%-xapian-core"
|
||||||
|
|
||||||
|
:: Plugins
|
||||||
|
if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg"
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0env.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo === Version
|
||||||
|
echo.
|
||||||
|
|
||||||
|
title Build - %SourceName%-%RsBuildConfig% [Version]
|
||||||
|
|
||||||
|
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
||||||
|
:: Touch resource file
|
||||||
|
copy /b retroshare_win.rc +,,
|
||||||
|
popd
|
||||||
|
|
||||||
|
if not exist "%RsBuildPath%" mkdir "%RsBuildPath%"
|
||||||
|
pushd "%RsBuildPath%"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo === qmake
|
||||||
|
echo.
|
||||||
|
|
||||||
|
title Build - %SourceName%-%RsBuildConfig% [qmake]
|
||||||
|
|
||||||
|
set RS_QMAKE_CONFIG="CONFIG+=%RsBuildConfig%"
|
||||||
|
if "%ParamVersion%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=version_detail_bash_script"
|
||||||
|
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_autologin"
|
||||||
|
if "%ParamPlugins%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=retroshare_plugins"
|
||||||
|
if "%ParamRetroTor%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=retrotor"
|
||||||
|
|
||||||
|
call "%ToolsPath%\msys2-path.bat" "%SourcePath%" MSYS2SourcePath
|
||||||
|
call "%ToolsPath%\msys2-path.bat" "%EnvMSYS2Path%" MSYS2EnvMSYS2Path
|
||||||
|
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%"
|
||||||
|
if errorlevel 1 goto error
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo === make
|
||||||
|
echo.
|
||||||
|
|
||||||
|
title Build - %SourceName%-%RsBuildConfig% [make]
|
||||||
|
|
||||||
|
%EnvMSYS2Cmd% "make -j 4"
|
||||||
|
|
||||||
|
:error
|
||||||
|
popd
|
||||||
|
|
||||||
|
title %COMSPEC%
|
||||||
|
|
||||||
|
if errorlevel 1 echo.& echo Build failed& echo.
|
||||||
|
exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
endlocal
|
||||||
|
exit /B 1
|
25
build_scripts/Windows-msys2/build/clean.bat
Normal file
25
build_scripts/Windows-msys2/build/clean.bat
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0..\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env-msys2.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
call "%~dp0env.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
if not exist "%RsBuildPath%" exit /B 0
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%RsBuildPath%"
|
||||||
|
|
||||||
|
exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
endlocal
|
||||||
|
exit /B 1
|
97
build_scripts/Windows-msys2/build/env-base.bat
Normal file
97
build_scripts/Windows-msys2/build/env-base.bat
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
:: Process commandline parameter
|
||||||
|
set Param32=0
|
||||||
|
set Param64=0
|
||||||
|
set ParamRelease=0
|
||||||
|
set ParamDebug=0
|
||||||
|
set ParamVersion=0
|
||||||
|
set ParamAutologin=0
|
||||||
|
set ParamPlugins=0
|
||||||
|
set ParamTor=0
|
||||||
|
|
||||||
|
:parameter_loop
|
||||||
|
if "%~1" NEQ "" (
|
||||||
|
for /f "tokens=1,2 delims==" %%a in ("%~1") do (
|
||||||
|
if "%%~a"=="32" (
|
||||||
|
set Param32=1
|
||||||
|
) else if "%%~a"=="64" (
|
||||||
|
set Param64=1
|
||||||
|
) else if "%%~a"=="release" (
|
||||||
|
set ParamRelease=1
|
||||||
|
) else if "%%~a"=="debug" (
|
||||||
|
set ParamDebug=1
|
||||||
|
) else if "%%~a"=="version" (
|
||||||
|
set ParamVersion=1
|
||||||
|
) else if "%%~a"=="autologin" (
|
||||||
|
set ParamAutologin=1
|
||||||
|
) else if "%%~a"=="plugins" (
|
||||||
|
set ParamPlugins=1
|
||||||
|
) else if "%%~a"=="tor" (
|
||||||
|
set ParamTor=1
|
||||||
|
) else (
|
||||||
|
echo.
|
||||||
|
echo Unknown parameter %1
|
||||||
|
goto :usage
|
||||||
|
)
|
||||||
|
)
|
||||||
|
shift /1
|
||||||
|
goto parameter_loop
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%Param32%"=="1" (
|
||||||
|
if "%Param64%"=="1" (
|
||||||
|
echo.
|
||||||
|
echo 32-bit or 64-bit?
|
||||||
|
goto :usage
|
||||||
|
)
|
||||||
|
|
||||||
|
set RsBit=32
|
||||||
|
set RsArchitecture=x86
|
||||||
|
set RsMSYS2Architecture=i686
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%Param64%"=="1" (
|
||||||
|
set RsBit=64
|
||||||
|
set RsArchitecture=x64
|
||||||
|
set RsMSYS2Architecture=x86_64
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%RsBit%"=="" goto :usage
|
||||||
|
|
||||||
|
if "%ParamRelease%"=="1" (
|
||||||
|
if "%ParamDebug%"=="1" (
|
||||||
|
echo.
|
||||||
|
echo Release or Debug?
|
||||||
|
goto :usage
|
||||||
|
)
|
||||||
|
|
||||||
|
set RsBuildConfig=release
|
||||||
|
) else if "%ParamDebug%"=="1" (
|
||||||
|
set RsBuildConfig=debug
|
||||||
|
) else goto :usage
|
||||||
|
|
||||||
|
if "%ParamTor%"=="1" (
|
||||||
|
set RsType=-tor
|
||||||
|
) else (
|
||||||
|
set RsType=
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:usage
|
||||||
|
echo.
|
||||||
|
echo Usage: 32^|64 release^|debug [version autologin plugins]
|
||||||
|
echo.
|
||||||
|
echo Mandatory parameter
|
||||||
|
echo 32^|64 32-bit or 64-bit Version
|
||||||
|
echo release^|debug Build release or debug version
|
||||||
|
echo.
|
||||||
|
echo Optional parameter (need clean when changed)
|
||||||
|
echo version Create version information from git
|
||||||
|
echo autologin Build with autologin
|
||||||
|
echo plugins Build plugins
|
||||||
|
echo.
|
||||||
|
echo Parameter for pack
|
||||||
|
echo tor Pack tor version
|
||||||
|
echo.
|
||||||
|
exit /B 2
|
29
build_scripts/Windows-msys2/build/env.bat
Normal file
29
build_scripts/Windows-msys2/build/env.bat
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
call "%~dp0env-base.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
set MSYSTEM=MINGW%RsBit%
|
||||||
|
|
||||||
|
set BuildPath=%EnvRootPath%\builds
|
||||||
|
set DeployPath=%EnvRootPath%\deploy
|
||||||
|
|
||||||
|
if not exist "%BuildPath%" mkdir "%BuildPath%"
|
||||||
|
if not exist "%DeployPath%" mkdir "%DeployPath%"
|
||||||
|
|
||||||
|
:: Get Qt version
|
||||||
|
call "%ToolsPath%\get-qt-version.bat" QtVersion
|
||||||
|
if "%QtVersion%"=="" %cecho% error "Cannot get Qt version." & exit /B 1
|
||||||
|
|
||||||
|
set RsMinGWPath=%EnvMSYS2BasePath%\mingw%RsBit%
|
||||||
|
|
||||||
|
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsArchitecture%-%RsBuildConfig%
|
||||||
|
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsArchitecture%-%RsBuildConfig%
|
||||||
|
set RsPackPath=%DeployPath%
|
||||||
|
set RsArchiveAdd=
|
||||||
|
|
||||||
|
if not exist "%~dp0env-mod.bat" goto no_mod
|
||||||
|
call "%~dp0env-mod.bat"
|
||||||
|
if errorlevel 1 exit /B %ERRORLEVEL%
|
||||||
|
:no_mod
|
||||||
|
|
||||||
|
exit /B 0
|
118
build_scripts/Windows-msys2/build/git-log.bat
Normal file
118
build_scripts/Windows-msys2/build/git-log.bat
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set NoAsk=
|
||||||
|
if "%~2"=="no-ask" set NoAsk=1
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0..\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env-msys2.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
call "%~dp0env.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
:: Check git executable
|
||||||
|
set GitPath=
|
||||||
|
call "%ToolsPath%\find-in-path.bat" GitPath git.exe
|
||||||
|
if "%GitPath%"=="" echo Git executable not found in PATH.& exit /B 1
|
||||||
|
|
||||||
|
:: Get compiled revision
|
||||||
|
set GetRsVersion=%SourcePath%\build_scripts\Windows\tools\get-rs-version.bat
|
||||||
|
if not exist "%GetRsVersion%" (
|
||||||
|
echo File not found
|
||||||
|
echo %GetRsVersion%
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_REVISION_STRING RsRevision
|
||||||
|
if "%RsRevision%"=="" echo Revision not found.& exit /B 1
|
||||||
|
|
||||||
|
:: Get compiled version
|
||||||
|
call "%GetRsVersion%" RS_REVISION_STRING RsRevision
|
||||||
|
if "%RsRevision%"=="" echo Revision not found.& exit /B 1
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_MAJOR_VERSION RsMajorVersion
|
||||||
|
if "%RsMajorVersion%"=="" echo Major version not found.& exit /B 1
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_MINOR_VERSION RsMinorVersion
|
||||||
|
if "%RsMinorVersion%"=="" echo Minor version not found.& exit /B 1
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_BUILD_NUMBER RsBuildNumber
|
||||||
|
if "%RsBuildNumber%"=="" echo Build number not found.& exit /B 1
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_BUILD_NUMBER_ADD RsBuildNumberAdd
|
||||||
|
|
||||||
|
set RsVersion=%RsMajorVersion%.%RsMinorVersion%.%RsBuildNumber%%RsBuildNumberAdd%
|
||||||
|
|
||||||
|
:: Check WMIC is available
|
||||||
|
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& exit /B 1
|
||||||
|
|
||||||
|
:: Use WMIC to retrieve date in format YYYYMMDD
|
||||||
|
set RsDate=
|
||||||
|
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
|
||||||
|
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
|
||||||
|
|
||||||
|
:: Get last revision
|
||||||
|
set RsLastRefFile=%BuildPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%-LastRef.txt
|
||||||
|
set RsLastRef=
|
||||||
|
if exist "%RsLastRefFile%" set /P RsLastRef=<"%RsLastRefFile%"
|
||||||
|
|
||||||
|
if "%NoAsk%"=="1" goto no_ask_for_last_revision
|
||||||
|
if not "%RsLastRef%"=="" echo Last Revision was %RsLastRef%
|
||||||
|
set /P RsLastRefInput=Last Revision:
|
||||||
|
if "%RsLastRefInput%" NEQ "" set RsLastRef=%RsLastRefInput%
|
||||||
|
:no_ask_for_last_revision
|
||||||
|
|
||||||
|
:: Get current revision
|
||||||
|
pushd "%SourcePath%"
|
||||||
|
call "%ToolsPath%\get-git-ref.bat" RsRef
|
||||||
|
popd
|
||||||
|
|
||||||
|
if errorlevel 1 exit /B 1
|
||||||
|
if "%RsRef%"=="" echo Cannot get git revision.& exit /B 1
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Creating log from %RsLastRef%
|
||||||
|
echo to %RsRef%
|
||||||
|
|
||||||
|
if "%NoAsk%"=="1" goto no_confirm
|
||||||
|
choice /M "Do you want to proceed?"
|
||||||
|
if %errorlevel%==2 exit /B 1
|
||||||
|
:no_confirm
|
||||||
|
|
||||||
|
if "%RsBuildConfig%" NEQ "release" (
|
||||||
|
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsType%-msys2%RsArchiveAdd%-%RsBuildConfig%.txt
|
||||||
|
) else (
|
||||||
|
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsType%-msys2%RsArchiveAdd%.txt
|
||||||
|
)
|
||||||
|
|
||||||
|
title %SourceName%-%RsBuildConfig% [git log]
|
||||||
|
|
||||||
|
pushd "%SourcePath%"
|
||||||
|
if "%RsLastRef%"=="" (
|
||||||
|
git log %RsRef% >"%RsGitLog%"
|
||||||
|
) else (
|
||||||
|
if "%RsLastRef%"=="%RsRef%" (
|
||||||
|
git log %RsRef% --max-count=1 >"%RsGitLog%"
|
||||||
|
) else (
|
||||||
|
git log %RsLastRef%..%RsRef% >"%RsGitLog%"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
popd
|
||||||
|
|
||||||
|
title %COMSPEC%
|
||||||
|
|
||||||
|
echo %RsRef%>"%RsLastRefFile%"
|
||||||
|
|
||||||
|
exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
endlocal
|
||||||
|
exit /B 1
|
222
build_scripts/Windows-msys2/build/pack.bat
Normal file
222
build_scripts/Windows-msys2/build/pack.bat
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set Quite=^>nul
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0..\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
call "%EnvPath%\env-msys2.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0env.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
:: Remove deploy path
|
||||||
|
if exist "%RsDeployPath%" rmdir /S /Q "%RsDeployPath%"
|
||||||
|
|
||||||
|
:: Check compilation
|
||||||
|
if not exist "%RsBuildPath%\Makefile" echo Project is not compiled.& goto error
|
||||||
|
|
||||||
|
:: Get compiled revision
|
||||||
|
set GetRsVersion=%SourcePath%\build_scripts\Windows\tools\get-rs-version.bat
|
||||||
|
if not exist "%GetRsVersion%" (
|
||||||
|
echo File not found
|
||||||
|
echo %GetRsVersion%
|
||||||
|
goto error
|
||||||
|
)
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_REVISION_STRING RsRevision
|
||||||
|
if "%RsRevision%"=="" echo Revision not found.& goto error
|
||||||
|
|
||||||
|
:: Get compiled version
|
||||||
|
call "%GetRsVersion%" RS_MAJOR_VERSION RsMajorVersion
|
||||||
|
if "%RsMajorVersion%"=="" echo Major version not found.& goto error
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_MINOR_VERSION RsMinorVersion
|
||||||
|
if "%RsMinorVersion%"=="" echo Minor version not found.& goto error
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_BUILD_NUMBER RsBuildNumber
|
||||||
|
if "%RsBuildNumber%"=="" echo Build number not found.& goto error
|
||||||
|
|
||||||
|
call "%GetRsVersion%" RS_BUILD_NUMBER_ADD RsBuildNumberAdd
|
||||||
|
|
||||||
|
set RsVersion=%RsMajorVersion%.%RsMinorVersion%.%RsBuildNumber%%RsBuildNumberAdd%
|
||||||
|
|
||||||
|
:: Check WMIC is available
|
||||||
|
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& goto error
|
||||||
|
|
||||||
|
:: Use WMIC to retrieve date in format YYYYMMDD
|
||||||
|
set RsDate=
|
||||||
|
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
|
||||||
|
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
|
||||||
|
|
||||||
|
if "%ParamTor%"=="1" (
|
||||||
|
:: Check for tor executable
|
||||||
|
if not exist "%EnvDownloadPath%\tor\Tor\tor.exe" (
|
||||||
|
echo Tor binary not found. Please download Tor Expert Bundle from
|
||||||
|
echo https://www.torproject.org/download/download.html.en
|
||||||
|
echo and unpack to
|
||||||
|
echo %EnvDownloadPath%\tor
|
||||||
|
goto error
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
set QtMainVersion=%QtVersion:~0,1%
|
||||||
|
set QtSharePath=%RsMinGWPath%\share\qt%QtMainVersion%\
|
||||||
|
|
||||||
|
rem Qt 4 = QtSvg4.dll
|
||||||
|
rem Qt 5 = Qt5Svg.dll
|
||||||
|
set QtMainVersion1=
|
||||||
|
set QtMainVersion2=
|
||||||
|
if "%QtMainVersion%"=="4" set QtMainVersion2=4
|
||||||
|
if "%QtMainVersion%"=="5" set QtMainVersion1=5
|
||||||
|
|
||||||
|
if "%RsBuildConfig%" NEQ "release" (
|
||||||
|
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%-msys2%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
|
||||||
|
) else (
|
||||||
|
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%-msys2%RsType%%RsArchiveAdd%.7z
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%Archive%" del /Q "%Archive%"
|
||||||
|
|
||||||
|
:: Create deploy path
|
||||||
|
mkdir "%RsDeployPath%"
|
||||||
|
|
||||||
|
title Pack - %SourceName%%RsType%-%RsBuildConfig% [copy files]
|
||||||
|
|
||||||
|
set ExtensionsFile=%SourcePath%\libretroshare\src\rsserver\rsinit.cc
|
||||||
|
set Extensions=
|
||||||
|
for /f %%e in ('type "%ExtensionsFile%" ^| sed.exe -n "s/^.*\/\(extensions[^/]*\)\/.*$/\1/p" ^| sed.exe -n "1,1p"') do set Extensions=%%e
|
||||||
|
if "%Extensions%"=="" echo Folder for extensions not found in %ExtensionsFile%& goto error
|
||||||
|
|
||||||
|
:: Copy files
|
||||||
|
mkdir "%RsDeployPath%\Data\%Extensions%"
|
||||||
|
mkdir "%RsDeployPath%\imageformats"
|
||||||
|
mkdir "%RsDeployPath%\qss"
|
||||||
|
mkdir "%RsDeployPath%\stylesheets"
|
||||||
|
mkdir "%RsDeployPath%\sounds"
|
||||||
|
mkdir "%RsDeployPath%\translations"
|
||||||
|
|
||||||
|
copy nul "%RsDeployPath%\portable" %Quite%
|
||||||
|
|
||||||
|
echo copy binaries
|
||||||
|
copy "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\RetroShare*.exe" "%RsDeployPath%" %Quite%
|
||||||
|
copy "%RsBuildPath%\retroshare-nogui\src\%RsBuildConfig%\retroshare*-nogui.exe" "%RsDeployPath%" %Quite%
|
||||||
|
|
||||||
|
echo copy extensions
|
||||||
|
for /D %%D in ("%RsBuildPath%\plugins\*") do (
|
||||||
|
call :copy_extension "%%D" "%RsDeployPath%\Data\%Extensions%"
|
||||||
|
call :copy_dependencies "%RsDeployPath%\Data\%Extensions%\%%~nxD.dll" "%RsDeployPath%"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo copy dependencies
|
||||||
|
call :copy_dependencies "%RsDeployPath%\retroshare.exe" "%RsDeployPath%"
|
||||||
|
|
||||||
|
echo copy Qt DLL's
|
||||||
|
copy "%RsMinGWPath%\bin\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite%
|
||||||
|
|
||||||
|
if "%QtMainVersion%"=="5" (
|
||||||
|
mkdir "%RsDeployPath%\platforms"
|
||||||
|
copy "%QtSharePath%\plugins\platforms\qwindows.dll" "%RsDeployPath%\platforms" %Quite%
|
||||||
|
mkdir "%RsDeployPath%\audio"
|
||||||
|
copy "%QtSharePath%\plugins\audio\qtaudio_windows.dll" "%RsDeployPath%\audio" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" (
|
||||||
|
echo Copy styles
|
||||||
|
mkdir "%RsDeployPath%\styles" %Quite%
|
||||||
|
copy "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" "%RsDeployPath%\styles" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
|
copy "%QtSharePath%\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
|
||||||
|
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
|
||||||
|
|
||||||
|
echo copy qss
|
||||||
|
xcopy /S "%SourcePath%\retroshare-gui\src\qss" "%RsDeployPath%\qss" %Quite%
|
||||||
|
|
||||||
|
echo copy stylesheets
|
||||||
|
xcopy /S "%SourcePath%\retroshare-gui\src\gui\qss\chat" "%RsDeployPath%\stylesheets" %Quite%
|
||||||
|
rmdir /S /Q "%RsDeployPath%\stylesheets\compact" %Quite%
|
||||||
|
rmdir /S /Q "%RsDeployPath%\stylesheets\standard" %Quite%
|
||||||
|
rmdir /S /Q "%RsDeployPath%\stylesheets\__MACOSX__Bubble" %Quite%
|
||||||
|
|
||||||
|
echo copy sounds
|
||||||
|
xcopy /S "%SourcePath%\retroshare-gui\src\sounds" "%RsDeployPath%\sounds" %Quite%
|
||||||
|
|
||||||
|
echo copy translation
|
||||||
|
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
copy "%QtSharePath%\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
if "%QtMainVersion%"=="5" (
|
||||||
|
copy "%QtSharePath%\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
copy "%QtSharePath%\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
copy "%QtSharePath%\translations\qtquick1_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
copy "%QtSharePath%\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
copy "%QtSharePath%\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
|
echo copy bdboot.txt
|
||||||
|
copy "%SourcePath%\libbitdht\src\bitdht\bdboot.txt" "%RsDeployPath%" %Quite%
|
||||||
|
|
||||||
|
echo copy changelog.txt
|
||||||
|
copy "%SourcePath%\retroshare-gui\src\changelog.txt" "%RsDeployPath%" %Quite%
|
||||||
|
|
||||||
|
if exist "%SourcePath%\libresapi\src\webui" (
|
||||||
|
echo copy webui
|
||||||
|
mkdir "%RsDeployPath%\webui"
|
||||||
|
xcopy /S "%SourcePath%\libresapi\src\webui" "%RsDeployPath%\webui" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%ParamTor%"=="1" (
|
||||||
|
echo copy tor
|
||||||
|
echo n | copy /-y "%EnvDownloadPath%\tor\Tor\*.*" "%RsDeployPath%" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
|
rem pack files
|
||||||
|
title Pack - %SourceName%%RsType%-%RsBuildConfig% [pack files]
|
||||||
|
|
||||||
|
"%EnvSevenZipExe%" a -mx=9 -t7z "%Archive%" "%RsDeployPath%\*"
|
||||||
|
|
||||||
|
title %COMSPEC%
|
||||||
|
|
||||||
|
call :cleanup
|
||||||
|
|
||||||
|
endlocal
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:error
|
||||||
|
call :Cleanup
|
||||||
|
endlocal
|
||||||
|
exit /B 1
|
||||||
|
|
||||||
|
:cleanup
|
||||||
|
goto :EOF
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
endlocal
|
||||||
|
exit /B 1
|
||||||
|
|
||||||
|
:copy_extension
|
||||||
|
if exist "%~1\%RsBuildConfig%\%~n1.dll" (
|
||||||
|
copy "%~1\%RsBuildConfig%\%~n1.dll" %2 %Quite%
|
||||||
|
)
|
||||||
|
goto :EOF
|
||||||
|
|
||||||
|
:copy_dependencies
|
||||||
|
set CopyDependenciesCopiedSomething=0
|
||||||
|
for /F "usebackq" %%A in (`%ToolsPath%\depends.bat list %1`) do (
|
||||||
|
if not exist "%~2\%%A" (
|
||||||
|
if exist "%RsMinGWPath%\bin\%%A" (
|
||||||
|
set CopyDependenciesCopiedSomething=1
|
||||||
|
copy "%RsMinGWPath%\bin\%%A" %2 %Quite%
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if "%CopyDependenciesCopiedSomething%"=="1" goto copy_dependencies
|
||||||
|
goto :EOF
|
19
build_scripts/Windows-msys2/env.bat
Normal file
19
build_scripts/Windows-msys2/env.bat
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
call :make_path SourcePath "%~dp0..\.."
|
||||||
|
call :make_path RootPath "%SourcePath%\.."
|
||||||
|
call :source_name SourceName "%SourcePath%"
|
||||||
|
set ToolsPath=%~dp0tools
|
||||||
|
set EnvPath=%~dp0env
|
||||||
|
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:make_path
|
||||||
|
setlocal
|
||||||
|
set Var=%~1
|
||||||
|
pushd %2
|
||||||
|
set CD=%cd%
|
||||||
|
popd
|
||||||
|
endlocal & set %Var%=%CD%
|
||||||
|
goto :EOF
|
||||||
|
|
||||||
|
:source_name
|
||||||
|
set %~1=%~nx2
|
37
build_scripts/Windows-msys2/env/env-msys2.bat
vendored
Normal file
37
build_scripts/Windows-msys2/env/env-msys2.bat
vendored
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call env-msys2.bat [reinstall|clean]
|
||||||
|
|
||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
IF DEFINED ProgramFiles(x86) (
|
||||||
|
:: x64
|
||||||
|
set MSYS2Architecture=x86_64
|
||||||
|
set MSYS2Base=64
|
||||||
|
) else (
|
||||||
|
:: x86
|
||||||
|
set MSYS2Architecture=i686
|
||||||
|
set MSYS2Base=32
|
||||||
|
)
|
||||||
|
|
||||||
|
set CHERE_INVOKING=1
|
||||||
|
|
||||||
|
set EnvMSYS2Path=%EnvRootPath%\msys2
|
||||||
|
set EnvMSYS2BasePath=%EnvMSYS2Path%\msys%MSYS2Base%
|
||||||
|
|
||||||
|
call "%~dp0tools\prepare-msys2.bat" %1
|
||||||
|
if errorlevel 1 exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
set EnvMSYS2SH=%EnvMSYS2BasePath%\usr\bin\sh.exe
|
||||||
|
if not exist "%EnvMSYS2SH%" if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
set EnvMSYS2Cmd="%EnvMSYS2SH%" -lc
|
||||||
|
|
||||||
|
set PATH=%EnvMSYS2BasePath%\usr\bin;%PATH%
|
||||||
|
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
exit /B 1
|
26
build_scripts/Windows-msys2/env/env.bat
vendored
Normal file
26
build_scripts/Windows-msys2/env/env.bat
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
:: Initialize environment
|
||||||
|
call "%~dp0..\env.bat"
|
||||||
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
set EnvRootPath=%RootPath%\%SourceName%-msys2
|
||||||
|
set EnvToolsPath=%EnvRootPath%\tools
|
||||||
|
set EnvTempPath=%EnvRootPath%\tmp
|
||||||
|
set EnvDownloadPath=%EnvRootPath%\download
|
||||||
|
|
||||||
|
set EnvWgetExe=%EnvToolsPath%\wget.exe
|
||||||
|
set EnvSevenZipExe=%EnvToolsPath%\7z.exe
|
||||||
|
set EnvDependsExe=%EnvToolsPath%\depends.exe
|
||||||
|
set EnvCEchoExe=%EnvToolsPath%\cecho.exe
|
||||||
|
set cecho=call "%ToolsPath%\cecho.bat"
|
||||||
|
|
||||||
|
:: Create folders
|
||||||
|
if not exist "%EnvRootPath%" mkdir "%EnvRootPath%"
|
||||||
|
if not exist "%EnvToolsPath%" mkdir "%EnvToolsPath%"
|
||||||
|
if not exist "%EnvDownloadPath%" mkdir "%EnvDownloadPath%"
|
||||||
|
|
||||||
|
call "%~dp0tools\prepare-tools.bat"
|
||||||
|
exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
:error_env
|
||||||
|
echo Failed to initialize environment.
|
||||||
|
exit /B 1
|
57
build_scripts/Windows-msys2/env/tools/prepare-msys2.bat
vendored
Normal file
57
build_scripts/Windows-msys2/env/tools/prepare-msys2.bat
vendored
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call prepare-msys2.bat [reinstall|clean]
|
||||||
|
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
if "%EnvMSYS2Path%"=="" exit /B 1
|
||||||
|
if "%MSYS2Architecture%"=="" exit /B 1
|
||||||
|
if "%MSYS2Base%"=="" exit /B 1
|
||||||
|
if not exist "%EnvRootPath%"=="" exit /B 1
|
||||||
|
|
||||||
|
copy "%~dp0root\update-msys2.bat" "%EnvRootPath%" >nul
|
||||||
|
|
||||||
|
if "%~1"=="clean" (
|
||||||
|
%cecho% info "Clean MSYS2"
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvMSYS2Path%"
|
||||||
|
goto exit
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\pacman.exe" (
|
||||||
|
if "%~1"=="reinstall" (
|
||||||
|
choice /M "Found existing MSYS2 version. Do you want to proceed?"
|
||||||
|
if !ERRORLEVEL!==2 goto exit
|
||||||
|
) else (
|
||||||
|
goto exit
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
set MSYS2Install=msys2-base-%MSYS2Architecture%-20180531.tar.xz
|
||||||
|
set MSYS2Url=http://sourceforge.net/projects/msys2/files/Base/%MSYS2Architecture%/%MSYS2Install%/download
|
||||||
|
|
||||||
|
%cecho% info "Remove previous MSYS2 version"
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvMSYS2Path%"
|
||||||
|
|
||||||
|
%cecho% info "Download installation files"
|
||||||
|
if not exist "%EnvDownloadPath%\%MSYS2Install%" call "%ToolsPath%\download-file.bat" "%MSYS2Url%" "%EnvDownloadPath%\%MSYS2Install%"
|
||||||
|
if not exist "%EnvDownloadPath%\%MSYS2Install%" %cecho% error "Cannot download MSYS" & goto error
|
||||||
|
|
||||||
|
%cecho% info "Unpack MSYS2"
|
||||||
|
"%EnvSevenZipExe%" x -so "%EnvDownloadPath%\%MSYS2Install%" | "%EnvSevenZipExe%" x -y -si -ttar -o"%EnvMSYS2Path%"
|
||||||
|
|
||||||
|
set MSYS2SH=%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\sh
|
||||||
|
|
||||||
|
%cecho% info "Initialize MSYS2"
|
||||||
|
"%MSYS2SH%" -lc "pacman -Sy"
|
||||||
|
"%MSYS2SH%" -lc "pacman --noconfirm --needed -S bash pacman pacman-mirrors msys2-runtime"
|
||||||
|
|
||||||
|
call "%EnvMSYS2Path%\msys%MSYS2Base%\autorebase.bat"
|
||||||
|
call "%EnvRootPath%\update-msys2.bat"
|
||||||
|
call "%EnvRootPath%\update-msys2.bat"
|
||||||
|
|
||||||
|
:exit
|
||||||
|
endlocal
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:error
|
||||||
|
endlocal
|
||||||
|
exit /B 1
|
79
build_scripts/Windows-msys2/env/tools/prepare-tools.bat
vendored
Normal file
79
build_scripts/Windows-msys2/env/tools/prepare-tools.bat
vendored
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
setlocal
|
||||||
|
|
||||||
|
if "%EnvRootPath%"=="" exit /B 1
|
||||||
|
|
||||||
|
set CEchoUrl=https://github.com/lordmulder/cecho/releases/download/2015-10-10/cecho.2015-10-10.zip
|
||||||
|
set CEchoInstall=cecho.2015-10-10.zip
|
||||||
|
set SevenZipUrl=https://sourceforge.net/projects/sevenzip/files/7-Zip/18.05/7z1805.msi/download
|
||||||
|
set SevenZipInstall=7z1805.msi
|
||||||
|
set WgetUrl=https://eternallybored.org/misc/wget/1.19.4/32/wget.exe
|
||||||
|
set WgetInstall=wget.exe
|
||||||
|
set DependsUrl=http://www.dependencywalker.com/depends22_x86.zip
|
||||||
|
set DependsInstall=depends22_x86.zip
|
||||||
|
|
||||||
|
if not exist "%EnvToolsPath%\wget.exe" (
|
||||||
|
echo Download Wget installation
|
||||||
|
|
||||||
|
if not exist "%EnvDownloadPath%\%WgetInstall%" call "%ToolsPath%\winhttpjs.bat" %WgetUrl% -saveTo "%EnvDownloadPath%\%WgetInstall%"
|
||||||
|
if not exist "%EnvDownloadPath%\%WgetInstall%" %cecho% error "Cannot download Wget installation" & goto error
|
||||||
|
|
||||||
|
echo Copy Wget
|
||||||
|
copy "%EnvDownloadPath%\wget.exe" "%EnvToolsPath%"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not exist "%EnvToolsPath%\7z.exe" (
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||||
|
mkdir "%EnvTempPath%"
|
||||||
|
|
||||||
|
echo Download 7z installation
|
||||||
|
|
||||||
|
if not exist "%EnvDownloadPath%\%SevenZipInstall%" call "%ToolsPath%\download-file.bat" "%SevenZipUrl%" "%EnvDownloadPath%\%SevenZipInstall%"
|
||||||
|
if not exist "%EnvDownloadPath%\%SevenZipInstall%" echo Cannot download 7z installation& goto error
|
||||||
|
|
||||||
|
echo Unpack 7z
|
||||||
|
msiexec /a "%EnvDownloadPath%\%SevenZipInstall%" /qb TARGETDIR="%EnvTempPath%"
|
||||||
|
copy "%EnvTempPath%\Files\7-Zip\7z.dll" "%EnvToolsPath%"
|
||||||
|
copy "%EnvTempPath%\Files\7-Zip\7z.exe" "%EnvToolsPath%"
|
||||||
|
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not exist "%EnvToolsPath%\cecho.exe" (
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||||
|
mkdir "%EnvTempPath%"
|
||||||
|
|
||||||
|
echo Download cecho installation
|
||||||
|
|
||||||
|
if not exist "%EnvDownloadPath%\%CEchoInstall%" call "%ToolsPath%\download-file.bat" "%CEchoUrl%" "%EnvDownloadPath%\%CEchoInstall%"
|
||||||
|
if not exist "%EnvDownloadPath%\%cCEhoInstall%" echo Cannot download cecho installation& goto error
|
||||||
|
|
||||||
|
echo Unpack cecho
|
||||||
|
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%CEchoInstall%"
|
||||||
|
copy "%EnvTempPath%\cecho.exe" "%EnvToolsPath%"
|
||||||
|
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not exist "%EnvToolsPath%\depends.exe" (
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||||
|
mkdir "%EnvTempPath%"
|
||||||
|
|
||||||
|
%cecho% info "Download Dependency Walker installation"
|
||||||
|
|
||||||
|
if not exist "%EnvDownloadPath%\%DependsInstall%" call "%ToolsPath%\winhttpjs.bat" %DependsUrl% -saveTo "%EnvDownloadPath%\%DependsInstall%"
|
||||||
|
if not exist "%EnvDownloadPath%\%DependsInstall%" %cecho% error "Cannot download Dependendy Walker installation" & goto error
|
||||||
|
|
||||||
|
%cecho% info "Unpack Dependency Walker"
|
||||||
|
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%DependsInstall%"
|
||||||
|
copy "%EnvTempPath%\*" "%EnvToolsPath%"
|
||||||
|
|
||||||
|
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
|
||||||
|
)
|
||||||
|
|
||||||
|
:exit
|
||||||
|
endlocal
|
||||||
|
exit /B 0
|
||||||
|
|
||||||
|
:error
|
||||||
|
endlocal
|
||||||
|
exit /B 1
|
19
build_scripts/Windows-msys2/env/tools/root/update-msys2.bat
vendored
Normal file
19
build_scripts/Windows-msys2/env/tools/root/update-msys2.bat
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
if exist "%~dp0msys2\msys32" call :update 32
|
||||||
|
if exist "%~dp0msys2\msys64" call :update 64
|
||||||
|
|
||||||
|
goto :EOF
|
||||||
|
|
||||||
|
:update
|
||||||
|
set MSYSSH=%~dp0msys2\msys%~1\usr\bin\sh
|
||||||
|
|
||||||
|
echo Update MSYS2 %~1
|
||||||
|
"%MSYSSH%" -lc "pacman -Sy"
|
||||||
|
"%MSYSSH%" -lc "pacman --noconfirm -Su"
|
||||||
|
|
||||||
|
:exit
|
||||||
|
endlocal
|
||||||
|
goto :EOF
|
6
build_scripts/Windows-msys2/tools/cecho.bat
Normal file
6
build_scripts/Windows-msys2/tools/cecho.bat
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call cecho.bat [info|error|std] "text"
|
||||||
|
|
||||||
|
if "%~1"=="std" echo %~2
|
||||||
|
if "%~1"=="info" "%EnvCEchoExe%" green "%~2"
|
||||||
|
if "%~1"=="error" "%EnvCEchoExe%" red "%~2"
|
40
build_scripts/Windows-msys2/tools/depends.bat
Normal file
40
build_scripts/Windows-msys2/tools/depends.bat
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call depends.bat [list^|missing] file
|
||||||
|
|
||||||
|
if "%2"=="" (
|
||||||
|
echo Usage: %~nx0 [list^|missing] File
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
if not exist "%EnvDependsExe%" echo depends.exe not found in %EnvToolsPath%.& exit /B 1
|
||||||
|
|
||||||
|
set CutPath=
|
||||||
|
call "%ToolsPath%\find-in-path.bat" CutPath cut.exe
|
||||||
|
if "%CutPath%"=="" echo cut.exe not found in PATH.& exit /B 1
|
||||||
|
|
||||||
|
start /wait "" "%EnvDependsExe%" /c /oc:"%~dp0depends.tmp" %2
|
||||||
|
if "%1"=="missing" (
|
||||||
|
cut.exe --delimiter=, --fields=1,2 "%~dp0depends.tmp" >"%~dp0depends1.tmp"
|
||||||
|
for /F "tokens=1,2 delims=," %%A in (%~sdp0depends1.tmp) do (
|
||||||
|
if "%%A"=="?" (
|
||||||
|
echo %%~B
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%1"=="list" (
|
||||||
|
cut.exe --delimiter=, --fields=2 "%~dp0depends.tmp" >"%~dp0depends1.tmp"
|
||||||
|
for /F "tokens=1 delims=," %%A in (%~sdp0depends1.tmp) do (
|
||||||
|
if "%%A" NEQ "Module" (
|
||||||
|
echo %%~A
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%~dp0depends.tmp" del /Q "%~dp0depends.tmp"
|
||||||
|
if exist "%~dp0depends1.tmp" del /Q "%~dp0depends1.tmp"
|
||||||
|
|
||||||
|
endlocal
|
||||||
|
exit /B 0
|
13
build_scripts/Windows-msys2/tools/download-file.bat
Normal file
13
build_scripts/Windows-msys2/tools/download-file.bat
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call download-file.bat url file
|
||||||
|
|
||||||
|
if "%~2"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
::"%EnvCurlExe%" -L -k "%~1" -o "%~2"
|
||||||
|
"%EnvWgetExe%" --no-check-certificate --continue "%~1" --output-document="%~2"
|
||||||
|
|
||||||
|
exit /B %ERRORLEVEL%
|
26
build_scripts/Windows-msys2/tools/find-in-path.bat
Normal file
26
build_scripts/Windows-msys2/tools/find-in-path.bat
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call find-in-path.bat variable file
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set Var=%~1
|
||||||
|
set File=%~2
|
||||||
|
|
||||||
|
if "%File%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set FoundPath=
|
||||||
|
|
||||||
|
SET PathTemp="%Path:;=";"%"
|
||||||
|
FOR %%P IN (%PathTemp%) DO (
|
||||||
|
IF EXIST "%%~P.\%File%" (
|
||||||
|
set FoundPath=%%~P
|
||||||
|
goto :found
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:found
|
||||||
|
endlocal & set %Var%=%FoundPath%
|
39
build_scripts/Windows-msys2/tools/get-git-ref.bat
Normal file
39
build_scripts/Windows-msys2/tools/get-git-ref.bat
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
REM Usage:
|
||||||
|
REM call get-git-ref.bat Variable [Branch]
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set Variable=%~1
|
||||||
|
if "%Variable%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set Ref=
|
||||||
|
|
||||||
|
:: Check git executable
|
||||||
|
set GitPath=
|
||||||
|
call "%~dp0find-in-path.bat" GitPath git.exe
|
||||||
|
if "%GitPath%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Git executable not found in PATH.
|
||||||
|
goto exit
|
||||||
|
)
|
||||||
|
|
||||||
|
set GitParameter=
|
||||||
|
set Branch=%~2
|
||||||
|
if "%Branch%"=="" (
|
||||||
|
set Branch=HEAD
|
||||||
|
set GitParameter=--head
|
||||||
|
)
|
||||||
|
|
||||||
|
for /F "tokens=1*" %%A in ('git show-ref %GitParameter% %Branch%') do (
|
||||||
|
if "%%B"=="%Branch%" (
|
||||||
|
set Ref=%%A
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:exit
|
||||||
|
endlocal & set %Variable%=%Ref%
|
||||||
|
exit /B 0
|
27
build_scripts/Windows-msys2/tools/get-qt-version.bat
Normal file
27
build_scripts/Windows-msys2/tools/get-qt-version.bat
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call get-qt-version.bat variable
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set Var=%~1
|
||||||
|
if "%Var%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set QtVersion=
|
||||||
|
|
||||||
|
%EnvMSYS2Cmd% "qmake -version" >"%~dp0qtversion.tmp"
|
||||||
|
for /F "tokens=1,2,3,4" %%A in (%~sdp0qtversion.tmp) do (
|
||||||
|
if "%%A"=="Using" (
|
||||||
|
set QtVersion=%%D
|
||||||
|
goto exit
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:exit
|
||||||
|
if exist "%~dp0qtversion.tmp" del /Q "%~dp0qtversion.tmp"
|
||||||
|
|
||||||
|
endlocal & set %Var%=%QtVersion%
|
||||||
|
exit /B 0
|
33
build_scripts/Windows-msys2/tools/get-rs-version.bat
Normal file
33
build_scripts/Windows-msys2/tools/get-rs-version.bat
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call get-rs-version.bat Define Variable
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set Define=%~1
|
||||||
|
set Variable=%~2
|
||||||
|
if "%Variable%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set Result=
|
||||||
|
set VersionFile="%~dp0..\..\..\libretroshare\src\retroshare\rsversion.h"
|
||||||
|
|
||||||
|
if not exist "%VersionFile%" (
|
||||||
|
echo.
|
||||||
|
echo Version file doesn't exist.
|
||||||
|
echo %VersionFile%
|
||||||
|
exit /B1
|
||||||
|
)
|
||||||
|
|
||||||
|
for /F "usebackq tokens=1,2,3" %%A in (%VersionFile%) do (
|
||||||
|
if "%%A"=="#define" (
|
||||||
|
if "%%B"=="%Define%" (
|
||||||
|
set Result=%%~C
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
endlocal & set %Variable%=%Result%
|
||||||
|
exit /B 0
|
20
build_scripts/Windows-msys2/tools/msys2-path.bat
Normal file
20
build_scripts/Windows-msys2/tools/msys2-path.bat
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call msys2-path.bat path variable
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set WinPath=%~1
|
||||||
|
set MSYS2Var=%~2
|
||||||
|
|
||||||
|
if "%MSYS2Var%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set MSYS2Path=/%WinPath:~0,1%/%WinPath:~3%
|
||||||
|
set MSYS2Path=%MSYS2Path:\=/%
|
||||||
|
|
||||||
|
endlocal & set %MSYS2Var%=%MSYS2Path%
|
||||||
|
|
||||||
|
exit /B 0
|
15
build_scripts/Windows-msys2/tools/remove-dir.bat
Normal file
15
build_scripts/Windows-msys2/tools/remove-dir.bat
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
:: Usage:
|
||||||
|
:: call remove-dir.bat path
|
||||||
|
|
||||||
|
if "%~1"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist %1 (
|
||||||
|
del /s /f /q %1 >nul
|
||||||
|
rmdir /s /q %1
|
||||||
|
)
|
||||||
|
|
||||||
|
exit /B 0
|
584
build_scripts/Windows-msys2/tools/winhttpjs.bat
Normal file
584
build_scripts/Windows-msys2/tools/winhttpjs.bat
Normal file
@ -0,0 +1,584 @@
|
|||||||
|
@if (@X) == (@Y) @end /* JScript comment
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
rem :: the first argument is the script name as it will be used for proper help message
|
||||||
|
cscript //E:JScript //nologo "%~f0" "%~nx0" %*
|
||||||
|
|
||||||
|
exit /b %errorlevel%
|
||||||
|
|
||||||
|
@if (@X)==(@Y) @end JScript comment */
|
||||||
|
|
||||||
|
// used resources
|
||||||
|
|
||||||
|
// update 12.10.15
|
||||||
|
// osvikvi(https://github.com/osvikvi) has nodited that the -password option is not set , so this is fixed
|
||||||
|
|
||||||
|
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384058(v=vs.85).aspx
|
||||||
|
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384055(v=vs.85).aspx
|
||||||
|
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx
|
||||||
|
|
||||||
|
// global variables and constants
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------
|
||||||
|
// -- asynch requests not included --
|
||||||
|
// ----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
//todo - save responceStream instead of responceBody !!
|
||||||
|
//todo - set all winthttp options ->//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
|
||||||
|
//todo - log all options
|
||||||
|
//todo - improve help message . eventual verbose option
|
||||||
|
|
||||||
|
|
||||||
|
var ARGS = WScript.Arguments;
|
||||||
|
var scriptName = ARGS.Item(0);
|
||||||
|
|
||||||
|
var url = "";
|
||||||
|
var saveTo = "";
|
||||||
|
|
||||||
|
var user = 0;
|
||||||
|
var pass = 0;
|
||||||
|
|
||||||
|
var proxy = 0;
|
||||||
|
var bypass = 0;
|
||||||
|
var proxy_user = 0;
|
||||||
|
var proxy_pass = 0;
|
||||||
|
|
||||||
|
var certificate = 0;
|
||||||
|
|
||||||
|
var force = true;
|
||||||
|
|
||||||
|
var body = "";
|
||||||
|
|
||||||
|
//ActiveX objects
|
||||||
|
var WinHTTPObj = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
|
||||||
|
var FileSystemObj = new ActiveXObject("Scripting.FileSystemObject");
|
||||||
|
var AdoDBObj = new ActiveXObject("ADODB.Stream");
|
||||||
|
|
||||||
|
// HttpRequest SetCredentials flags.
|
||||||
|
var proxy_settings = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0;
|
||||||
|
HTTPREQUEST_SETCREDENTIALS_FOR_PROXY = 1;
|
||||||
|
|
||||||
|
//timeouts and their default values
|
||||||
|
var RESOLVE_TIMEOUT = 0;
|
||||||
|
var CONNECT_TIMEOUT = 90000;
|
||||||
|
var SEND_TIMEOUT = 90000;
|
||||||
|
var RECEIVE_TIMEOUT = 90000;
|
||||||
|
|
||||||
|
//HttpRequestMethod
|
||||||
|
var http_method = 'GET';
|
||||||
|
|
||||||
|
//header
|
||||||
|
var header_file = "";
|
||||||
|
|
||||||
|
//report
|
||||||
|
var reportfile = "";
|
||||||
|
|
||||||
|
//test-this:
|
||||||
|
var use_stream = false;
|
||||||
|
|
||||||
|
//autologon policy
|
||||||
|
var autologon_policy = 1; //0,1,2
|
||||||
|
|
||||||
|
|
||||||
|
//headers will be stored as multi-dimensional array
|
||||||
|
var headers = [];
|
||||||
|
|
||||||
|
//user-agent
|
||||||
|
var ua = "";
|
||||||
|
|
||||||
|
//escape URL
|
||||||
|
var escape = false;
|
||||||
|
|
||||||
|
function printHelp() {
|
||||||
|
WScript.Echo(scriptName + " - sends HTTP request and saves the request body as a file and/or a report of the sent request");
|
||||||
|
WScript.Echo(scriptName + " url [-force yes|no] [-user username -password password] [-proxy proxyserver:port] [-bypass bypass_list]");
|
||||||
|
WScript.Echo(" [-proxyuser proxy_username -proxypassword proxy_password] [-certificate certificateString]");
|
||||||
|
WScript.Echo(" [-method GET|POST|PATCH|DELETE|HEAD|OPTIONS|CONNECT]");
|
||||||
|
WScript.Echo(" [-saveTo file] - to print response to console use con");
|
||||||
|
|
||||||
|
WScript.Echo(" [-sendTimeout int(milliseconds)]");
|
||||||
|
WScript.Echo(" [-resolveTimeout int(milliseconds)]");
|
||||||
|
WScript.Echo(" [-connectTimeout int(milliseconds)]");
|
||||||
|
WScript.Echo(" [-receiveTimeout int(milliseconds)]");
|
||||||
|
|
||||||
|
WScript.Echo(" [-autologonPolicy 1|2|3]");
|
||||||
|
WScript.Echo(" [-proxySettings 1|2|3] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx)");
|
||||||
|
|
||||||
|
//header
|
||||||
|
WScript.Echo(" [-headers-file header_file]");
|
||||||
|
//reportfile
|
||||||
|
WScript.Echo(" [-reportfile reportfile]");
|
||||||
|
WScript.Echo(" [-ua user-agent]");
|
||||||
|
WScript.Echo(" [-ua-file user-agent-file]");
|
||||||
|
|
||||||
|
WScript.Echo(" [-escape yes|no]");
|
||||||
|
|
||||||
|
WScript.Echo(" [-body body-string]");
|
||||||
|
WScript.Echo(" [-body-file body-file]");
|
||||||
|
|
||||||
|
WScript.Echo("-force - decide to not or to overwrite if the local files exists");
|
||||||
|
|
||||||
|
WScript.Echo("proxyserver:port - the proxy server");
|
||||||
|
WScript.Echo("bypass- bypass list");
|
||||||
|
WScript.Echo("proxy_user , proxy_password - credentials for proxy server");
|
||||||
|
WScript.Echo("user , password - credentials for the server");
|
||||||
|
WScript.Echo("certificate - location of SSL certificate");
|
||||||
|
WScript.Echo("method - what HTTP method will be used.Default is GET");
|
||||||
|
WScript.Echo("saveTo - save the responce as binary file");
|
||||||
|
WScript.Echo(" ");
|
||||||
|
WScript.Echo("Header file should contain key:value pairs.Lines starting with \"#\" will be ignored.");
|
||||||
|
WScript.Echo("value should NOT be enclosed with quotes");
|
||||||
|
WScript.Echo(" ");
|
||||||
|
WScript.Echo("Examples:");
|
||||||
|
|
||||||
|
WScript.Echo(scriptName + " http://somelink.com/somefile.zip -saveTo c:\\somefile.zip -certificate \"LOCAL_MACHINE\\Personal\\My Middle-Tier Certificate\"");
|
||||||
|
WScript.Echo(scriptName + " http://somelink.com/something.html -method POST -certificate \"LOCAL_MACHINE\\Personal\\My Middle-Tier Certificate\" -header c:\\header_file -reportfile c:\\reportfile.txt");
|
||||||
|
WScript.Echo(scriptName + "\"http://somelink\" -method POST -header hdrs.txt -reportfile reportfile2.txt -saveTo responsefile2 -ua \"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36\" -body-file some.json");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseArgs() {
|
||||||
|
//
|
||||||
|
if (ARGS.Length < 2) {
|
||||||
|
WScript.Echo("insufficient arguments");
|
||||||
|
printHelp();
|
||||||
|
WScript.Quit(43);
|
||||||
|
}
|
||||||
|
// !!!
|
||||||
|
url = ARGS.Item(1);
|
||||||
|
// !!!
|
||||||
|
if (ARGS.Length % 2 != 0) {
|
||||||
|
WScript.Echo("illegal arguments");
|
||||||
|
printHelp();
|
||||||
|
WScript.Quit(44);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 2; i < ARGS.Length - 1; i = i + 2) {
|
||||||
|
var arg = ARGS.Item(i).toLowerCase();
|
||||||
|
var next = ARGS.Item(i + 1);
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
switch (arg) { // the try-catch is set mainly because of the parseInts
|
||||||
|
case "-force":
|
||||||
|
if (next == "no") {
|
||||||
|
force = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-escape":
|
||||||
|
if (next == "yes") {
|
||||||
|
escape = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-saveto":
|
||||||
|
saveTo = next;
|
||||||
|
break;
|
||||||
|
case "-user":
|
||||||
|
case "-u":
|
||||||
|
user = next;
|
||||||
|
break;
|
||||||
|
case "-pass":
|
||||||
|
case "-password":
|
||||||
|
case "-p":
|
||||||
|
pass = next;
|
||||||
|
break;
|
||||||
|
case "-proxy":
|
||||||
|
proxy = next;
|
||||||
|
break;
|
||||||
|
case "-bypass":
|
||||||
|
bypass = next;
|
||||||
|
break;
|
||||||
|
case "-proxyuser":
|
||||||
|
case "-pu":
|
||||||
|
proxy_user = next;
|
||||||
|
break;
|
||||||
|
case "-proxypassword":
|
||||||
|
case "-pp":
|
||||||
|
proxy_pass = next;
|
||||||
|
break;
|
||||||
|
case "-ua":
|
||||||
|
ua = next;
|
||||||
|
break;
|
||||||
|
case "-ua-file":
|
||||||
|
ua = readFile(next);
|
||||||
|
break;
|
||||||
|
case "-body":
|
||||||
|
body = next;
|
||||||
|
break;
|
||||||
|
case "-usestream":
|
||||||
|
//WScript.Echo("~~");
|
||||||
|
if (next.toLowerCase() === "yes") {
|
||||||
|
use_stream = true
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "-body-file":
|
||||||
|
body = readFile(next);
|
||||||
|
break;
|
||||||
|
case "-certificate":
|
||||||
|
certificate = next;
|
||||||
|
break;
|
||||||
|
case "-method":
|
||||||
|
switch (next.toLowerCase()) {
|
||||||
|
case "post":
|
||||||
|
http_method = 'POST';
|
||||||
|
break;
|
||||||
|
case "get":
|
||||||
|
http_method = 'GET';
|
||||||
|
break;
|
||||||
|
case "head":
|
||||||
|
http_method = 'HEAD';
|
||||||
|
break;
|
||||||
|
case "put":
|
||||||
|
http_method = 'PUT';
|
||||||
|
break;
|
||||||
|
case "options":
|
||||||
|
http_method = 'OPTIONS';
|
||||||
|
break;
|
||||||
|
case "connect":
|
||||||
|
http_method = 'CONNECT';
|
||||||
|
break;
|
||||||
|
case "patch":
|
||||||
|
http_method = 'PATCH';
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
http_method = 'DELETE';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
WScript.Echo("Invalid http method passed " + next);
|
||||||
|
WScript.Echo("possible values are GET,POST,DELETE,PUT,CONNECT,PATCH,HEAD,OPTIONS");
|
||||||
|
WScript.Quit(1326);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-headers-file":
|
||||||
|
case "-header":
|
||||||
|
headers = readPropFile(next);
|
||||||
|
break;
|
||||||
|
case "-reportfile":
|
||||||
|
reportfile = next;
|
||||||
|
break;
|
||||||
|
//timeouts
|
||||||
|
case "-sendtimeout":
|
||||||
|
SEND_TIMEOUT = parseInt(next);
|
||||||
|
break;
|
||||||
|
case "-connecttimeout":
|
||||||
|
CONNECT_TIMEOUT = parseint(next);
|
||||||
|
break;
|
||||||
|
case "-resolvetimeout":
|
||||||
|
RESOLVE_TIMEOUT = parseInt(next);
|
||||||
|
break;
|
||||||
|
case "-receivetimeout":
|
||||||
|
RECEIVE_TIMEOUT = parseInt(next);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "-autologonpolicy":
|
||||||
|
autologon_policy = parseInt(next);
|
||||||
|
if (autologon_policy > 2 || autologon_policy < 0) {
|
||||||
|
WScript.Echo("out of autologon policy range");
|
||||||
|
WScript.Quit(87);
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "-proxysettings":
|
||||||
|
proxy_settings = parseInt(next);
|
||||||
|
if (proxy_settings > 2 || proxy_settings < 0) {
|
||||||
|
WScript.Echo("out of proxy settings range");
|
||||||
|
WScript.Quit(87);
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
WScript.Echo("Invalid command line switch: " + arg);
|
||||||
|
WScript.Quit(1405);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
WScript.Echo(err.message);
|
||||||
|
WScript.Quit(1348);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stripTrailingSlash = function(path) {
|
||||||
|
while (path.substr(path.length - 1, path.length) == '\\') {
|
||||||
|
path = path.substr(0, path.length - 1);
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
function existsItem(path) {
|
||||||
|
return FileSystemObj.FolderExists(path) || FileSystemObj.FileExists(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteItem(path) {
|
||||||
|
if (FileSystemObj.FileExists(path)) {
|
||||||
|
FileSystemObj.DeleteFile(path);
|
||||||
|
return true;
|
||||||
|
} else if (FileSystemObj.FolderExists(path)) {
|
||||||
|
FileSystemObj.DeleteFolder(stripTrailingSlash(path));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
//----------------------
|
||||||
|
//----------
|
||||||
|
//-----
|
||||||
|
//--
|
||||||
|
function request(url) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
WinHTTPObj.Open(http_method, url, false);
|
||||||
|
if (proxy != 0 && bypass != 0) {
|
||||||
|
WinHTTPObj.SetProxy(proxy_settings, proxy, bypass);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (proxy != 0) {
|
||||||
|
WinHTTPObj.SetProxy(proxy_settings, proxy);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user != 0 && pass != 0) {
|
||||||
|
WinHTTPObj.SetCredentials(user, pass, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (proxy_user != 0 && proxy_pass != 0) {
|
||||||
|
WinHTTPObj.SetCredentials(proxy_user, proxy_pass, HTTPREQUEST_SETCREDENTIALS_FOR_PROXY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (certificate != 0) {
|
||||||
|
WinHTTPObj.SetClientCertificate(certificate);
|
||||||
|
}
|
||||||
|
|
||||||
|
//set autologin policy
|
||||||
|
WinHTTPObj.SetAutoLogonPolicy(autologon_policy);
|
||||||
|
//set timeouts
|
||||||
|
WinHTTPObj.SetTimeouts(RESOLVE_TIMEOUT, CONNECT_TIMEOUT, SEND_TIMEOUT, RECEIVE_TIMEOUT);
|
||||||
|
|
||||||
|
if (headers.length !== 0) {
|
||||||
|
WScript.Echo("Sending with headers:");
|
||||||
|
for (var i = 0; i < headers.length; i++) {
|
||||||
|
WinHTTPObj.SetRequestHeader(headers[i][0], headers[i][1]);
|
||||||
|
WScript.Echo(headers[i][0] + ":" + headers[i][1]);
|
||||||
|
}
|
||||||
|
WScript.Echo("");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ua !== "") {
|
||||||
|
//user-agent option from:
|
||||||
|
//WinHttpRequestOption enumeration
|
||||||
|
// other options can be added like bellow
|
||||||
|
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
|
||||||
|
WinHTTPObj.Option(0) = ua;
|
||||||
|
}
|
||||||
|
if (escape) {
|
||||||
|
WinHTTPObj.Option(3) = true;
|
||||||
|
}
|
||||||
|
if (trim(body) === "") {
|
||||||
|
WinHTTPObj.Send();
|
||||||
|
} else {
|
||||||
|
WinHTTPObj.Send(body);
|
||||||
|
}
|
||||||
|
|
||||||
|
var status = WinHTTPObj.Status
|
||||||
|
} catch (err) {
|
||||||
|
WScript.Echo(err.message);
|
||||||
|
WScript.Quit(666);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////
|
||||||
|
// report //
|
||||||
|
////////////////////////
|
||||||
|
|
||||||
|
if (reportfile != "") {
|
||||||
|
|
||||||
|
//var report_string="";
|
||||||
|
var n = "\r\n";
|
||||||
|
var report_string = "Status:" + n;
|
||||||
|
report_string = report_string + " " + WinHTTPObj.Status;
|
||||||
|
report_string = report_string + " " + WinHTTPObj.StatusText + n;
|
||||||
|
report_string = report_string + " " + n;
|
||||||
|
report_string = report_string + "Response:" + n;
|
||||||
|
report_string = report_string + WinHTTPObj.ResponseText + n;
|
||||||
|
report_string = report_string + " " + n;
|
||||||
|
report_string = report_string + "Headers:" + n;
|
||||||
|
report_string = report_string + WinHTTPObj.GetAllResponseHeaders() + n;
|
||||||
|
|
||||||
|
WinHttpRequestOption_UserAgentString = 0; // Name of the user agent
|
||||||
|
WinHttpRequestOption_URL = 1; // Current URL
|
||||||
|
WinHttpRequestOption_URLCodePage = 2; // Code page
|
||||||
|
WinHttpRequestOption_EscapePercentInURL = 3; // Convert percents
|
||||||
|
// in the URL
|
||||||
|
// rest of the options can be seen and eventually added using this as reference
|
||||||
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
|
||||||
|
|
||||||
|
report_string = report_string + "URL:" + n;
|
||||||
|
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_URL) + n;
|
||||||
|
|
||||||
|
report_string = report_string + "URL Code Page:" + n;
|
||||||
|
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_URLCodePage) + n;
|
||||||
|
|
||||||
|
report_string = report_string + "User Agent:" + n;
|
||||||
|
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_UserAgentString) + n;
|
||||||
|
|
||||||
|
report_string = report_string + "Escapped URL:" + n;
|
||||||
|
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_EscapePercentInURL) + n;
|
||||||
|
|
||||||
|
prepareateFile(force, reportfile);
|
||||||
|
|
||||||
|
WScript.Echo("Writing report to " + reportfile);
|
||||||
|
|
||||||
|
writeFile(reportfile, report_string);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
|
case 200:
|
||||||
|
WScript.Echo("Status: 200 OK");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
WScript.Echo("Status: " + status);
|
||||||
|
WScript.Echo("Status was not OK. More info -> https://en.wikipedia.org/wiki/List_of_HTTP_status_codes");
|
||||||
|
}
|
||||||
|
|
||||||
|
//if as binary
|
||||||
|
if (saveTo.toLowerCase() === "con") {
|
||||||
|
WScript.Echo(WinHTTPObj.ResponseText);
|
||||||
|
}
|
||||||
|
if (saveTo !== "" && saveTo.toLowerCase() !== "con") {
|
||||||
|
prepareateFile(force, saveTo);
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (use_stream) {
|
||||||
|
writeBinFile(saveTo, WinHTTPObj.ResponseStream);
|
||||||
|
} else {
|
||||||
|
writeBinFile(saveTo, WinHTTPObj.ResponseBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
WScript.Echo("Failed to save the file as binary.Attempt to save it as text");
|
||||||
|
AdoDBObj.Close();
|
||||||
|
prepareateFile(true, saveTo);
|
||||||
|
writeFile(saveTo, WinHTTPObj.ResponseText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
WScript.Quit(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--
|
||||||
|
//-----
|
||||||
|
//----------
|
||||||
|
//----------------------
|
||||||
|
//-------------------------------
|
||||||
|
|
||||||
|
function prepareateFile(force, file) {
|
||||||
|
if (force && existsItem(file)) {
|
||||||
|
if (!deleteItem(file)) {
|
||||||
|
WScript.Echo("Unable to delete " + file);
|
||||||
|
WScript.Quit(8);
|
||||||
|
}
|
||||||
|
} else if (existsItem(file)) {
|
||||||
|
WScript.Echo("Item " + file + " already exist");
|
||||||
|
WScript.Quit(9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeBinFile(fileName, data) {
|
||||||
|
AdoDBObj.Type = 1;
|
||||||
|
AdoDBObj.Open();
|
||||||
|
AdoDBObj.Position = 0;
|
||||||
|
AdoDBObj.Write(data);
|
||||||
|
AdoDBObj.SaveToFile(fileName, 2);
|
||||||
|
AdoDBObj.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeFile(fileName, data) {
|
||||||
|
AdoDBObj.Type = 2;
|
||||||
|
AdoDBObj.CharSet = "iso-8859-1";
|
||||||
|
AdoDBObj.Open();
|
||||||
|
AdoDBObj.Position = 0;
|
||||||
|
AdoDBObj.WriteText(data);
|
||||||
|
AdoDBObj.SaveToFile(fileName, 2);
|
||||||
|
AdoDBObj.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function readFile(fileName) {
|
||||||
|
//check existence
|
||||||
|
try {
|
||||||
|
if (!FileSystemObj.FileExists(fileName)) {
|
||||||
|
WScript.Echo("file " + fileName + " does not exist!");
|
||||||
|
WScript.Quit(13);
|
||||||
|
}
|
||||||
|
if (FileSystemObj.GetFile(fileName).Size === 0) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
var fileR = FileSystemObj.OpenTextFile(fileName, 1);
|
||||||
|
var content = fileR.ReadAll();
|
||||||
|
fileR.Close();
|
||||||
|
return content;
|
||||||
|
} catch (err) {
|
||||||
|
WScript.Echo("Error while reading file: " + fileName);
|
||||||
|
WScript.Echo(err.message);
|
||||||
|
WScript.Echo("Will return empty string");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function readPropFile(fileName) {
|
||||||
|
//check existence
|
||||||
|
resultArray = [];
|
||||||
|
if (!FileSystemObj.FileExists(fileName)) {
|
||||||
|
WScript.Echo("(headers)file " + fileName + " does not exist!");
|
||||||
|
WScript.Quit(15);
|
||||||
|
}
|
||||||
|
if (FileSystemObj.GetFile(fileName).Size === 0) {
|
||||||
|
return resultArray;
|
||||||
|
}
|
||||||
|
var fileR = FileSystemObj.OpenTextFile(fileName, 1);
|
||||||
|
var line = "";
|
||||||
|
var k = "";
|
||||||
|
var v = "";
|
||||||
|
var lineN = 0;
|
||||||
|
var index = 0;
|
||||||
|
try {
|
||||||
|
WScript.Echo("parsing headers form " + fileName + " property file ");
|
||||||
|
while (!fileR.AtEndOfStream) {
|
||||||
|
line = fileR.ReadLine();
|
||||||
|
lineN++;
|
||||||
|
index = line.indexOf(":");
|
||||||
|
if (line.indexOf("#") === 0 || trim(line) === "") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (index === -1 || index === line.length - 1 || index === 0) {
|
||||||
|
WScript.Echo("Invalid line " + lineN);
|
||||||
|
WScript.Quit(93);
|
||||||
|
}
|
||||||
|
k = trim(line.substring(0, index));
|
||||||
|
v = trim(line.substring(index + 1, line.length));
|
||||||
|
resultArray.push([k, v]);
|
||||||
|
}
|
||||||
|
fileR.Close();
|
||||||
|
return resultArray;
|
||||||
|
} catch (err) {
|
||||||
|
WScript.Echo("Error while reading headers file: " + fileName);
|
||||||
|
WScript.Echo(err.message);
|
||||||
|
WScript.Echo("Will return empty array");
|
||||||
|
return resultArray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function trim(str) {
|
||||||
|
return str.replace(/^\s+/, '').replace(/\s+$/, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
parseArgs();
|
||||||
|
request(url);
|
||||||
|
}
|
||||||
|
main();
|
@ -13,12 +13,13 @@ SQLCIPHER_VERSION=2.2.1
|
|||||||
LIBMICROHTTPD_VERSION=0.9.59
|
LIBMICROHTTPD_VERSION=0.9.59
|
||||||
FFMPEG_VERSION=3.4
|
FFMPEG_VERSION=3.4
|
||||||
RAPIDJSON_VERSION=1.1.0
|
RAPIDJSON_VERSION=1.1.0
|
||||||
|
XAPIAN_VERSION=1.4.7
|
||||||
|
|
||||||
DOWNLOAD_PATH?=download
|
DOWNLOAD_PATH?=download
|
||||||
BUILD_PATH=build
|
BUILD_PATH=build
|
||||||
LIBS_PATH?=libs
|
LIBS_PATH?=libs
|
||||||
|
|
||||||
all: dirs zlib bzip2 miniupnpc openssl speex speexdsp opencv libxml2 libxslt curl sqlcipher libmicrohttpd ffmpeg rapidjson copylibs
|
all: dirs zlib bzip2 miniupnpc openssl speex speexdsp opencv libxml2 libxslt curl sqlcipher libmicrohttpd ffmpeg rapidjson xapian copylibs
|
||||||
|
|
||||||
download: \
|
download: \
|
||||||
$(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz \
|
||||||
@ -35,7 +36,8 @@ download: \
|
|||||||
$(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/rapidjson-$(RAPIDJSON_VERSION).tar.gz
|
$(DOWNLOAD_PATH)/rapidjson-$(RAPIDJSON_VERSION).tar.gz \
|
||||||
|
$(DOWNLOAD_PATH)/xapian-core-$(XAPIAN_VERSION).tar.xz
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -r -f $(BUILD_PATH)
|
rm -r -f $(BUILD_PATH)
|
||||||
@ -360,6 +362,30 @@ $(BUILD_PATH)/rapidjson-$(RAPIDJSON_VERSION): $(DOWNLOAD_PATH)/rapidjson-$(RAPID
|
|||||||
rm -r -f rapidjson-$(RAPIDJSON_VERSION)
|
rm -r -f rapidjson-$(RAPIDJSON_VERSION)
|
||||||
mv $(BUILD_PATH)/rapidjson-$(RAPIDJSON_VERSION).tmp $(BUILD_PATH)/rapidjson-$(RAPIDJSON_VERSION)
|
mv $(BUILD_PATH)/rapidjson-$(RAPIDJSON_VERSION).tmp $(BUILD_PATH)/rapidjson-$(RAPIDJSON_VERSION)
|
||||||
|
|
||||||
|
xapian: $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION)
|
||||||
|
|
||||||
|
$(DOWNLOAD_PATH)/xapian-core-$(XAPIAN_VERSION).tar.xz:
|
||||||
|
wget --no-check-certificate https://oligarchy.co.uk/xapian/$(XAPIAN_VERSION)/xapian-core-$(XAPIAN_VERSION).tar.xz -O $(DOWNLOAD_PATH)/xapian-core-$(XAPIAN_VERSION).tar.xz
|
||||||
|
|
||||||
|
$(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION): $(DOWNLOAD_PATH)/xapian-core-$(XAPIAN_VERSION).tar.xz
|
||||||
|
# prepare
|
||||||
|
rm -r -f $(BUILD_PATH)/xapian-core-*
|
||||||
|
tar xvf $(DOWNLOAD_PATH)/xapian-core-$(XAPIAN_VERSION).tar.xz
|
||||||
|
# build
|
||||||
|
#cd xapian-core-$(XAPIAN_VERSION) && ./configure --disable-shared --enable-static --prefix="`pwd`/../$(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp"
|
||||||
|
#cd xapian-core-$(XAPIAN_VERSION) && make install
|
||||||
|
cd xapian-core-$(XAPIAN_VERSION) && ./configure --disable-shared --enable-static
|
||||||
|
cd xapian-core-$(XAPIAN_VERSION) && make
|
||||||
|
# copy files
|
||||||
|
mkdir -p $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/include
|
||||||
|
cp -r xapian-core-$(XAPIAN_VERSION)/include/* $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/include/
|
||||||
|
rm $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/include/Makefile*
|
||||||
|
mkdir -p $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/lib
|
||||||
|
cp -r xapian-core-$(XAPIAN_VERSION)/.libs/libxapian.a $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/lib/
|
||||||
|
# cleanup
|
||||||
|
rm -r -f xapian-core-$(XAPIAN_VERSION)
|
||||||
|
mv $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION)
|
||||||
|
|
||||||
copylibs:
|
copylibs:
|
||||||
rm -r -f $(LIBS_PATH) ; \
|
rm -r -f $(LIBS_PATH) ; \
|
||||||
mkdir -p $(LIBS_PATH) ; \
|
mkdir -p $(LIBS_PATH) ; \
|
||||||
|
@ -13,11 +13,11 @@ call "%~dp0build-libs\build-libs.bat"
|
|||||||
if errorlevel 1 %cecho% error "Failed to build libraries." & exit /B %ERRORLEVEL%
|
if errorlevel 1 %cecho% error "Failed to build libraries." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
%cecho% info "Build %SourceName%"
|
%cecho% info "Build %SourceName%"
|
||||||
call "%~dp0build\build.bat" retrotor
|
call "%~dp0build\build.bat" release tor version autologin plugins
|
||||||
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
%cecho% info "Pack %SourceName%"
|
%cecho% info "Pack %SourceName%"
|
||||||
call "%~dp0build\pack.bat" retrotor
|
call "%~dp0build\pack.bat" release tor
|
||||||
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
exit /B 0
|
exit /B 0
|
@ -13,11 +13,11 @@ call "%~dp0build-libs\build-libs.bat"
|
|||||||
if errorlevel 1 %cecho% error "Failed to build libraries." & exit /B %ERRORLEVEL%
|
if errorlevel 1 %cecho% error "Failed to build libraries." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
%cecho% info "Build %SourceName%"
|
%cecho% info "Build %SourceName%"
|
||||||
call "%~dp0build\build.bat" standard
|
call "%~dp0build\build.bat" release version autologin plugins
|
||||||
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
%cecho% info "Pack %SourceName%"
|
%cecho% info "Pack %SourceName%"
|
||||||
call "%~dp0build\pack.bat" standard
|
call "%~dp0build\pack.bat" release
|
||||||
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
%cecho% info "Build installer"
|
%cecho% info "Build installer"
|
||||||
|
@ -9,7 +9,7 @@ call "%EnvPath%\env.bat"
|
|||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
:: Initialize environment
|
:: Initialize environment
|
||||||
call "%~dp0env.bat" standard
|
call "%~dp0env.bat" release
|
||||||
if errorlevel 2 exit /B 2
|
if errorlevel 2 exit /B 2
|
||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
@ -29,6 +29,7 @@ set NSIS_PARAM=%NSIS_PARAM% /DQTDIR="%QtPath%\.."
|
|||||||
set NSIS_PARAM=%NSIS_PARAM% /DMINGWDIR="%MinGWPath%\.."
|
set NSIS_PARAM=%NSIS_PARAM% /DMINGWDIR="%MinGWPath%\.."
|
||||||
set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%"
|
set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%"
|
||||||
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
|
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
|
||||||
|
set NSIS_PARAM=%NSIS_PARAM% /DEXTERNAL_LIB_DIR="%BuildLibsPath%\libs"
|
||||||
|
|
||||||
:: Scan version from source
|
:: Scan version from source
|
||||||
set RsRevision=
|
set RsRevision=
|
||||||
|
@ -22,6 +22,7 @@ set /P LibsGCCVersion=<"%BuildLibsPath%\libs\gcc-version"
|
|||||||
if "%LibsGCCVersion%" NEQ "%GCCVersion%" %cecho% error "Please use correct version of external libraries. (gcc %GCCVersion% ^<^> libs %LibsGCCVersion%)." & exit /B 1
|
if "%LibsGCCVersion%" NEQ "%GCCVersion%" %cecho% error "Please use correct version of external libraries. (gcc %GCCVersion% ^<^> libs %LibsGCCVersion%)." & exit /B 1
|
||||||
|
|
||||||
:: Check git executable
|
:: Check git executable
|
||||||
|
if "%ParamVersion%"=="0" goto found_git
|
||||||
set GitPath=
|
set GitPath=
|
||||||
call "%ToolsPath%\find-in-path.bat" GitPath git.exe
|
call "%ToolsPath%\find-in-path.bat" GitPath git.exe
|
||||||
if "%GitPath%" NEQ "" goto found_git
|
if "%GitPath%" NEQ "" goto found_git
|
||||||
@ -33,7 +34,7 @@ echo.
|
|||||||
echo === Version
|
echo === Version
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%%RsType%-%RsBuildConfig% [Version]
|
title Build - %SourceName%-%RsBuildConfig% [Version]
|
||||||
|
|
||||||
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
||||||
:: Touch resource file
|
:: Touch resource file
|
||||||
@ -47,10 +48,12 @@ echo.
|
|||||||
echo === qmake
|
echo === qmake
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%%RsType%-%RsBuildConfig% [qmake]
|
title Build - %SourceName%-%RsBuildConfig% [qmake]
|
||||||
|
|
||||||
set RS_QMAKE_CONFIG=%RsBuildConfig% version_detail_bash_script rs_autologin retroshare_plugins
|
set RS_QMAKE_CONFIG=%RsBuildConfig%
|
||||||
if "%RsRetroTor%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% retrotor
|
if "%ParamVersion%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% version_detail_bash_script
|
||||||
|
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% rs_autologin
|
||||||
|
if "%ParamPlugins%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% retroshare_plugins
|
||||||
|
|
||||||
qmake "%SourcePath%\RetroShare.pro" -r -spec win32-g++ "CONFIG+=%RS_QMAKE_CONFIG%" "EXTERNAL_LIB_DIR=%BuildLibsPath%\libs"
|
qmake "%SourcePath%\RetroShare.pro" -r -spec win32-g++ "CONFIG+=%RS_QMAKE_CONFIG%" "EXTERNAL_LIB_DIR=%BuildLibsPath%\libs"
|
||||||
if errorlevel 1 goto error
|
if errorlevel 1 goto error
|
||||||
@ -59,7 +62,7 @@ echo.
|
|||||||
echo === make
|
echo === make
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%%RsType%-%RsBuildConfig% [make]
|
title Build - %SourceName%-%RsBuildConfig% [make]
|
||||||
|
|
||||||
if exist "%EnvJomExe%" (
|
if exist "%EnvJomExe%" (
|
||||||
"%EnvJomExe%"
|
"%EnvJomExe%"
|
||||||
|
@ -7,7 +7,9 @@ call "%~dp0..\env.bat"
|
|||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
call "%EnvPath%\env.bat"
|
call "%EnvPath%\env.bat"
|
||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
call "%~dp0env.bat" %*
|
call "%~dp0env.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
if not exist "%RsBuildPath%" exit /B 0
|
if not exist "%RsBuildPath%" exit /B 0
|
||||||
|
@ -1,16 +1,52 @@
|
|||||||
if "%~1"=="standard" (
|
:: Process commandline parameter
|
||||||
set RsRetroTor=
|
set ParamRelease=0
|
||||||
set RsType=
|
set ParamDebug=0
|
||||||
) else (
|
set ParamVersion=0
|
||||||
if "%~1"=="retrotor" (
|
set ParamAutologin=0
|
||||||
set RsRetroTor=1
|
set ParamPlugins=0
|
||||||
set RsType=-tor
|
set ParamTor=0
|
||||||
) else (
|
|
||||||
echo.
|
:parameter_loop
|
||||||
echo Usage: standard^|retrotor
|
if "%~1" NEQ "" (
|
||||||
echo.
|
for /f "tokens=1,2 delims==" %%a in ("%~1") do (
|
||||||
exit /B 2
|
if "%%~a"=="release" (
|
||||||
|
set ParamRelease=1
|
||||||
|
) else if "%%~a"=="debug" (
|
||||||
|
set ParamDebug=1
|
||||||
|
) else if "%%~a"=="version" (
|
||||||
|
set ParamVersion=1
|
||||||
|
) else if "%%~a"=="autologin" (
|
||||||
|
set ParamAutologin=1
|
||||||
|
) else if "%%~a"=="plugins" (
|
||||||
|
set ParamPlugins=1
|
||||||
|
) else if "%%~a"=="tor" (
|
||||||
|
set ParamTor=1
|
||||||
|
) else (
|
||||||
|
echo.
|
||||||
|
echo Unknown parameter %1
|
||||||
|
goto :usage
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
shift /1
|
||||||
|
goto parameter_loop
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%ParamRelease%"=="1" (
|
||||||
|
if "%ParamDebug%"=="1" (
|
||||||
|
echo.
|
||||||
|
echo Release or Debug?
|
||||||
|
goto :usage
|
||||||
|
)
|
||||||
|
|
||||||
|
set RsBuildConfig=release
|
||||||
|
) else if "%ParamDebug%"=="1" (
|
||||||
|
set RsBuildConfig=debug
|
||||||
|
) else goto :usage
|
||||||
|
|
||||||
|
if "%ParamTor%"=="1" (
|
||||||
|
set RsType=-tor
|
||||||
|
) else (
|
||||||
|
set RsType=
|
||||||
)
|
)
|
||||||
|
|
||||||
set BuildPath=%EnvRootPath%\builds
|
set BuildPath=%EnvRootPath%\builds
|
||||||
@ -39,8 +75,7 @@ if "%GCCVersion%"=="" %cecho% error "Cannot get gcc version." & exit /B 1
|
|||||||
|
|
||||||
set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion%
|
set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion%
|
||||||
|
|
||||||
set RsBuildConfig=release
|
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsBuildConfig%
|
||||||
set RsBuildPath=%BuildPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%
|
|
||||||
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%
|
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%
|
||||||
set RsPackPath=%DeployPath%
|
set RsPackPath=%DeployPath%
|
||||||
set RsArchiveAdd=
|
set RsArchiveAdd=
|
||||||
@ -51,3 +86,20 @@ if errorlevel 1 exit /B %ERRORLEVEL%
|
|||||||
:no_mod
|
:no_mod
|
||||||
|
|
||||||
exit /B 0
|
exit /B 0
|
||||||
|
|
||||||
|
:usage
|
||||||
|
echo.
|
||||||
|
echo Usage: release^|debug [version autologin plugins]
|
||||||
|
echo.
|
||||||
|
echo Mandatory parameter
|
||||||
|
echo release^|debug Build release or debug version
|
||||||
|
echo.
|
||||||
|
echo Optional parameter (need clean when changed)
|
||||||
|
echo version Create version information from git
|
||||||
|
echo autologin Build with autologin
|
||||||
|
echo plugins Build plugins
|
||||||
|
echo.
|
||||||
|
echo Parameter for pack
|
||||||
|
echo tor Pack tor version
|
||||||
|
echo.
|
||||||
|
exit /B 2
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
:: Usage:
|
|
||||||
:: call git-log.bat standard|retrotor [no-ask]
|
|
||||||
|
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
setlocal
|
setlocal
|
||||||
@ -13,7 +10,9 @@ call "%~dp0..\env.bat"
|
|||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
call "%EnvPath%\env.bat"
|
call "%EnvPath%\env.bat"
|
||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
call "%~dp0env.bat" %1
|
|
||||||
|
call "%~dp0env.bat" %*
|
||||||
|
if errorlevel 2 exit /B 2
|
||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
:: Check git executable
|
:: Check git executable
|
||||||
|
@ -62,8 +62,8 @@ set RsDate=
|
|||||||
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
|
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
|
||||||
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
|
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
|
||||||
|
|
||||||
if "%RsRetroTor%"=="1" (
|
if "%ParamTor%"=="1" (
|
||||||
:: Check Retrotor
|
:: Check for tor executable
|
||||||
if not exist "%EnvDownloadPath%\tor\Tor\tor.exe" (
|
if not exist "%EnvDownloadPath%\tor\Tor\tor.exe" (
|
||||||
echo Tor binary not found. Please download Tor Expert Bundle from
|
echo Tor binary not found. Please download Tor Expert Bundle from
|
||||||
echo https://www.torproject.org/download/download.html.en
|
echo https://www.torproject.org/download/download.html.en
|
||||||
@ -121,7 +121,7 @@ for /D %%D in ("%RsBuildPath%\plugins\*") do (
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo copy external binaries
|
echo copy external binaries
|
||||||
copy "%RootPath%\libs\bin\*.dll" "%RsDeployPath%" %Quite%
|
copy "%BuildLibsPath%\libs\bin\*.dll" "%RsDeployPath%" %Quite%
|
||||||
|
|
||||||
echo copy dependencies
|
echo copy dependencies
|
||||||
call :copy_dependencies "%RsDeployPath%\retroshare.exe" "%RsDeployPath%"
|
call :copy_dependencies "%RsDeployPath%\retroshare.exe" "%RsDeployPath%"
|
||||||
@ -180,7 +180,7 @@ if exist "%SourcePath%\libresapi\src\webui" (
|
|||||||
xcopy /S "%SourcePath%\libresapi\src\webui" "%RsDeployPath%\webui" %Quite%
|
xcopy /S "%SourcePath%\libresapi\src\webui" "%RsDeployPath%\webui" %Quite%
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%RsRetroTor%"=="1" (
|
if "%ParamTor%"=="1" (
|
||||||
echo copy tor
|
echo copy tor
|
||||||
echo n | copy /-y "%EnvDownloadPath%\tor\Tor\*.*" "%RsDeployPath%" %Quite%
|
echo n | copy /-y "%EnvDownloadPath%\tor\Tor\*.*" "%RsDeployPath%" %Quite%
|
||||||
)
|
)
|
||||||
@ -217,13 +217,19 @@ if exist "%~1\%RsBuildConfig%\%~n1.dll" (
|
|||||||
goto :EOF
|
goto :EOF
|
||||||
|
|
||||||
:copy_dependencies
|
:copy_dependencies
|
||||||
|
set CopyDependenciesCopiedSomething=0
|
||||||
for /F "usebackq" %%A in (`%ToolsPath%\depends.bat list %1`) do (
|
for /F "usebackq" %%A in (`%ToolsPath%\depends.bat list %1`) do (
|
||||||
if exist "%QtPath%\%%A" (
|
if not exist "%~2\%%A" (
|
||||||
copy "%QtPath%\%%A" %2 %Quite%
|
if exist "%QtPath%\%%A" (
|
||||||
) else (
|
set CopyDependenciesCopiedSomething=1
|
||||||
if exist "%MinGWPath%\%%A" (
|
copy "%QtPath%\%%A" %2 %Quite%
|
||||||
copy "%MinGWPath%\%%A" %2 %Quite%
|
) else (
|
||||||
|
if exist "%MinGWPath%\%%A" (
|
||||||
|
set CopyDependenciesCopiedSomething=1
|
||||||
|
copy "%MinGWPath%\%%A" %2 %Quite%
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
if "%CopyDependenciesCopiedSomething%"=="1" goto copy_dependencies
|
||||||
goto :EOF
|
goto :EOF
|
||||||
|
@ -1,224 +0,0 @@
|
|||||||
|
|
||||||
Compling for Windows.
|
|
||||||
-----------------------------------
|
|
||||||
For Version V0.5.0+ we are switching to GPGme libraries.
|
|
||||||
This documents a clean compilation of V0.5 for Windows.
|
|
||||||
|
|
||||||
Tested on: WinXP July 2009.
|
|
||||||
|
|
||||||
You will need:
|
|
||||||
* Qt4.5 Development Libraries (from TrollTech)
|
|
||||||
* MinGw/MinSys full installation (from sourceforge.net)
|
|
||||||
* Cygwin (for OpenSSL compilation / SVN / Unix Tools)
|
|
||||||
* OpenSSL standard libraries.
|
|
||||||
* GPG Windows Install (includes gpg.exe)
|
|
||||||
* MiniUpnp library
|
|
||||||
* gpgme Library.
|
|
||||||
* libgpg-error Library.
|
|
||||||
|
|
||||||
|
|
||||||
This compilation is a little tricky as different environments
|
|
||||||
are needed to compile different libraries.
|
|
||||||
a) Cygwin: libssl.a libcrypto.a
|
|
||||||
b) MinGW/MSYS: libgpg-error, libgpgme.a, libretroshare.a, libminiupnp.a
|
|
||||||
c) Qt/MinGW: Retroshare.exe
|
|
||||||
|
|
||||||
|
|
||||||
/***************** Installation of Development Tools **************/
|
|
||||||
In this section we install: cygwin, mingw/msys and Qt4.5
|
|
||||||
|
|
||||||
1) Install Cygwin
|
|
||||||
a) download the installer and run.
|
|
||||||
b) be sure to select from the development packages:
|
|
||||||
* mingw
|
|
||||||
* svn
|
|
||||||
* gcc/gdb
|
|
||||||
* make
|
|
||||||
links:
|
|
||||||
http://www.cygwin.org/
|
|
||||||
|
|
||||||
2) install the MinGW/Msys package.
|
|
||||||
a) Download MinGW-5.1.4 installer and run.
|
|
||||||
b) Download MSYS-1.0.11 installer and run.
|
|
||||||
|
|
||||||
links:
|
|
||||||
http://downloads.sourceforge.net/mingw/MinGW-5.1.4.exe
|
|
||||||
http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe
|
|
||||||
http://www.mingw.org/
|
|
||||||
http://sourceforge.net/projects/mingw/files/
|
|
||||||
|
|
||||||
3) Install Qt4.5 LGPL Version. (Qt SDK 2009.03)
|
|
||||||
a) Download from website and run.
|
|
||||||
b) Select all options (including MinGW)
|
|
||||||
|
|
||||||
links:
|
|
||||||
http://www.qtsoftware.com/downloads
|
|
||||||
|
|
||||||
/***************** Installation of Development Tools **************/
|
|
||||||
/******************* Compiling Support Libraries ******************/
|
|
||||||
|
|
||||||
1) Compile OpenSSL using Cygwin.
|
|
||||||
a) launch cygwin xterm
|
|
||||||
b) untar openssl source package.
|
|
||||||
c) Configure mingw
|
|
||||||
d) make.
|
|
||||||
|
|
||||||
2) Compile gpg-error
|
|
||||||
a) Download from gpg
|
|
||||||
b) load up MinGW/MSYS Bash shell.
|
|
||||||
c) extract code.
|
|
||||||
d) configure
|
|
||||||
e) make
|
|
||||||
f) make install
|
|
||||||
|
|
||||||
The library will end up in /local/lib
|
|
||||||
|
|
||||||
3) Compile gpgme
|
|
||||||
a) Download from gpg
|
|
||||||
b) load up MinGW/MSYS Bash shell.
|
|
||||||
c) extract code.
|
|
||||||
d) configure
|
|
||||||
e) make
|
|
||||||
f) make install
|
|
||||||
|
|
||||||
The library will end up in /local/lib
|
|
||||||
|
|
||||||
|
|
||||||
4) Compile MiniUPnP.
|
|
||||||
up to release v1.3 now.
|
|
||||||
links:
|
|
||||||
http://miniupnp.free.fr/
|
|
||||||
http://miniupnp.free.fr/files/
|
|
||||||
|
|
||||||
5) Install pthreads
|
|
||||||
|
|
||||||
links:
|
|
||||||
http://sourceware.org/pthreads-win32/
|
|
||||||
ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-8-0-release.exe
|
|
||||||
|
|
||||||
/******************* Compiling Support Libraries ******************/
|
|
||||||
/*********************** Compiling Retroshare *********************/
|
|
||||||
|
|
||||||
1) Setup Source Code TAR (TODO: Update for windows).
|
|
||||||
This is useful as it provides a standard structure to work against,
|
|
||||||
we will update this with the required support libraries soon.
|
|
||||||
|
|
||||||
a) Open MSYS Bash shell, and change to this location.
|
|
||||||
c:/msys/1.0/home/XXX/retroshare
|
|
||||||
b) create a working directory under this.
|
|
||||||
1) c:/msys/1.0/home/XXX/miniupnpc-1.3
|
|
||||||
2) c:/msys/1.0/home/XXX/pthreads-w32-2-8-0-release
|
|
||||||
3) c:/msys/1.0/home/XXX/zlib-1.2.3
|
|
||||||
4) c:/msys/1.0/home/XXX/gpgme-1.1.8
|
|
||||||
5) c:/msys/1.0/home/XXX/libgpg-error-1.7
|
|
||||||
c) Install OpenSSL to this directory (get from http://www.slproweb.com/download/Win32OpenSSL-0_9_8k.exe)
|
|
||||||
1) c:/msys/1.0/home/XXX/OpenSSL
|
|
||||||
d) get the latest svn trunk and unzip to (get from http://retroshare.svn.sourceforge.net/viewvc/retroshare/trunk.tar.gz) .
|
|
||||||
1) c:/msys/1.0/home/XXX/retroshare
|
|
||||||
|
|
||||||
2) Compile libretroshare
|
|
||||||
a) change to the libretroshare directory.
|
|
||||||
1) cd c:/msys/1.0/home/XXX/retroshare/libretroshare/src
|
|
||||||
b) modify support directory paths to point at correct locations.
|
|
||||||
1) open scripts/config.mk and enable OS = Win # MinGw.
|
|
||||||
2) open scripts/config-mingw.mk
|
|
||||||
3) disable lines (line 20-29)
|
|
||||||
4) enable lines 34-42 and 118-119
|
|
||||||
#### Enable this section for compiling with MSYS/MINGW compile
|
|
||||||
SRC_ROOT=/home/linux
|
|
||||||
|
|
||||||
SSL_DIR=$(SRC_ROOT)/OpenSSL
|
|
||||||
GPGME_DIR=$(SRC_ROOT)/gpgme-1.1.8
|
|
||||||
GPG_ERROR_DIR=$(SRC_ROOT)/libgpg-error-1.7
|
|
||||||
|
|
||||||
ZLIB_DIR=$(SRC_ROOT)/zlib-1.2.3
|
|
||||||
UPNPC_DIR=$(SRC_ROOT)/miniupnpc-1.0
|
|
||||||
PTHREADS_DIR=$(SRC_ROOT)/pthreads-w32-2-8-0-release
|
|
||||||
|
|
||||||
### Enable this for GPGME and GPG ERROR dirs
|
|
||||||
CFLAGS += -I$(GPGME_DIR)/src
|
|
||||||
CFLAGS += -I$(GPG_ERROR_DIR)/src
|
|
||||||
5) Edit your SRC_ROOT to your /home/xxxx dir
|
|
||||||
|
|
||||||
|
|
||||||
c) compile libretroshare
|
|
||||||
1) make
|
|
||||||
|
|
||||||
3) Copy all the required support libraries into the library directory:
|
|
||||||
c:/msys/1.0/home/XXX/lib
|
|
||||||
|
|
||||||
This should include:
|
|
||||||
|
|
||||||
gpg-error / gpgme libraries:
|
|
||||||
libgpg-error.a
|
|
||||||
libgpg-error.dll.a
|
|
||||||
libgpg-error.la
|
|
||||||
libgpgme.dll.a
|
|
||||||
libgpgme.la
|
|
||||||
|
|
||||||
openssl libraries:
|
|
||||||
libcrypto.a
|
|
||||||
libssl.a
|
|
||||||
|
|
||||||
miniupnpc / pthreads / libz
|
|
||||||
|
|
||||||
libminiupnpc.a
|
|
||||||
miniupnpc.dll
|
|
||||||
libpthreadGCE2.a
|
|
||||||
pthreadGCE2.dll
|
|
||||||
libz.a
|
|
||||||
|
|
||||||
extra library from cygwin. (renamed from libcrypt32.a)
|
|
||||||
libcrypt32-cygwin.a
|
|
||||||
|
|
||||||
libretroshare
|
|
||||||
libretroshare.a
|
|
||||||
|
|
||||||
|
|
||||||
4) Compile GUI.
|
|
||||||
|
|
||||||
/*********************** Compiling Retroshare *********************/
|
|
||||||
/************************ Running Retroshare **********************/
|
|
||||||
|
|
||||||
1) Collect Relevant DLL's with Application.
|
|
||||||
a) make retroshare application directory.
|
|
||||||
b) copy Retroshare.exe executable into directory.
|
|
||||||
c) Copy required DLL's into that directory.
|
|
||||||
These include:
|
|
||||||
|
|
||||||
mingw runtime:
|
|
||||||
mingwm10.dll
|
|
||||||
|
|
||||||
gpgme/gpg-error:
|
|
||||||
libgpg-error-0.dll
|
|
||||||
libgpgme-11.dll
|
|
||||||
|
|
||||||
other support libraries:
|
|
||||||
miniupnpc.dll
|
|
||||||
pthreadGCE2.dll
|
|
||||||
|
|
||||||
Qt DLLs:
|
|
||||||
QtCore4.dll,
|
|
||||||
QtGui4.dll,...
|
|
||||||
etc.
|
|
||||||
|
|
||||||
d) You should be able to run Retroshare from this directory now!
|
|
||||||
|
|
||||||
2) Install gpg4win package... for gpg.exe
|
|
||||||
|
|
||||||
3) Create an OpenGPG identity using gpa or Enigmail or other PGP tool.
|
|
||||||
|
|
||||||
4) You should be able to use Retroshare on your PC now.
|
|
||||||
|
|
||||||
/************************ Running Retroshare **********************/
|
|
||||||
/******************************** FAQs ****************************/
|
|
||||||
Ask and it might be answered!
|
|
||||||
/******************************** FAQs ****************************/
|
|
||||||
|
|
||||||
This is obviously a work in progress -
|
|
||||||
drBob.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -53,7 +53,7 @@ if not exist "%EnvToolsPath%\cecho.exe" (
|
|||||||
|
|
||||||
echo Download cecho installation
|
echo Download cecho installation
|
||||||
|
|
||||||
if not exist "%EnvDownloadPath%\%CEchoInstall%" call "%ToolsPath%\winhttpjs.bat" "%CEchoUrl%" -saveTo "%EnvDownloadPath%\%CEchoInstall%"
|
if not exist "%EnvDownloadPath%\%CEchoInstall%" call "%ToolsPath%\download-file.bat" "%CEchoUrl%" "%EnvDownloadPath%\%CEchoInstall%"
|
||||||
if not exist "%EnvDownloadPath%\%cCEhoInstall%" echo Cannot download cecho installation& goto error
|
if not exist "%EnvDownloadPath%\%cCEhoInstall%" echo Cannot download cecho installation& goto error
|
||||||
|
|
||||||
echo Unpack cecho
|
echo Unpack cecho
|
||||||
|
15
build_scripts/Windows/installer/ifexist.nsh
Normal file
15
build_scripts/Windows/installer/ifexist.nsh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation
|
||||||
|
!macro !defineifexist _VAR_NAME _FILE_NAME
|
||||||
|
!tempfile _TEMPFILE
|
||||||
|
!ifdef NSIS_WIN32_MAKENSIS
|
||||||
|
; Windows - cmd.exe
|
||||||
|
!system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
|
||||||
|
!else
|
||||||
|
; Posix - sh
|
||||||
|
!system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
|
||||||
|
!endif
|
||||||
|
!include '${_TEMPFILE}'
|
||||||
|
!delfile '${_TEMPFILE}'
|
||||||
|
!undef _TEMPFILE
|
||||||
|
!macroend
|
||||||
|
!define !defineifexist "!insertmacro !defineifexist"
|
@ -1,6 +1,8 @@
|
|||||||
; Script generated with the Venis Install Wizard & modified by defnax
|
; Script generated with the Venis Install Wizard & modified by defnax
|
||||||
; Reworked by Thunder
|
; Reworked by Thunder
|
||||||
|
|
||||||
|
!include ifexist.nsh
|
||||||
|
|
||||||
# Needed defines
|
# Needed defines
|
||||||
;!define BUILDADD ""
|
;!define BUILDADD ""
|
||||||
;!define RELEASEDIR ""
|
;!define RELEASEDIR ""
|
||||||
@ -197,9 +199,9 @@ Section $(Section_Main) Section_Main
|
|||||||
File "${MINGWDIR}\bin\libwinpthread-1.dll"
|
File "${MINGWDIR}\bin\libwinpthread-1.dll"
|
||||||
|
|
||||||
; External binaries
|
; External binaries
|
||||||
File "${SOURCEDIR}\..\libs\bin\miniupnpc.dll"
|
File "${EXTERNAL_LIB_DIR}\bin\miniupnpc.dll"
|
||||||
File "${SOURCEDIR}\..\libs\bin\libeay32.dll"
|
File "${EXTERNAL_LIB_DIR}\bin\libeay32.dll"
|
||||||
File "${SOURCEDIR}\..\libs\bin\ssleay32.dll"
|
File "${EXTERNAL_LIB_DIR}\bin\ssleay32.dll"
|
||||||
|
|
||||||
; Other files
|
; Other files
|
||||||
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
|
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
|
||||||
@ -234,17 +236,33 @@ Section $(Section_Main) Section_Main
|
|||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
SectionGroup $(Section_Plugins) Section_Plugins
|
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||||
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
|
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||||
SetOutPath "$DataDir\extensions6"
|
|
||||||
File "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
|
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||||
SetOutPath "$DataDir\extensions6"
|
!define /ifndef PLUGIN_EXISTS
|
||||||
File "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
!endif
|
||||||
SectionEnd
|
!ifdef PLUGIN_VOIP_EXISTS
|
||||||
SectionGroupEnd
|
!define /ifndef PLUGIN_EXISTS
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef PLUGIN_EXISTS
|
||||||
|
SectionGroup $(Section_Plugins) Section_Plugins
|
||||||
|
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||||
|
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
|
||||||
|
SetOutPath "$DataDir\extensions6"
|
||||||
|
File "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef PLUGIN_VOIP_EXISTS
|
||||||
|
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
|
||||||
|
SetOutPath "$DataDir\extensions6"
|
||||||
|
File "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
SectionGroupEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
# Data (Styles)
|
# Data (Styles)
|
||||||
Section $(Section_Data) Section_Data
|
Section $(Section_Data) Section_Data
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
; Script generated with the Venis Install Wizard & modified by defnax
|
; Script generated with the Venis Install Wizard & modified by defnax
|
||||||
; Reworked by Thunder
|
; Reworked by Thunder
|
||||||
|
|
||||||
|
!include ifexist.nsh
|
||||||
|
|
||||||
# Needed defines
|
# Needed defines
|
||||||
;!define BUILDADD ""
|
;!define BUILDADD ""
|
||||||
;!define RELEASEDIR ""
|
;!define RELEASEDIR ""
|
||||||
@ -212,9 +214,9 @@ Section $(Section_Main) Section_Main
|
|||||||
File "${MINGWDIR}\bin\libwinpthread-1.dll"
|
File "${MINGWDIR}\bin\libwinpthread-1.dll"
|
||||||
|
|
||||||
; External binaries
|
; External binaries
|
||||||
File "${SOURCEDIR}\..\libs\bin\miniupnpc.dll"
|
File "${EXTERNAL_LIB_DIR}\bin\miniupnpc.dll"
|
||||||
File "${SOURCEDIR}\..\libs\bin\libeay32.dll"
|
File "${EXTERNAL_LIB_DIR}\bin\libeay32.dll"
|
||||||
File "${SOURCEDIR}\..\libs\bin\ssleay32.dll"
|
File "${EXTERNAL_LIB_DIR}\bin\ssleay32.dll"
|
||||||
|
|
||||||
; Other files
|
; Other files
|
||||||
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
|
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
|
||||||
@ -256,17 +258,33 @@ Section $(Section_Main) Section_Main
|
|||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
SectionGroup $(Section_Plugins) Section_Plugins
|
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||||
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
|
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||||
SetOutPath "$DataDir\extensions6"
|
|
||||||
File "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
|
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||||
SetOutPath "$DataDir\extensions6"
|
!define /ifndef PLUGIN_EXISTS
|
||||||
File "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
!endif
|
||||||
SectionEnd
|
!ifdef PLUGIN_VOIP_EXISTS
|
||||||
SectionGroupEnd
|
!define /ifndef PLUGIN_EXISTS
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef PLUGIN_EXISTS
|
||||||
|
SectionGroup $(Section_Plugins) Section_Plugins
|
||||||
|
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||||
|
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
|
||||||
|
SetOutPath "$DataDir\extensions6"
|
||||||
|
File "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef PLUGIN_VOIP_EXISTS
|
||||||
|
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
|
||||||
|
SetOutPath "$DataDir\extensions6"
|
||||||
|
File "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
SectionGroupEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
# Data (Styles)
|
# Data (Styles)
|
||||||
Section $(Section_Data) Section_Data
|
Section $(Section_Data) Section_Data
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
:: Usage:
|
:: Usage:
|
||||||
:: call depends.bat [list^|missing] file
|
:: call depends.bat [list^|missing] file
|
||||||
|
|
||||||
setlocal
|
|
||||||
|
|
||||||
if "%2"=="" (
|
if "%2"=="" (
|
||||||
echo Usage: %~nx0 [list^|missing] File
|
echo Usage: %~nx0 [list^|missing] File
|
||||||
goto :exit
|
exit /B 1
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%EnvDependsExe%" echo depends.exe not found in %EnvToolsPath%.& goto exit
|
setlocal
|
||||||
if not exist "%EnvCutExe%" echo cut.exe not found in %EnvToolsPath%.& goto exit
|
|
||||||
|
if not exist "%EnvDependsExe%" echo depends.exe not found in %EnvToolsPath%.& exit /B 1
|
||||||
|
if not exist "%EnvCutExe%" echo cut.exe not found in %EnvToolsPath%.& exit /B 1
|
||||||
|
|
||||||
start /wait "" "%EnvDependsExe%" /c /oc:"%~dp0depends.tmp" %2
|
start /wait "" "%EnvDependsExe%" /c /oc:"%~dp0depends.tmp" %2
|
||||||
if "%1"=="missing" (
|
if "%1"=="missing" (
|
||||||
@ -33,5 +33,5 @@ if "%1"=="list" (
|
|||||||
if exist "%~dp0depends.tmp" del /Q "%~dp0depends.tmp"
|
if exist "%~dp0depends.tmp" del /Q "%~dp0depends.tmp"
|
||||||
if exist "%~dp0depends1.tmp" del /Q "%~dp0depends1.tmp"
|
if exist "%~dp0depends1.tmp" del /Q "%~dp0depends1.tmp"
|
||||||
|
|
||||||
:exit
|
|
||||||
endlocal
|
endlocal
|
||||||
|
exit /B 0
|
313
jsonapi-generator/README.adoc
Normal file
313
jsonapi-generator/README.adoc
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
RetroShare JSON API
|
||||||
|
===================
|
||||||
|
|
||||||
|
:Cxx: C++
|
||||||
|
|
||||||
|
== How to use RetroShare JSON API
|
||||||
|
|
||||||
|
Look for methods marked with +@jsonapi+ doxygen custom command into
|
||||||
|
+libretroshare/src/retroshare+. The method path is composed by service instance
|
||||||
|
pointer name like +rsGxsChannels+ for +RsGxsChannels+, and the method name like
|
||||||
|
+createGroup+ and pass the input paramethers as a JSON object.
|
||||||
|
|
||||||
|
.Service instance pointer in rsgxschannels.h
|
||||||
|
[source,cpp]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Pointer to global instance of RsGxsChannels service implementation
|
||||||
|
* @jsonapi{development}
|
||||||
|
*/
|
||||||
|
extern RsGxsChannels* rsGxsChannels;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.Method declaration in rsgxschannels.h
|
||||||
|
[source,cpp]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief Request channel creation.
|
||||||
|
* The action is performed asyncronously, so it could fail in a subsequent
|
||||||
|
* phase even after returning true.
|
||||||
|
* @jsonapi{development}
|
||||||
|
* @param[out] token Storage for RsTokenService token to track request
|
||||||
|
* status.
|
||||||
|
* @param[in] group Channel data (name, description...)
|
||||||
|
* @return false on error, true otherwise
|
||||||
|
*/
|
||||||
|
virtual bool createGroup(uint32_t& token, RsGxsChannelGroup& group) = 0;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.paramethers.json
|
||||||
|
[source,json]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
{
|
||||||
|
"group":{
|
||||||
|
"mMeta":{
|
||||||
|
"mGroupName":"JSON test group",
|
||||||
|
"mGroupFlags":4,
|
||||||
|
"mSignFlags":520
|
||||||
|
},
|
||||||
|
"mDescription":"JSON test group description"
|
||||||
|
},
|
||||||
|
"caller_data":"Here can go any kind of JSON data (even objects) that the caller want to get back together with the response"
|
||||||
|
}
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.Calling the JSON API with curl on the terminal
|
||||||
|
[source,bash]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
curl -H "Content-Type: application/json" --data @paramethers.json \
|
||||||
|
http://127.0.0.1:9092/rsGxsChannels/createGroup
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.JSON API call result
|
||||||
|
[source,json]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
{
|
||||||
|
"caller_data": "Here can go any kind of JSON data (even objects) that the caller want to get back together with the response",
|
||||||
|
"retval": true,
|
||||||
|
"token": 3
|
||||||
|
}
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
== Offer new RetroShare services through JSON API
|
||||||
|
|
||||||
|
To offer a retroshare service through the JSON API, first of all one need find
|
||||||
|
the global pointer to the service instance and document it in doxygen syntax,
|
||||||
|
plus marking with the custom doxygen command +@jsonapi{RS_VERSION}+ where
|
||||||
|
+RS_VERSION+ is the retroshare version in which this service became available
|
||||||
|
with the current semantic (major changes to the service semantic, changes the
|
||||||
|
meaning of the service itself, so the version should be updated in the
|
||||||
|
documentation in that case).
|
||||||
|
|
||||||
|
.Service instance pointer in rsgxschannels.h
|
||||||
|
[source,cpp]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Pointer to global instance of RsGxsChannels service implementation
|
||||||
|
* @jsonapi{development}
|
||||||
|
*/
|
||||||
|
extern RsGxsChannels* rsGxsChannels;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Once the service instance itself is known to the JSON API you need to document
|
||||||
|
in doxygen syntax and mark with the custom doxygen command
|
||||||
|
+@jsonapi{RS_VERSION}+ the methods of the service that you want to make
|
||||||
|
available through JSON API.
|
||||||
|
|
||||||
|
.Offering RsGxsChannels::getChannelDownloadDirectory in rsgxschannels.h
|
||||||
|
[source,cpp]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Get download directory for the given channel
|
||||||
|
* @jsonapi{development}
|
||||||
|
* @param[in] channelId id of the channel
|
||||||
|
* @param[out] directory reference to string where to store the path
|
||||||
|
* @return false on error, true otherwise
|
||||||
|
*/
|
||||||
|
virtual bool getChannelDownloadDirectory( const RsGxsGroupId& channelId,
|
||||||
|
std::string& directory ) = 0;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
For each paramether you must specify if it is used as input +@param[in]+ as
|
||||||
|
output +@param[out]+ or both +@param[inout]+. Paramethers and return value
|
||||||
|
types must be of a type supported by +RsTypeSerializer+ which already support
|
||||||
|
most basic types (+bool+, +std::string+...), +RsSerializable+ and containers of
|
||||||
|
them like +std::vector<std::string>+. Paramethers passed by value and by
|
||||||
|
reference of those types are both supported, while passing by pointer is not
|
||||||
|
supported. If your paramether or return +class+/+struct+ type is not supported
|
||||||
|
yet by +RsTypeSerializer+ most convenient approach is to make it derive from
|
||||||
|
+RsSerializable+ and implement +serial_process+ method like I did with
|
||||||
|
+RsGxsChannelGroup+.
|
||||||
|
|
||||||
|
.Deriving RsGxsChannelGroup from RsSerializable in rsgxschannels.h
|
||||||
|
[source,cpp]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
struct RsGxsChannelGroup : RsSerializable
|
||||||
|
{
|
||||||
|
RsGroupMetaData mMeta;
|
||||||
|
std::string mDescription;
|
||||||
|
RsGxsImage mImage;
|
||||||
|
|
||||||
|
bool mAutoDownload;
|
||||||
|
|
||||||
|
/// @see RsSerializable
|
||||||
|
virtual void serial_process( RsGenericSerializer::SerializeJob j,
|
||||||
|
RsGenericSerializer::SerializeContext& ctx )
|
||||||
|
{
|
||||||
|
RS_SERIAL_PROCESS(mMeta);
|
||||||
|
RS_SERIAL_PROCESS(mDescription);
|
||||||
|
RS_SERIAL_PROCESS(mImage);
|
||||||
|
RS_SERIAL_PROCESS(mAutoDownload);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
You can do the same recursively for any member of your +struct+ that is not yet
|
||||||
|
supported by +RsTypeSerializer+.
|
||||||
|
|
||||||
|
Some Retroshare {Cxx} API functions are asyncronous, historically RetroShare
|
||||||
|
didn't follow a policy on how to expose asyncronous API so differents services
|
||||||
|
and some times even differents method of the same service follow differents
|
||||||
|
asyncronous patterns, thus making automatic generation of JSON API wrappers for
|
||||||
|
those methods impractical. Instead of dealing with all those differents patterns
|
||||||
|
I have chosed to support only one new pattern taking advantage of modern {Cxx}11
|
||||||
|
and restbed features. On the {Cxx}11 side lambdas and +std::function+s are used,
|
||||||
|
on the restbed side Server Side Events are used to send asyncronous results.
|
||||||
|
|
||||||
|
Lets see an example so it will be much esier to understand.
|
||||||
|
|
||||||
|
.RsGxsChannels::turtleSearchRequest asyncronous API
|
||||||
|
[source,cpp]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief Request remote channels search
|
||||||
|
* @jsonapi{development}
|
||||||
|
* @param[in] matchString string to look for in the search
|
||||||
|
* @param multiCallback function that will be called each time a search
|
||||||
|
* result is received
|
||||||
|
* @param[in] maxWait maximum wait time in seconds for search results
|
||||||
|
* @return false on error, true otherwise
|
||||||
|
*/
|
||||||
|
virtual bool turtleSearchRequest(
|
||||||
|
const std::string& matchString,
|
||||||
|
const std::function<void (const RsGxsGroupSummary& result)>& multiCallback,
|
||||||
|
std::time_t maxWait = 300 ) = 0;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
+RsGxsChannels::turtleSearchRequest(...)+ is an asyncronous method because it
|
||||||
|
send a channel search request on turtle network and then everytime a result is
|
||||||
|
received from the network +multiCallback+ is called and the result is passed as
|
||||||
|
parameter. To be supported by the automatic JSON API wrappers generator an
|
||||||
|
asyncronous method need a parameter of type +std::function<void (...)>+ called
|
||||||
|
+callback+ if the callback will be called only once or +multiCallback+ if the
|
||||||
|
callback is expected to be called more then once like in this case.
|
||||||
|
A second mandatory parameter is +maxWait+ of type +std::time_t+ it indicates the
|
||||||
|
maximum amount of time in seconds for which the caller is willing to wait for
|
||||||
|
results, in case the timeout is reached the callback will not be called anymore.
|
||||||
|
|
||||||
|
[IMPORTANT]
|
||||||
|
================================================================================
|
||||||
|
+callback+ and +multiCallback+ parameters documentation must *not* specify
|
||||||
|
+[in]+, +[out]+, +[inout]+, in Doxygen documentation as this would fool the
|
||||||
|
automatic wrapper generator, and ultimately break the compilation.
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
.RsFiles::turtleSearchRequest asyncronous JSON API usage example
|
||||||
|
[source,bash]
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
$ cat turtle_search.json
|
||||||
|
{
|
||||||
|
"matchString":"linux"
|
||||||
|
}
|
||||||
|
$ curl --data @turtle_search.json http://127.0.0.1:9092/rsFiles/turtleSearchRequest
|
||||||
|
data: {"retval":true}
|
||||||
|
|
||||||
|
data: {"results":[{"size":157631,"hash":"69709b4d01025584a8def5cd78ebbd1a3cf3fd05","name":"kill_bill_linux_1024x768.jpg"},{"size":192560,"hash":"000000000000000000009a93e5be8486c496f46c","name":"coffee_box_linux2.jpg"},{"size":455087,"hash":"9a93e5be8486c496f46c00000000000000000000","name":"Linux.png"},{"size":182004,"hash":"e8845280912ebf3779e400000000000000000000","name":"Linux_2_6.png"}]}
|
||||||
|
|
||||||
|
data: {"results":[{"size":668,"hash":"e8845280912ebf3779e400000000000000000000","name":"linux.png"},{"size":70,"hash":"e8845280912ebf3779e400000000000000000000","name":"kali-linux-2016.2-amd64.txt.sha1sum"},{"size":3076767744,"hash":"e8845280912ebf3779e400000000000000000000","name":"kali-linux-2016.2-amd64.iso"},{"size":2780872,"hash":"e8845280912ebf3779e400000000000000000000","name":"openwrt-ar71xx-generic-vmlinux.bin"},{"size":917504,"hash":"e8845280912ebf3779e400000000000000000000","name":"openwrt-ar71xx-generic-vmlinux.lzma"},{"size":2278404096,"hash":"e8845280912ebf3779e400000000000000000000","name":"gentoo-linux-livedvd-amd64-multilib-20160704.iso"},{"size":151770333,"hash":"e8845280912ebf3779e400000000000000000000","name":"flashtool-0.9.23.0-linux.tar.7z"},{"size":2847372,"hash":"e8845280912ebf3779e400000000000000000000","name":"openwrt-ar71xx-generic-vmlinux.elf"},{"size":1310720,"hash":"e8845280912ebf3779e400000000000000000000","name":"openwrt-ar71xx-generic-vmlinux.gz"},{"size":987809,"hash":"e8845280912ebf3779e400000000000000000000","name":"openwrt-ar71xx-generic-vmlinux-lzma.elf"}]}
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
== A bit of history
|
||||||
|
|
||||||
|
=== First writings about this
|
||||||
|
|
||||||
|
The previous attempt of exposing a RetroShare JSON API is called +libresapi+ and
|
||||||
|
unfortunatley it requires a bunch of boilerplate code when we want to expose
|
||||||
|
something present in the {Cxx} API in the JSON API.
|
||||||
|
|
||||||
|
As an example here you can see the libresapi that exposes part of the retroshare
|
||||||
|
chat {Cxx} API and lot of boilerplate code just to convert {Cxx} objects to JSON
|
||||||
|
|
||||||
|
https://github.com/RetroShare/RetroShare/blob/v0.6.4/libresapi/src/api/ChatHandler.cpp#L44
|
||||||
|
|
||||||
|
To avoid the {Cxx} to JSON and back conversion boilerplate code I have worked out
|
||||||
|
an extension to our {Cxx} serialization code so it is capable to serialize and
|
||||||
|
deserialize to JSON you can see it in this pull request
|
||||||
|
|
||||||
|
https://github.com/RetroShare/RetroShare/pull/1155
|
||||||
|
|
||||||
|
So first step toward having a good API is to take advantage of the fact that RS
|
||||||
|
is now capable of converting C++ objects from and to JSON.
|
||||||
|
|
||||||
|
The current API is accessible via HTTP and unix socket, there is no
|
||||||
|
authentication in both of them, so anyone having access to the HTTP server or to
|
||||||
|
the unix socket can access the API without extra restrictions.
|
||||||
|
Expecially for the HTTP API this is a big risk because also if the http server
|
||||||
|
listen on 127.0.0.1 every application on the machine (even rogue javascript
|
||||||
|
running on your web browser) can access that and for example on android it is
|
||||||
|
not safe at all (because of that I implemented the unix socket access so at
|
||||||
|
least in android API was reasonably safe) because of this.
|
||||||
|
|
||||||
|
A second step to improve the API would be to implement some kind of API
|
||||||
|
authentication mechanism (it would be nice that the mechanism is handled at API
|
||||||
|
level and not at transport level so we can use it for any API trasport not just
|
||||||
|
HTTP for example)
|
||||||
|
|
||||||
|
The HTTP server used by libresapi is libmicrohttpd server that is very minimal,
|
||||||
|
it doesn't provide HTTPS nor modern HTTP goodies, like server notifications,
|
||||||
|
websockets etc. because the lack of support we have a token polling mechanism in
|
||||||
|
libresapi to avoid polling for every thing but it is still ugly, so if we can
|
||||||
|
completely get rid of polling in the API that would be really nice.
|
||||||
|
I have done a crawl to look for a replacement and briefly looked at
|
||||||
|
|
||||||
|
- https://www.gnu.org/software/libmicrohttpd/
|
||||||
|
- http://wolkykim.github.io/libasyncd/
|
||||||
|
- https://github.com/corvusoft/restbed
|
||||||
|
- https://code.facebook.com/posts/1503205539947302/introducing-proxygen-facebook-s-c-http-framework/
|
||||||
|
- https://github.com/cmouse/yahttp
|
||||||
|
|
||||||
|
taking in account a few metrics like modern HTTP goodies support, license,
|
||||||
|
platform support, external dependencies and documentation it seemed to me that
|
||||||
|
restbed is the more appropriate.
|
||||||
|
|
||||||
|
Another source of boilerplate code into libresapi is the mapping between JSON
|
||||||
|
API requests and C++ API methods as an example you can look at this
|
||||||
|
|
||||||
|
https://github.com/RetroShare/RetroShare/blob/v0.6.4/libresapi/src/api/ChatHandler.cpp#L158
|
||||||
|
|
||||||
|
and this
|
||||||
|
|
||||||
|
https://github.com/RetroShare/RetroShare/blob/v0.6.4/libresapi/src/api/ApiServer.cpp#L253
|
||||||
|
|
||||||
|
The abstract logic of this thing is, when libreasapi get a request like
|
||||||
|
+/chat/initiate_distant_chat+ then call
|
||||||
|
+ChatHandler::handleInitiateDistantChatConnexion+ which in turn is just a
|
||||||
|
wrapper of +RsMsgs::initiateDistantChatConnexion+ all this process is basically
|
||||||
|
implemented as boilerplate code and would be unnecessary in a smarter design of
|
||||||
|
the API because almost all the information needed is already present in the
|
||||||
|
C++ API +libretroshare/src/retroshare+.
|
||||||
|
|
||||||
|
So a third step to improve the JSON API would be to remove this source of
|
||||||
|
boilerplate code by automatizing the mapping between C++ and JSON API call.
|
||||||
|
|
||||||
|
This may result a little tricky as language parsing or other adevanced things
|
||||||
|
may be required.
|
||||||
|
|
||||||
|
Hope this dive is useful for you +
|
||||||
|
Cheers +
|
||||||
|
G10h4ck
|
||||||
|
|
||||||
|
=== Second writings about this
|
||||||
|
|
||||||
|
I have been investigating a bit more about:
|
||||||
|
[verse, G10h4ck]
|
||||||
|
________________________________________________________________________________
|
||||||
|
So a third step to improve the JSON API would be to remove this source of
|
||||||
|
boilerplate code by automatizing the mapping between C++ and JSON API call
|
||||||
|
________________________________________________________________________________
|
||||||
|
|
||||||
|
After spending some hours investigating this topic the most reasonable approach
|
||||||
|
seems to:
|
||||||
|
|
||||||
|
1. Properly document headers in +libretroshare/src/retroshare/+ in doxygen syntax
|
||||||
|
specifying wihich params are input and/or output (doxygen sysntax for this is
|
||||||
|
+@param[in/out/inout]+) this will be the API documentation too.
|
||||||
|
|
||||||
|
2. At compile time use doxygen to generate XML description of the headers and use
|
||||||
|
the XML to generate the JSON api server stub.
|
||||||
|
http://www.stack.nl/~dimitri/doxygen/manual/customize.html#xmlgenerator
|
||||||
|
|
||||||
|
3. Enjoy
|
73
jsonapi-generator/src/async-method-wrapper-template.cpp.tmpl
Normal file
73
jsonapi-generator/src/async-method-wrapper-template.cpp.tmpl
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* RetroShare JSON API
|
||||||
|
* Copyright (C) 2018 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
registerHandler("$%apiPath%$",
|
||||||
|
[$%captureVars%$](const std::shared_ptr<rb::Session> session)
|
||||||
|
{
|
||||||
|
const std::multimap<std::string, std::string> headers
|
||||||
|
{
|
||||||
|
{ "Connection", "keep-alive" },
|
||||||
|
{ "Content-Type", "text/event-stream" }
|
||||||
|
};
|
||||||
|
session->yield(rb::OK, headers);
|
||||||
|
|
||||||
|
size_t reqSize = session->get_request()->get_header("Content-Length", 0);
|
||||||
|
session->fetch( reqSize, [$%captureVars%$](
|
||||||
|
const std::shared_ptr<rb::Session> session,
|
||||||
|
const rb::Bytes& body )
|
||||||
|
{
|
||||||
|
RsGenericSerializer::SerializeContext cReq(
|
||||||
|
nullptr, 0,
|
||||||
|
RsGenericSerializer::SERIALIZATION_FLAG_YIELDING );
|
||||||
|
RsJson& jReq(cReq.mJson);
|
||||||
|
jReq.Parse(reinterpret_cast<const char*>(body.data()), body.size());
|
||||||
|
|
||||||
|
RsGenericSerializer::SerializeContext cAns;
|
||||||
|
RsJson& jAns(cAns.mJson);
|
||||||
|
|
||||||
|
// if caller specified caller_data put it back in the answhere
|
||||||
|
const char kcd[] = "caller_data";
|
||||||
|
if(jReq.HasMember(kcd))
|
||||||
|
jAns.AddMember(kcd, jReq[kcd], jAns.GetAllocator());
|
||||||
|
|
||||||
|
$%paramsDeclaration%$
|
||||||
|
|
||||||
|
$%inputParamsDeserialization%$
|
||||||
|
|
||||||
|
$%callbackName%$ = [session]($%callbackParams%$)
|
||||||
|
{
|
||||||
|
$%callbackParamsSerialization%$
|
||||||
|
|
||||||
|
std::stringstream message;
|
||||||
|
message << "data: " << compactJSON << ctx.mJson << "\n\n";
|
||||||
|
session->yield(message.str());
|
||||||
|
$%sessionEarlyClose%$
|
||||||
|
};
|
||||||
|
|
||||||
|
$%functionCall%$
|
||||||
|
|
||||||
|
$%outputParamsSerialization%$
|
||||||
|
|
||||||
|
// return them to the API caller
|
||||||
|
std::stringstream message;
|
||||||
|
message << "data: " << compactJSON << cAns.mJson << "\n\n";
|
||||||
|
session->yield(message.str());
|
||||||
|
$%sessionDelayedClose%$
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
|
229
jsonapi-generator/src/jsonapi-generator-doxygen.conf
Normal file
229
jsonapi-generator/src/jsonapi-generator-doxygen.conf
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
DOXYFILE_ENCODING = UTF-8
|
||||||
|
PROJECT_NAME = "libretroshare"
|
||||||
|
|
||||||
|
ALIASES += jsonapi{1}="\xmlonly<jsonapi minversion=\"\1\"/>\endxmlonly"
|
||||||
|
|
||||||
|
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
|
||||||
|
# documentation from any documented member that it re-implements.
|
||||||
|
# The default value is: YES.
|
||||||
|
|
||||||
|
INHERIT_DOCS = YES
|
||||||
|
|
||||||
|
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
|
||||||
|
# according to the Markdown format, which allows for more readable
|
||||||
|
# documentation. See http://daringfireball.net/projects/markdown/ for details.
|
||||||
|
# The output of markdown processing is further processed by doxygen, so you can
|
||||||
|
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
|
||||||
|
# case of backward compatibilities issues.
|
||||||
|
# The default value is: YES.
|
||||||
|
|
||||||
|
MARKDOWN_SUPPORT = YES
|
||||||
|
|
||||||
|
# When enabled doxygen tries to link words that correspond to documented
|
||||||
|
# classes, or namespaces to their corresponding documentation. Such a link can
|
||||||
|
# be prevented in individual cases by putting a % sign in front of the word or
|
||||||
|
# globally by setting AUTOLINK_SUPPORT to NO.
|
||||||
|
# The default value is: YES.
|
||||||
|
|
||||||
|
AUTOLINK_SUPPORT = YES
|
||||||
|
|
||||||
|
|
||||||
|
# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
|
||||||
|
# documentation are documented, even if no documentation was available. Private
|
||||||
|
# class members and static file members will be hidden unless the
|
||||||
|
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
|
||||||
|
# Note: This will also disable the warnings about undocumented members that are
|
||||||
|
# normally produced when WARNINGS is set to YES.
|
||||||
|
# The default value is: NO.
|
||||||
|
|
||||||
|
EXTRACT_ALL = YES
|
||||||
|
|
||||||
|
|
||||||
|
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
|
||||||
|
# undocumented members inside documented classes or files. If set to NO these
|
||||||
|
# members will be included in the various overviews, but no documentation
|
||||||
|
# section is generated. This option has no effect if EXTRACT_ALL is enabled.
|
||||||
|
# The default value is: NO.
|
||||||
|
|
||||||
|
HIDE_UNDOC_MEMBERS = NO
|
||||||
|
|
||||||
|
# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
|
||||||
|
# undocumented classes that are normally visible in the class hierarchy. If set
|
||||||
|
# to NO, these classes will be included in the various overviews. This option
|
||||||
|
# has no effect if EXTRACT_ALL is enabled.
|
||||||
|
# The default value is: NO.
|
||||||
|
|
||||||
|
HIDE_UNDOC_CLASSES = NO
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration options related to the input files
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# The INPUT tag is used to specify the files and/or directories that contain
|
||||||
|
# documented source files. You may enter file names like myfile.cpp or
|
||||||
|
# directories like /usr/src/myproject. Separate the files or directories with
|
||||||
|
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
||||||
|
# Note: If this tag is empty the current directory is searched.
|
||||||
|
|
||||||
|
#INPUT =
|
||||||
|
|
||||||
|
# This tag can be used to specify the character encoding of the source files
|
||||||
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||||
|
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
|
||||||
|
# documentation (see: https://www.gnu.org/software/libiconv/) for the list of
|
||||||
|
# possible encodings.
|
||||||
|
# The default value is: UTF-8.
|
||||||
|
|
||||||
|
INPUT_ENCODING = UTF-8
|
||||||
|
|
||||||
|
# If the value of the INPUT tag contains directories, you can use the
|
||||||
|
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
|
||||||
|
# *.h) to filter out the source-files in the directories.
|
||||||
|
#
|
||||||
|
# Note that for custom extensions or not directly supported extensions you also
|
||||||
|
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
|
||||||
|
# read by doxygen.
|
||||||
|
#
|
||||||
|
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
|
||||||
|
# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
|
||||||
|
# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
|
||||||
|
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
|
||||||
|
# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
|
||||||
|
|
||||||
|
FILE_PATTERNS = *.c \
|
||||||
|
*.cc \
|
||||||
|
*.cxx \
|
||||||
|
*.cpp \
|
||||||
|
*.c++ \
|
||||||
|
*.java \
|
||||||
|
*.ii \
|
||||||
|
*.ixx \
|
||||||
|
*.ipp \
|
||||||
|
*.i++ \
|
||||||
|
*.inl \
|
||||||
|
*.idl \
|
||||||
|
*.ddl \
|
||||||
|
*.odl \
|
||||||
|
*.h \
|
||||||
|
*.hh \
|
||||||
|
*.hxx \
|
||||||
|
*.hpp \
|
||||||
|
*.h++ \
|
||||||
|
*.cs \
|
||||||
|
*.d \
|
||||||
|
*.php \
|
||||||
|
*.php4 \
|
||||||
|
*.php5 \
|
||||||
|
*.phtml \
|
||||||
|
*.inc \
|
||||||
|
*.m \
|
||||||
|
*.markdown \
|
||||||
|
*.md \
|
||||||
|
*.mm \
|
||||||
|
*.dox \
|
||||||
|
*.py \
|
||||||
|
*.pyw \
|
||||||
|
*.f90 \
|
||||||
|
*.f95 \
|
||||||
|
*.f03 \
|
||||||
|
*.f08 \
|
||||||
|
*.f \
|
||||||
|
*.for \
|
||||||
|
*.tcl \
|
||||||
|
*.vhd \
|
||||||
|
*.vhdl \
|
||||||
|
*.ucf \
|
||||||
|
*.qsf
|
||||||
|
|
||||||
|
# The RECURSIVE tag can be used to specify whether or not subdirectories should
|
||||||
|
# be searched for input files as well.
|
||||||
|
# The default value is: NO.
|
||||||
|
|
||||||
|
RECURSIVE = YES
|
||||||
|
|
||||||
|
# The EXCLUDE tag can be used to specify files and/or directories that should be
|
||||||
|
# excluded from the INPUT source files. This way you can easily exclude a
|
||||||
|
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||||
|
#
|
||||||
|
# Note that relative paths are relative to the directory from which doxygen is
|
||||||
|
# run.
|
||||||
|
|
||||||
|
EXCLUDE =
|
||||||
|
|
||||||
|
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
|
||||||
|
# directories that are symbolic links (a Unix file system feature) are excluded
|
||||||
|
# from the input.
|
||||||
|
# The default value is: NO.
|
||||||
|
|
||||||
|
EXCLUDE_SYMLINKS = NO
|
||||||
|
|
||||||
|
# If the value of the INPUT tag contains directories, you can use the
|
||||||
|
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
|
||||||
|
# certain files from those directories.
|
||||||
|
#
|
||||||
|
# Note that the wildcards are matched against the file with absolute path, so to
|
||||||
|
# exclude all test directories for example use the pattern */test/*
|
||||||
|
|
||||||
|
EXCLUDE_PATTERNS =
|
||||||
|
|
||||||
|
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||||
|
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||||
|
# output. The symbol name can be a fully qualified name, a word, or if the
|
||||||
|
# wildcard * is used, a substring. Examples: ANamespace, AClass,
|
||||||
|
# AClass::ANamespace, ANamespace::*Test
|
||||||
|
#
|
||||||
|
# Note that the wildcards are matched against the file with absolute path, so to
|
||||||
|
# exclude all test directories use the pattern */test/*
|
||||||
|
|
||||||
|
EXCLUDE_SYMBOLS =
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration options related to the HTML output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
|
||||||
|
# The default value is: YES.
|
||||||
|
|
||||||
|
GENERATE_HTML = NO
|
||||||
|
|
||||||
|
# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
|
||||||
|
# The default value is: YES.
|
||||||
|
|
||||||
|
GENERATE_LATEX = NO
|
||||||
|
|
||||||
|
# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
|
||||||
|
# captures the structure of the code including all documentation.
|
||||||
|
# The default value is: NO.
|
||||||
|
|
||||||
|
GENERATE_XML = YES
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration options related to the preprocessor
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
|
||||||
|
# C-preprocessor directives found in the sources and include files.
|
||||||
|
# The default value is: YES.
|
||||||
|
|
||||||
|
ENABLE_PREPROCESSING = YES
|
||||||
|
|
||||||
|
# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
|
||||||
|
# in the source code. If set to NO, only conditional compilation will be
|
||||||
|
# performed. Macro expansion can be done in a controlled way by setting
|
||||||
|
# EXPAND_ONLY_PREDEF to YES.
|
||||||
|
# The default value is: NO.
|
||||||
|
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
||||||
|
|
||||||
|
MACRO_EXPANSION = NO
|
||||||
|
|
||||||
|
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
|
||||||
|
# the macro expansion is limited to the macros specified with the PREDEFINED and
|
||||||
|
# EXPAND_AS_DEFINED tags.
|
||||||
|
# The default value is: NO.
|
||||||
|
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
||||||
|
|
||||||
|
EXPAND_ONLY_PREDEF = NO
|
||||||
|
|
364
jsonapi-generator/src/jsonapi-generator.cpp
Normal file
364
jsonapi-generator/src/jsonapi-generator.cpp
Normal file
@ -0,0 +1,364 @@
|
|||||||
|
/*
|
||||||
|
* RetroShare JSON API
|
||||||
|
* Copyright (C) 2018 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QtXml>
|
||||||
|
#include <QDirIterator>
|
||||||
|
#include <QFileInfo>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
|
struct MethodParam
|
||||||
|
{
|
||||||
|
MethodParam() :
|
||||||
|
in(false), out(false), isMultiCallback(false), isSingleCallback(false){}
|
||||||
|
|
||||||
|
QString type;
|
||||||
|
QString name;
|
||||||
|
QString defval;
|
||||||
|
bool in;
|
||||||
|
bool out;
|
||||||
|
bool isMultiCallback;
|
||||||
|
bool isSingleCallback;
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
if(argc != 3)
|
||||||
|
qFatal("Usage: jsonapi-generator SOURCE_PATH OUTPUT_PATH");
|
||||||
|
|
||||||
|
QString sourcePath(argv[1]);
|
||||||
|
QString outputPath(argv[2]);
|
||||||
|
QString doxPrefix(outputPath+"/xml/");
|
||||||
|
|
||||||
|
QString wrappersDefFilePath(outputPath + "/jsonapi-wrappers.inl");
|
||||||
|
QFile wrappersDefFile(wrappersDefFilePath);
|
||||||
|
wrappersDefFile.remove();
|
||||||
|
if(!wrappersDefFile.open(QIODevice::WriteOnly|QIODevice::Append|QIODevice::Text))
|
||||||
|
qFatal(QString("Can't open: " + wrappersDefFilePath).toLatin1().data());
|
||||||
|
|
||||||
|
QString cppApiIncludesFilePath(outputPath + "/jsonapi-includes.inl");
|
||||||
|
QFile cppApiIncludesFile(cppApiIncludesFilePath);
|
||||||
|
cppApiIncludesFile.remove();
|
||||||
|
if(!cppApiIncludesFile.open(QIODevice::WriteOnly|QIODevice::Append|QIODevice::Text))
|
||||||
|
qFatal(QString("Can't open: " + cppApiIncludesFilePath).toLatin1().data());
|
||||||
|
QSet<QString> cppApiIncludesSet;
|
||||||
|
|
||||||
|
QDirIterator it(doxPrefix, QStringList() << "*8h.xml", QDir::Files);
|
||||||
|
while(it.hasNext())
|
||||||
|
{
|
||||||
|
QDomDocument hDoc;
|
||||||
|
QString hFilePath(it.next());
|
||||||
|
QString parseError; int line, column;
|
||||||
|
QFile hFile(hFilePath);
|
||||||
|
if (!hFile.open(QIODevice::ReadOnly) ||
|
||||||
|
!hDoc.setContent(&hFile, &parseError, &line, &column))
|
||||||
|
{
|
||||||
|
qWarning() << "Error parsing:" << hFilePath
|
||||||
|
<< parseError << line << column;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QFileInfo hfi(hFile);
|
||||||
|
QString headerFileName(hfi.fileName());
|
||||||
|
headerFileName.replace(QString("_8h.xml"), QString(".h"));
|
||||||
|
|
||||||
|
QDomNodeList sectiondefs = hDoc.elementsByTagName("sectiondef");
|
||||||
|
for(int j = 0; j < sectiondefs.size(); ++j)
|
||||||
|
{
|
||||||
|
QDomElement sectDef = sectiondefs.item(j).toElement();
|
||||||
|
|
||||||
|
if( sectDef.attributes().namedItem("kind").nodeValue() != "var"
|
||||||
|
|| sectDef.elementsByTagName("jsonapi").isEmpty() )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
QString instanceName =
|
||||||
|
sectDef.elementsByTagName("name").item(0).toElement().text();
|
||||||
|
QString typeName =
|
||||||
|
sectDef.elementsByTagName("ref").item(0).toElement().text();
|
||||||
|
QString typeFilePath(doxPrefix);
|
||||||
|
typeFilePath += sectDef.elementsByTagName("ref").item(0)
|
||||||
|
.attributes().namedItem("refid").nodeValue();
|
||||||
|
typeFilePath += ".xml";
|
||||||
|
|
||||||
|
QDomDocument typeDoc;
|
||||||
|
QFile typeFile(typeFilePath);
|
||||||
|
if ( !typeFile.open(QIODevice::ReadOnly) ||
|
||||||
|
!typeDoc.setContent(&typeFile, &parseError, &line, &column) )
|
||||||
|
{
|
||||||
|
qWarning() << "Error parsing:" << typeFilePath
|
||||||
|
<< parseError << line << column;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDomNodeList members = typeDoc.elementsByTagName("member");
|
||||||
|
for (int i = 0; i < members.size(); ++i)
|
||||||
|
{
|
||||||
|
QDomNode member = members.item(i);
|
||||||
|
QString refid(member.attributes().namedItem("refid").nodeValue());
|
||||||
|
QString methodName(member.firstChildElement("name").toElement().text());
|
||||||
|
QString wrapperName(instanceName+methodName+"Wrapper");
|
||||||
|
QString defFilePath(doxPrefix + refid.split('_')[0] + ".xml");
|
||||||
|
|
||||||
|
qDebug() << "Looking for" << typeName << methodName << "into"
|
||||||
|
<< typeFilePath;
|
||||||
|
|
||||||
|
QDomDocument defDoc;
|
||||||
|
QFile defFile(defFilePath);
|
||||||
|
if ( !defFile.open(QIODevice::ReadOnly) ||
|
||||||
|
!defDoc.setContent(&defFile, &parseError, &line, &column) )
|
||||||
|
{
|
||||||
|
qWarning() << "Error parsing:" << defFilePath
|
||||||
|
<< parseError << line << column;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDomElement memberdef;
|
||||||
|
QDomNodeList memberdefs = defDoc.elementsByTagName("memberdef");
|
||||||
|
for (int k = 0; k < memberdefs.size(); ++k)
|
||||||
|
{
|
||||||
|
QDomElement tmpMBD = memberdefs.item(k).toElement();
|
||||||
|
QString tmpId = tmpMBD.attributes().namedItem("id").nodeValue();
|
||||||
|
QString tmpKind = tmpMBD.attributes().namedItem("kind").nodeValue();
|
||||||
|
bool hasJsonApi = !tmpMBD.elementsByTagName("jsonapi").isEmpty();
|
||||||
|
if( tmpId == refid && tmpKind == "function" && hasJsonApi )
|
||||||
|
{
|
||||||
|
memberdef = tmpMBD;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(memberdef.isNull()) continue;
|
||||||
|
|
||||||
|
QString apiPath("/" + instanceName + "/" + methodName);
|
||||||
|
QString retvalType = memberdef.firstChildElement("type").text();
|
||||||
|
QMap<QString,MethodParam> paramsMap;
|
||||||
|
QStringList orderedParamNames;
|
||||||
|
bool hasInput = false;
|
||||||
|
bool hasOutput = false;
|
||||||
|
bool hasSingleCallback = false;
|
||||||
|
bool hasMultiCallback = false;
|
||||||
|
QString callbackName;
|
||||||
|
QString callbackParams;
|
||||||
|
|
||||||
|
QDomNodeList params = memberdef.elementsByTagName("param");
|
||||||
|
for (int k = 0; k < params.size(); ++k)
|
||||||
|
{
|
||||||
|
QDomElement tmpPE = params.item(k).toElement();
|
||||||
|
MethodParam tmpParam;
|
||||||
|
QString& pName(tmpParam.name);
|
||||||
|
QString& pType(tmpParam.type);
|
||||||
|
pName = tmpPE.firstChildElement("declname").text();
|
||||||
|
QDomElement tmpDefval = tmpPE.firstChildElement("defval");
|
||||||
|
if(!tmpDefval.isNull()) tmpParam.defval = tmpDefval.text();
|
||||||
|
QDomElement tmpType = tmpPE.firstChildElement("type");
|
||||||
|
pType = tmpType.text();
|
||||||
|
if(pType.startsWith("const ")) pType.remove(0,6);
|
||||||
|
if(pType.startsWith("std::function"))
|
||||||
|
{
|
||||||
|
if(pType.endsWith('&')) pType.chop(1);
|
||||||
|
if(pName.startsWith("multiCallback"))
|
||||||
|
{
|
||||||
|
tmpParam.isMultiCallback = true;
|
||||||
|
hasMultiCallback = true;
|
||||||
|
}
|
||||||
|
else if(pName.startsWith("callback"))
|
||||||
|
{
|
||||||
|
tmpParam.isSingleCallback = true;
|
||||||
|
hasSingleCallback = true;
|
||||||
|
}
|
||||||
|
callbackName = pName;
|
||||||
|
callbackParams = pType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pType.replace(QString("&"), QString());
|
||||||
|
pType.replace(QString(" "), QString());
|
||||||
|
}
|
||||||
|
paramsMap.insert(tmpParam.name, tmpParam);
|
||||||
|
orderedParamNames.push_back(tmpParam.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDomNodeList parameternames = memberdef.elementsByTagName("parametername");
|
||||||
|
for (int k = 0; k < parameternames.size(); ++k)
|
||||||
|
{
|
||||||
|
QDomElement tmpPN = parameternames.item(k).toElement();
|
||||||
|
MethodParam& tmpParam = paramsMap[tmpPN.text()];
|
||||||
|
QString tmpD = tmpPN.attributes().namedItem("direction").nodeValue();
|
||||||
|
if(tmpD.contains("in"))
|
||||||
|
{
|
||||||
|
tmpParam.in = true;
|
||||||
|
hasInput = true;
|
||||||
|
}
|
||||||
|
if(tmpD.contains("out"))
|
||||||
|
{
|
||||||
|
tmpParam.out = true;
|
||||||
|
hasOutput = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString functionCall("\t\t");
|
||||||
|
if(retvalType != "void")
|
||||||
|
{
|
||||||
|
functionCall += retvalType + " retval = ";
|
||||||
|
hasOutput = true;
|
||||||
|
}
|
||||||
|
functionCall += instanceName + "->" + methodName + "(";
|
||||||
|
functionCall += orderedParamNames.join(", ") + ");\n";
|
||||||
|
|
||||||
|
qDebug() << instanceName << apiPath << retvalType << typeName
|
||||||
|
<< methodName;
|
||||||
|
for (const QString& pn : orderedParamNames)
|
||||||
|
{
|
||||||
|
const MethodParam& mp(paramsMap[pn]);
|
||||||
|
qDebug() << "\t" << mp.type << mp.name << mp.in << mp.out;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString inputParamsDeserialization;
|
||||||
|
if(hasInput)
|
||||||
|
{
|
||||||
|
inputParamsDeserialization +=
|
||||||
|
"\t\t{\n"
|
||||||
|
"\t\t\tRsGenericSerializer::SerializeContext& ctx(cReq);\n"
|
||||||
|
"\t\t\tRsGenericSerializer::SerializeJob j(RsGenericSerializer::FROM_JSON);\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString outputParamsSerialization;
|
||||||
|
if(hasOutput)
|
||||||
|
{
|
||||||
|
outputParamsSerialization +=
|
||||||
|
"\t\t{\n"
|
||||||
|
"\t\t\tRsGenericSerializer::SerializeContext& ctx(cAns);\n"
|
||||||
|
"\t\t\tRsGenericSerializer::SerializeJob j(RsGenericSerializer::TO_JSON);\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString paramsDeclaration;
|
||||||
|
for (const QString& pn : orderedParamNames)
|
||||||
|
{
|
||||||
|
const MethodParam& mp(paramsMap[pn]);
|
||||||
|
paramsDeclaration += "\t\t" + mp.type + " " + mp.name;
|
||||||
|
if(!mp.defval.isEmpty())
|
||||||
|
paramsDeclaration += "(" + mp.defval + ")";
|
||||||
|
paramsDeclaration += ";\n";
|
||||||
|
if(mp.in)
|
||||||
|
inputParamsDeserialization += "\t\t\tRS_SERIAL_PROCESS("
|
||||||
|
+ mp.name + ");\n";
|
||||||
|
if(mp.out)
|
||||||
|
outputParamsSerialization += "\t\t\tRS_SERIAL_PROCESS("
|
||||||
|
+ mp.name + ");\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hasInput) inputParamsDeserialization += "\t\t}\n";
|
||||||
|
if(retvalType != "void")
|
||||||
|
outputParamsSerialization +=
|
||||||
|
"\t\t\tRS_SERIAL_PROCESS(retval);\n";
|
||||||
|
if(hasOutput) outputParamsSerialization += "\t\t}\n";
|
||||||
|
|
||||||
|
QString captureVars;
|
||||||
|
|
||||||
|
QString sessionEarlyClose;
|
||||||
|
if(hasSingleCallback)
|
||||||
|
sessionEarlyClose = "session->close();";
|
||||||
|
|
||||||
|
QString sessionDelayedClose;
|
||||||
|
if(hasMultiCallback)
|
||||||
|
{
|
||||||
|
sessionDelayedClose = "mService.schedule( [session](){session->close();}, std::chrono::seconds(maxWait+120) );";
|
||||||
|
captureVars = "this";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString callbackParamsSerialization;
|
||||||
|
|
||||||
|
if(hasSingleCallback || hasMultiCallback ||
|
||||||
|
((callbackParams.indexOf('(')+2) < callbackParams.indexOf(')')))
|
||||||
|
{
|
||||||
|
QString& cbs(callbackParamsSerialization);
|
||||||
|
|
||||||
|
callbackParams = callbackParams.split('(')[1];
|
||||||
|
callbackParams = callbackParams.split(')')[0];
|
||||||
|
|
||||||
|
cbs += "\t\t\tRsGenericSerializer::SerializeContext ctx;\n";
|
||||||
|
|
||||||
|
for (QString cbPar : callbackParams.split(','))
|
||||||
|
{
|
||||||
|
bool isConst(cbPar.startsWith("const "));
|
||||||
|
QChar pSep(' ');
|
||||||
|
bool isRef(cbPar.contains('&'));
|
||||||
|
if(isRef) pSep = '&';
|
||||||
|
int sepIndex = cbPar.lastIndexOf(pSep)+1;
|
||||||
|
QString cpt(cbPar.mid(0, sepIndex));
|
||||||
|
cpt.remove(0,6);
|
||||||
|
QString cpn(cbPar.mid(sepIndex));
|
||||||
|
|
||||||
|
cbs += "\t\t\tRsTypeSerializer::serial_process(";
|
||||||
|
cbs += "RsGenericSerializer::TO_JSON, ctx, ";
|
||||||
|
if(isConst)
|
||||||
|
{
|
||||||
|
cbs += "const_cast<";
|
||||||
|
cbs += cpt;
|
||||||
|
cbs += ">(";
|
||||||
|
}
|
||||||
|
cbs += cpn;
|
||||||
|
if(isConst) cbs += ")";
|
||||||
|
cbs += ", \"";
|
||||||
|
cbs += cpn;
|
||||||
|
cbs += "\" );\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<QString,QString> substitutionsMap;
|
||||||
|
substitutionsMap.insert("paramsDeclaration", paramsDeclaration);
|
||||||
|
substitutionsMap.insert("inputParamsDeserialization", inputParamsDeserialization);
|
||||||
|
substitutionsMap.insert("outputParamsSerialization", outputParamsSerialization);
|
||||||
|
substitutionsMap.insert("wrapperName", wrapperName);
|
||||||
|
substitutionsMap.insert("headerFileName", headerFileName);
|
||||||
|
substitutionsMap.insert("functionCall", functionCall);
|
||||||
|
substitutionsMap.insert("apiPath", apiPath);
|
||||||
|
substitutionsMap.insert("sessionEarlyClose", sessionEarlyClose);
|
||||||
|
substitutionsMap.insert("sessionDelayedClose", sessionDelayedClose);
|
||||||
|
substitutionsMap.insert("captureVars", captureVars);
|
||||||
|
substitutionsMap.insert("callbackName", callbackName);
|
||||||
|
substitutionsMap.insert("callbackParams", callbackParams);
|
||||||
|
substitutionsMap.insert("callbackParamsSerialization", callbackParamsSerialization);
|
||||||
|
|
||||||
|
QString templFilePath(sourcePath);
|
||||||
|
if(hasMultiCallback || hasSingleCallback)
|
||||||
|
templFilePath.append("/async-method-wrapper-template.cpp.tmpl");
|
||||||
|
else templFilePath.append("/method-wrapper-template.cpp.tmpl");
|
||||||
|
|
||||||
|
QFile templFile(templFilePath);
|
||||||
|
templFile.open(QIODevice::ReadOnly);
|
||||||
|
QString wrapperDef(templFile.readAll());
|
||||||
|
|
||||||
|
QMap<QString,QString>::iterator it;
|
||||||
|
for ( it = substitutionsMap.begin();
|
||||||
|
it != substitutionsMap.end(); ++it )
|
||||||
|
wrapperDef.replace(QString("$%"+it.key()+"%$"), QString(it.value()), Qt::CaseSensitive);
|
||||||
|
|
||||||
|
wrappersDefFile.write(wrapperDef.toLocal8Bit());
|
||||||
|
|
||||||
|
cppApiIncludesSet.insert("#include \"retroshare/" + headerFileName + "\"\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(const QString& incl : cppApiIncludesSet)
|
||||||
|
cppApiIncludesFile.write(incl.toLocal8Bit());
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
6
jsonapi-generator/src/jsonapi-generator.pro
Normal file
6
jsonapi-generator/src/jsonapi-generator.pro
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
TARGET = jsonapi-generator
|
||||||
|
|
||||||
|
QT *= core xml
|
||||||
|
QT -= gui
|
||||||
|
|
||||||
|
SOURCES += jsonapi-generator.cpp
|
64
jsonapi-generator/src/method-wrapper-template.cpp.tmpl
Normal file
64
jsonapi-generator/src/method-wrapper-template.cpp.tmpl
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* RetroShare JSON API
|
||||||
|
* Copyright (C) 2018 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
registerHandler("$%apiPath%$",
|
||||||
|
[$%captureVars%$](const std::shared_ptr<rb::Session> session)
|
||||||
|
{
|
||||||
|
size_t reqSize = session->get_request()->get_header("Content-Length", 0);
|
||||||
|
session->fetch( reqSize, [](
|
||||||
|
const std::shared_ptr<rb::Session> session,
|
||||||
|
const rb::Bytes& body )
|
||||||
|
{
|
||||||
|
RsGenericSerializer::SerializeContext cReq(
|
||||||
|
nullptr, 0,
|
||||||
|
RsGenericSerializer::SERIALIZATION_FLAG_YIELDING );
|
||||||
|
RsJson& jReq(cReq.mJson);
|
||||||
|
jReq.Parse(reinterpret_cast<const char*>(body.data()), body.size());
|
||||||
|
|
||||||
|
RsGenericSerializer::SerializeContext cAns;
|
||||||
|
RsJson& jAns(cAns.mJson);
|
||||||
|
|
||||||
|
// if caller specified caller_data put it back in the answhere
|
||||||
|
const char kcd[] = "caller_data";
|
||||||
|
if(jReq.HasMember(kcd))
|
||||||
|
jAns.AddMember(kcd, jReq[kcd], jAns.GetAllocator());
|
||||||
|
|
||||||
|
$%paramsDeclaration%$
|
||||||
|
|
||||||
|
// deserialize input parameters from JSON
|
||||||
|
$%inputParamsDeserialization%$
|
||||||
|
|
||||||
|
// call retroshare C++ API
|
||||||
|
$%functionCall%$
|
||||||
|
|
||||||
|
// serialize out parameters and return value to JSON
|
||||||
|
$%outputParamsSerialization%$
|
||||||
|
|
||||||
|
// return them to the API caller
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << jAns;
|
||||||
|
std::string&& ans(ss.str());
|
||||||
|
const std::multimap<std::string, std::string> headers
|
||||||
|
{
|
||||||
|
{ "Content-Type", "text/json" },
|
||||||
|
{ "Content-Length", std::to_string(ans.length()) }
|
||||||
|
};
|
||||||
|
session->close(rb::OK, ans, headers);
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
|
@ -1,27 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdaccount.cc
|
* bitdht/bdaccount.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2011 by Robert Fernie
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bitdht/bdaccount.h"
|
#include "bitdht/bdaccount.h"
|
||||||
|
|
||||||
|
@ -1,30 +1,27 @@
|
|||||||
#ifndef BITDHT_ACCOUNT_H
|
#ifndef BITDHT_ACCOUNT_H
|
||||||
#define BITDHT_ACCOUNT_H
|
#define BITDHT_ACCOUNT_H
|
||||||
|
|
||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdaccount.h
|
* bitdht/bdaccount.h *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2011 by Robert Fernie
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -1,27 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdconnection.cc
|
* bitdht/bdconnection.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2011 by Robert Fernie
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include "bitdht/bdiface.h"
|
#include "bitdht/bdiface.h"
|
||||||
|
@ -1,32 +1,28 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdconnection.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
#ifndef BITDHT_CONNECTION_H
|
#ifndef BITDHT_CONNECTION_H
|
||||||
#define BITDHT_CONNECTION_H
|
#define BITDHT_CONNECTION_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdconnection.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2011 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdiface.h"
|
#include "bitdht/bdiface.h"
|
||||||
|
|
||||||
class bdQueryManager;
|
class bdQueryManager;
|
||||||
|
@ -1,29 +1,24 @@
|
|||||||
|
/*******************************************************************************
|
||||||
/*
|
* bitdht/bdfilter.cc *
|
||||||
* bitdht/bdfilter.cc
|
* *
|
||||||
*
|
* BitDHT: An Flexible DHT library. *
|
||||||
* BitDHT: An Flexible DHT library.
|
* *
|
||||||
*
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
* Copyright 2010 by Robert Fernie
|
* *
|
||||||
*
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* This library is free software; you can redistribute it and/or
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* License, or (at your option) any later version. *
|
||||||
*
|
* *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
* Library General Public License for more details.
|
* GNU Affero General Public License for more details. *
|
||||||
*
|
* *
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* License along with this library; if not, write to the Free Software
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* *
|
||||||
* USA.
|
*******************************************************************************/
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdfilter.h"
|
#include "bitdht/bdfilter.h"
|
||||||
#include "bitdht/bdmanager.h"
|
#include "bitdht/bdmanager.h"
|
||||||
|
@ -1,36 +1,28 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdfilter.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
#ifndef BITDHT_FILTER_H
|
#ifndef BITDHT_FILTER_H
|
||||||
#define BITDHT_FILTER_H
|
#define BITDHT_FILTER_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdfilter.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* This class is used to detect bad and filter them peers
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdiface.h"
|
#include "bitdht/bdiface.h"
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
|
/*******************************************************************************
|
||||||
/*
|
* bitdht/bdfriendlist.cc *
|
||||||
* bitdht/bdfriendlist.cc
|
* *
|
||||||
*
|
* BitDHT: An Flexible DHT library. *
|
||||||
* BitDHT: An Flexible DHT library.
|
* *
|
||||||
*
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
* Copyright 2011 by Robert Fernie
|
* *
|
||||||
*
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* This library is free software; you can redistribute it and/or
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* License, or (at your option) any later version. *
|
||||||
*
|
* *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
* Library General Public License for more details.
|
* GNU Affero General Public License for more details. *
|
||||||
*
|
* *
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* License along with this library; if not, write to the Free Software
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* *
|
||||||
* USA.
|
*******************************************************************************/
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bitdht/bdfriendlist.h"
|
#include "bitdht/bdfriendlist.h"
|
||||||
#include "bitdht/bdstddht.h"
|
#include "bitdht/bdstddht.h"
|
||||||
|
@ -1,31 +1,28 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdfriendlist.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
#ifndef BITDHT_FRIEND_LIST_H
|
#ifndef BITDHT_FRIEND_LIST_H
|
||||||
#define BITDHT_FRIEND_LIST_H
|
#define BITDHT_FRIEND_LIST_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdfriendlist.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2011 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This class maintains a list of current friends and friends-of-friends.
|
* This class maintains a list of current friends and friends-of-friends.
|
||||||
* It should also be updated when a peer's address has been identified.
|
* It should also be updated when a peer's address has been identified.
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdhash.cc
|
* bitdht/bdhash.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010 by Robert Fernie
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdhash.h"
|
#include "bitdht/bdhash.h"
|
||||||
#include "bitdht/bdstddht.h"
|
#include "bitdht/bdstddht.h"
|
||||||
|
@ -1,31 +1,28 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdhash.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
#ifndef BITDHT_HASH_SPACE_H
|
#ifndef BITDHT_HASH_SPACE_H
|
||||||
#define BITDHT_HASH_SPACE_H
|
#define BITDHT_HASH_SPACE_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdhash.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bitdht/bdpeer.h"
|
#include "bitdht/bdpeer.h"
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdhistory.cc *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdhistory.h"
|
#include "bitdht/bdhistory.h"
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdhistory.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
#ifndef BITDHT_HISTORY_H
|
#ifndef BITDHT_HISTORY_H
|
||||||
#define BITDHT_HISTORY_H
|
#define BITDHT_HISTORY_H
|
||||||
|
|
||||||
|
@ -1,31 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdiface.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BIT_DHT_INTERFACE_H
|
#ifndef BIT_DHT_INTERFACE_H
|
||||||
#define BIT_DHT_INTERFACE_H
|
#define BIT_DHT_INTERFACE_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdiface.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdmanager.cc
|
* bitdht/bdmanager.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010 by Robert Fernie
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*******
|
/*******
|
||||||
* Node Manager.
|
* Node Manager.
|
||||||
|
@ -1,33 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdmanager.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_MANAGER_H
|
#ifndef BITDHT_MANAGER_H
|
||||||
#define BITDHT_MANAGER_H
|
#define BITDHT_MANAGER_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdmanager.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******
|
/*******
|
||||||
* Node Manager.
|
* Node Manager.
|
||||||
******/
|
******/
|
||||||
|
@ -1,27 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdmsgs.cc
|
* bitdht/bdmsgs.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010 by Robert Fernie
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdmsgs.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_MSGS_H
|
#ifndef BITDHT_MSGS_H
|
||||||
#define BITDHT_MSGS_H
|
#define BITDHT_MSGS_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdmsgs.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -1,27 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdnode.cc
|
* bitdht/bdnode.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010-2011 by Robert Fernie
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bitdht/bdnode.h"
|
#include "bitdht/bdnode.h"
|
||||||
|
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdnode.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_NODE_H
|
#ifndef BITDHT_NODE_H
|
||||||
#define BITDHT_NODE_H
|
#define BITDHT_NODE_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdnode.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdpeer.h"
|
#include "bitdht/bdpeer.h"
|
||||||
#include "bitdht/bdquery.h"
|
#include "bitdht/bdquery.h"
|
||||||
#include "bitdht/bdstore.h"
|
#include "bitdht/bdstore.h"
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
|
/*******************************************************************************
|
||||||
/*
|
* bitdht/bdobj.cc *
|
||||||
* bitdht/bdobj.cc
|
* *
|
||||||
*
|
* BitDHT: An Flexible DHT library. *
|
||||||
* BitDHT: An Flexible DHT library.
|
* *
|
||||||
*
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
* Copyright 2010 by Robert Fernie
|
* *
|
||||||
*
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* This library is free software; you can redistribute it and/or
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* License, or (at your option) any later version. *
|
||||||
*
|
* *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
* Library General Public License for more details.
|
* GNU Affero General Public License for more details. *
|
||||||
*
|
* *
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* License along with this library; if not, write to the Free Software
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* *
|
||||||
* USA.
|
*******************************************************************************/
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bitdht/bdobj.h"
|
#include "bitdht/bdobj.h"
|
||||||
|
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdobj.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_OBJECTS_H
|
#ifndef BITDHT_OBJECTS_H
|
||||||
#define BITDHT_OBJECTS_H
|
#define BITDHT_OBJECTS_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdobj.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#define BITDHT_TOKEN_MAX_LEN 20
|
#define BITDHT_TOKEN_MAX_LEN 20
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdpeer.cc
|
* bitdht/bdpeer.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010 by Robert Fernie
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdpeer.h"
|
#include "bitdht/bdpeer.h"
|
||||||
#include "util/bdnet.h"
|
#include "util/bdnet.h"
|
||||||
|
@ -1,31 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdpeer.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_PEER_H
|
#ifndef BITDHT_PEER_H
|
||||||
#define BITDHT_PEER_H
|
#define BITDHT_PEER_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdpeer.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bitdht/bdiface.h"
|
#include "bitdht/bdiface.h"
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
@ -1,29 +1,24 @@
|
|||||||
|
/*******************************************************************************
|
||||||
/*
|
* bitdht/bdquery.cc *
|
||||||
* bitdht/bdquery.cc
|
* *
|
||||||
*
|
* BitDHT: An Flexible DHT library. *
|
||||||
* BitDHT: An Flexible DHT library.
|
* *
|
||||||
*
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
* Copyright 2010 by Robert Fernie
|
* *
|
||||||
*
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* This library is free software; you can redistribute it and/or
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* License, or (at your option) any later version. *
|
||||||
*
|
* *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
* Library General Public License for more details.
|
* GNU Affero General Public License for more details. *
|
||||||
*
|
* *
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* License along with this library; if not, write to the Free Software
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* *
|
||||||
* USA.
|
*******************************************************************************/
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdquery.h"
|
#include "bitdht/bdquery.h"
|
||||||
#include "bitdht/bdstddht.h"
|
#include "bitdht/bdstddht.h"
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdquery.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2010 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_QUERY_H
|
#ifndef BITDHT_QUERY_H
|
||||||
#define BITDHT_QUERY_H
|
#define BITDHT_QUERY_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdquery.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdiface.h"
|
#include "bitdht/bdiface.h"
|
||||||
#include "bitdht/bdpeer.h"
|
#include "bitdht/bdpeer.h"
|
||||||
#include "bitdht/bdobj.h"
|
#include "bitdht/bdobj.h"
|
||||||
|
@ -1,27 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdnode.cc
|
* bitdht/bdquerymgr.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010 by Robert Fernie
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bitdht/bdquerymgr.h"
|
#include "bitdht/bdquerymgr.h"
|
||||||
#include "bitdht/bdnode.h"
|
#include "bitdht/bdnode.h"
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdquerymgr.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_QUERY_MANAGER_H
|
#ifndef BITDHT_QUERY_MANAGER_H
|
||||||
#define BITDHT_QUERY_MANAGER_H
|
#define BITDHT_QUERY_MANAGER_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdquerymgr.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2011 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdquery.h"
|
#include "bitdht/bdquery.h"
|
||||||
class bdNodePublisher;
|
class bdNodePublisher;
|
||||||
|
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdstddht.cc
|
* bitdht/bdstddht.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010 by Robert Fernie
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdstddht.h"
|
#include "bitdht/bdstddht.h"
|
||||||
#include "bitdht/bdpeer.h"
|
#include "bitdht/bdpeer.h"
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdstddht.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_STANDARD_DHT_H
|
#ifndef BITDHT_STANDARD_DHT_H
|
||||||
#define BITDHT_STANDARD_DHT_H
|
#define BITDHT_STANDARD_DHT_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdstddht.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdiface.h"
|
#include "bitdht/bdiface.h"
|
||||||
|
|
||||||
#define BITDHT_STANDARD_BUCKET_SIZE 10 // 20 too many per query?
|
#define BITDHT_STANDARD_BUCKET_SIZE 10 // 20 too many per query?
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
/*
|
/*******************************************************************************
|
||||||
* bitdht/bdstore.cc
|
* bitdht/bdstore.cc *
|
||||||
*
|
* *
|
||||||
* BitDHT: An Flexible DHT library.
|
* BitDHT: An Flexible DHT library. *
|
||||||
*
|
* *
|
||||||
* Copyright 2010 by Robert Fernie
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
*
|
* *
|
||||||
* This library is free software; you can redistribute it and/or
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
* modify it under the terms of the GNU Library General Public
|
* it under the terms of the GNU Affero General Public License as *
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
* published by the Free Software Foundation, either version 3 of the *
|
||||||
*
|
* License, or (at your option) any later version. *
|
||||||
* This library is distributed in the hope that it will be useful,
|
* *
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* This program is distributed in the hope that it will be useful, *
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
* Library General Public License for more details.
|
* 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 Library General Public
|
* *
|
||||||
* License along with this library; if not, write to the Free Software
|
* You should have received a copy of the GNU Affero General Public License *
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||||
* USA.
|
* *
|
||||||
*
|
*******************************************************************************/
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bitdht/bdstore.h"
|
#include "bitdht/bdstore.h"
|
||||||
#include "util/bdnet.h"
|
#include "util/bdnet.h"
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* bitdht/bdstore.h *
|
||||||
|
* *
|
||||||
|
* BitDHT: An Flexible DHT library. *
|
||||||
|
* *
|
||||||
|
* Copyright 2011 by Robert Fernie <bitdht@lunamutt.com> *
|
||||||
|
* *
|
||||||
|
* 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 <https://www.gnu.org/licenses/>. *
|
||||||
|
* *
|
||||||
|
*******************************************************************************/
|
||||||
#ifndef BITDHT_STORE_H
|
#ifndef BITDHT_STORE_H
|
||||||
#define BITDHT_STORE_H
|
#define BITDHT_STORE_H
|
||||||
|
|
||||||
/*
|
|
||||||
* bitdht/bdstore.h
|
|
||||||
*
|
|
||||||
* BitDHT: An Flexible DHT library.
|
|
||||||
*
|
|
||||||
* Copyright 2010 by Robert Fernie
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License Version 3 as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This library 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
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "bitdht/bdiface.h"
|
#include "bitdht/bdiface.h"
|
||||||
#include "bitdht/bdpeer.h"
|
#include "bitdht/bdpeer.h"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user