mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04: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:
|
||||
- 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 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
|
||||
|
||||
- wget https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz
|
||||
|
@ -8,7 +8,7 @@ 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) |
|
||||
| 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
|
||||
----------------------------
|
||||
|
@ -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")
|
||||
|
||||
TEMPLATE = subdirs
|
||||
@ -5,14 +23,16 @@ TEMPLATE = subdirs
|
||||
SUBDIRS += openpgpsdk
|
||||
openpgpsdk.file = openpgpsdk/src/openpgpsdk.pro
|
||||
|
||||
retrotor {
|
||||
libretroshare.depends = openpgpsdk
|
||||
} else {
|
||||
SUBDIRS += libbitdht
|
||||
libbitdht.file = libbitdht/src/libbitdht.pro
|
||||
libretroshare.depends = openpgpsdk libbitdht
|
||||
rs_jsonapi {
|
||||
SUBDIRS += jsonapi-generator
|
||||
jsonapi-generator.file = jsonapi-generator/src/jsonapi-generator.pro
|
||||
libretroshare.depends += jsonapi-generator
|
||||
}
|
||||
|
||||
SUBDIRS += libbitdht
|
||||
libbitdht.file = libbitdht/src/libbitdht.pro
|
||||
libretroshare.depends = openpgpsdk libbitdht
|
||||
|
||||
SUBDIRS += libretroshare
|
||||
libretroshare.file = libretroshare/src/libretroshare.pro
|
||||
|
||||
@ -27,15 +47,12 @@ retroshare_gui {
|
||||
retroshare_gui.target = retroshare_gui
|
||||
}
|
||||
|
||||
retrotor {
|
||||
} else {
|
||||
retroshare_nogui {
|
||||
SUBDIRS += retroshare_nogui
|
||||
retroshare_nogui.file = retroshare-nogui/src/retroshare-nogui.pro
|
||||
retroshare_nogui.depends = libretroshare libresapi
|
||||
retroshare_nogui.target = retroshare_nogui
|
||||
}
|
||||
}
|
||||
|
||||
retroshare_android_service {
|
||||
SUBDIRS += retroshare_android_service
|
||||
|
@ -1,88 +1,73 @@
|
||||
## 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.
|
||||
Add to the PATH environment variable
|
||||
|
||||
;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.
|
||||
The resulting binary is a 32-bit build of Retroshare which will also work
|
||||
fine on a 64-bit system.
|
||||
|
||||
### 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.
|
||||
Don't forget to sync & Update pacman.
|
||||
Run the installer and install MSYS2.
|
||||
|
||||
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 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
|
||||
pacman -S base-devel git wget p7zip gcc perl ruby python2
|
||||
|
||||
Add MSYS2 to PATH environment variable depends your windows
|
||||
Install the 32-bit toolchain:
|
||||
|
||||
;C:\msys64\mingw32\bin
|
||||
;C:\msys32\mingw32\bin
|
||||
pacman -S mingw-w64-i686-toolchain
|
||||
|
||||
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:
|
||||
git clone https://github.com/RetroShare/RetroShare.git
|
||||
Go to the RetroShare directory and configure to your liking, for example:
|
||||
|
||||
cd RetroShare
|
||||
qmake -r -Wall -spec win32-g++ "CONFIG+=debug" "CONFIG+=rs_autologin"
|
||||
|
||||
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:
|
||||
|
||||
### Last Settings
|
||||
mingw32-make -j4
|
||||
|
||||
Make sure your current Retroshare is not running. Then just run:
|
||||
|
||||
In QtCreator Option Git add its path: *C:\Program Files\Git\bin*
|
||||
and select "Pull" with "Rebase"
|
||||
retroshare-gui/src/debug/retroshare.exe
|
||||
|
||||
|
||||
Open an MSys2 32|64 shell
|
||||
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*
|
||||
You'll get debug output in the terminal and a running Retroshare instance.
|
||||
|
@ -85,10 +85,11 @@ environment:
|
||||
# - cmd: echo This is batch again
|
||||
# - cmd: set MY_VAR=12345
|
||||
install:
|
||||
- git submodule update --init
|
||||
# Configuring MSys2
|
||||
- set PATH=C:\msys64\usr\bin;%PATH%
|
||||
- set PATH=C:\msys64\mingw32\bin;%PATH%
|
||||
- pacman --noconfirm -S mingw-w64-i686-qt5 mingw-w64-i686-miniupnpc mingw-w64-i686-sqlcipher mingw-w64-i686-libmicrohttpd
|
||||
- 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
|
||||
#- set PATH=C:\msys64\mingw32\qt5-static\bin\;%PATH%
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
Source: retroshare
|
||||
Section: devel
|
||||
Priority: standard
|
||||
Priority: optional
|
||||
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
|
||||
Standards-Version: 4.1.4
|
||||
|
@ -2,8 +2,8 @@ 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.
|
||||
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:
|
||||
|
||||
@ -16,17 +16,34 @@ When ready:
|
||||
|
||||
dput mentors retroshare_0.6.4-1_source.changes
|
||||
|
||||
Checkign with lintian:
|
||||
lintian --pedantic --profile debian 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
|
||||
* make a sid binary package.
|
||||
* test in sid using pbuilder chroot system (pbuilder login)
|
||||
* upload to mentors
|
||||
* request for sponsorship
|
||||
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/
|
||||
https://webchat.oftc.net/
|
||||
|
||||
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
|
||||
FFMPEG_VERSION=3.4
|
||||
RAPIDJSON_VERSION=1.1.0
|
||||
XAPIAN_VERSION=1.4.7
|
||||
|
||||
DOWNLOAD_PATH?=download
|
||||
BUILD_PATH=build
|
||||
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_PATH)/zlib-$(ZLIB_VERSION).tar.gz \
|
||||
@ -35,7 +36,8 @@ download: \
|
||||
$(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz \
|
||||
$(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_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:
|
||||
rm -r -f $(BUILD_PATH)
|
||||
@ -360,6 +362,30 @@ $(BUILD_PATH)/rapidjson-$(RAPIDJSON_VERSION): $(DOWNLOAD_PATH)/rapidjson-$(RAPID
|
||||
rm -r -f 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:
|
||||
rm -r -f $(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%
|
||||
|
||||
%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%
|
||||
|
||||
%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%
|
||||
|
||||
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%
|
||||
|
||||
%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%
|
||||
|
||||
%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%
|
||||
|
||||
%cecho% info "Build installer"
|
||||
|
@ -9,7 +9,7 @@ call "%EnvPath%\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
|
||||
:: Initialize environment
|
||||
call "%~dp0env.bat" standard
|
||||
call "%~dp0env.bat" release
|
||||
if errorlevel 2 exit /B 2
|
||||
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% /DOUTDIR="%RsPackPath%"
|
||||
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
|
||||
set NSIS_PARAM=%NSIS_PARAM% /DEXTERNAL_LIB_DIR="%BuildLibsPath%\libs"
|
||||
|
||||
:: Scan version from source
|
||||
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
|
||||
|
||||
:: Check git executable
|
||||
if "%ParamVersion%"=="0" goto found_git
|
||||
set GitPath=
|
||||
call "%ToolsPath%\find-in-path.bat" GitPath git.exe
|
||||
if "%GitPath%" NEQ "" goto found_git
|
||||
@ -33,7 +34,7 @@ echo.
|
||||
echo === Version
|
||||
echo.
|
||||
|
||||
title Build - %SourceName%%RsType%-%RsBuildConfig% [Version]
|
||||
title Build - %SourceName%-%RsBuildConfig% [Version]
|
||||
|
||||
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
||||
:: Touch resource file
|
||||
@ -47,10 +48,12 @@ echo.
|
||||
echo === qmake
|
||||
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
|
||||
if "%RsRetroTor%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% retrotor
|
||||
set RS_QMAKE_CONFIG=%RsBuildConfig%
|
||||
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"
|
||||
if errorlevel 1 goto error
|
||||
@ -59,7 +62,7 @@ echo.
|
||||
echo === make
|
||||
echo.
|
||||
|
||||
title Build - %SourceName%%RsType%-%RsBuildConfig% [make]
|
||||
title Build - %SourceName%-%RsBuildConfig% [make]
|
||||
|
||||
if exist "%EnvJomExe%" (
|
||||
"%EnvJomExe%"
|
||||
|
@ -7,7 +7,9 @@ call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.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
|
||||
|
@ -1,16 +1,52 @@
|
||||
if "%~1"=="standard" (
|
||||
set RsRetroTor=
|
||||
set RsType=
|
||||
) else (
|
||||
if "%~1"=="retrotor" (
|
||||
set RsRetroTor=1
|
||||
set RsType=-tor
|
||||
) else (
|
||||
echo.
|
||||
echo Usage: standard^|retrotor
|
||||
echo.
|
||||
exit /B 2
|
||||
:: Process commandline parameter
|
||||
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"=="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
|
||||
@ -39,8 +75,7 @@ if "%GCCVersion%"=="" %cecho% error "Cannot get gcc version." & exit /B 1
|
||||
|
||||
set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion%
|
||||
|
||||
set RsBuildConfig=release
|
||||
set RsBuildPath=%BuildPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%
|
||||
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsBuildConfig%
|
||||
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%
|
||||
set RsPackPath=%DeployPath%
|
||||
set RsArchiveAdd=
|
||||
@ -50,4 +85,21 @@ call "%~dp0env-mod.bat"
|
||||
if errorlevel 1 exit /B %ERRORLEVEL%
|
||||
: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
|
||||
|
||||
setlocal
|
||||
@ -13,7 +10,9 @@ call "%~dp0..\env.bat"
|
||||
if errorlevel 1 goto error_env
|
||||
call "%EnvPath%\env.bat"
|
||||
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
|
||||
|
||||
:: 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
|
||||
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
|
||||
|
||||
if "%RsRetroTor%"=="1" (
|
||||
:: Check Retrotor
|
||||
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
|
||||
@ -121,7 +121,7 @@ for /D %%D in ("%RsBuildPath%\plugins\*") do (
|
||||
)
|
||||
|
||||
echo copy external binaries
|
||||
copy "%RootPath%\libs\bin\*.dll" "%RsDeployPath%" %Quite%
|
||||
copy "%BuildLibsPath%\libs\bin\*.dll" "%RsDeployPath%" %Quite%
|
||||
|
||||
echo copy dependencies
|
||||
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%
|
||||
)
|
||||
|
||||
if "%RsRetroTor%"=="1" (
|
||||
if "%ParamTor%"=="1" (
|
||||
echo copy tor
|
||||
echo n | copy /-y "%EnvDownloadPath%\tor\Tor\*.*" "%RsDeployPath%" %Quite%
|
||||
)
|
||||
@ -217,13 +217,19 @@ if exist "%~1\%RsBuildConfig%\%~n1.dll" (
|
||||
goto :EOF
|
||||
|
||||
:copy_dependencies
|
||||
set CopyDependenciesCopiedSomething=0
|
||||
for /F "usebackq" %%A in (`%ToolsPath%\depends.bat list %1`) do (
|
||||
if exist "%QtPath%\%%A" (
|
||||
copy "%QtPath%\%%A" %2 %Quite%
|
||||
) else (
|
||||
if exist "%MinGWPath%\%%A" (
|
||||
copy "%MinGWPath%\%%A" %2 %Quite%
|
||||
if not exist "%~2\%%A" (
|
||||
if exist "%QtPath%\%%A" (
|
||||
set CopyDependenciesCopiedSomething=1
|
||||
copy "%QtPath%\%%A" %2 %Quite%
|
||||
) else (
|
||||
if exist "%MinGWPath%\%%A" (
|
||||
set CopyDependenciesCopiedSomething=1
|
||||
copy "%MinGWPath%\%%A" %2 %Quite%
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
if "%CopyDependenciesCopiedSomething%"=="1" goto copy_dependencies
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
; Reworked by Thunder
|
||||
|
||||
!include ifexist.nsh
|
||||
|
||||
# Needed defines
|
||||
;!define BUILDADD ""
|
||||
;!define RELEASEDIR ""
|
||||
@ -197,9 +199,9 @@ Section $(Section_Main) Section_Main
|
||||
File "${MINGWDIR}\bin\libwinpthread-1.dll"
|
||||
|
||||
; External binaries
|
||||
File "${SOURCEDIR}\..\libs\bin\miniupnpc.dll"
|
||||
File "${SOURCEDIR}\..\libs\bin\libeay32.dll"
|
||||
File "${SOURCEDIR}\..\libs\bin\ssleay32.dll"
|
||||
File "${EXTERNAL_LIB_DIR}\bin\miniupnpc.dll"
|
||||
File "${EXTERNAL_LIB_DIR}\bin\libeay32.dll"
|
||||
File "${EXTERNAL_LIB_DIR}\bin\ssleay32.dll"
|
||||
|
||||
; Other files
|
||||
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
|
||||
@ -234,17 +236,33 @@ Section $(Section_Main) Section_Main
|
||||
SectionEnd
|
||||
|
||||
# Plugins
|
||||
SectionGroup $(Section_Plugins) Section_Plugins
|
||||
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
|
||||
SetOutPath "$DataDir\extensions6"
|
||||
File "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||
SectionEnd
|
||||
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||
|
||||
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
|
||||
SetOutPath "$DataDir\extensions6"
|
||||
File "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||
SectionEnd
|
||||
SectionGroupEnd
|
||||
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||
!define /ifndef PLUGIN_EXISTS
|
||||
!endif
|
||||
!ifdef PLUGIN_VOIP_EXISTS
|
||||
!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)
|
||||
Section $(Section_Data) Section_Data
|
||||
|
@ -1,6 +1,8 @@
|
||||
; Script generated with the Venis Install Wizard & modified by defnax
|
||||
; Reworked by Thunder
|
||||
|
||||
!include ifexist.nsh
|
||||
|
||||
# Needed defines
|
||||
;!define BUILDADD ""
|
||||
;!define RELEASEDIR ""
|
||||
@ -212,9 +214,9 @@ Section $(Section_Main) Section_Main
|
||||
File "${MINGWDIR}\bin\libwinpthread-1.dll"
|
||||
|
||||
; External binaries
|
||||
File "${SOURCEDIR}\..\libs\bin\miniupnpc.dll"
|
||||
File "${SOURCEDIR}\..\libs\bin\libeay32.dll"
|
||||
File "${SOURCEDIR}\..\libs\bin\ssleay32.dll"
|
||||
File "${EXTERNAL_LIB_DIR}\bin\miniupnpc.dll"
|
||||
File "${EXTERNAL_LIB_DIR}\bin\libeay32.dll"
|
||||
File "${EXTERNAL_LIB_DIR}\bin\ssleay32.dll"
|
||||
|
||||
; Other files
|
||||
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
|
||||
@ -256,17 +258,33 @@ Section $(Section_Main) Section_Main
|
||||
SectionEnd
|
||||
|
||||
# Plugins
|
||||
SectionGroup $(Section_Plugins) Section_Plugins
|
||||
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
|
||||
SetOutPath "$DataDir\extensions6"
|
||||
File "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||
SectionEnd
|
||||
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
|
||||
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||
|
||||
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
|
||||
SetOutPath "$DataDir\extensions6"
|
||||
File "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
|
||||
SectionEnd
|
||||
SectionGroupEnd
|
||||
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||
!define /ifndef PLUGIN_EXISTS
|
||||
!endif
|
||||
!ifdef PLUGIN_VOIP_EXISTS
|
||||
!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)
|
||||
Section $(Section_Data) Section_Data
|
||||
|
@ -1,15 +1,15 @@
|
||||
:: Usage:
|
||||
:: call depends.bat [list^|missing] file
|
||||
|
||||
setlocal
|
||||
|
||||
if "%2"=="" (
|
||||
echo Usage: %~nx0 [list^|missing] File
|
||||
goto :exit
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
if not exist "%EnvDependsExe%" echo depends.exe not found in %EnvToolsPath%.& goto exit
|
||||
if not exist "%EnvCutExe%" echo cut.exe not found in %EnvToolsPath%.& goto exit
|
||||
setlocal
|
||||
|
||||
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
|
||||
if "%1"=="missing" (
|
||||
@ -33,5 +33,5 @@ if "%1"=="list" (
|
||||
if exist "%~dp0depends.tmp" del /Q "%~dp0depends.tmp"
|
||||
if exist "%~dp0depends1.tmp" del /Q "%~dp0depends1.tmp"
|
||||
|
||||
:exit
|
||||
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: 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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdaccount.cc *
|
||||
* *
|
||||
* 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/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include "bitdht/bdaccount.h"
|
||||
|
||||
|
@ -1,30 +1,27 @@
|
||||
#ifndef BITDHT_ACCOUNT_H
|
||||
#define BITDHT_ACCOUNT_H
|
||||
|
||||
/*
|
||||
* bitdht/bdaccount.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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdaccount.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/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
@ -1,27 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdconnection.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdconnection.cc *
|
||||
* *
|
||||
* 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/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include <algorithm>
|
||||
#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
|
||||
#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"
|
||||
|
||||
class bdQueryManager;
|
||||
|
@ -1,29 +1,24 @@
|
||||
|
||||
/*
|
||||
* bitdht/bdfilter.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* bitdht/bdfilter.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/bdfilter.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
|
||||
#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 <set>
|
||||
|
||||
|
@ -1,28 +1,24 @@
|
||||
|
||||
/*
|
||||
* bitdht/bdfriendlist.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdfriendlist.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/bdfriendlist.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
|
||||
#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.
|
||||
* It should also be updated when a peer's address has been identified.
|
||||
|
@ -1,28 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdhash.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* bitdht/bdhash.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/bdhash.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
|
||||
#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 <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"
|
||||
|
@ -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
|
||||
#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
|
||||
#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 <map>
|
||||
#include <string>
|
||||
|
@ -1,28 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdmanager.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* bitdht/bdmanager.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/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
/*******
|
||||
* 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
|
||||
#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.
|
||||
******/
|
||||
|
@ -1,27 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdmsgs.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdmsgs.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 <stdio.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
|
||||
#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 <inttypes.h>
|
||||
#include <list>
|
||||
|
@ -1,27 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdnode.cc
|
||||
*
|
||||
* BitDHT: An Flexible DHT library.
|
||||
*
|
||||
* Copyright 2010-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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdnode.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/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
|
||||
#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/bdquery.h"
|
||||
#include "bitdht/bdstore.h"
|
||||
|
@ -1,28 +1,24 @@
|
||||
|
||||
/*
|
||||
* bitdht/bdobj.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdobj.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/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
|
||||
#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
|
||||
|
||||
#include <iostream>
|
||||
|
@ -1,28 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdpeer.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* bitdht/bdpeer.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/bdpeer.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
|
||||
#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 <time.h>
|
||||
|
||||
|
@ -1,29 +1,24 @@
|
||||
|
||||
/*
|
||||
* bitdht/bdquery.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* bitdht/bdquery.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/bdquery.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
|
||||
#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/bdpeer.h"
|
||||
#include "bitdht/bdobj.h"
|
||||
|
@ -1,27 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdnode.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
/*******************************************************************************
|
||||
* bitdht/bdquerymgr.cc *
|
||||
* *
|
||||
* 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/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include "bitdht/bdquerymgr.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
|
||||
#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"
|
||||
class bdNodePublisher;
|
||||
|
||||
|
@ -1,28 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdstddht.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* bitdht/bdstddht.cc *
|
||||
* *
|
||||
* 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/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include "bitdht/bdstddht.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
|
||||
#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"
|
||||
|
||||
#define BITDHT_STANDARD_BUCKET_SIZE 10 // 20 too many per query?
|
||||
|
@ -1,28 +1,24 @@
|
||||
/*
|
||||
* bitdht/bdstore.cc
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* bitdht/bdstore.cc *
|
||||
* *
|
||||
* 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/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include "bitdht/bdstore.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
|
||||
#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 "bitdht/bdiface.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